Cassandra - แบบจำลองข้อมูล
แบบจำลองข้อมูลของ Cassandra นั้นแตกต่างจากที่เราเห็นใน RDBMS อย่างเห็นได้ชัด บทนี้ให้ภาพรวมเกี่ยวกับวิธีที่ Cassandra จัดเก็บข้อมูล
คลัสเตอร์
ฐานข้อมูล Cassandra ถูกกระจายไปยังเครื่องต่างๆที่ทำงานร่วมกัน คอนเทนเนอร์ด้านนอกสุดเรียกว่าคลัสเตอร์ สำหรับการจัดการความล้มเหลวทุกโหนดจะมีแบบจำลองและในกรณีที่เกิดความล้มเหลวแบบจำลองจะรับผิดชอบ Cassandra จัดเรียงโหนดในคลัสเตอร์ในรูปแบบวงแหวนและกำหนดข้อมูลให้
คีย์สเปซ
Keyspace เป็นคอนเทนเนอร์ด้านนอกสุดสำหรับข้อมูลใน Cassandra คุณสมบัติพื้นฐานของ Keyspace ใน Cassandra คือ -
Replication factor - เป็นจำนวนเครื่องในคลัสเตอร์ที่จะรับสำเนาข้อมูลเดียวกัน
Replica placement strategy- ไม่มีอะไรนอกจากกลยุทธ์ในการวางแบบจำลองไว้ในวงแหวน เรามีกลยุทธ์เช่นsimple strategy (กลยุทธ์การรับรู้ชั้นวาง) old network topology strategy (กลยุทธ์การรับรู้ชั้นวาง) และ network topology strategy (กลยุทธ์ที่ใช้ร่วมกับศูนย์ข้อมูล)
Column families- Keyspace เป็นที่เก็บรายชื่อของคอลัมน์อย่างน้อยหนึ่งตระกูล ในทางกลับกันตระกูลคอลัมน์คือที่เก็บของคอลเลกชันของแถว แต่ละแถวประกอบด้วยคอลัมน์ตามลำดับ กลุ่มคอลัมน์แสดงถึงโครงสร้างของข้อมูลของคุณ แต่ละคีย์สเปซมีตระกูลคอลัมน์อย่างน้อยหนึ่งตระกูลและบ่อยครั้ง
ไวยากรณ์ของการสร้าง Keyspace มีดังนี้ -
CREATE KEYSPACE Keyspace name
WITH replication = {'class': 'SimpleStrategy', 'replication_factor' : 3};
ภาพประกอบต่อไปนี้แสดงมุมมองแผนผังของ Keyspace
คอลัมน์ครอบครัว
กลุ่มคอลัมน์คือคอนเทนเนอร์สำหรับคอลเลกชันของแถวที่เรียงลำดับ แต่ละแถวจะเป็นคอลเลกชันคอลัมน์ตามลำดับ ตารางต่อไปนี้แสดงรายการจุดที่ทำให้ตระกูลคอลัมน์แตกต่างจากตารางฐานข้อมูลเชิงสัมพันธ์
ตารางเชิงสัมพันธ์ | ครอบครัวคอลัมน์คาสซานดรา |
---|---|
สคีมาในโมเดลเชิงสัมพันธ์ได้รับการแก้ไข เมื่อเรากำหนดคอลัมน์บางคอลัมน์สำหรับตารางในขณะที่แทรกข้อมูลในทุกแถวคอลัมน์ทั้งหมดจะต้องเต็มอย่างน้อยด้วยค่า null | ในคาสซานดราแม้ว่าจะมีการกำหนดตระกูลคอลัมน์ แต่คอลัมน์จะไม่ถูกกำหนด คุณสามารถเพิ่มคอลัมน์ใด ๆ ลงในตระกูลคอลัมน์ใดก็ได้อย่างอิสระตลอดเวลา |
ตารางเชิงสัมพันธ์กำหนดเฉพาะคอลัมน์และผู้ใช้กรอกค่าในตาราง | ใน Cassandra ตารางประกอบด้วยคอลัมน์หรือสามารถกำหนดเป็นตระกูลซุปเปอร์คอลัมน์ |
กลุ่มคอลัมน์ Cassandra มีคุณสมบัติดังต่อไปนี้ -
keys_cached - แสดงจำนวนสถานที่ที่จะเก็บแคชต่อ SSTable
rows_cached - แสดงจำนวนแถวที่เนื้อหาทั้งหมดจะถูกแคชไว้ในหน่วยความจำ
preload_row_cache - ระบุว่าคุณต้องการเติมข้อมูลแถวแคชล่วงหน้าหรือไม่
Note − ไม่เหมือนกับตารางเชิงสัมพันธ์ที่สคีมาของตระกูลคอลัมน์ไม่ได้รับการแก้ไข Cassandra ไม่ได้บังคับให้แต่ละแถวมีคอลัมน์ทั้งหมด
รูปต่อไปนี้แสดงตัวอย่างของคอลัมน์ตระกูล Cassandra
คอลัมน์
คอลัมน์เป็นโครงสร้างข้อมูลพื้นฐานของคาสซานดราที่มีค่าสามค่า ได้แก่ คีย์หรือชื่อคอลัมน์ค่าและการประทับเวลา ด้านล่างคือโครงสร้างของคอลัมน์
SuperColumn
คอลัมน์พิเศษเป็นคอลัมน์พิเศษดังนั้นจึงเป็นคู่คีย์ - ค่าด้วย แต่ซุปเปอร์คอลัมน์จะเก็บแผนที่ของคอลัมน์ย่อย
โดยทั่วไปคอลัมน์ตระกูลจะถูกเก็บไว้ในดิสก์ในแต่ละไฟล์ ดังนั้นเพื่อเพิ่มประสิทธิภาพการทำงานจึงเป็นสิ่งสำคัญที่จะต้องเก็บคอลัมน์ที่คุณมีแนวโน้มที่จะสืบค้นร่วมกันในกลุ่มคอลัมน์เดียวกันและคอลัมน์พิเศษจะมีประโยชน์ที่นี่ต่อไปนี้เป็นโครงสร้างของซุปเปอร์คอลัมน์
แบบจำลองข้อมูลของ Cassandra และ RDBMS
ตารางต่อไปนี้แสดงรายการจุดที่ทำให้โมเดลข้อมูลของคาสซานดราแตกต่างจาก RDBMS
RDBMS | คาสซานดรา |
---|---|
RDBMS เกี่ยวข้องกับข้อมูลที่มีโครงสร้าง | Cassandra เกี่ยวข้องกับข้อมูลที่ไม่มีโครงสร้าง |
มีสคีมาที่ตายตัว | Cassandra มีสคีมาที่ยืดหยุ่น |
ใน RDBMS ตารางคืออาร์เรย์ของอาร์เรย์ (แถว x คอลัมน์) | ใน Cassandra ตารางคือรายการของ "คู่คีย์ - ค่าที่ซ้อนกัน" (คีย์ ROW x COLUMN x ค่า COLUMN) |
ฐานข้อมูลเป็นคอนเทนเนอร์ชั้นนอกสุดที่มีข้อมูลที่สอดคล้องกับแอปพลิเคชัน | Keyspace เป็นคอนเทนเนอร์ชั้นนอกสุดที่มีข้อมูลที่สอดคล้องกับแอปพลิเคชัน |
ตารางเป็นเอนทิตีของฐานข้อมูล | ตารางหรือตระกูลคอลัมน์เป็นเอนทิตีของคีย์สเปซ |
Row คือระเบียนส่วนบุคคลใน RDBMS | Row คือหน่วยของการจำลองแบบใน Cassandra |
คอลัมน์แสดงถึงคุณลักษณะของความสัมพันธ์ | คอลัมน์เป็นหน่วยเก็บข้อมูลในคาสซานดรา |
RDBMS สนับสนุนแนวคิดของคีย์ต่างประเทศรวม | ความสัมพันธ์จะแสดงโดยใช้คอลเลกชัน |