Cassandra 中的单数据列与多列

Single data column vs multiple columns in Cassandra

我正在使用现有的 cassandra 数据库开发一个项目。 架构如下所示:

partition key (big int) clustering key1 (timestamp) data (text)
1 2021-03-10 11:54:00.000 {a:"somedata", b:2, ...}

我的问题是:将数据存储在 json 字符串中有什么好处吗? 它会节省一些 space 吗?

到目前为止我只发现了缺点:

不,在 Cassandra 中将 JSON 存储为字符串并没有真正的优势,除非 JSON 中的基础数据确实是无模式的。它也不会保存 space 但实际上会使用更多,因为每个项目都必须有一个键+值而不是仅仅存储值。

如果可以,我会建议将键映射到 CQL 列,这样您就可以本地存储值并更灵活地访问数据。干杯!

Erick 的回答准确无误。

我唯一要补充的是,将 JSON blob 存储在单个列中会使更新(甚至更多)成为问题。如果您更新单个 JSON 属性,则整列都会被重写。此外,原始的 JSON blob 仍然存在 ...只是“过时”,直到压缩运行。在单个列中存储 JSON blob 唯一有意义的情况是属性不更改。

我同意,将键映射到 CQL 列是更好更好的选择。