Cassandra - สถาปัตยกรรม
เป้าหมายการออกแบบของ Cassandra คือการจัดการปริมาณงานข้อมูลขนาดใหญ่ในหลาย ๆ โหนดโดยไม่เกิดความล้มเหลวแม้แต่จุดเดียว Cassandra มีระบบกระจายแบบเพียร์ทูเพียร์ทั่วทั้งโหนดและข้อมูลจะถูกกระจายระหว่างโหนดทั้งหมดในคลัสเตอร์
โหนดทั้งหมดในคลัสเตอร์มีบทบาทเดียวกัน แต่ละโหนดเป็นอิสระและเชื่อมต่อกับโหนดอื่นในเวลาเดียวกัน
แต่ละโหนดในคลัสเตอร์สามารถยอมรับคำขออ่านและเขียนได้ไม่ว่าข้อมูลจะอยู่ที่ใดในคลัสเตอร์ก็ตาม
เมื่อโหนดหยุดทำงานคำขออ่าน / เขียนสามารถให้บริการจากโหนดอื่นในเครือข่าย
การจำลองข้อมูลในคาสซานดรา
ใน Cassandra โหนดอย่างน้อยหนึ่งโหนดในคลัสเตอร์จะทำหน้าที่เป็นแบบจำลองสำหรับข้อมูลที่กำหนด หากตรวจพบว่าโหนดบางโหนดตอบสนองด้วยค่าที่ล้าสมัย Cassandra จะส่งคืนค่าล่าสุดให้กับไคลเอ็นต์ หลังจากส่งคืนค่าล่าสุด Cassandra จะดำเนินการ aread repair ในพื้นหลังเพื่ออัปเดตค่าเก่า
รูปต่อไปนี้แสดงมุมมองแผนผังของวิธีที่ Cassandra ใช้การจำลองข้อมูลระหว่างโหนดในคลัสเตอร์เพื่อให้แน่ใจว่าไม่มีจุดล้มเหลวแม้แต่จุดเดียว
Note - Cassandra ใช้ไฟล์ Gossip Protocol อยู่เบื้องหลังเพื่อให้โหนดสื่อสารกันและตรวจจับโหนดที่ผิดพลาดในคลัสเตอร์
ส่วนประกอบของ Cassandra
ส่วนประกอบสำคัญของ Cassandra มีดังนี้ -
Node - เป็นสถานที่จัดเก็บข้อมูล
Data center - เป็นชุดของโหนดที่เกี่ยวข้อง
Cluster - คลัสเตอร์คือส่วนประกอบที่มีศูนย์ข้อมูลตั้งแต่หนึ่งศูนย์ขึ้นไป
Commit log- บันทึกการกระทำเป็นกลไกการกู้คืนความผิดพลาดใน Cassandra ทุกการดำเนินการเขียนถูกเขียนลงในบันทึกการคอมมิต
Mem-table- ตาราง mem เป็นโครงสร้างข้อมูลที่อาศัยหน่วยความจำ หลังจากคอมมิตบันทึกข้อมูลจะถูกเขียนลงใน mem-table บางครั้งสำหรับตระกูลคอลัมน์เดียวจะมีตาราง mem หลายตาราง
SSTable - เป็นไฟล์ดิสก์ที่ข้อมูลจะถูกล้างออกจากตาราง mem เมื่อเนื้อหาถึงค่าเกณฑ์
Bloom filter- อัลกอริทึมเหล่านี้เป็นเพียงอัลกอริทึมที่รวดเร็วไม่เป็นไปตามข้อกำหนดสำหรับการทดสอบว่าองค์ประกอบนั้นเป็นสมาชิกของเซตหรือไม่ เป็นแคชชนิดพิเศษ มีการเข้าถึงตัวกรอง Bloom หลังจากทุกการค้นหา
ภาษาแบบสอบถาม Cassandra
ผู้ใช้สามารถเข้าถึง Cassandra ผ่านโหนดโดยใช้ Cassandra Query Language (CQL) CQL ปฏิบัติต่อฐานข้อมูล(Keyspace)เป็นภาชนะของโต๊ะ โปรแกรมเมอร์ใช้cqlsh: ข้อความแจ้งให้ทำงานกับ CQL หรือไดรเวอร์ภาษาของแอปพลิเคชันแยกต่างหาก
ไคลเอนต์เข้าใกล้โหนดใด ๆ สำหรับการดำเนินการอ่านเขียน โหนดนั้น (ผู้ประสานงาน) เล่นพร็อกซีระหว่างไคลเอนต์และโหนดที่เก็บข้อมูล
เขียนการดำเนินงาน
ทุกกิจกรรมการเขียนของโหนดถูกจับโดยไฟล์ commit logsเขียนในโหนด หลังจากนั้นข้อมูลจะถูกจับและจัดเก็บในไฟล์mem-table. เมื่อใดก็ตามที่ mem-table เต็มข้อมูลจะถูกเขียนลงในไฟล์ SStableแฟ้มข้อมูล. การเขียนทั้งหมดจะถูกแบ่งพาร์ติชันและจำลองแบบอัตโนมัติทั่วทั้งคลัสเตอร์ Cassandra รวบรวม SSTables เป็นระยะโดยทิ้งข้อมูลที่ไม่จำเป็น
อ่านการดำเนินการ
ในระหว่างการดำเนินการอ่าน Cassandra จะรับค่าจาก mem-table และตรวจสอบตัวกรอง bloom เพื่อค้นหา SSTable ที่เหมาะสมซึ่งเก็บข้อมูลที่ต้องการ