ครอบครัวคอลัมน์คืออะไร?


9

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

คำตอบ:


3

ฉันได้ค้นพบข้อมูลที่น่าสนใจเพียงบางส่วนจากRocksDB คำถามที่พบบ่อย (RocksDB เป็นร้านค้า KV)

นี่คือบางส่วนของสารสกัดที่เกี่ยวข้อง

ถาม: คอลัมน์ครอบครัวใช้สำหรับทำอะไร

ตอบ: สาเหตุที่พบบ่อยที่สุดของการใช้ครอบครัวคอลัมน์: (1) ใช้การตั้งค่าการบดอัดที่แตกต่างกันตัวเปรียบเทียบประเภทการบีบอัดการรวมตัวดำเนินการหรือตัวกรองการบดอัดในส่วนต่างๆของข้อมูล (2) วางตระกูลคอลัมน์เพื่อลบข้อมูล (3) ตระกูลหนึ่งคอลัมน์เพื่อเก็บข้อมูลเมตาและอีกหนึ่งคอลัมน์เพื่อจัดเก็บข้อมูล

ถาม: อะไรคือความแตกต่างระหว่างการจัดเก็บข้อมูลในหลายคอลัมน์ตระกูลและในหลายฐานข้อมูล Stonesdb?

ตอบ: ความแตกต่างที่สำคัญคือการสำรองข้อมูลการเขียนเชิงอะตอมและประสิทธิภาพของการเขียน ข้อดีของการใช้หลายฐานข้อมูล: ฐานข้อมูลเป็นหน่วยของการสำรองข้อมูลหรือจุดตรวจสอบ ง่ายกว่าในการคัดลอกฐานข้อมูลไปยังโฮสต์อื่นนอกเหนือจากตระกูลคอลัมน์ ข้อดีของการใช้หลายคอลัมน์ตระกูล: (1) เขียนแบตช์เป็นอะตอมมิกข้ามหลายตระกูลแฟมิลี่ในฐานข้อมูลเดียว คุณไม่สามารถทำได้โดยใช้ฐานข้อมูล RocksDB หลายฐานข้อมูล (2) หากคุณออกการซิงค์เขียนไปยัง WAL ฐานข้อมูลมากเกินไปอาจส่งผลกระทบต่อประสิทธิภาพการทำงาน

ถาม: ฉันมีช่องว่างที่แตกต่างกัน ฉันควรแยกพวกเขาด้วยคำนำหน้าหรือใช้ครอบครัวคอลัมน์ที่แตกต่างกัน?

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


2

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

จากการทำความเข้าใจโมเดลข้อมูล Cassandra จากมุมมอง SQLบน RubyScale:

ครอบครัวคอลัมน์คืออะไร? เพียงแค่คำนำหน้าตาราง? ครอบครัวคอลัมน์มีจำนวนการตั้งค่าที่สอดคล้องกับการเปลี่ยนแปลงพฤติกรรมของมัน มีการตั้งค่าแคชสำหรับคีย์ (UUID ในตัวอย่างนี้) การตั้งค่าแคชสำหรับแถวทั้งหมด (ตารางทั้งหมดในตัวอย่างนี้) และที่สำคัญที่สุดคือการเรียงลำดับ ในคาสซานดรามี OFFSET ไม่เพียง LIMIT และเทียบเท่าระหว่าง ในตัวอย่างนี้ชื่อคอลัมน์เป็นเพียงสตริง แต่ก็อาจเป็นจำนวนเต็มหรือเวลาและพวกเขาจะถูกเก็บไว้ในการเรียงลำดับ ตระกูลคอลัมน์หนึ่งอาจมีข้อมูลเรียงลำดับการประทับเวลาที่คุณทำการค้นหาสิ่งต่าง ๆ ตามเวลาและอีกรายการหนึ่งอาจเป็นข้อมูลสมุดที่อยู่ที่คุณทำการค้นหาตามลำดับตัวอักษร การเรียงลำดับอย่างเดียวที่คุณต้องทำหลังจากความจริงก็คือย้อนกลับชิ้นส่วนเฉพาะ


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