Cassandra - Arsitektur
Tujuan desain Cassandra adalah untuk menangani beban kerja data besar di beberapa node tanpa ada satu titik kegagalan. Cassandra memiliki sistem terdistribusi peer-to-peer di seluruh node-nya, dan data didistribusikan di antara semua node dalam cluster.
Semua node dalam cluster memainkan peran yang sama. Setiap node berdiri sendiri dan pada saat yang sama saling berhubungan dengan node lainnya.
Setiap node dalam cluster dapat menerima permintaan baca dan tulis, terlepas dari di mana data sebenarnya berada di cluster.
Ketika sebuah node turun, permintaan baca / tulis dapat dilayani dari node lain di jaringan.
Replikasi Data di Cassandra
Di Cassandra, satu atau lebih node dalam cluster bertindak sebagai replika untuk bagian data tertentu. Jika terdeteksi bahwa beberapa node merespons dengan nilai out-of-date, Cassandra akan mengembalikan nilai terbaru ke klien. Setelah mengembalikan nilai terbaru, Cassandra melakukan aread repair di latar belakang untuk memperbarui nilai lama.
Gambar berikut menunjukkan tampilan skematis tentang bagaimana Cassandra menggunakan replikasi data di antara node dalam cluster untuk memastikan tidak ada satu titik kegagalan.
Note - Cassandra menggunakan Gossip Protocol di latar belakang untuk memungkinkan node berkomunikasi satu sama lain dan mendeteksi node yang salah di cluster.
Komponen Cassandra
Komponen utama Cassandra adalah sebagai berikut -
Node - Ini adalah tempat penyimpanan data.
Data center - Ini adalah kumpulan node terkait.
Cluster - Cluster adalah komponen yang berisi satu atau lebih pusat data.
Commit log- Log komit adalah mekanisme pemulihan kerusakan di Cassandra. Setiap operasi tulis ditulis ke log komit.
Mem-table- Sebuah tabel-mem adalah struktur data penduduk-memori. Setelah melakukan log, data akan ditulis ke tabel mem. Terkadang, untuk satu keluarga kolom tunggal, akan ada beberapa tabel mem.
SSTable - Ini adalah file disk yang datanya dikeluarkan dari mem-tabel ketika isinya mencapai nilai ambang batas.
Bloom filter- Ini hanyalah algoritme cepat, nondeterministik, untuk menguji apakah suatu elemen adalah anggota dari suatu himpunan. Ini adalah jenis cache khusus. Filter Bloom diakses setelah setiap kueri.
Cassandra Query Language
Pengguna dapat mengakses Cassandra melalui node-node nya menggunakan Cassandra Query Language (CQL). CQL menangani database(Keyspace)sebagai wadah meja. Pemrogram menggunakancqlsh: prompt untuk bekerja dengan CQL atau driver bahasa aplikasi terpisah.
Klien mendekati salah satu node untuk operasi baca-tulis mereka. Node itu (koordinator) memainkan proxy antara klien dan node yang menyimpan data.
Operasi Tulis
Setiap aktivitas tulis node ditangkap oleh commit logstertulis di node. Nantinya data tersebut akan ditangkap dan disimpan dimem-table. Setiap kali mem-tabel penuh, data akan ditulis ke dalam SStablefile data. Semua tulisan secara otomatis dipartisi dan direplikasi di seluruh cluster. Cassandra secara berkala mengkonsolidasikan SSTable, membuang data yang tidak perlu.
Baca Operasi
Selama operasi baca, Cassandra mendapatkan nilai dari mem-table dan memeriksa filter bloom untuk menemukan SSTable yang sesuai yang menyimpan data yang diperlukan.