Search
Duplicate
Try Notion

CQL - Timestamps, TTLs, Collections and Secondary Indexs

Timestamp

Di Cassandra, untuk mengecek waktu terakhir sebuah field diupdate, kita dapat menggunakan fungsi writetime. Setiap field dalam sebuah tabel dapat memiliki writetime yang berbeda-beda tergantung pada kapan field tersebut terakhir kali di-update. Namun, perlu diingat bahwa primary key tidak dapat memiliki writetimekarena nilai primary keytidak dapat di-update setelah di-set.
SQL
Copy
select id, name, position, writetime(name), writetime(position) from employee_by_id;

TTL

TTL digunakan untuk mengupdate data tanpa menyimpannya secara permanen selama periode waktu tertentu. Ketika periode waktu tersebut berakhir, nilai pada kolom tersebut akan dihapus.
SQL
Copy
-- ttl di set ke 60 detik update employee_by_id using ttl 60 set position = 'Manager' where id = 1;
Ketika waktunya berakhir, writetime nya pun hilang

Collection

Di Cassandra, terdapat tipe data collection yang mirip dengan ArrayList. Tipe data ini dapat didefinisikan dengan tipe data tertentu.
SQL
Copy
-- menambah field phone dengan tipe data set of text alter table employee_by_id add phone set<text>; -- update value update employee_by_id set phone = {'123','456','212'} where id = 1; -- meng append value update employee_by_id set phone = phone + {'901'} where id = 1; -- menghapus value update employee_by_id set phone = phone - {'901'} where id = 1; -- empty update employee_by_id set phone = {} where id = 1;

Secondary Index

Allow Filteringdigunakan untuk melakukan filter pada kolom yang bukan merupakan primary key. Namun, penggunaan Allow Filtering bukanlah best practice karena dapat mempengaruhi performa database.
SQL
Copy
select * from employee_by_id where position ='CEO' ALLOW FILTERING ;
Untuk meningkatkan performa query, bisa juga dengan membuat Secondary Index pada field yang berkaitan
SQL
Copy
-- membuat secondary index create index on employee_by_id(position); -- filtering tanpa AlLOW FILTERING karena sudah dibuat index select * from employee_by_id where position ='CEO';