Моделирование данных Cassandra: выбор ключа разделения и составного ключа - PullRequest
0 голосов
/ 29 сентября 2019

Я пытаюсь моделировать данные с помощью Cassandra, и я не совсем понимаю, что мне выбрать в качестве ключа раздела и составного ключа.Моя таблица выглядит следующим образом:

CREATE TABLE mykeyspace.mytable ( 
id UUID,
A text,
B text,
C text,
D text,
... other columns
PRIMARY KEY(id)
);

Я ввел в таблицу столбец идентификатора и сделал его первичным ключом, чтобы запросы с идентификатором выполнялись быстрее.

Проблема, с которой я сталкиваюсьэто набор столбцов (A, B, C, D) уникальным образом идентифицирует данные, и всякий раз, когда я выполняю вставку, я хочу предотвратить дублирование, и поиск с использованием набора столбцов (A, B, C, D) может быть дорогим, так как егоне является частью моего первичного ключа.

Я генерирую идентификатор случайным образом, один из подходов, который я хотя бы заключался в хэшировании 4 столбцов, тогда это решило бы проблему дублирования, но я скептически отношусь к тому, как будут распределяться данные, еслиЯ начинаю использовать хэш для идентификатора.

Другой подход, который я предполагал, заключался в том, чтобы (A, B, C, D) использовать в качестве ключа кластеризации, чтобы мой первичный ключ теперь выглядел как ((id), A,B,C,D) и использовал кластеризацию.ключ перед вставкой, чтобы предотвратить дублирование, здесь я не уверен, насколько эффективны поиски только с ключом кластеризации?Какой из приведенных выше подходов для моделирования данных является более подходящим или есть какой-либо другой подход?

...