Part 7 — CQL — Consistancy, Inserts and Selects
Apache Cassandra Series
- Part 1 — Introduction to Apache Cassandra
- Part 2 — The CAP Theorm
- Part 3 — Query First Approach
- Part 4 — Partitioning, Rings and Tokens
- Part 5 — Replication, Data Centers and Racks
- Part 6 — CQL — Keyspace and Table
- Part 7 — CQL — Consistancy, Inserts and Selects
- Part 8 — CQL — Timestamps, TTLs, Collections and Secondary Indexs
- Part 9 — CQL — UUIDs and Counters
- Part 10 — CQL — Materialized Views
- Part 11 — Peer To Peer Architecture
- Part 12 — Snitch
- Part 13 — Gossip Protocol
- Part 14 — Cassandra Write Path
- Part 15 — Cassandra Read Path
- Part 16 — Compaction
Insert
Melakukan insert data ke tabel di Cassandra mirip seperti insert data di database SQL lainya, yaitu :
insert into employee_by_id(id, name, position)
VALUES (1, 'John', 'Manager');
insert into employee_by_id(id, name, position)
VALUES (2, 'Bob', 'CEO');
Lalu wajib hukumnya untuk menginsert Partition Key dan Clustering Column. Jika tidak maka akan terjadi error.
insert into employee_by_car_make_and_car_model(car_make,car_model,id,name)
values ('BMW','TDR-3000',1,'John'); -- success
insert into employee_by_car_make_and_car_model(car_make,id,name)
values ('BMW',1,'John'); -- error
Sorting & Filter
Filtering data di Cassandra hanya bisa dilakukan di Partition Key, jika dipaksakan filter diluar Partition Key maka akan terjadi error.
select * from employee_by_id where id = 1; -- success
select * from employee_by_id where name = 'John'; -- error
Begitu juga dengan sorting, jika ingin melakukan order harus menggunakan Clustering Column dan wajib dilakukan filter terlebih dahulu.
select *
from employee_by_car_make_sorted
where car_make = 'BMW'
order by age, id; -- success
select *
from employee_by_car_make_sorted
where car_make = 'BMW'
order by name; -- error
Jika ingin mensorting data lebih dari 1 field harus sesuai dengan urutan field saat membuat tabel. Karena saat membuat tabel urutanya adalah id kemudian age, maka ordernya juga harus seperti itu.
select *
from employee_by_car_make_sorted
where car_make = 'BMW'
order by age, id; -- success
select *
from employee_by_car_make_sorted
where car_make = 'BMW'
order by id; -- error
Jika ingin melakukan filtering data, diwajibkan untuk memfilter menggunakan semsua partition key.
select * from employee_by_car_make_and_car_model
where car_make = 'BMW' and car_model = 'TDR-3000'; -- success
select * from employee_by_car_make_and_car_model
where car_make = 'BMW'; -- error
Consistency Level
Consistency level adalah koefisien yang digunakan untuk menentukan seberapa konsisten data pada suatu database. Terdapat beberapa level consistency level, di antaranya:
- Any (hanya digunakan pada operasi penulisan data), yaitu memastikan data tersimpan setidaknya di 1 node.
- Integer (seperti 1, 2, 3 dst), yaitu memastikan data tersimpan sebanyak N node.
- Quorum, yaitu memastikan data tersimpan di mayoritas node dalam cluster. Rumus untuk menghitung Quorum adalah (RF+1)/2, di mana
RF
adalah Replication factor.
Dan masih banyak lagi tingkatan consistency level yang dapat disesuaikan dengan kebutuhan aplikasi.
Untuk mengecek dan mengubah consistency level yang ada bisa menggunakan command berikut :
-- cek consistency level
CONSISTENCY;
-- mengubah consistency level
CONSISTENCY QUORUM;
🔔 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! 🌟