当前位置: 首页 > 知识库问答 >
问题:

我们需要在Cassandra中反规格化模型吗?

云承弼
2023-03-14

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

共有1个答案

沈宏朗
2023-03-14

Cassandra是高度优化的数据库。因此,写操作成本很低,这意味着如果不这样做的话,考虑到会造成的困难,额外的三次或四次写操作几乎无关紧要。

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

如果它是规范化数据,则查询至少需要命中两个分区,最坏的情况将产生延迟,从而使应用程序无法用于任何实际目的。

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

关于这些基本规则的更多信息可以在Datastax的文档中找到

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

 类似资料:
  • 问题内容: 我将稍微解释一下我的脚本,以便您可以理解我的问题。 基本上我做了一个脚本来检查SOCKS5是还是。 当我在上面测试我的脚本时,它运行良好,但是当我在Windows上对其进行测试时,直到我将以下行添加到: 谁能向我解释为什么我在Windows中需要此行,而在Linux服务器上却不需要? 问题答案: SSL证书上的此cURL手册页介绍了连接到SSL / TLS受保护主机时 证书验证 的过程

  • 在C 03中,我们有模板显式实例化定义(

  • 我正在使用mockito作为junit。在创建对象的模拟时,我有疑问。我有一个名为DBConnect的类。我需要数据库属性,如dbname、凭据等。PatientDetails使用这个类。现在,当我为PatientDetails编写junit时。所以我使用以下代码。 用这个我不能得到正确的结果。

  • 我是Hadoop和编程的新手,我对Avro模式演变有点困惑。我将解释到目前为止我对Avro的理解。 Avro是一种串行化工具,它存储二进制数据,其json模式位于顶部。模式如下所示。 现在我的问题是为什么我们需要进化?我已经了解到,我们可以在新字段的模式中使用<code>default</code>选项;但是,如果我们在文件中添加一个新的模式,早期的模式将被覆盖。一个文件不能有两个架构。 另一个问

  • 类,这三个类从它继承:。 应用程序希望在12AM到达时发送一条消息。 书中推荐观察者模式。指出如果增加新的类:扩展消息,会影响类时钟的实现。但我不明白为什么。类Clock将保存对象的集合,如果我们要添加一个新的inherit类,它不会更改Clock类。 如果有人能解释上面的例子,或者给出一个更好的例子,我将不胜感激。

  • 问题内容: 在HTML5中,是否仍需要像XHTML中那样的斜杠? 如果我删除了,validator.w3.org并没有抱怨,甚至没有警告。但是一些在线文档似乎表明,标记(例如img,link,meta,br等)仍需要使用斜杠。 问题答案: 标签是Void Elements,因此它们不需要结束标签。 无效元素区域,基础,br,col,命令,嵌入,hr,img,输入,keygen,链接,meta,pa