在 Cassandra 中使用 Map 数据类型(或不使用)

Using the Map datatype in Cassandra (or not)

我将把扁平化的 JSON 实体类型保存到 Cassandra 中。我有 2 个数据模型选项:

((entityType, entityId), jsonPath), value

(entityType, entityId), map<text, text> keyValue

我的用例是,在为每个 entityId 插入时 - 删除所有映射并插入。并通过entityType、entityId和jsonPath进行查询。

streaming-ingestion-and-UI-query 系统的角度来看,以上哪个更好performing/scalable?

扁平化的 JSON 将有大约 100 个字段。实体数量将少于一百万 - 数十万左右。

只要有可能,最好将字段映射到 CQL 列而不是 map 集合。

使用 CQL 列等同于更简单的 CRUD 操作。干杯!

补充一下 Erick 所说的,Cassandra 中的大型集合可能会导致其他问题。 DataStax 有一些关于如何“freeze”集合以帮助处理不同访问模式的文档。权衡是,非冻结集合可以在各种高写入吞吐量场景中生成大量墓碑,而冻结集合必须在就地写入时重写整个集合。

tl;dr;

映射到单独的列是很多更好的选择。