Який сенс сімей колонок?


9

Я бачив, що системи баз даних NoSQL, такі як RocksDB, пропонують функцію під назвою сімейство стовпців . Я вважаю, що я розумію, до чого відноситься поняття, але які фактичні (практичні) переваги від їх використання? Я припускаю, що вони можуть покращити ефективність пошуку в деяких випадках або місця розташування ключових значень, як мінімум? Однак, наскільки я розумію, це не вплине на фактичну семантику доступу до бази даних. Це правильно? Щось мені не вистачає?

Відповіді:


3

Я щойно розкрив цікаву інформацію із поширених запитань RocksDB . (RocksDB - магазин KV.)

Ось кілька відповідних витягів.

З: Для чого використовуються сім'ї стовпців?

A: Найпоширеніші причини використання сімейства стовпців: (1) використання різних параметрів ущільнення, компараторів, типів стиснення, операторів злиття або фільтрів ущільнення в різних частинах даних; (2) скинути сімейство стовпців, щоб видалити його дані; (3) одна сім'я стовпців для зберігання метаданих та інша для зберігання даних.

Питання: Яка різниця між збереженням даних у кількох сімействах стовпців та у кількох базах даних rockdb?

A: Основними відмінностями будуть резервне копіювання, атомне записування та продуктивність записів. Перевага використання декількох баз даних: база даних є одиницею резервного копіювання або контрольної точки. Простіше скопіювати базу даних на інший хост, ніж сімейство стовпців. Переваги використання декількох сімей колонок: (1) партії запису є атомними для декількох сімей колонок на одній базі даних. Цього не можна досягти за допомогою декількох баз даних RocksDB. (2) Якщо ви видаєте записи синхронізації в WAL, занадто багато баз даних можуть зашкодити продуктивності.

З: У мене є різні ключові пробіли. Чи слід їх розділяти за префіксами чи використовувати різні сімейства стовпців?

Відповідь: Якщо кожне ключове простір досить велике, непогано розмістити їх у різних сімействах стовпців. Якщо він може бути невеликим, вам слід розглянути можливість упаковки декількох клавішних просторів в одну сімейство стовпців, щоб уникнути проблем із підтриманням занадто великої кількості сімей стовпців.


2

Я знаю, що ви не шукаєте паралелі з SQL, але ця стаття пояснює план просто мету та практичну користь сімей колонок.

З розуміння моделі даних Кассандри з точки зору SQL на RubyScale:

Яка тоді сім'я колонок? Просто префікс таблиці? Сім'я стовпців має ряд налаштувань, які змінюють її поведінку. Існують налаштування кешу для клавіш (UUID в цьому прикладі), налаштування кешу для всіх рядків (для всієї таблиці в цьому прикладі), і найголовніше - сортування. У Кассандрі немає OFFSET, лише ОБМЕЖЕННЯ та еквівалент МІЖ . У цьому прикладі назви стовпців є лише рядками, але вони також можуть бути цілими чи часовими позначками, і вони завжди зберігаються в порядку сортування. У одній сім'ї стовпців можуть бути дані, відсортовані за часовими позначками, де ви запитуєте речі за часовим відрізком, а інша може бути даними адресної книги, де ви шукаєте запити в алфавітному порядку. Єдине сортування, яке ви маєте зробити після факту, - це повернення певного фрагмента.


Цікаво. Як ви кажете, це не повністю відповідає на запитання, але дає підказку. Дякую.
Нолдорін
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.