sql - 如果我们放弃关系,关系数据库的扩展性是否会比 NoSQL 数据库更好(或更好)?

标签 sql database database-design nosql relational-database

免责声明:这是一个广泛的问题,因此可以将其移至其他来源(如果管理员认为合适)。

所有酷 child 似乎都在放弃关系数据库,转而使用 NoSQL 数据库。每个人都有自己的理由,从扩展问题到简单地处于技术的最前沿。而且,我不是来质疑他们的动机的。

但是,我感兴趣的是,当关系被删除时,是否有任何 NoSQL 转换验证了传统 RDBMS 的性能(维护) yield 。当 RDBMS 存在的核心原因被删除时,我们为什么要使用 RDBMS?我想到了几个原因

  1. 在开发这些系统方面拥有 30 多年的学术和工作研究经验
  2. 结构化查询语言 (SQL) 中的知名语言。
  3. 跨技术(Hibernate、ActiveRecord)的稳定和成熟的 ORM 支持

显然,在水平扩展很重要的现代世界中,需要确保分片是容错的,在应用程序要求的时间间隔内更新等。但是,这些需求不一定是存储数据的系统的责任(例如:ZooKeeper)。

此外,我承认应该致力于 NoSQL 的研究,在这个领域花费的时间显然会带来更好、更有值(value)的互联网技术。但是,比较 NoSQL 和传统 RDBMS 产品之间的种类(减去关系)将有助于制定业务决策。

更新 1:当我提到 NoSQL 数据库时,我指的是可能不需要固定表架构并且通常避免连接操作的数据存储。因此,问题的重点在于删除传统 SQL RDBMS 中的关系

最佳答案

我没有发现表间关系是可伸缩性的主要限制因素。如果索引定义得当,我会定期使用带有连接的查询并获得良好的可伸缩性。

可扩展性的更大限制因素是同步 I/O 的成本。一致性和持久性的要求——当 DBMS 告诉您它已保存数据时,它实际上并可靠地保存数据——是昂贵的。

当前流行的几种 NoSQL 产品通过削弱其默认配置中的一致性和持久性保证来实现出色的性能。有许多关于 CouchDB 或 MongoDB 丢失数据的报告。

您可以通过多种方式将这些 NoSQL 产品配置为对持久性更加严格,但是您却牺牲了它们令人印象深刻的性能数据。

同样,您可以通过禁用确保数据安全的默认功能,使 SQL 数据库像 NoSQL 产品一样实现高性能。参见 RunningWithScissorsDB .

PS:如果您认为面向文档的数据库是“前沿”,我邀请您阅读 MUMPS .一切旧的都是新的。 :-)

关于sql - 如果我们放弃关系,关系数据库的扩展性是否会比 NoSQL 数据库更好(或更好)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8695008/

相关文章:

mysql - 从表中删除重复项

SQL Server 备份文件

javascript - 在数据库中将设置保存为 JSON 与将它们保存在额外的行中

sql-server - SQL Server - 空列的性能/大小缺点

mysql - 分布式数据库主键的选择

多个表之间的SQL映射

android - 是否可以在 ImageView 中获取图像的图像路径?

sql - Gremlin 如何像搜索功能一样查询相同的 sql

php - 尝试从数据库中的列中减去金额,显示所有帐户的金额

sql - 使用同义词与 View 的优缺点是什么?