有什么事情你可以用SQL关系数据库去做而无法用MongoDB这样的NoSQL数据库?

栏目: 数据库 · 发布时间: 5年前

本文来自quora问答

作者 Scott McNulty,干过30多种工作。

2019年5月18日回答

许多事情。关系型数据库是数据结构的瑞士军刀。这也是为什么他一直牢牢占据(数据库领域的)王者之位的原因。

关系型数据库可以将数据分离,这样你就可以写出特别复杂的查询,并获得好的结果。你可以在不创建门卫应用的条件下允许不同的系统访问这些查询。对于NoSQL来说,允许“任何人”运行查询或者更新数据,通常是一种坏的实践。

RDBMSes(关系型数据库管理系统)有查询优化器,这是其发展成熟的部分。无论是否含有索引,一个查询优化器真的很擅长有效的获取数据。他们基于每个表使用规则,或者如果可能的话他们在每个表中收集统计。 NoSQL数据库系统几乎全部是基于索引的。

这意味所有东西,包括基于数据产生的报告,或者做更多基本读写之外的操作。

这也意味着使用NoSQL,你需要围绕你期待的查询做好计划。对于一些应用来说这是好事,但对另外一些则未必。例如,你知道如果你正在存储一个会话钥匙你是不需要数据库管理系统的。

大多数NoSQL不需要强制方案。据我所知,唯一不强制数据类型的关系型数据库管理系统是SQLite。你要么依赖数据库管理系统,要么使用应用程序来强制这些事情,这取决于你使用 SQL 或者是NoSQL。

如果你讲一个关系型数据库管理系统超速度的方向设计,那么你可以利用其获得很高的性能。

在关系型数据库中,备份和其他特性是成熟的。一个数据库管理员可以依赖许多有效的和可理解的工具。使用NoSQL的条件是由应用程序或者操作系统和某个 程序员 来负责这些功能。更多成熟的NoSQL系统拥有在前些年对于系统有巨大提升的管理系统,因而这种鸿沟正在缩小。但如果你正在使用一个NoSQL系统,你可能发现自己正在管理一些你曾授权MS-SQL服务器的部分。

最终,当你有数据需求时,需要考虑一些混合的解决方案。例如,你可以把数据的一份拷贝放到NoSQL数据库中用于操作,一份拷贝放在关系型数据库中用于报告。如果在数据验证方面有争议的话,你只需使用其中一个“记录系统”。

如果我有一个来自客户的请求,需要两年前发票的拷贝,我会使用存有每张发票的NoSQL数据库,无需查询任何其他的用户ID。同时不必担心某人没有正确的建立这个数据库,比如部分价格是按照发票创建时的方式设置的。

并且我希望让报告者告诉我们在过去三年当中从这种模式变换到那种模式可以得到更好决定的头30个部分。(使用RDBMS更加容易,免得不那么明显。)


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

群体的智慧

群体的智慧

[美] 詹姆斯·索罗维基 / 王宝泉 / 中信出版社 / 2010-10 / 33.00元

《纽约时报》榜首畅销书,《商业周刊》《福布斯》杂志最佳商业图书 21世纪商务人士必读书,了解群体智慧时代的决策模式 告诉我们如何过日子、如何选择领导人、如何做生意以及如何思考这个世界 我们当中的大多数人,不论是选民还是投资者,是客户还是经理人,似乎都相信宝贵的知识掌握在少数人手中,认为精英们做出的决策更加聪明,很少有人相信“乌合之众”也能像专家那样做得如此出色。 但《纽约客......一起来看看 《群体的智慧》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

MD5 加密
MD5 加密

MD5 加密工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具