【发布时间】:2019-07-10 14:30:33
【问题描述】:
我正在研究不同的 NoSQL 数据库,现在坚持理解 Cassandra。
假设我有两个模型,两个实例的 n 个字段相同,而 m 个字段不同。
{
name:"Bob",
surname:"Smith",
age:31,
carName: "toyota"
}
{
name:"Ann",
surname:"Cox",
position:"Architect"
}
所以这里我有两个模型的name 和surname,但其他字段可以是任何字段。
是否可以为此目的在 Cassandra 中设计数据表,或者面向宽列的数据库不适合并更好地使用面向文档的数据库?
【问题讨论】:
-
您是否考虑过使用
Map类型的列来更改值? -
@ernest_k 是的,但
Map支持嵌套吗?假设我们在“car”字段下有一个 Car 对象 -
No Cassandra 的地图(例如与 DynamoDB 不同)不支持嵌套。所以你有两个解决方案: 1. 你可以将一个序列化的字符串(例如,JSON)存储为“汽车”字段。缺点是您不能直接修改嵌套属性,例如,您不能执行“SET car.model = 'something'”。选项 2:使用地图的 key 中的嵌套属性名称。例如,“car.model”是关键。这样,嵌套结构就会在非嵌套地图上“展平”。