为啥不可能有像 Cassandra 这样的 RDBMS/SQL 样式表?

Posted

技术标签:

【中文标题】为啥不可能有像 Cassandra 这样的 RDBMS/SQL 样式表?【英文标题】:Why it is not possible to have something like Cassandra with RDBMS/SQL style tables?为什么不可能有像 Cassandra 这样的 RDBMS/SQL 样式表? 【发布时间】:2012-03-16 19:24:26 【问题描述】:

我相信 CAP 定理不会阻止这一点...

【问题讨论】:

“Cassandra 之类的东西”到底是什么——记住并不是每个人都在使用它。 【参考方案1】:

Cassandra 本质上是一个键值对存储。 (键映射到多个值。)CAP 定理说,分布式计算机系统只能同时提供这三个中的两个:一致性、可用性和分区容错性。

不清楚您认为这两个独立且不相关的事实可能与 SQL 表有什么关系。

您可以在 SQL 表中实现键值语义,但您将不再拥有键值存储。

您可以构建一个distributed SQL dbms,并且您将不再拥有键值存储。

您可以构建分布式键值存储,但您将不再基于关系模型,也不再是 SQL。 (最终的一致性是一个真正的问题。)

【讨论】:

【参考方案2】:

这与 SQL 服务器有何不同?

请注意,对于 SQL 服务器,主要关注点是一致性。特别是,SQL 通常与 ACID 属性相关联,这是一种相当严格的一致性形式(因为它包括隔离性、原子性等)

在典型的 SQL 用例中,您希望通过任何方式保证数据的一致性。 nosql 数据库的许多用例不需要太多的一致性(特别是当它们在很大程度上是只读的时)或者可以使用快照语义(即返回的数据在某个较早的时间点是正确的)。

除此之外,一些 NoSQL 数据库已经成熟到现在有时称为“NewSQL”。它们确实允许比按键查询更复杂的查询,并支持一些服务器内处理功能、索引结构等。也许这就是您想要的。

【讨论】:

以上是关于为啥不可能有像 Cassandra 这样的 RDBMS/SQL 样式表?的主要内容,如果未能解决你的问题,请参考以下文章

为啥在 Cassandra 表中使用复合聚簇键?

为啥 Cassandra 不允许通过 IN 限制查询集群键?

为啥 Cassandra 中的超级列不再受青睐?

辣模 Kari Cassandra 性感身材好惹火!

javascript,是不是有像 isArray 这样的 isObject 函数? [复制]

为啥将写入扩展到关系数据库几乎是不可能的?