我有兴趣了解何时使用 SQL 数据库(例如 MariaDB)以及何时使用 NoSQL 数据库(例如 MongoDB)。是否存在一种特定情况,其中一种优于另一种?
答案1
当我必须决定从 SQL 数据库切换到 NoSQL 数据库时,我必须考虑的要点是我的项目的规模和我自己的构想。
SQL数据库的主要优点是ACID合规性,这确保您总是在最短的时间内得到好的答案。这是一项简单且“古老”的技术,事实证明,如果掌握得当,它是可靠的。事实是,它的设计可能不是为了适应大数据的新趋势,并且当您尝试将 SQL 库分发以进行负载管理时,维护 SQL 库可能会成为一个小噩梦。
NoSQL 数据库(例如 MongoDB 或 Cassandra)是为了应对数据对于模型而言变得庞大的特定情况而构建的。他们只是从这样的想法开始:您已经分发了数据库,并且处于您无法再拥有良好的旧酸合规性的情况。然后他们决定利用这一点来开发自己的功能。举个例子,我认为 Cassandra 是由 Facebook 构建的,用于支持其网站上用户之间的消息。它基本上被构建为一个全球分布式数据库,即使您失去整个数据中心,也不会丢失数据,也不会导致您的站点宕机一秒钟。对于其他 SGDB 来说,这样的基础设施几乎很难维护,因为其他 SGDB 依赖于您的信息在系统中的任何地方都完全保持最新。
最后,你还应该看到NoSQL数据库主要是为了满足Google和facebook的需求而设计的。
除非您的项目必须满足处理数百万并发用户的需求,就像 facebook 在启动 NoSQL 基础时所做的那样,否则基于 ACID 合规性的旧版 MariaDB 或 postgreSQL 会更快、更准确、更容易构建和发展。
我还可以鼓励您看一下NewSQL运动它们由重新实现 SQL 引擎以纠正一些相当旧的设计选择的开发人员组成。我快速浏览了一下,但我不记得有任何网站使用了这项技术。另请记住,您还可能需要使用 SQL 和 NoSQL 库来使用混合解决方案(我的一个朋友构建了一个工作得很好的 postgre/Mongo 堆栈),这可能更复杂,但也可能更复杂。强大。