这是我第一次使用 Cassandra,我有如下数据结构,想将其保存在 Cassandra 中:
{"user_id": "123",
"user_cards": {
"first_card": {
"card_number": 456
}
}
}
我通过互联网搜索并找到了如下示例:
use json;
CREATE type json.sale ( id int, item text, amount int );
CREATE TABLE json.customers ( id int PRIMARY KEY, name text, balance int, sales list> );
INSERT INTO json.customers (id, name, balance, sales)
VALUES (123, 'Greenville Hardware', 700,
[{ id: 5544, item : 'tape', amount : 100},
{ id: 5545, item : 'wire', amount : 200}]) ;
但我不确定这是否是最好的方法?我记得根据我使用 MySQL 或 MongoDB/Mongoose 的经验,我们为嵌套的 JSON 对象定义了单独的表,并将该表的外键放在父表的列中(或者在 Mongo 中填充)。
听说Cassandra反对规范化,最好对它做非规范化,我不知道我应该采取什么方法?
我还有另一个关于数据压缩的问题,如果我像上面举的例子那样做,cassandra 会处理它吗?
从表面上看,我认为这是一个很好的做法。我唯一担心的是每个客户是否有很多销售额……比如数百万。但如果商业用途的收益不会超过几千左右,这可能没问题。
如果没有,将日期/时间组件添加到分区键(如年份或其他内容)可能是有意义的:
PRIMARY KEY ((id, year_of_sale))
这将确保每个分区的销售额按年设置上限。
要考虑的另一件事是需要支持的查询模式。目前只支持
id
查询。但如果没关系,那么你应该可以开始了!