วิธีเก็บข้อมูลในฐานข้อมูลโดยไม่มีตาราง


12

สิ่งที่ฉันเรียนรู้ในโรงเรียนคือ SQL ซึ่งบันทึกข้อมูลลงในตาราง ตอนนี้ฉันกำลังทำงานในโครงการที่จัดเก็บข้อมูลในไฟล์ XML นอกจากนี้ XML ทุกตัวยังมีการอ้างอิงไปยังไฟล์ภาพ (JPEG)

XML นั้นมีจุดพิกัดมากกว่าหนึ่งพันจุดพร้อมข้อมูลเพิ่มเติมเกี่ยวกับข้อมูล

ในความคิดของฉันมันจะไม่มีเหตุผลที่จะเก็บข้อมูลนี้ไว้ในตาราง นอกจากนี้ฉันไม่สามารถจัดเก็บไฟล์ JPEG ด้วย SQL ได้เช่นกัน

อะไรจะเป็นทางออกที่เหมาะสมหรือมีข้อผิดพลาดในการให้เหตุผลในด้านของฉัน

อย่างที่คุณเห็นฉันค่อนข้างใหม่ในฐานข้อมูล ดังนั้นคำแนะนำที่สร้างสรรค์ลิงค์และคำแนะนำก็ยินดีต้อนรับ


SQL Server สามารถจัดเก็บไฟล์ JPEG ได้อย่างแน่นอนโดยใช้ประเภทข้อมูล IMAGE ฉันจะไม่แนะนำอย่างไรก็ตาม คุณน่าจะใช้ FILE-STREAM ดีกว่า
datagod

เมื่อพูดถึงการจัดเก็บ jpeg (หรือไฟล์อื่น ๆ ) ในฐานข้อมูลนั่นจะถูกจัดการที่นี่ในคำถามที่พบบ่อยบางส่วนของเรา สำหรับลักษณะของการจัดเก็บ XML แล้วค้นหาข้อมูลนั้นอย่างรวดเร็วนั่นเป็นสิ่งที่ระบบจัดเก็บข้อมูลเอกสารใช้ ฉันจะดูโซลูชัน NoSQL บนฐานข้อมูลเชิงสัมพันธ์มันจะง่ายกว่าถ้าฉันจะจินตนาการ
jcolebrand

เมื่อพูดถึง XML แล้ว DB2 ของ IBM จะให้คุณทำ และคุณสามารถสืบค้นข้อมูลด้วย SQL หรือ XPath / XQuery Express-C edition ฟรีมาพร้อมกับความสามารถในการทำสิ่งนี้ หากคุณย้ายไปใช้ Enterprise Edition คุณต้องจ่ายเงินเพื่อเปิดใช้งานคุณลักษณะนี้
Chris Aldrich

คำตอบ:


11

สิ่งที่คุณต้องการคือการคงอยู่ของ XML ของคุณ ใช้โซลูชัน NoSQL หรือระบบไฟล์

ไม่มีประโยชน์ในการใช้ RDBMS เว้นแต่ว่าคุณต้องการใช้แทน NoSQL หรือระบบไฟล์


อะไรจะเป็นโซลูชัน NoSQL ที่เหมาะสม? ฉันทำงานกับ C # ในแอปพลิเคชัน winform btw
チーズパン

@bodycountPP: ฉันไม่มีประสบการณ์กับพวกเขา ...
gbn

7
ฉันจะตรวจสอบ RavenDB ( ravendb.net ) หรือ CouchBase ( couchbase.com/couchbase-server/overview ) เพื่อใช้กับ Windows คนอื่นสามารถพบได้ผ่าน Googles - ฉันมีประสบการณ์ที่ดีกับผลิตภัณฑ์เหล่านั้น เห็นได้ชัดว่าระยะทางของคุณอาจแตกต่างกันไป :)
ITHedgeHog

10

ฉันทำบุ๊กมาร์กโพสต์ในบล็อกของ Phil Factor และ Normalization และ 'Anima notitia copia'ในวันนี้เนื่องจากมันสรุปอย่างเป็นกรณีและต่อต้านการทำให้ข้อมูลบางประเภทกลับสู่ปกติ รันเคียวรีต่อไปนี้บนอินสแตนซ์ SQL และดูว่าคุณเห็นด้วยหรือไม่

SELECT * FROM sys.syslanguages

SQL ช่วยให้คุณสร้างฐานข้อมูลเชิงสัมพันธ์ อย่างไรก็ตามแม้ว่าจะมีกลิ่นไม่ดี แต่ก็ไม่มีอาชญากรรมที่จะทำสิ่งที่ไม่เกี่ยวข้องกับฐานข้อมูล SQL เพียงแค่ตราบใดที่จำเป็นและคุณสามารถบอกความแตกต่างได้ ไม่เพียงแค่นั้น แต่ยังเฉพาะในกรณีที่คุณตระหนักถึงความเสี่ยงและผลกระทบ

คุณพูดถึงว่าไฟล์ XML มี "ข้อมูลเพิ่มเติมเกี่ยวกับข้อมูล" มีประโยชน์ในการสร้างแบบจำลองข้อมูลเมตาที่อยู่ในฐานข้อมูลเชิงสัมพันธ์เพื่อวัตถุประสงค์ในการซักถามหรือไม่? ถ้าเป็นเช่นนั้นอาจมีกรณีสำหรับการแยกข้อมูลที่เกี่ยวข้องและคงอยู่ XML ที่เหลือเป็นประเภทเอกสาร XML

... หากคุณผ่านสตริง JSON หรือ XML และจำเป็นต้องเก็บไว้ในฐานข้อมูลสิ่งที่คุณต้องทำคือถามตัวเองในบทบาทของ Anima notitia copia (วิญญาณของฐานข้อมูล) 'ฉันมี สนใจเนื้อหาของรายการข้อมูลนี้หรือไม่? ' หากคำตอบคือ 'ไม่!' หรือ 'nequequam! จากนั้นมันก็เป็นค่าอะตอมมิกอย่างไรก็ตามมันอาจจะซับซ้อน

ข้อโต้แย้งของ Phil Factor คือฟิลด์ที่ไม่มีความสัมพันธ์ในฐานข้อมูลเชิงสัมพันธ์เป็นที่ยอมรับอย่างสมบูรณ์หากฟิลด์นั้นถูกปฏิบัติเสมือนเป็นอะตอมมิเช่นนั้นจะไม่เปลี่ยนแปลงหรือเมื่อมันเปลี่ยนแปลงฟิลด์ทั้งหมดไม่ใช่ส่วนที่เป็นส่วนประกอบ ส่วนขยายตามธรรมชาติของสิ่งนี้คือหากเอกสารของคุณมีองค์ประกอบที่คุณสนใจอาจมีค่าในการใช้แบบจำลองเชิงสัมพันธ์กับองค์ประกอบเหล่านั้น

เกี่ยวข้องกับคำถาม แต่โดยหลักแล้วสำหรับวลีนั้นหนึ่งคำพูดล่าสุดจาก Phil:

โดยธรรมชาติฉันไม่เคยสร้างฐานข้อมูลที่ Codd จะขมวดคิ้วอย่างแน่นอน แต่บริเวณรอบ ๆ นั้นเป็นส่วนต่อประสานและตัวดึงข้อมูลที่ฉันเขียนซึ่งทำให้เกิดความยุ่งเหยิงในกลุ่ม Normalisation

เราทุกคนไม่ได้!


2
ACORD เป็นแบบนั้น ฉันเคยเห็นคนที่พยายามที่จะใช้เป็นแบบจำลองฐานข้อมูล ACORD ต่อมาได้อนุญาตให้ใช้แบบจำลองข้อมูลจาก Prima ดังนั้นพวกเขาก็ยอมรับว่ามันไม่ใช่แบบจำลองข้อมูล มาตรฐานการรับส่งข้อความของ ACORD มีช่องประมาณ 7,000 ช่องซึ่งจำเป็นต้องมีประมาณ 200 ช่องซึ่งเป็นคำอธิบายที่ดีที่สุดของ ACORD (จากบุคคลที่เกี่ยวข้องกับมาตรฐานการรับส่งข้อความอย่างมาก) คือ "ไม่ทราบวิธีจัดการกระบวนการมาตรฐาน"
ConcOfOfTunbridgeWells

3

เท่าที่ฐานข้อมูลของออราเคิลมีความกังวลคำตอบคือคุณไม่สามารถ ข้อมูลทั้งหมดในฐานข้อมูลจะถูกเก็บไว้ในตารางแม้แต่ meta-data ข้อมูลสามารถจัดเก็บในคิว แต่สิ่งเหล่านี้เป็นวิธีการใช้ตารางที่แตกต่างกัน ไฟล์ XML สามารถจัดเก็บได้นอกฐานข้อมูล แต่ไม่ตรงตามข้อกำหนด "ในฐานข้อมูล" ของคุณ

การย้ายเกินคำถามที่ระบุไว้ไฟล์ JPEG หรือไฟล์ใด ๆ สำหรับเรื่องนั้นสามารถเก็บไว้ในฐานข้อมูล พวกเขาต้องการตารางและคอลัมน์ LOB (BLOB หรือ CLOB) XML สามารถจัดเก็บได้ด้วยวิธีนี้ แต่การนำเข้าข้อมูล XML ไปยังฐานข้อมูลจะช่วยให้คุณสามารถดำเนินการกับข้อมูลในรูปแบบที่ไม่สามารถทำได้อย่างง่ายดายในขณะนี้ นอกจากนี้ยังจะให้ประโยชน์อื่น ๆ ของฐานข้อมูลรวมถึง: ลดความซ้ำซ้อน, การเข้าถึง, การทำงานพร้อมกัน, การปรับขนาด, การทำงานร่วมกัน, ความปลอดภัย, การกู้คืนและประสิทธิภาพ

หากผลประโยชน์ของฐานข้อมูลไม่สามารถบรรลุเป้าหมายของคุณได้อย่าใช้ฐานข้อมูลนั้น


2

มันเสียงที่ฉันชอบคุณกำลังพยายามที่จะใช้ฐานข้อมูลเชิงพื้นที่ นี่คือฐานข้อมูลเชิงสัมพันธ์ (หรือส่วนเสริมไปยังผลิตภัณฑ์ฐานข้อมูลที่มีอยู่เช่น Oracle Spatial, postGIS) ที่รองรับฟังก์ชั่นประเภทข้อมูลเชิงพื้นที่และใช้ในการเพิ่มประสิทธิภาพการจัดเก็บและแบบสอบถามสำหรับข้อมูลที่เกี่ยวข้องกับคุณสมบัติเชิงพื้นที่เช่นขอบเขตเหลี่ยม และเลเยอร์ XML ที่คุณมีนั้นฟังดูคล้ายกับการจับคู่พิกัดและเสียงที่เกี่ยวข้องจะเหมือนกับสินทรัพย์อาร์ตเวิร์คที่จะแสดงในขอบเขตนั้น หากข้อมูลเหมาะสมให้พิจารณาฐานข้อมูลเชิงพื้นที่สัมพันธ์ที่มีการสร้างแบบจำลองเชิงพื้นที่เพื่อให้การทำงานที่คุณอาจพบว่ายากหรือใช้เวลานานในการดำเนินการ


นอกจากนี้หากคุณได้รับการดำเนินการระบบสารสนเทศภูมิศาสตร์พิจารณาถามคำถามนี้มากกว่าในระบบสารสนเทศภูมิศาสตร์
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.