Cassandra Koleksi: Kumpulan, Daftar & Peta di CQL dengan Contoh
โก Ringkasan Cerdas
Cassandra Koleksi menyimpan beberapa nilai dalam satu kolom menggunakan tipe set, list, dan map. Halaman ini menjelaskan setiap tipe, sintaks CQL untuk membuat dan mengisinya, cara memperbarui elemen, dan batasan ukuran yang menentukan kapan koleksi bukan pilihan yang tepat.

Apa Cassandra Koleksi?
Cassandra koleksi adalah cara yang baik untuk menangani tugas. Beberapa elemen dapat disimpan dalam koleksi. Ada batasan dalam Cassandra koleksi.
- Kolom koleksi tidak dapat menyimpan data lebih dari 64 KB dalam satu nilai.
- Jaga agar ukuran koleksi tetap kecil untuk mencegah beban berlebih dari kueri koleksi, karena seluruh koleksi akan dibaca meskipun hanya satu elemen yang dibutuhkan.
- Menyimpan data lebih dari 64 KB berarti hanya 64 KB pertama yang dapat diakses, yang mengakibatkan hilangnya data.
- Koleksi yang tidak dibekukan terbatas pada sekitar 65,535 elemen, dan setiap elemen dibaca bersama sebagai satu kesatuan.
Batasan-batasan ini menunjukkan satu aturan: koleksi cocok untuk sejumlah atribut yang melekat pada sebuah baris, bukan daftar tak terbatas yang terus bertambah seiring penggunaan. Apa pun yang terus bertambah harus berada di kolom pengelompokan dalam tabelnya sendiri.
Jenis dari Cassandra koleksi
Pada dasarnya ada tiga jenis koleksi itu Cassandra mendukung:
- set
- Daftar
- Lokasi
Cassandra Tetapkan Koleksi
Set menyimpan sekelompok elemen yang mengembalikan elemen yang diurutkan saat melakukan kueri.
Sintaksis
Berikut adalah sintaksis koleksi Set yang menyimpan beberapa alamat email untuk guru.
CREATE TABLE University.Teacher ( id int, Name text, Email set<text>, PRIMARY KEY (id) );
Example
Berikut adalah snapshot di mana tabel โGuruโ dibuat dengan kolom โEmailโ sebagai koleksi.
Berikut adalah cuplikan saat data dimasukkan ke dalam koleksi.
INSERT INTO University.Teacher (id, Name, Email) VALUES (1, 'Guru99', {'abc@gmail.com', 'xyz@hotmail.com'});
Elemen individual ditambahkan atau dihapus tanpa menulis ulang seluruh himpunan, yang merupakan keuntungan utama dari membiarkan koleksi tidak dibekukan.
UPDATE University.Teacher SET Email = Email + {'new@guru99.com'} WHERE id = 1; UPDATE University.Teacher SET Email = Email - {'xyz@hotmail.com'} WHERE id = 1;
Cassandra Daftar Koleksi
Jika urutan elemen penting, daftar digunakan.
Example
Berikut adalah cuplikan di mana kolom kursus bertipe daftar ditambahkan pada tabel โGuruโ.
ALTER TABLE University.Teacher ADD coursenames list<text>;
Berikut adalah cuplikan dimana data dimasukkan ke dalam kolom โnama kursusโ.
INSERT INTO University.Teacher (id, Name, Email, coursenames) VALUES (2, 'Hamilton', {'hamilton@hotmail.com'}, ['Data Science']);
Berikut adalah cuplikan yang menunjukkan status database saat ini setelah penyisipan.
Elemen dapat ditambahkan di awal atau akhir, meskipun penambahan di awal dan pembaruan berdasarkan indeks sama-sama memerlukan Cassandra untuk membaca daftar terlebih dahulu, yang membuat prosesnya lebih lambat daripada menambahkan data.
UPDATE University.Teacher SET coursenames = coursenames + ['Machine Learning'] WHERE id = 2; UPDATE University.Teacher SET coursenames = ['Statistics'] + coursenames WHERE id = 2;
Cassandra Koleksi Peta
Peta adalah tipe koleksi yang digunakan untuk menyimpan pasangan nilai kunci. Sesuai dengan namanya, ia memetakan satu hal ke hal lain.
Misalnya, jika Anda ingin menyimpan nama mata kuliah dengan nama mata kuliah prasyaratnya, kumpulan peta dapat digunakan.
Example
Berikut adalah cuplikan di mana tipe peta dibuat untuk nama mata kuliah dan nama mata kuliah prasyaratnya.
CREATE TABLE University.Course ( id int, prereq map<text, text>, PRIMARY KEY (id) );
Berikut adalah cuplikan tempat data dimasukkan dalam tipe kumpulan peta.
INSERT INTO University.Course (id, prereq) VALUES (1, {'DataScience': 'Database', 'Neural Network': 'Artificial Intelligence'});
Satu entri ditambahkan atau dihapus tanpa menyentuh bagian peta lainnya.
UPDATE University.Course SET prereq['Robotics'] = 'Linear Algebra' WHERE id = 1; DELETE prereq['DataScience'] FROM University.Course WHERE id = 1;
Set vs Daftar vs Peta: Memilih Koleksi
Ketiga jenis tersebut tampak serupa tetapi berbeda dalam hal jaminan pemesanan dan biaya pembaruan.
| Aspek | set | Daftar | Lokasi |
|---|---|---|---|
| Pemesanan | Diurutkan berdasarkan nilai | Urutan penyisipan dipertahankan | Diurutkan berdasarkan kunci |
| Duplikat | Tidak diizinkan | Diizinkan | Kunci unik |
| Biaya pembaruan | Murah, tidak perlu dibaca | Penambahan murah; penambahan awalan dan pembaruan indeks memerlukan pembacaan. | Murah per kunci |
| Terbaik untuk | Tag, alamat email, label unik | Urutan langkah-langkah di mana duplikat memiliki makna. | Atribut bernama dengan kunci yang tidak dapat diprediksi |
Lebih baik menggunakan set daripada list kecuali jika urutan benar-benar penting, karena operasi indeks list akan membuat data yang dihapus (tombstone) dan dapat menghasilkan hasil yang mengejutkan saat terjadi penulisan bersamaan. Menambahkan beku ke salah satu dari ketiga toko tersebut, ia menyimpannya sebagai satu nilai yang tidak dapat diubah, yang memungkinkan koleksi tersebut muncul dalam kunci utama tetapi menghilangkan pembaruan tingkat elemen.
CREATE TABLE University.Enrolment ( id int, tags frozen<set<text>>, PRIMARY KEY (id, tags) );
Jika suatu koleksi melebihi beberapa lusin elemen, modelkan sebagai tabel terpisah dengan elemen tersebut sebagai kolom pengelompokan, mengikuti pendekatan dalam Cassandra aturan model dataPenyaringan berdasarkan isi koleksi memerlukan indeks, yang akan dibahas lebih lanjut. buat dan hapus indeks tutorial.






