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 ที่เหมาะสมซึ่งเก็บข้อมูลที่ต้องการ