ฐานข้อมูลเอกสารกับฐานข้อมูลเชิงสัมพันธ์: วิธีการเลือก?


16

ฉันเป็นคน SQL แต่ฉันรู้ว่ามีฐานข้อมูลSQL ไม่เพียง - ฐานข้อมูลเอกสารส่วนใหญ่ เช่นเดียวกับเทคโนโลยีส่วนใหญ่มีข้อดีและข้อเสียสำหรับแต่ละเทคโนโลยี

ฉันได้อ่านบทความมาแล้ว แต่พวกเขาก็มีเหตุผลมากเกินไป สิ่งที่ฉันต้องการคือสองกรณีจริง:

  1. เมื่อเปลี่ยนจาก relational- เป็น document-database ให้การปรับปรุง
  2. เมื่อเปลี่ยนจากเอกสาร - เป็นฐานข้อมูลเชิงสัมพันธ์ให้การปรับปรุง

การปรับปรุงเป็นสิ่งที่ทำให้โปรแกรมดีขึ้น - ลดเวลาในการพัฒนาน้อยลง, ปรับขนาดได้, ประสิทธิภาพ, ทุกอย่างที่เกี่ยวข้องกับการเขียนโปรแกรม มีข้อแม้สำหรับ 2: เรื่องราวเช่น "ถอยกลับไปยังฐานข้อมูลเชิงสัมพันธ์เพราะทุกคนรู้ว่า SQL" ไม่ดี


8
วิธีการที่ไม่ถูกต้อง มันไม่เกี่ยวกับ "ประสิทธิภาพ" หรือ "ความยืดหยุ่น" มันเกี่ยวกับรูปแบบที่เหมาะกับปัญหาที่คุณพยายามแก้ไข คุณอาจต้องการอัปเดตคำถามของคุณเพื่อให้ความคิดที่ว่าฐานข้อมูลเชิงสัมพันธ์อาจไม่เหมาะสมสำหรับปัญหาหลายประเภท
S.Lott

2
@ S.Lott ตัวเลือกมักจะเป็นหนึ่งในประสิทธิภาพ พิจารณาว่าฐานข้อมูลเชิงสัมพันธ์ใด ๆ สามารถใช้เป็นฐานข้อมูลเอกสารอย่างง่าย - ประสิทธิภาพเท่านั้นที่จะเป็นลักษณะที่แตกต่าง
edA-qa mort-ora-y

ฉันได้ตั้งคำถามใหม่ของฉันเพื่อไม่ให้ถูกโหลด แต่อย่างใด
Johan Buret

2
@ edA-qa mort-ora-y: "ฐานข้อมูลเชิงสัมพันธ์ใด ๆ สามารถใช้เป็นฐานข้อมูลเอกสารอย่างง่าย" จะต้องเป็นเท็จหรือคนจะไม่ได้คิดค้นทางเลือก "ประสิทธิภาพเท่านั้นที่จะเป็นคุณสมบัติที่แตกต่าง" เป็นจริงเฉพาะในกรณีที่คุณสมมติว่าโมเดลเชิงสัมพันธ์ทำทุกอย่างได้ดีเท่ากัน ถ้ามันทำทุกอย่างก็จะไม่มีทางเลือก ยัง เรามีทางเลือก มีปัญหามากมาย (เช่นลำดับชั้น) ซึ่งไม่พอดีกับโมเดลเชิงสัมพันธ์อย่างสมบูรณ์แบบและต้องใช้เทคนิคที่ชาญฉลาด หรือรูปแบบข้อมูลทางเลือก
S.Lott

"อ่านบทความบางส่วน"? โปรดระบุลิงก์หรือชื่อเรื่องหรือการอ้างอิงหรือคำพูด เราไม่รู้ว่า "ทฤษฎีเกินไป" มีความหมายกับคุณอย่างไร
S.Lott

คำตอบ:


15

เหตุผลหลักสำหรับการเลือกฐานข้อมูล NoSQL ปีที่ผ่านมาได้รับส่วนลดของ สำหรับ บริษัท เช่น Amazon, Google และ Facebook หนึ่งชั่วโมงของการหยุดทำงานหรือไม่เป็นที่ยอมรับ เพื่อให้มีความพร้อมในการใช้งานสูงคุณต้องลดความล้มเหลว ณ จุดเดียวนั่นหมายความว่าคุณต้องใช้ระบบกระจายที่มีคอมพิวเตอร์หลายเครื่องในกรณีที่คอมพิวเตอร์ล่มบริการยังคงมีอยู่

ฐานข้อมูลความสัมพันธ์แบบดั้งเดิมนั้นไม่ค่อยดีนักในการตั้งค่าแบบหลายต้นแบบ นั่นเป็นสาเหตุที่ NoSQL ได้รับความนิยมอย่างมากเมื่อเร็ว ๆ นี้ ดังนั้นหากคุณต้องการความพร้อมใช้งานสูงคุณสามารถเลือกฐานข้อมูล NoSQL เช่น Riak, Cassandra, HBase, S3 หรือ BigTable

มีการโพสต์บล็อกที่ดีเกี่ยวกับDynamo ของ Amazonที่เป็นการแนะนำที่ดีให้กับฐานข้อมูล NoSQL แบบกระจาย

ตอนนี้คำ NoSQL นั้นกว้างมากดังนั้นจึงมีฐานข้อมูล NoSQL จำนวนมากที่ไม่ได้เผยแพร่ แต่พวกเขาแก้ปัญหาอื่น ๆ เช่นNeo4j - ฐานข้อมูลกราฟนั้นดีสำหรับประเภทของแบบสอบถามที่ RDBMS แบบดั้งเดิมไม่เหมาะสำหรับ หรือในกรณีของคุณเป็นฐานข้อมูลเอกสารที่คุณไม่ต้องเปลี่ยนสคีมาหากคุณต้องการเพิ่มบางฟิลด์สำหรับเอกสารบางอย่าง กล่าวอีกนัยหนึ่งฐานข้อมูลเอกสารนั้นดีเมื่อโพสต์ (เอกสาร) ส่วนใหญ่มีฟิลด์ต่างกันดังนั้นตารางสัมพันธ์ที่มีคอลัมน์ที่กำหนดไว้ล่วงหน้าจะไม่สามารถใช้งานได้

อย่างไรก็ตามฐานข้อมูล NoSQL ส่วนใหญ่ไม่ยืดหยุ่นเท่ากับฐานข้อมูล RDBMS ดั้งเดิมดังนั้นจึงเป็นตัวเลือกที่ดีในการใช้ฐานข้อมูล RDBMS แบบดั้งเดิมจนกว่าจะไม่สามารถแก้ปัญหาของคุณได้อีก


+1, ตกลง, ความยืดหยุ่นเป็นราคาที่ต้องจ่ายมากหากคุณไม่ต้องทำ
maple_shaft

12

ฉันมีวิธีการง่ายๆในการกำหนดฐานข้อมูลที่เหมาะกับข้อมูลมากที่สุด

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

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

นอกจากนี้เมื่อคุณไม่สามารถหาโครงสร้างทั่วไปได้เลยฐานข้อมูล NoSQL นั้นเหมาะสมที่สุดสำหรับงาน

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

ดังนั้นเพื่อให้คำตอบที่เป็นรูปธรรมและเรียบง่ายสำหรับคำถามทั้งสองข้อของคุณ: ขึ้นอยู่กับข้อมูล

เมื่อเปลี่ยนจาก relational- เป็น document-database ให้การปรับปรุง

เมื่อคุณต้องการยืนยันข้อมูลเชิงข้อความที่มีโครงสร้างแบบลำดับชั้นฐานข้อมูล Xml สามารถปรับปรุงได้อย่างมากในแง่ของการบำรุงรักษาและอาจปรับขนาดได้เช่นกัน

เมื่อเปลี่ยนจากเอกสาร - เป็นฐานข้อมูลเชิงสัมพันธ์ให้การปรับปรุง

ตัวอย่างเช่นเมื่อข้อมูลส่วนใหญ่อยู่ในรูปแบบตารางคล้ายกับความสัมพันธ์ที่ชัดเจนและคุณต้องรับประกันความสมบูรณ์


2
+1 สำหรับสเปรดชีตและเอกสารเปรียบเทียบ - ช่วยได้มาก - ขอบคุณ
HDave

10

เราต้องยอมแพ้กับโมเดลเชิงสัมพันธ์เพราะข้อมูลที่เราได้รับนั้นไม่มีสคีมาที่เรียบง่ายชัดเจนคงที่และคงที่

ผู้ใช้ - และเรื่องราวของผู้ใช้ - ไม่มีสคีมาคงที่

เราพยายามที่จะกำหนดเค้าร่าง RDBMS คงที่ แต่มันเป็นความผิดพลาด

การส่งข้อมูลบุคคลที่สามแต่ละครั้ง (จากลูกค้าและจากผู้ขาย) นั้นคล้ายคลึงกัน แต่ไม่เหมือนกัน เราลองทำแผนที่กับสคีมาสัมพันธ์คงที่ แต่ความแปรปรวนนั้นมากเกินไป เราต้องเพิ่มฟิลด์ทุกไฟล์ (หลายสัปดาห์) หรือเราต้องห่างจากสคีมาสัมพันธ์คงที่และคงที่

หากเราดูแต่ละระเบียนเป็น "เอกสาร" ที่มีชุดย่อยขององค์ประกอบทั่วไปและคอลเลกชันที่ไม่ซ้ำกัน (รวมถึงการกำหนดไม่ถูกต้อง) ขององค์ประกอบข้อมูลเพิ่มเติมเราก็มีความสุขมากขึ้น

การรวบรวมองค์ประกอบข้อมูลที่ไม่ถูกต้องเป็นสิ่งที่ผู้ใช้ต้องการสำหรับกรณีการใช้งานจริง

สคีมาแบบคงที่และคงที่ของโมเดลเชิงสัมพันธ์ไม่เหมาะกับกรณีการใช้งานของเรา


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