为什么选择关系数据库而不是NoSQL?

时间:2015-12-04 09:29:14

标签: database-design

除了某些情况,大多数现代应用程序都需要:

  1. 大缩放
  2. 适应性模型(db schema)
  3. 人们也可以争论开发敏捷性,但我会说,与数据库相关的是2. 2.

    鉴于上述观点,根据我所读到的有关NoSQL数据库的内容,它们比关系数据库更适合这些问题。

    从头开始创建新系统时,何时应该考虑关系数据库? (不包括系统非常严重的情况 - 我认为RDB具有优势)

    (PS:我刚刚开始学习NoSQL数据库,并且考虑到我只是在大学接触过关系数据库,我试图了解何时选择每一个,如果我应该专注于NoSQl)

    编辑:忘了写,我不明白为什么ACID被认为是关系数据库的优势。任何数据库如何没有原子性或一致性? NoSQL数据库不能确保这些吗?如果是这样, heck 如何依赖它们?

4 个答案:

答案 0 :(得分:3)

以下是原因,您可以考虑关于NoSQL的关系数据库

  1. 交易(例如:银行账户数据库,大部分操作导致多个表更新为单位)
  2. 数据完整性(检查约束,参照完整性约束等)
  3. 零数据丢失恢复
  4. 安全性和合规性
  5. 你应该专注于两者。如果您的项目需要事务,安全性,零数据丢失等,那么最好与传统的RDBMS一起使用。对于像推荐引擎,支持引擎这样的项目,可扩展性是您可以使用NoSQL数据库的主要挑战。

    简而言之,RDBMS数据库对于运行对业务至关重要的应用程序非常有用,NoSQL数据库对于运行补充业务的应用程序非常有用。

答案 1 :(得分:3)

以NOSQL为名的数据管理技术基于概念(例如基于图形和文件的访问),这些概念在几十年前主要用于关系模型。那些关系前的方法仍然有其利基,近年来对其中一些技术的兴趣再次达到顶峰。尽管如此,让我们保持透视。对于绝大多数应用程序而言,关系数据库模型在灵活性,数据完整性以及查询和从数据中获取有用结果的能力方面具有优于替代模型的优势。世界上一些最大的数据库是基于关系或基于SQL的。与你的问题所暗示的相反,关系通常是规则而非例外,可能会在可预见的未来继续存在。

答案 2 :(得分:2)

你应该再回头再看一下ACID,因为这是你问题的主要答案:当你需要ACID属性时就是使用关系数据库。

那些确实需要这样做的应用程序通常需要执行不得互相冲突的离散交易 - 例如从您的银行账户中提取资金或进行股票市场交易。

许多应用程序都可以,只使用最终一致性,这样就可以在最后完成任务。

想一想接收普通邮件和收到传票之间的区别 - 第一次(通常)的最终一致性就足够了,但是你需要第二次交易。

答案 3 :(得分:2)

我认为自适应模型是关系DBMS的一个好处。添加或修改列或表是简单可靠的,并且通过规范化,我可以以任意组合方式加入我的数据,以回答我可以提出的任何问题。这种灵活性称为访问路径独立性,它是关系型DBMS非常不被重视的优势之一。