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.

  • ๐Ÿ“ฆ Tiga Jenis: Set menyimpan nilai unik yang tidak berurutan, list mempertahankan urutan penyisipan, dan map menyimpan pasangan kunci dan nilai.
  • ๐Ÿ”ค Atur Perilaku: Elemen disimpan dalam keadaan terurut dan duplikat akan dibuang secara otomatis.
  • ๐Ÿ”ข Catatan Penting: Urutan tetap terjaga, tetapi operasi penambahan di awal dan pengindeksan memerlukan pembacaan sebelum penulisan.
  • ๐Ÿ—บ๏ธ Penggunaan Peta: Sebuah map cocok untuk atribut yang kuncinya tidak diketahui saat skema dirancang.
  • ๐Ÿ“ Batas Ukuran: Buatlah koleksi tetap kecil; seluruh koleksi akan dibaca meskipun hanya satu elemen yang dibutuhkan.
  • ๐ŸงŠ Pilihan Beku: Koleksi yang dibekukan disimpan sebagai satu nilai dan harus diganti secara keseluruhan.

Cassandra Peta Daftar Set Koleksi

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:

  1. set
  2. Daftar
  3. 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.

Contoh Cassandra Tetapkan Koleksi

Berikut adalah cuplikan saat data dimasukkan ke dalam koleksi.

Contoh Cassandra Tetapkan 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โ€.

Contoh Cassandra Daftar Koleksi

ALTER TABLE University.Teacher ADD coursenames list<text>;

Berikut adalah cuplikan dimana data dimasukkan ke dalam kolom โ€œnama kursusโ€.

Contoh Cassandra Daftar Koleksi

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.

Cassandra Contoh Koleksi Daftar

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.

Contoh Cassandra Koleksi Peta

CREATE TABLE University.Course (
    id int,
    prereq map<text, text>,
    PRIMARY KEY (id)
);

Berikut adalah cuplikan tempat data dimasukkan dalam tipe kumpulan peta.

Contoh Cassandra Koleksi 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.

Pertanyaan Umum Demo Slot

Ya, setelah indeks ada. Gunakan CONTAINS untuk nilai set dan list, dan CONTAINS KEY untuk kunci map, setelah membuat indeks VALUES, KEYS, atau ENTRIES yang sesuai.

Hanya jika koleksi bagian dalam dibekukan, misalnya pemetaan teks ke daftar teks yang dibekukan. Koleksi yang tidak dibekukan tidak dapat berisi koleksi lain.

Menetapkan koleksi baru akan menghapus semua elemen yang ada terlebih dahulu, sehingga menghasilkan penanda penghapusan (tombstone) pada rentang elemen. Menambahkan dan menghapus elemen satu per satu menghindari hal ini dan merupakan pola yang lebih disukai.

Berdasarkan jumlah elemen yang diharapkan dan pola pembaruan, AI menerapkan aturan tersebut dengan baik: jumlah elemen yang terbatas dan kecil lebih menyukai koleksi, sedangkan jumlah elemen yang tidak terbatas atau sering ditanyakan lebih menyukai kolom pengelompokan.

Sebagian besar, meskipun seringkali membingungkan tanda kurung kurawal himpunan dengan tanda kurung daftar dan menghilangkan kata "frozen" di mana kunci utama membutuhkannya. Jalankan pernyataan yang dihasilkan terhadap ruang kunci uji terlebih dahulu.

Ringkaslah postingan ini dengan: