Cassandra Write Path

Cassandra Write Path

Cassandra menyimpan data ke dua tempat yaitu Commit Log dan MemTable.
Commit Log disimpan di disk dan bersifat semi-persistent. Ini berarti data tidak akan hilang ketika Cassandra restart. Namun, data yang disimpan tidak diurutkan.
MemTable disimpan di memory dan bersifat non-persistent. Ini berarti data akan hilang ketika Cassandra restart. Namun, data yang disimpan diurutkan berdasarkan clustering column.
Setelah data berhasil disimpan di kedua tempat tersebut, Cassandra akan mengirim pesan ke client bahwa transaksi telah berhasil.
Jika data hilang dari MemTable, data akan dikembalikan dari Commit Log.
Jika ukuran data di Commit Log dan MemTable mulai terlalu besar, maka Cassandra akan melakukan aksi flush. Aksi flush akan menyimpan seluruh data di MemTable ke disk sebagai SSTable yang bersifat persistent dan immutable.
Untuk mengoptimalkan performa penyimpanan data pada Hard Disk atau Spinning Disk, perlu dibedakan antara tempat penyimpanan Commit Log dan SS Table. Hal ini dilakukan agar bagian Head Hard Disk yang digunakan untuk menyimpan data pada SS Table dapat fokus pada kegiatan searching data, sementara bagian Hard Disk yang terletak pada bagian awal (HD di Commit Log) dapat fokus pada kegiatan Insert data yang berkelanjutan. Dengan cara ini, penggunaan Hard Disk dapat dioptimalkan sehingga meningkatkan performa penyimpanan data pada Cassandra.
Sedangkan data yang disimpan di SSD bisa digabungkan menjadi 1.
Dari SS Table yang banyak dapat di gabungkan menjadi 1 SS Table, proses ini disebut Compaction. Proses ini dapat meningkatkan proses searching.