Как Cassandra может извлекать строки только с помощью ключа разделения? - PullRequest
0 голосов
/ 25 ноября 2018

В базах данных, похожих на BigTable, хранятся строки, отсортированные по их ключам.

Cassandra использует комбинацию ключей разделения и кластеризации для хранения и распределения данных;Тем не менее, вы можете выбирать строки только с помощью ключа разделения!

Как Cassandra сконструирована таким образом?

Например, в RocksDB вы можете обойти это.иметь одно семейство столбцов по умолчанию по ключу раздела, а другое - по ключам разделения и кластеризации, перебирать отсортированные данные и извлекать по умолчанию семейство столбцов, что приводит к очень высокой сложности пространства!

Обновление: я полагаю, Кассандра пытаетсячтобы хранить каждый столбец в отдельном ключе, он начинается с ключа раздела и перебирает различные «имена столбцов» - возможно, комбинацию других столбцов кластеризации.Обратитесь к рисунку основного механизма хранения -.

SELECT * От авторов, ГДЕ имя = 'Том Клэнси' И год = '1993'.В таблице, где «имя» - это ключ раздела, а «год» и «заголовок» - это столбцы кластеризации.

Отображение уровня хранилища Cassandra для указанного выше запроса.

Ответы [ 2 ]

0 голосов
/ 25 ноября 2018

Cassandra имеет ключ разделения и ключ кластера, как вы упомянули.

Вот очень краткое и ясное объяснение предмета с хорошими примерами Datastax - самая важная вещь, которую нужно знать в данных Cassandraмоделирование: первичный ключ .

Важные выводы из этого документа:

Первый элемент в нашем ПЕРВИЧНОМ КЛЮЧЕ - это то, что мы называем ключом раздела.Ключ раздела имеет специальное использование в Apache Cassandra помимо того, что показывает уникальность записи в базе данных.Другой целью, которая очень важна в распределенных системах, является определение локальности данных.

. Это объясняет, как выбор строк только с помощью ключа разделения является частью замысла Кассандры.

Если ключ разделения имеет более одного столбца в своем определении -

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

Когда столбцы кластеризации спроектированы правильно, запросы на чтение должны занимать меньше времени по сравнению с неопределение столбцов кластеризации.

Помимо приведенной выше ссылки, вы можете найти действительно хорошее объяснение и примеры в этом вопросе stakoverflow. (Разница между ключом разделения, составным ключом и ключом кластеризации в Cassandra?).

Обновление:

База данных хранит и находит данные, используя вложенный порядок сортировки.Данные хранятся в иерархии, которую должен пройти запрос.У вас есть общий ключ для разных значений столбцов кластеризации.Взгляните сюда: Кластеризация столбцов

0 голосов
/ 25 ноября 2018

Все данные в Cassandra хранятся в разделах, поэтому, если у вас есть условие только для ключа (ключей) раздела, вы извлекаете все строки, имеющие ключи раздела - они записываются одна за другой.Вы можете найти больше информации в Руководстве по архитектуре DSE .

...