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';