为什么人们仍在使用关系数据库

时间:2013-12-24 12:34:02

标签: nosql rdb

我正在学习基于文档的数据库,它们看起来很完美,所以我问为什么人们还在使用“经典”数据库?为什么我们不能明确地移动到NoSQL?

2 个答案:

答案 0 :(得分:3)

答案很简单:关系模型仍然有很多数据表示精美

关系数据库很好地分离了应用程序和数据。拥有像SQL这样的声明性语言,以及基于集合论的坚实数学基础,不应轻易抛弃。

ACID意味着重要的事情。下次在账户之间转账时提醒自己。

为什么银行和其他机构会抛弃数十年的投资?使用基于文档的数据库会带来什么好处?仅仅使用一种新技术使工作应用程序的行为方式成本很高。一旦完成,你会追逐什么闪亮的新东西?

它既不是/也不是SQL和NoSQL。两者都只是取而代之的替代品。

答案 1 :(得分:3)

  1. 关系数据库现在已有40年了。它们是一种久经考验的技术,对它们来说有很多技术诀窍。它们是每个计算机科学教育不可分割的一部分,每个程序员至少应该掌握如何使用它们的基本知识。另一方面,面向文档的数据库是一种相当新的技术。很少有人可以说他们曾经与他们一起完成了一个成功的项目,甚至那些人也不能说他们真的知道这项新技术可能存在的所有陷阱。
  2. 大多数面向文档的数据库都没有对关系数据库调用JOIN的东西的本机支持,所以它们必须在应用层上进行模拟,这是令人不舒服和无法解决的。有时可以通过对数据进行非规范化来避免JOIN,但是当你有聚合而不是组合或实体之间的n:m关系时,非规范化变得丑陋。
  3. 大多数面向文档的数据库不支持事务,至少没有跨多个文档的事务。对于许多用例来说,这些并不是真正需要的,但在敏感区域(如许多涉及金钱的区域),你不能没有。有一些解决方法(比如两阶段提交),但是这些很难编程(因此很容易出错)而且很慢。
  4. 由于其灵活性,无模式数据库可能是一种祝福,但它很快就会变成诅咒。由于具有约束和触发器的定义良好的模式,关系数据库可以变得足够智能以拒绝任何没有意义的数据。另一方面,无模式数据库将很乐意接受由有缺陷的客户端提供的任何垃圾数据。
  5. 我不想让面向文档的数据库变坏。我用一个作为我自己的项目之一,我不后悔这个决定。但是你总是需要为每项工作选择合适的工具。有时候它是一个关系型数据库,有时它是一个文档数据库,有时它是一个图形数据库,有时它只是一个很好的旧平面文件。