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

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

本文来自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更加容易,免得不那么明显。)


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

查看所有标签

猜你喜欢:

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

C Primer Plus

C Primer Plus

Stephen Prata、云巅工作室 / 云巅工作室 / 人民邮电出版社 / 2005-2-1 / 60.00元

《C Primer Plus(第5版)(中文版)》共17章。第1、2章学习C语言编程所需的预备知识。第3到15章介绍了C语言的相关知识,包括数据类型、格式化输入输出、运算符、表达式、流程控制语句、函数、数组和指针、字符串操作、内存管理、位操作等等,知识内容都针对C99标准;另外,第10章强化了对指针的讨论,第12章引入了动态内存分配的概念,这些内容更加适合读者的需求。第16章和第17章讨论了C预处......一起来看看 《C Primer Plus》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

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

在线压缩/解压 CSS 代码

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具