Apa batasan praktis pada keluarga kolom di Cassandra?

10

Di Cassandra, tidak disarankan untuk memiliki lebih dari beberapa ribu keluarga kolom , katakanlah 2.000 demi argumen. Dalam kasus di mana lebih dari 2.000 jenis data perlu dipertahankan, satu pendekatan adalah untuk membuang beberapa jenis data yang tidak terkait ke dalam setiap kelompok kolom.

Misalnya, CF tunggal dapat berisi Pesanan, Faktur, dan Pelanggan, asalkan kunci baris mereka berbeda (misalnya diawali dengan jenis objek, yaitu kunci CF tunggal dapat mencakup keduanya Order|1234dan Customer|1234). CF kedua dapat berisi say Addresses, LineItems, dan OrderTypes. Mengingat kelayakan dasar dari pendekatan ini, apa batasan praktisnya? Misalnya, apa yang salah dengan menempatkan semua 10.000 jenis objek ke dalam CF tunggal? Sejauh yang saya tahu dari Cassandra wiki , tidak ada batasan keras pada ukuran CF.

Andrew Swan
sumber

Jawaban:

6

Saya bukan penggemar. Ini sama baiknya dengan membuat tabel relasional bernama OrdersOrCustomers dengan kolom yang ditentukan untuk keduanya. Penalti mesin penyimpanan sedikit lebih rendah di Cassandra karena penyimpanan sel jarang di bawah kap, tetapi masih praktik yang buruk.

Ini menggigit Anda nanti ketika Anda ingin memetakan / mengurangi data Anda; setiap tugas harus memindai semua data Anda, dan memfilter baris yang tidak cocok dengan yang Anda minati (mis. pelanggan). Dan semoga berhasil membuat statistik yang dilacak oleh Cassandra per-CF. ("Apakah CF ini sumber 80% dari aplikasi saya membaca karena data pesanan? Atau karena sesi pelanggan dikombinasikan dengan? Atau lima tipe data lain yang saya masukkan?")

Jika Anda benar-benar membutuhkan puluhan atau ratusan ribu CF? Bahkan kemudian saya lebih suka menjalankan Cassandra tanpa alokasi arena, daripada memutilasi model data saya seperti ini.

belati
sumber
Terima kasih atas jawaban Anda, Jonathan. Saya perlu membaca tentang alokasi arena untuk memahami kalimat terakhir. Apakah menggunakan alokasi arena merupakan opsi konfigurasi?
Andrew Swan
Atau jika alokasi arena dimasukkan ke dalam Cassandra saat ini, seberapa sulitkah untuk mendeallokasi arena dari keluarga kolom mana saja yang belum diakses dalam periode waktu yang dapat dikonfigurasi? Apakah saya layak mencatat tiket JIRA tentang ini?
Andrew Swan
1
Cassandra sudah pintar memerah untuk mengurangi tekanan memori. Masalahnya adalah dengan skenario terburuk di mana semuanya aktif.
jbellis
Dalam hal apa satu-satunya solusi untuk memiliki dering kedua?
Andrew Swan