“ Document-oriented” เทียบกับ Key-Value หมายถึงอะไรเมื่อพูดถึง MongoDB vs Cassandra


คำตอบ:


153

ที่เก็บคีย์ - ค่าให้โมเดลข้อมูลที่ง่ายที่สุดและเป็นสิ่งที่ชื่อแนะนำนั่นคือระบบจัดเก็บข้อมูลที่เก็บค่าที่จัดทำดัชนีโดยคีย์ คุณถูก จำกัด การค้นหาด้วยคีย์และค่าเป็นแบบทึบร้านค้าไม่ทราบอะไรเลย สิ่งนี้ช่วยให้การดำเนินการอ่านและเขียนรวดเร็วมาก (การเข้าถึงดิสก์อย่างง่าย) และฉันเห็นว่าโมเดลนี้เป็นแคชแบบไม่ลบเลือน (เช่นเหมาะอย่างยิ่งหากคุณต้องการการเข้าถึงที่รวดเร็วโดยคีย์ข้อมูลที่มีอายุการใช้งานยาวนาน)

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

ชนิดอื่น ๆ ของฐานข้อมูล NoSQL รวมถึงร้านค้าคอลัมน์ที่มุ่งเน้น , ฐานข้อมูลกราฟและแม้กระทั่งวัตถุฐานข้อมูล แต่สิ่งนี้นอกเหนือไปจากคำถาม

ดูสิ่งนี้ด้วย


2
ที่เก็บคีย์ - ค่าไม่จำเป็นต้องมีการเข้าถึงดิสก์และการเรียกสิ่งเหล่านี้ว่าไม่ลบเลือนนั้นไม่ถูกต้องในการใช้งานบางอย่าง คุณสามารถสร้างที่เก็บคีย์ - ค่าในหน่วยความจำโดยไม่ต้องเขียนผ่านหรือเขียนกลับไปยังสื่อบันทึกข้อมูลที่ไม่ลบเลือน การเรียกข้อมูลที่มีอายุการใช้งานยาวนานนั้นทำให้เข้าใจผิดเช่นกันเนื่องจากอายุการใช้งานของข้อมูลไม่เกี่ยวข้องกับลักษณะที่คุณดึงข้อมูลมา
Anthony

17

ฉันได้ตรวจสอบ NoSQL ด้วยตัวเองเมื่อเดือนก่อน ฉันคิดว่าโดยทั่วไปสามารถระบุได้บางอย่างเช่น

  • ร้านค้า KV ไม่ทราบถึงเนื้อหามูลค่าที่เก็บไว้สำหรับคีย์
  • ตามเอกสารช่วยให้คุณกำหนดดัชนีรองภายในเนื้อหาค่าได้เนื่องจากฐานข้อมูลทราบโครงสร้างเอกสาร (เช่นแท็กของโพสต์บล็อก)
  • โซลูชัน NoSQL แต่ละแบบมีคุณสมบัติเฉพาะที่ควรนำมาพิจารณาเช่น
    • ประเภทข้อมูลพิเศษในร้าน KV (เช่นตั้งค่าด้วยป๊อปซ้าย / ขวา / กดเหมือนใน redis)
    • ปรับขนาดได้ง่ายขึ้น / ลงคลัสเตอร์ตามที่ riak บอกว่ามี (ฉันยังไม่ได้ลอง ... แต่)
    • ที่เก็บข้อมูลแบบเสียบได้เช่นเดียวกับโวลเดอมอร์
    • การกำหนดค่าเว็บในตัวและการสนับสนุนเว็บแอปเช่นใน CouchDB / couchapp

2

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

หากเราพูดถึงความแตกต่างระหว่าง MOngoDb และ Cassandra MongoDB ทำหน้าที่เหมือนฐานข้อมูลเชิงสัมพันธ์ แบบจำลองข้อมูลประกอบด้วยฐานข้อมูลที่ระดับบนสุดจากนั้นคอลเลกชันซึ่งเป็นเหมือนตารางใน MySQL (เป็นต้น) และเอกสารที่อยู่ในคอลเลกชันเช่นแถวใน MySQL เอกสารแต่ละฉบับมีฟิลด์และค่าที่คล้ายกับคอลัมน์และค่าใน MySQL ช่องอาจเป็นคีย์ / ค่าง่ายๆเช่น {'name': 'David Mytton'} แต่ยังสามารถมีเอกสารอื่น ๆ เช่น {'name': {'first': David, 'last': 'Mytton'}} ในเอกสาร Cassandra เรียกว่า "คอลัมน์" ซึ่งเป็นเพียงคีย์และค่าเดียว เช่น {'key': 'name', 'value': 'David Mytton'} นอกจากนี้ยังมีฟิลด์การประทับเวลาซึ่งมีไว้สำหรับการจำลองแบบภายในและความสอดคล้องกัน ค่านี้อาจเป็นค่าเดียว แต่ยังสามารถมี "คอลัมน์" อื่นได้อีกด้วย จากนั้นคอลัมน์เหล่านี้จะอยู่ในตระกูลคอลัมน์ซึ่งเรียงลำดับข้อมูลตามค่าเฉพาะในคอลัมน์ที่อ้างอิงโดยคีย์

แต่ในระดับบนสุดจะมีคีย์สเปซซึ่งคล้ายกับฐานข้อมูล MongoDB


0
  1. ในโมเดลฐานข้อมูลคีย์ - ค่าผู้ใช้สามารถเลือกได้ว่าคีย์คืออะไรในขณะที่ตัวระบุเอกสารในโมเดลเอกสารมักจะสร้างโดยระบบ

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

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

  4. ในแบบจำลองคีย์ - ค่าการเข้าถึงรายการฐานข้อมูลหลายรายการ (ในกรณีนี้คู่คีย์ - ค่า) ต้องใช้การร้องขอแยกกัน ในแบบจำลองเอกสารในทางกลับกันรายการฐานข้อมูลหลายรายการ (ในกรณีนี้) อาจถูกเรียกคืนในคำขอเดียว

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