1.(译)NoSQL与SQL数据库对比

【README】

1.本文翻译自: NoSQL Vs SQL Databases | MongoDB

2.NoSQL指的是不止sql(not only sql);NoSQL数据库是2000年代末开发的,重点是扩展,快速查询,允许频繁变更,让编程更简单;

3.关系型数据库是1970年代开发的重点的是减少数据重复,因为存储成本高于开发者时间。SQL数据库往往具有严格,复杂的表格模式,通常要求高成本的垂直扩展。(如迁移到一台性能更好的服务器)


【1】SQL与NoSQL区别

SQL 与 NOSQL 间的区别
区别条目SQL数据库NoSQL数据库
数据存储模型固定行列的表格document:json文档;
key-value:键值对;
wide-column:带有行与动态列的表格;
图:节点与边
发展历史1970年代开始开发,关注的是减少数据重复2000年代末开始开发,关注的是扩展,允许快速变更
例子oracle,mysqldocument:MongoDB 和 CouchDB;
key-value:redis 和 DynamoDB;
wide-column:Cassandra 和 HBase;
graph:Neo4j 和 Amazon Neptune
主要用途通用document:通用;
key-value:大量数据的简单查询;
wide-column:大量数据的预定义查询;
graph:分析和遍历连接数据的关系;
模式严格灵活的 
扩展性垂直扩展(使用大型服务器向上扩展)(难度大,成本高)横向扩展(跨商品服务器横向扩展)
(难度小,成本低)
ACID事务支持支持大多数都不支持多记录的ACID事务。
然而MongoDB可以支持ACID事务;
连表通常需要通常不需要
数据到对象的映射要求对象关系映射-ORM许多NoSQL数据库不需要对象关系映射;
MongoDB文档直接映射到大多数流行编程语言的数据结构。


 【2】NOSQL数据库的优点

相比于关系型数据库,nosql数据库提供了很多优点。NoSQL数据库

  • 拥有灵活的数据模型;
  • 支持横向扩展;
  • 非常快速的查询性能;易于开发者上手;

1)优点1:灵活的数据模型

NoSQL允许你按需把改变应用到数据库。你可以快速迭代和持续聚合新的特性,更快为用户提供数据服务;

2)优点2:横向扩展

当超出服务器性能时,大多数SQL数据库都要求你纵向扩展(迁移到更大的数据库,迁移成本非常昂贵)。

相反,大多数NoSQL数据库允许你横向扩展,意味着你可以随时按需增加偏移的商用服务器;

3)优点3:快速查询

NoSQL数据库中的查询能够比SQL数据库要快,为什么?

3.1)SQL数据库:因为SQL数据库的数据是规范化的,因此单个对象或整体的查询需要你连接多个表的数据。随着表的增长,连表的成本非常高昂;

3.2)NoSQL数据库:然而,NoSQL数据库中的数据通常以一种查询优化的方式进行存储

  • 使用MongoDB的经验法则,把需要一起访问的数据存储在一起。
  • 查询通常不需要连表,因此查询更加快速;

4)优点4-开发人员易于上手

一些NoSQL数据库如MongoDB会把他们的数据结构映射到那些流行的编程语言;

  • 这种映射允许开发者以他们在代码中使用的相同方式存储数据;
  • 这种映射允许开发者写更少的代码,使得更加快速开发和更少缺陷;

【3】NoSQL数据库的缺点

1)缺点1:NoSQL不支持事务:

  • NoSQL操作多个文档时不支持ACID 事务特性(原子性,一致性,隔离性,持久性);
  • 使用合适的模型设计,单条记录的原子性是可以满足大多数应用的;
  • 为了解决不支持ACID事务特性的问题:mondoDB 在4.0版本开始支持多文档的ACID事务,并在4.2版本扩展到支持跨分片集群;

2)缺点2:NoSQL的存储空间比SQL数据库要大。

  • 因为NoSQL数据库的数据模型通常是根据查询而优化过的,并没有减少数据重复。
  • 因此存储相同业务数据,NoSQL数据库比SQL数据库占用的存储空间要大;存储介质非常便宜以至于这是一个很小的缺点;
  • 此外NoSQL数据库支持数据压缩以减少存储空间。

补充: 存储空间包括 磁盘空间,内存空间;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/329333.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#使用Redis集群缓存

本文介绍系统缓存组件,采用NOSQL之Redis作为系统缓存层。 一、背景 系统考虑到高并发的使用场景。对于并发提交场景,通过上一章节介绍的RabbitMQ组件解决。对于系统高并发查询,为了提供性能减少数据库压力,我们加入缓存机制&#…

Oracle入门(十四.15)之捕获Oracle服务器异常

一、异常类型 本课讨论预定义和非预定义的Oracle服务器异常。(1)使用PL / SQL处理异常有两种提出异常的方法: •Oracle服务器隐式(自动):- 发生Oracle错误并自动引发相关异常。- 例如,如果在SEL…

萤石云好友分享的监控怎么看_萤石S1:英超赛场上雄起的中国品牌

北京时间4月26日20:30,英超2014/15赛季第34轮,曼联客场0比3不敌埃弗顿,麦卡锡、斯通斯和米拉拉斯先后进球。曼联在连败的情况下积分榜跌至第四。后弗格森时代的曼联最近刚刚有点起色,似乎这场惨败又让曼联球迷的信心跌到了低谷。在…

2.es与mongodb的区别

【1】es vs mongo 图片转自: MongoDB和Elasticsearch的对比 参考文档: MongoDB和Elasticsearch的对比 10亿数据,数据库选Mongo还是Elalsticsearch?-51CTO.COM ElasticSearch可以替代Mongo么? - 知乎 https://www.j…

taro 缺点_Taro小程序富文本解析4种方法

最近遇到一个富文本解析的问题,尝试了很多办法,终于成功了!最后本人选择Parser。1.Taro组件rich-text优点:使用极其方便,引用一下就行了。缺点:不支持视频,放弃!2.wxParse https://g…

IIS负载均衡-Application Request Route详解第二篇:创建与配置Server Farm

自从本系列发布之后,收到了很多的朋友的回复!非常感谢,同时很多朋友问到了一些问题,有些问题是一些比较基本的问题,由于时间的缘故,不会一一的为大家回复,如果有不明白的,希望大家勤…

Oracle入门(十四.16)之捕获用户定义的异常

一、异常类型 本文讨论用户定义的错误。二、捕获用户定义的异常 PL / SQL允许你定义你自己的异常。 您根据应用程序的要求定义异常。输入数据期间需要用户定义的异常的一个示例。 假设您的程序提示用户输入部门编号和名称,以便它可以更新部门的名称。 当用户进入无效…

以太坊地址和公钥_以太坊交易签名解析源码解读

上篇文章《以太坊交易签名过程源码解析[1]》从源码角度分析了一个合约调用的的签名过程,签名后的交易发送到以太坊节点后,节点需要从签名交易中还原出公钥(从公钥中单向计算出账号地址),进而将交易放入交易池中。本文从go-ethereum源码的出发…

IIS负载均衡-Application Request Route详解第三篇:使用ARR进行Http请求的负载均衡

在前两篇文章中,我们已经讲述如何配置与安装ARR,从本篇文章开始,我们将重点的来讲述如何在使用ARR进行负载均衡。 本篇文章的目的主要是一步步的带领大家如何配置和使用ARR来进行Http请求的负载均衡,从而实现高可用与高扩展性。同…

Oracle入门(十四.17)之procedure传递参数

一、PROCEDURE 参数模式参数模式在形式参数声明中指定,位于参数名称之后,位于其数据类型之前。 参数传递模式: •IN参数(默认值)为子程序提供处理值。 •OUT参数将值返回给调用者。•IN OUT参数提供一个输入值&#xf…

1.elasticsearch文档存储(保存|修改|删除)

【README】 0.本文部分内容(数据)总结自 es 开发文档, Document APIs | Elasticsearch Guide [7.2] | Elastic ; 1.本文的es版本是7.2.1; 2.elasticsearch 是一个数据存储,检索和分析引擎;本…

db9针232接口波特率标准_理解串口通信以及232,485,422常见问题

下面先讲一讲串口通信的一些基本概念,术语。如果对串口通信比较熟悉的,就当复习复习,如果哪里讲错或不到位,也可以及时指出,当作一块交流交流。这里并不对串口的编程作讲解,主要是从应用的角度去讲一讲。因…

理解 .NET Platform Standard

.NET Platform Standard:https://github.com/dotnet/corefx/blob/master/Documentation/architecture/net-platform-standard.md .NET Platform Standard 是什么?直译过来就是 .NET 平台规范或标准,它的目的就是使 .NET 各个平台之间更加统一…

Oracle入门(十四.18)之使用动态SQL

一、SQL的执行流程数据库中的所有SQL语句都经历了不同的阶段: •解析:预执行“这可能吗?”检查包括语法,对象存在,权限等 •绑定:获取语句中引用的任何变量的实际值 •执行:语句被执行。•提取&…

天平游码读数例题_初二上册物理实验——托盘天平使用的注意事项

今天给大家讲讲托盘天平的使用和注意事项。(1)首先,我们回忆一下什么是托盘天平如下图托盘天平由底座、横梁、分度盘、托盘、平衡螺母、标尺、游码、托盘等组成,当然还有砝码。托盘天平是称量物体的质量的工具(质量符号m,单位:国际…

3.elasticsearch文档查询dsl

【README】 1.本文elasticsearch版本是 7.2.1; 2.文档查询语句叫做 DSL, domain structure language, 领域特定语言;dsl,参见 Query DSL | Elasticsearch Guide [7.2] | Elastic 3.elasticsearch 基于json 提供了完…

Oracle入门(十四.19)之触发器简介

一、触发器的需求让我们从一个例子开始吧:一条业务规则规定,只要员工的工资发生变化,变更就必须记录在日志记录表中。 可以创建两个过程来执行此操作:UPD_EMP_SAL更新工资,LOG_SAL_CHANGE将行插入日志表。可以从UPD_EM…

搜狐视频Redis私有云cachecloud开源了

项目地址:https://github.com/sohutv/cachecloud/ 一、CacheCloud是做什么的 CacheCloud提供一个Redis云管理平台:实现多种类型(Redis Standalone、Redis Sentinel、Redis Cluster)自动部署、解决Redis实例碎片化现象、提供完善统计、监控、运维功能、减…

springboot 订单重复提交_瞬间几千次的重复提交,我用Spring Boot+Redis扛住了

在实际的开发项目中,一个对外暴露的接口往往会面临,瞬间大量的重复的请求提交,如果想过滤掉重复请求造成对业务的伤害,那就需要实现幂等!我们来解释一下幂等的概念:任意多次执行所产生的影响均与一次执行的…

Oracle入门(十四.21)之创建DML触发器:第二部分

一、使用条件谓词 在上文中,看到了一个触发器,可以防止在周末插入EMPLOYEES: CREATE OR REPLACE TRIGGER secure_emp BEFORE INSERT ON employees BEGINIF TO_CHAR(SYSDATE,DY) IN (SAT,SUN) THENRAISE_APPLICATION_ERROR(-20500,You may ins…