Apa gunanya keluarga kolom?


9

Saya telah melihat bahwa sistem basis data NoSQL seperti RocksDB menawarkan fitur yang disebut keluarga kolom . Saya percaya saya mengerti apa konsep yang dimaksud, tetapi apa manfaat sebenarnya (praktis) dari menggunakannya? Saya kira mereka dapat meningkatkan kinerja pencarian dalam beberapa kasus, atau ruang lokalitas nilai kunci yang menarik, setidaknya? Tampaknya tidak akan mempengaruhi semantik sebenarnya dari akses basis data, sejauh yang saya mengerti. Apakah ini benar? Apakah ada sesuatu yang saya lewatkan?

Jawaban:


3

Saya baru saja menemukan beberapa informasi menarik dari FAQ RocksDB . (RocksDB adalah toko KV.)

Berikut adalah beberapa ekstrak yang relevan.

T: Untuk apa keluarga kolom digunakan?

J: Alasan paling umum menggunakan kelompok kolom: (1) menggunakan pengaturan pemadatan yang berbeda, komparator, tipe kompresi, operator gabungan, atau filter pemadatan di bagian data yang berbeda; (2) jatuhkan keluarga kolom untuk menghapus datanya; (3) satu keluarga kolom untuk menyimpan metadata dan yang lainnya untuk menyimpan data.

T: Apa perbedaan antara menyimpan data dalam keluarga banyak kolom dan dalam beberapa basis data rocksdb?

A: Perbedaan utama adalah cadangan, penulisan atom dan kinerja penulisan. Keuntungan menggunakan banyak basis data: basis data adalah unit cadangan atau pos pemeriksaan. Lebih mudah untuk menyalin database ke host lain daripada keluarga kolom. Keuntungan menggunakan beberapa keluarga kolom: (1) batch menulis adalah atom di berbagai keluarga kolom pada satu database. Anda tidak dapat mencapai ini menggunakan beberapa basis data RocksDB. (2) Jika Anda mengeluarkan sinkronisasi menulis ke WAL, terlalu banyak basis data dapat merusak kinerja.

T: Saya memiliki ruang utama yang berbeda. Haruskah saya memisahkannya dengan awalan, atau menggunakan keluarga kolom yang berbeda?

A: Jika setiap ruang utama cukup besar, itu ide yang baik untuk menempatkan mereka dalam keluarga kolom yang berbeda. Jika bisa kecil, maka Anda harus mempertimbangkan untuk mengemas beberapa ruang utama ke dalam satu keluarga kolom, untuk menghindari kesulitan mempertahankan terlalu banyak keluarga kolom.


2

Saya tahu Anda tidak mencari paralel dengan SQL tetapi artikel ini menjelaskan rencana hanya tujuan dan manfaat praktis Keluarga Kolom.

Dari Memahami Model Data Cassandra dari Perspektif SQL di RubyScale:

Untuk apa Keluarga Kolom? Hanya awalan tabel? Keluarga Kolom memiliki sejumlah pengaturan yang menyertainya yang mengubah perilaku itu. Ada pengaturan cache untuk kunci (UUID dalam contoh ini), pengaturan cache untuk seluruh baris (seluruh tabel dalam contoh ini), dan yang paling penting, pengurutan. Di Cassandra tidak ada OFFSET, hanya LIMIT dan setara dengan ANTARA . Dalam contoh ini, nama kolom hanyalah string tetapi bisa juga berupa bilangan bulat atau cap waktu dan selalu disimpan dalam urutan. Satu Kolom Keluarga mungkin memiliki data timestamp-diurutkan di mana Anda meminta hal-hal berdasarkan irisan waktu dan yang lainnya mungkin data buku alamat tempat Anda meminta hal-hal dalam urutan abjad. Satu-satunya penyortiran yang bisa Anda lakukan setelah faktanya adalah membalik irisan tertentu.


Menarik. Seperti yang Anda katakan, itu tidak sepenuhnya menjawab pertanyaan, tetapi memberikan petunjuk. Terima kasih.
Noldorin
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.