В чем смысл семейства столбцов?

9

Я видел, что системы баз данных NoSQL, такие как RocksDB, предлагают функцию, называемую семейства столбцов . Мне кажется, я понимаю, к чему относится эта концепция, но каковы фактические (практические) преимущества их использования? Я полагаю, что в некоторых случаях они могут улучшить производительность поиска или, по крайней мере, пространство, где находится ключ-значение? Однако, насколько я понимаю, это не повлияет на фактическую семантику доступа к базе данных. Это правильно? Я что-то упускаю?

нолдорин
источник

Ответы:

3

Я только что обнаружил некоторую интересную информацию из FAQ по RocksDB . (RocksDB - это магазин KV.)

Вот некоторые соответствующие выдержки.

В: Для чего используются семейства столбцов?

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

Вопрос: В чем разница между хранением данных в нескольких семействах столбцов и в базе данных RockSDB?

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

Q: У меня разные ключевые пространства. Стоит ли разделять их по префиксам или использовать разные семейства столбцов?

A: Если каждое пространство ключей достаточно велико, рекомендуется поместить их в разные семейства столбцов. Если он может быть небольшим, вам следует упаковать несколько ключевых пространств в одно семейство столбцов, чтобы избежать проблем, связанных с обслуживанием слишком большого количества семейств столбцов.

нолдорин
источник
2

Я знаю, что вы не ищете параллели с SQL, но эта статья объясняет план просто цель и практическое преимущество семейства столбцов.

Из понимания модели данных Cassandra с точки зрения SQL на RubyScale:

Что такое семейство столбцов? Просто префикс таблицы? Семейство столбцов имеет ряд параметров, которые меняют его поведение. Существуют настройки кэша для ключей (в этом примере UUID), настройки кэша для всех строк (в этом примере вся таблица) и, что наиболее важно, сортировка. В Кассандре нет СМЕЩЕНИЯ, только ПРЕДЕЛ и эквивалент МЕЖДУ . В этом примере имена столбцов - это просто строки, но они также могут быть целыми числами или временными метками, и они всегда хранятся в порядке сортировки. Одно семейство столбцов может иметь данные, отсортированные по меткам времени, где вы запрашиваете данные по срезу времени, а другое - данные адресной книги, где вы запрашиваете вещи в алфавитном порядке. Единственная сортировка, которую вы выполняете после факта, - это изменение определенного фрагмента.

Nelz
источник
Интересно. Как вы говорите, он не полностью отвечает на вопрос, но дает подсказку. Спасибо.
Нолдорин