คำถามติดแท็ก blob

12
ควรจัดเก็บไฟล์ไบนารีในฐานข้อมูลหรือไม่
ตำแหน่งที่ดีที่สุดสำหรับการจัดเก็บไฟล์ไบนารีที่เกี่ยวข้องกับข้อมูลในฐานข้อมูลของคุณคืออะไร? คุณควร: เก็บในฐานข้อมูลด้วย blob เก็บในระบบไฟล์พร้อมลิงค์ในฐานข้อมูล เก็บในระบบไฟล์ แต่เปลี่ยนชื่อเป็นแฮชของเนื้อหาและจัดเก็บแฮชบนฐานข้อมูล บางสิ่งที่ฉันไม่ได้คิด ข้อดีของ (1) คือ (ในหมู่อื่น ๆ ) ที่มีการเก็บรักษาปรมาณูของการทำธุรกรรม ค่าใช้จ่ายคือคุณอาจเพิ่มความต้องการในการจัดเก็บ (และการสตรีม / สำรองข้อมูลที่เกี่ยวข้อง) เป็นอย่างมาก เป้าหมายของ (3) คือการรักษาอะตอมมิกให้อยู่ในระดับหนึ่ง - หากคุณสามารถบังคับใช้ว่าระบบไฟล์ที่คุณเขียนไม่อนุญาตให้เปลี่ยนหรือลบไฟล์และมีแฮชที่ถูกต้องเป็นชื่อไฟล์เสมอ ความคิดที่จะเขียนไฟล์ไปยังระบบไฟล์ก่อนที่จะอนุญาตให้มีการแทรก / อัปเดตอ้างอิงแฮ - ถ้าการทำธุรกรรมนี้ล้มเหลวหลังจากระบบไฟล์เขียน แต่ก่อน DML ฐานข้อมูลนั่นเป็นเรื่องดีเพราะระบบไฟล์ 'แกล้ง' เป็นที่เก็บของทั้งหมด ไฟล์และแฮชที่เป็นไปได้ - มันไม่สำคัญว่าจะมีไฟล์บางไฟล์ในนั้นที่ไม่ได้ชี้ไปที่ (และคุณสามารถล้างมันเป็นระยะถ้าคุณระวัง) แก้ไข: ดูเหมือนว่า RDBMS บางส่วนจะมีสิ่งนี้ครอบคลุมในแบบของตัวเอง - ฉันสนใจที่จะรู้ว่าคนอื่นทำได้อย่างไร - และโดยเฉพาะอย่างยิ่งในการแก้ปัญหาสำหรับ postgres

5
วิธีแทรกข้อมูล (ไฟล์) ลงในคอลัมน์ PostgreSQL bytea ได้อย่างไร
คำถามนี้ไม่เกี่ยวกับ bytea v. oid v. blobs v. วัตถุขนาดใหญ่ ฯลฯ ฉันมีตารางที่ประกอบด้วยintegerเขตข้อมูลคีย์หลักและbyteaเขตข้อมูล ฉันต้องการป้อนข้อมูลลงในbyteaช่อง สิ่งนี้สามารถสันนิษฐานได้ว่าทำได้ด้วยPL/ภาษาใดภาษาหนึ่งและฉันอาจจะลองทำสิ่งนี้PL/Pythonในอนาคต ขณะที่ฉันยังคงทดสอบและทดลองใช้ฉันต้องการแทรกข้อมูลจากไฟล์ (บนเซิร์ฟเวอร์) โดยใช้คำสั่ง SQL "มาตรฐาน" ฉันทราบว่าผู้ดูแลระบบที่มีสิทธิ์เขียนบนเซิร์ฟเวอร์เท่านั้นที่จะสามารถแทรกข้อมูลในแบบที่ฉันต้องการ ฉันไม่ได้กังวลเกี่ยวกับเรื่องนี้ในขณะนี้เนื่องจากผู้ใช้จะไม่สามารถแทรกbyteaข้อมูลในปัจจุบัน ฉันได้ค้นหาไซต์ StackExchange ต่างๆ, คลังข้อมูล PostgreSQL และอินเทอร์เน็ตโดยทั่วไปแล้ว แต่ไม่สามารถหาคำตอบได้ แก้ไข: นี้การอภิปรายจาก 2008 แสดงให้เห็นว่าสิ่งที่ฉันต้องการจะทำคือไปไม่ได้ มีการbyteaใช้ฟิลด์อย่างไร แก้ไข: คำถามที่คล้ายกันนี้จากปี 2005 ยังไม่มีคำตอบ แก้ไขได้:รายละเอียดที่ให้ไว้ที่นี่ในpsycopgเว็บไซต์เป็นพื้นฐานสำหรับการแก้ปัญหาที่ฉันเขียนใน Python มันก็อาจจะเป็นไปได้ที่จะใส่ข้อมูลไบนารีเป็นคอลัมน์ที่ใช้bytea PL/Pythonฉันไม่ทราบว่าสิ่งนี้เป็นไปได้โดยใช้ "บริสุทธิ์" SQL

3
เหตุใดจึงแนะนำให้เก็บ BLOB ในตาราง SQL Server แยกต่างหาก
คำตอบ SO up-upvoted นี้แนะนำให้วางรูปภาพในตารางแยกกันแม้ว่าจะมีความสัมพันธ์แบบ 1: 1 กับตารางอื่นเท่านั้น: หากคุณตัดสินใจที่จะวางรูปภาพของคุณลงในตาราง SQL Server ฉันขอแนะนำอย่างยิ่งให้ใช้ตารางแยกต่างหากสำหรับการจัดเก็บรูปภาพเหล่านั้น - อย่าเก็บรูปถ่ายของพนักงานในตารางพนักงาน - เก็บไว้ในตารางแยกต่างหาก ด้วยวิธีนี้ตารางพนักงานสามารถอยู่ได้อย่างคล่องตัวและมีความหมายและมีประสิทธิภาพมากโดยสมมติว่าคุณไม่จำเป็นต้องเลือกรูปถ่ายของพนักงานเช่นกันซึ่งเป็นส่วนหนึ่งของคำสั่งของคุณ ทำไม? ฉันรู้สึกว่าSQL Server จะเก็บตัวชี้ไปที่โครงสร้างข้อมูล BLOB เฉพาะบางตัวในตารางเท่านั้นดังนั้นทำไมต้องสร้างเลเยอร์ทางอ้อมอีกด้านหนึ่งด้วยตนเอง มันปรับปรุงประสิทธิภาพอย่างมีนัยสำคัญจริงๆเหรอ? ถ้าใช่ทำไม
28 sql-server  blob 

1
ตรรกะอ่านแตกต่างกันเมื่อเข้าถึงข้อมูล LOB เดียวกัน
นี่คือการทดสอบสามแบบที่อ่านข้อมูลเดียวกัน แต่รายงานการอ่านเชิงตรรกะที่แตกต่างกันมาก: ติดตั้ง สคริปต์ต่อไปนี้สร้างตารางทดสอบที่มี 100 แถวเหมือนกันแต่ละแถวมีคอลัมน์xml ที่มีข้อมูลเพียงพอเพื่อให้แน่ใจว่าจะถูกเก็บไว้นอกแถว ในฐานข้อมูลการทดสอบของฉันความยาวของxml ที่สร้างขึ้นคือ 20,204 ไบต์สำหรับแต่ละแถว -- Conditional drop IF OBJECT_ID(N'dbo.XMLTest', N'U') IS NOT NULL DROP TABLE dbo.XMLTest; GO -- Create test table CREATE TABLE dbo.XMLTest ( ID integer IDENTITY PRIMARY KEY, X xml NULL ); GO -- Add 100 wide xml rows DECLARE @X …

2
LOB_DATA สแกนตารางช้าและคำถาม I / O บางข้อ
ฉันมีตารางที่ค่อนข้างใหญ่โดยหนึ่งในคอลัมน์เป็นข้อมูล XML และขนาดเฉลี่ยของรายการ XML อยู่ที่ประมาณ 15 กิโลไบต์ คอลัมน์อื่น ๆ ทั้งหมดเป็น ints ปกติ bigints GUIDs ฯลฯ หากต้องการมีตัวเลขที่เป็นรูปธรรมสมมติว่าตารางมีหนึ่งล้านแถวและมีขนาดประมาณ 15 GB สิ่งที่ฉันสังเกตคือตารางนี้ช้ามากในการเลือกข้อมูลจากถ้าฉันต้องการเลือกคอลัมน์ทั้งหมด เมื่อฉันทำ SELECT TOP 1000 * FROM TABLE ใช้เวลาประมาณ 20-25 วินาทีในการอ่านข้อมูลจากดิสก์ - แม้ว่าฉันจะไม่ได้กำหนดผลลัพธ์ไว้ก็ตาม ฉันเรียกใช้แบบสอบถามด้วยแคชเย็น (เช่นหลังจากDBCC DROPCLEANBUFFERS) นี่คือผลสถิติ IO: จำนวนการสแกน 1, อ่านโลจิคัล 364, อ่านฟิสิคัล 24 อ่านล่วงหน้าอ่าน 7191, ล็อบโลจิคัลอ่าน 7924, lob ฟิสิคัลอ่าน 1690, lob …

6
จะส่งออกคอลัมน์ภาพเป็นไฟล์ใน SQL Server ได้อย่างไร
ฉันจะย้ายจากฐานข้อมูล มีหนึ่งประเภทคอลัมน์imageที่ฉันต้องการส่งออกไปยังไฟล์ไบนารีบนระบบไฟล์ หนึ่งไฟล์สำหรับแต่ละระเบียน ฉันจะทำสิ่งนี้กับ SQL Server ได้อย่างไร

1
PostgreSQL bytea กับ smallint []
ฉันต้องการนำเข้าข้อมูลอนุกรมเวลาหลายช่องทางขนาดใหญ่ (100Mb - 1 GB) ลงในฐานข้อมูล PostgreSQL ข้อมูลมาจากไฟล์ฟอร์แมต EDFที่แบ่งข้อมูลเป็น "บันทึก" หรือ "ยุค" ซึ่งโดยทั่วไปแล้วแต่ละวินาที บันทึกยุคของแต่ละคนถือสัญญาณสำหรับแต่ละช่องข้อมูลเป็นอาร์เรย์ลำดับของจำนวนเต็มสั้น ฉันได้รับคำสั่งให้เก็บไฟล์ไว้ในฐานข้อมูลในกรณีเลวร้ายที่สุดในฐานะ BLOB ระบุว่าฉันต้องการตรวจสอบตัวเลือกที่จะช่วยให้ฉันทำอะไรเพิ่มเติมกับข้อมูลในฐานข้อมูลเช่นอำนวยความสะดวกในการค้นหาตามข้อมูลสัญญาณ แผนเริ่มต้นของฉันคือการจัดเก็บข้อมูลเป็นหนึ่งแถวต่อระเบียนยุค สิ่งที่ฉันพยายามชั่งน้ำหนักคือการจัดเก็บข้อมูลสัญญาณจริงตามประเภท bytea หรือ smallint [] (หรือแม้แต่ smallint [] []) ชนิด ใครช่วยแนะนำคนอื่นได้บ้าง ฉันสนใจค่าใช้จ่ายในการจัดเก็บและเข้าถึง การใช้งานมีแนวโน้มที่จะถูกแทรกหนึ่งครั้งอ่านเป็นครั้งคราวไม่เคยอัปเดต หากมีการห่อเป็นประเภทกำหนดเองได้ง่ายขึ้นซึ่งฉันสามารถเพิ่มฟังก์ชั่นสำหรับการวิเคราะห์การเปรียบเทียบบันทึกได้ดีกว่ามาก ไม่ต้องสงสัยเลยว่าฉันมีรายละเอียดน้อยมากดังนั้นอย่าลังเลที่จะเพิ่มความคิดเห็นเกี่ยวกับสิ่งที่คุณต้องการให้ฉันชี้แจง
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.