Partitioning, Rings and Tokens

Partition, Ring dan Token

Car Make merupakan Partition Key. Partition Key digunakan untuk memfilter tabel. Ketika dilakukan partisi, setiap data yang memiliki Partition Key yang sama harus disimpan dalam node yang sama. Sebagai contoh, data Elivis, Elton, dan Selena yang memiliki kunci partisi BMW harus disimpan dalam node yang sama.
Id diasumsikan sebagai Clustering Column. Clustering Column digunakan untuk mengurutkan data dalam tabel.
Primary key adalah gabungan antara kunci partisi dan kolom pengelompokan.
Untuk melakukan filter data, harus menggunakan Partition Key. Jika ingin melakukan filter data Employee berdasarkan kolom Id, harus membuat tabel baru dengan kolom Id sebagai kunci partisi.
Cassandra menggunakan Hash Function untuk mengkodekan kunci partisi yang dulunya dalam bentuk string menjadi ID unik yang disebut sebagai Token. Token ini memiliki tipe data integer.
Berikut adalah gambar cassandra ring yang mewakili banyaknya node dalam cluster. Terdapat 5 node dalam gambar ini. Range integer akan dibagi menjadi 5 karena ada 5 node. Jika diasumsikan range integer dari 0-50, maka partisi nomor 1 akan mewakili token 0-10, partisi nomor 2 akan mewakili token 11-20, dan seterusnya. Jika token BMW adalah 15, maka ia akan berada di node 2. Sedangkan jika token Audi adalah 43, maka ia akan berada di node 5. Dengan demikian, gambar ini menunjukkan lokasi node dari dua token tersebut dalam cluster.
Dalam dunia nyata, setiap node tidak hanya mewakili rentang token yang luas, tetapi juga terdapat Virtual Node di setiap nodenya. Fungsi Virtual Node di Cassandra adalah untuk menempatkan token ke node dengan cara yang lebih fleksibel, sehingga tidak perlu dilakukan secara manual. Selain itu, penggunaan Virtual Node juga memberikan fleksibilitas dalam hal penambahan node pada cluster. Kapasitas setiap node dapat dikonfigurasi sesuai kebutuhan, misalnya node 1 memiliki kapasitas 256 GB sedangkan node 2 hanya memiliki kapasitas 64 GB. Namun, secara default kapasitas setiap node adalah 256 GB.