为啥不可能有像 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 不允许通过 IN 限制查询集群键?