В некоторых местах рекомендуется разрабатывать наши таблицы Cassandra в соответствии с запросами, которые мы собираемся выполнять с ними. В этой статье DataScale говорится следующее:
По правде говоря, наличие множества похожих таблиц с похожими данными - это хорошо для Cassandra. Ограничьте первичный ключ тем, что вы будете искать. Если вы планируете искать данные с похожими, но разными критериями, сделайте это отдельной таблицей. Нет недостатка в том, что одни и те же данные хранятся по-разному. Дублирование данных - ваш друг в Кассандре.
[...]
Если вам нужно сохранить один и тот же фрагмент данных в 14 разных таблицах, запишите его 14 раз. Нет препятствий против многократной записи.
Я понял это, и теперь мой вопрос: при условии, что у меня есть существующая таблица, скажем
CREATE TABLE invoices (
id_invoice int PRIMARY KEY,
year int,
id_client int,
type_invoice text
)
Но я хочу запрашивать по годам и набирать вместо этого, поэтому я хотел бы иметь что-то вроде
CREATE TABLE invoices_yr (
id_invoice int,
year int,
id_client int,
type_invoice text,
PRIMARY KEY (type_invoice, year)
)
Используя id_invoice
в качестве ключа раздела и year
в качестве ключа кластеризации, какой способ лучше копировать данные из одной таблицы в другую для выполнения оптимизированных запросов позже?
Моя версия Кассандры:
user@cqlsh> show version;
[cqlsh 5.0.1 | Cassandra 3.5.0 | CQL spec 3.4.0 | Native protocol v4]