【发布时间】:2017-05-17 19:58:35
【问题描述】:
在一些地方,建议根据我们要对其执行的查询来设计我们的 Cassandra 表。他们在this article by DataScale 中声明:
事实上,在 Cassandra 中拥有许多具有相似数据的相似表是一件好事。将主键限制为您将要搜索的内容。如果您计划使用相似但不同的标准搜索数据,则将其设为单独的表。以不同的方式存储相同的数据没有任何缺点。数据复制是您在 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 作为集群键,将数据从一个表复制到另一个表以便稍后执行优化查询的首选方法是什么?
我的 Cassandra 版本:
user@cqlsh> show version;
[cqlsh 5.0.1 | Cassandra 3.5.0 | CQL spec 3.4.0 | Native protocol v4]
【问题讨论】:
-
你有香草 C*(火花?)?什么版本(如果物化视图可用)?
-
关于声明“数据复制是你在Cassandra中的朋友”,我强烈建议不要这样做。数据重复不是你的朋友。它可能导致同步问题和数据损坏。充其量是一个不应该完全信任或依赖的熟人。
-
我不认为“数据重复不是你的朋友”作为一般性陈述,在大数据数据库的背景下也不能轻描淡写。