【问题标题】:Store undetermined data in Cassandra table在 Cassandra 表中存储未确定的数据
【发布时间】:2019-07-10 14:30:33
【问题描述】:

我正在研究不同的 NoSQL 数据库,现在坚持理解 Cassandra。

假设我有两个模型,两个实例的 n 个字段相同,而 m 个字段不同。

{
    name:"Bob",
    surname:"Smith",
    age:31,
    carName: "toyota"
}

{
    name:"Ann",
    surname:"Cox",
    position:"Architect"
}

所以这里我有两个模型的namesurname,但其他字段可以是任何字段。

是否可以为此目的在 Cassandra 中设计数据表,或者面向宽列的数据库不适合并更好地使用面向文档的数据库?

【问题讨论】:

  • 您是否考虑过使用 Map 类型的列来更改值?
  • @ernest_k 是的,但Map 支持嵌套吗?假设我们在“car”字段下有一个 Car 对象
  • No Cassandra 的地图(例如与 DynamoDB 不同)不支持嵌套。所以你有两个解决方案: 1. 你可以将一个序列化的字符串(例如,JSON)存储为“汽车”字段。缺点是您不能直接修改嵌套属性,例如,您不能执行“SET car.model = 'something'”。选项 2:使用地图的 key 中的嵌套属性名称。例如,“car.model”是关键。这样,嵌套结构就会在非嵌套地图上“展平”。

标签: database-design cassandra


【解决方案1】:

如果字段与同一个“实体”相关,则创建一个包含所有字段的表,并在插入期间仅指定相关字段。就那么简单。相反,如果它们相对于不同的实体,则创建两个不同的表。

【讨论】:

  • 该字段是相对于实体的,但它们是不确定的。基本上它可以是任意深度的任意一组字段。
猜你喜欢
  • 1970-01-01
  • 2018-02-02
  • 1970-01-01
  • 2014-05-20
  • 2017-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多