【问题标题】:Do we need to denormalize model in Cassandra?我们需要在 Cassandra 中对模型进行非规范化吗?
【发布时间】:2015-09-22 11:45:42
【问题描述】:

我们通常将对象图存储在数据库中。在 rdbms 中,我们需要男性连接来重试对象之间的关系。在 cassandra 中,它被提升为非规范化模型以适应查询。但是这样做,我们使模型的更新更复杂或更具体。 在 Cassandra 中,它存在复杂的数据类型,如 set、map、list out tuple。这些类型可以通过在内部存储例如连接对象的 id 的列表,以一种简单的方式(关联、聚合、对象的组合)存储对象之间的关系。 唯一的缺点是必须将一个 sql 复杂的连接请求分成几个请求。 我还没有看到有关 cassandra 处理这种解决方案的论文。有没有人想到这个解决方案不推广的原因?

【问题讨论】:

    标签: cassandra cassandra-2.0 denormalization


    【解决方案1】:

    Cassandra 是高度编写优化的数据库。所以写入很便宜,这意味着考虑到如果不这样做会带来的困难,额外的三到四次写入几乎没有关系。

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

    如果是标准化数据,则查询至少需要访问两个分区,最坏的情况会产生延迟,导致应用程序无法用于任何实际用途。

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

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

    http://www.datastax.com/dev/blog/basic-rules-of-cassandra-data-modeling

    【讨论】:

      猜你喜欢
      • 2015-02-01
      • 2016-11-12
      • 2013-08-13
      • 2015-03-08
      • 2011-02-11
      • 2016-05-13
      • 1970-01-01
      • 1970-01-01
      • 2016-05-27
      相关资源
      最近更新 更多