Как скопировать данные из таблицы Cassandra в другую структуру для повышения производительности
В некоторых местах рекомендуется разрабатывать наши таблицы Cassandra в соответствии с запросами, которые мы собираемся выполнить над ними. Вэта статья от DataScale они заявляют это:
Правда в том, что иметь много похожих таблиц с похожими данными - это хорошо в Кассандре. Ограничьте первичный ключ точно тем, что вы будете искать. Если вы планируете искать данные по схожим, но другим критериям, сделайте их отдельной таблицей. Нет недостатка в том, что одни и те же данные хранятся по-разному. Дублирование данных ваш друг в Кассандре.
[...]
Если вам нужно хранить один и тот же фрагмент данных в 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]