有什么事情你可以用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更加容易,免得不那么明显。)


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

查看所有标签

猜你喜欢:

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

深入浅出HTML5编程

深入浅出HTML5编程

弗里曼 (Eric Friiman)、罗布森 (Elisabdth Robson) / 东南大学出版社 / 2012-4 / 98.00元

《深入浅出HTML5编程(影印版)(英文)》就是你的特快车票,它可以带你学习如何使用今天的标准同时也会是明日的最佳实践来搭建Web应用。同时,你会了解HTML5的新API的基本知识,甚至你还会弄明白这些API是如何与你的网页进行交互,JaVaScript如何为它们提供动力,以及你如何使用它们来搭建能够打动你的老板并且吸引你的朋友的Web应用。一起来看看 《深入浅出HTML5编程》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

随机密码生成器
随机密码生成器

多种字符组合密码

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具