我应该如何在 Cassandra 中存储嵌套的 JSON 对象?

问题描述 投票:0回答:1

这是我第一次使用 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 会处理它吗?

cassandra blob data-modeling denormalization nested-json
1个回答
0
投票

从表面上看,我认为这是一个很好的做法。我唯一担心的是每个客户是否有很多销售额……比如数百万。但如果商业用途的收益不会超过几千左右,这可能没问题。

如果没有,将日期/时间组件添加到分区键(如年份或其他内容)可能是有意义的:

PRIMARY KEY ((id, year_of_sale))

这将确保每个分区的销售额按年设置上限。

要考虑的另一件事是需要支持的查询模式。目前只支持

id
查询。但如果没关系,那么你应该可以开始了!

© www.soinside.com 2019 - 2024. All rights reserved.