我们需要在Cassandra中对模型进行非规范化吗?

我们需要在Cassandra中对模型进行非规范化吗?,cassandra,cassandra-2.0,denormalization,Cassandra,Cassandra 2.0,Denormalization,我们通常在数据库中存储对象的图形。在rdbms中,我们需要使用男性连接来重试对象之间的关系。在cassandra中,它被提升为非规范化模型以适应查询。但是这样做,我们使模型的更新更复杂或更具体。 在Cassandra中,它存在复杂的数据类型,如集合、映射、列表和元组。这些类型通过在例如一个列表中存储连接对象的ID,使对象之间的关系(关联、聚合、对象的组合)以一种严格的方式存储成为可能。 唯一的缺点是必须将一个sql复杂连接请求划分为多个请求。 我还没有看到关于卡桑德拉的关于这种解决方案的论文。是

我们通常在数据库中存储对象的图形。在rdbms中,我们需要使用男性连接来重试对象之间的关系。在cassandra中,它被提升为非规范化模型以适应查询。但是这样做,我们使模型的更新更复杂或更具体。 在Cassandra中,它存在复杂的数据类型,如集合、映射、列表和元组。这些类型通过在例如一个列表中存储连接对象的ID,使对象之间的关系(关联、聚合、对象的组合)以一种严格的方式存储成为可能。 唯一的缺点是必须将一个sql复杂连接请求划分为多个请求。
我还没有看到关于卡桑德拉的关于这种解决方案的论文。是否有人知道此解决方案未升级的原因?

Cassandra是高度写优化的数据库。因此,书写成本很低,这意味着额外的三到四次书写几乎不重要,因为如果不是这样的话,它会造成多大的困难

关于对象图,答案是:不,Cassandra不是用来存储对象图的。Cassandra用于存储查询数据。与RDBMS等价的是PostgreSQL中的视图。数据的存储方式必须使查询易于维护。主要原因是读取速度慢。Cassandra中数据建模的目标是确保几乎总是从单个分区读取数据

如果它是标准化数据,查询将需要达到至少两个分区,最坏的情况将产生延迟,从而使应用程序无法用于任何实际用途

因此,Cassandra中的数据建模总是以查询为中心,而不是对象之间的关系

有关这些基本规则的更多信息,请参阅Datastax的文档