Part 6 — CQL — Keyspace and Table

Muhammad Hafidz
3 min readMay 13, 2024

--

Apache Cassandra Series

CQL (Cassandra Query Language)

Keyspace

Jika di PostgreSQL kita mengenal schema, di Cassandra kita menyebunya sebagai Keyspace. Keyspace berfungsi seperti sebuah folder atau skema yang digunakan untuk mengelompokkan tabel dalam suatu unit. Dengan menggunakan keyspace, tabel-tabel yang memiliki fungsi dan keterkaitan yang sama dapat dikelompokkan bersama. Sehingga, dapat memudahkan pengaturan dan pengelolaan tabel dalam suatu cluster.

Untuk membuat dan menghapus keyspace kita bisa menggunakan command berikut :

-- create keyspace
create keyspace test_keyspace with replication = {
'class' : 'SimpleStrategy',
'replication_factor':'1'
} and durable_writes = true;

-- drop keyspace
drop keyspace test_keyspace;

Untuk class terdapat 2 opsi yaitu SimpleStrategy dan NetworkTopologyStrategy. SimpleStrategy digunakan untuk single node dan hanya disarankan untuk fase development. Di production disarankan menggunakan NetworkTopologyStrategy untuk multi node.

Kemudian untuk replication factor disarankan untuk production untuk menggunakan node ganjil dimulai dari 3, 5, 7 dan seterusnya. Hal ini berfungsi untuk mengantisipasi adanya Network Partition. Penjelasan lebih lanjut bisa dilihat di bagian Peer To Peer Architecture.

Untuk durable write merupakan konfigurasi apakah ingin menggunakan Commit Log saat update data di keyspace tersebut. Disarankan untuk di set ke true dan tidak dirubah.

Table

Untuk membuat dan menghapus tabel kita bisa menggunakan command berikut :

-- create table
create table employee_by_id
(
id int primary key,
name text,
position text
);

-- drop table
drop table employee_by_id;

Untuk membuat tabel dengan komposit value kita bisa mendefinisikannya di primary key. Primary Key merupakan Tuple, yang mana index pertama merupakan Partition Key yang digunakan untuk filer data, sedangkan index kedua dan seterusnya merupakan Clustering Column yang digunakan untuk ordering data.

create table employee_by_car_make
(
car_make text,
id int,
car_model text,
primary key ( car_make, id )
);

Memungkinkan juga jika ingin membuat Clustering Column lebih dari 1 field semisal age dan id, bisa didefinisikan seperti berikut :

create table employee_by_car_make_sorted
(
car_make text,
age int,
id int,
name text,
primary key ( car_make, age, id)
);

Jika ingin membuat Partition Key lebih dari 1 field misal car_make dan car_model, bisa didefinisikan seperti berikut :

create table employee_by_car_make_and_car_model
(
car_make text,
car_model text,
id int,
name text,
primary key ( (car_make, car_model), id )
);

Untuk opsi opsi lebih detail yang tersedia bisa dilihat di Data Definision (DDL).

🔔 Jika anda menyukai artikel ini, silahkan subscribe agar anda bisa mendapatkan notifikasi jika ada artikel baru atau anda bisa melihat artikel yang telah dipublikasikan disini. 🚀

📝 Jika ada pertanyaan atau saran, anda bisa menulisnya di kolom komentar atau mengirim pesan lewat Medium.

Thank you for your support! 🌟

--

--