概述

传统的关系型数据库以及数据仓库在面对大数据的处理时显得越来越力不从心。因为关系数据库管理系统 (RDBMS)的设计从未考虑过能够处理日益增长且格式多变的数据,以及访问数据并进行分析的用户需求呈爆炸式增长的势头。它们一般都是固定的schema,缺乏对非结构化数据的支持,同时对数据分片存储、系统扩展性的支持也比较局限,系统的扩容过程也比较复杂。另外,许多传统的数据库方法是为长期的策略性分析而非实时决策构造的。在这样的背景下,NoSQL数据库就应运而生了。

数据库 schema的概念

数据库中的Schema,为数据库对象的集合,一个用户一般对应一个schema。
官方定义如下:
A schema is a collection of database objects (used by a user.).
schema objects are the logical structures (逻辑结构逻辑概念)that directly refer to the database’s data.
A user is a name defined in the database that can connect to and access objects.
schemas and users help database administrators manage database security.

为什么说NoSQL没有固定schema

若要在关系型数据库中存储数据,首先必须定义“模式”,也就是用一种预定义结构向数据库说明:要有哪些表格,表中有哪些列,每一列都存放何种类型的数据。必须先定义好模式,然后才能存放数据(结构化)

相比之下,NoSQL 数据库的数据存储就比较随意了。“键值数据库”可以把任何数据存放在一个“键”的名下。“文档数据库”实际上也如此,因为它对所存储的文档结构没有限制。在列族数据库中,任意列里面都可以随意存放数据。你可以在图数据库中新增边,也可以随意向节点和边中添加属性。

无模式数据库的倡导者们很享受它所带来的自由与灵活。如果用了模式,那么就必须提前指明你要存储的数据,然而这一点却比较难办。摆脱模式的制约后,就可以轻易存储所需数据了,于是我们很容易就能根据项目的进展情况来修改原有的数据存储方式,一旦发现了新东西,只要把它们加入数据库中就好。此外,若是发现某些东西已经没用了,那么不再存储它们就行了。在使用模式的关系型数据库中,如果删除了某列,那么你恐怕得担心此操作会不会导致旧数据丢失。

什么是数据分片?

在数据库系统中,“分片”概念是指( 对数据的分片)。每一个全局关系都可分为若干个不相交的部分,每一部分称为一个片段。

nosql中,分片即Sharding,可以简单定义为将大数据库分布到多个物理节点上的一个分区方案。每个 shard 都被放置在一个节点上面。

为什么说nosql没有固定查询语言?

ACID与BASE

ACID

在传数据库系统中,事务具有ACID 4个属性(Jim Gray在《事务处理:概念与技术》中对事务进行了详尽的讨论)。

(1)原子性(Atomicity):事务是一个原子操作单元,其对数据的修改,要么全都执行,要么全都不执行。

(2)一致性(Consistent):在事务开始和完成时,数据都必须保持一致状态。这意味着所有相关的数据规则都必须应用于事务的修改,以保持数据的完整性;事务结束时,所有的内部数据结构(如B树索引或双向链表)也都必须是正确的。

(3)隔离性(Isolation):数据库系统提供一定的隔离机制,保证事务在不受外部并发操作影响的“独立”环境执行。这意味着事务处理过程中的中间状态对外部是不可见的,反之亦然。

(4)持久性(Durable):事务完成之后,它对于数据的修改是永久性的,即使出现系统故障也能够保持。

对于单个节点的事务,数据库都是通过并发控制(两阶段封锁,two phase locking或者多版本,multiversioning)和恢复机制(日志技术)保证事务的ACID特性。对于跨多个节点的分布式事务,通过两阶段提交协议(two phase commiting)来保证事务的ACID。

可以说,数据库系统是伴随着金融业的需求而快速发展起来。对于金融业,可用性和性能都不是最重要的,而一致性是最重要的,用户可以容忍系统故障而停止服务,但绝不能容忍帐户上的钱无故减少(当然,无故增加是可以的)。而强一致性的事务是这一切的根本保证。

BASE

BASE来自于互联网的电子商务领域的实践,它是基于CAP理论逐步演化而来,核心思想是即便不能达到强一致性(Strong consistency),但可以根据应用特点采用适当的方式来达到最终一致性(Eventual consistency)的效果。BASE是Basically Available、Soft state、Eventually consistent三个词组的简写,是对CAP中C & A的延伸。BASE的含义:

(1)Basically Available:基本可用;

(2)Soft-state:软状态/柔性事务,即状态可以有一段时间的不同步;

(3)Eventual consistency:最终一致性;

BASE是反ACID的,它完全不同于ACID模型,牺牲强一致性,获得基本可用性和柔性可靠性并要求达到最终一致性。

Nosql和RDBMS的比较及解释的更多相关文章

  1. NoSQL与RDBMS的九点区别联系

    原文链接:http://blog.sina.com.cn/s/blog_5373fb0b0101ft8a.html     1 理解ACID与BASE的区别(ACID是关系型数据库强一致性的四个要求, ...

  2. 云计算背后的秘密:NoSQL诞生的原因和优缺点

    转载收藏一篇对nosql讲解的比较全面的文章:http://blog.csdn.net/xlgen157387/article/details/47908797 这篇文章将和大家聊聊为什么NoSQL会 ...

  3. NoSQL入门概述

    入门概述 1 NoSQL是什么? NoSQL(NoSQL = Not Only SQL ),意即"不仅仅是SQL",泛指非关系型的数据库.随着互联网web2.0网站的兴起,传统的关 ...

  4. HBase -- 基于HDFS的开源分布式NoSQL数据库

    HBase(Hadoop Database)是一个高可靠性.高性能.面向列.可伸缩的分布式存储系统,我们可以利用HBase技术在廉价的PC上搭建起大规模结构化存储集群.同Google的Bigtable ...

  5. 28个MongoDB NoSQL数据库的面试问答

    MongoDB是目前最好的面向文档的免费开源NoSQL数据库.如果你正准备参加MongoDB NoSQL数据库的技术面试,你最好看看下面的MongoDB NoSQL面试问答.这些MongoDB NoS ...

  6. Graph Databases—The NOSQL Phenomenon阅读笔记

    本章内容着重对了NOSQL和RDBMS(关系型数据库管理系统)的不同,以及其各自背后设计时考虑的因素.然后接下来,着重讲述了NOSQL的4种分类方法.下面我们将对重要知识点进行汇总. 1.We def ...

  7. NoSQL入门

    NoSQL(Not Only SQL)入门: *没有Fixed Schema *没有关系型数据储存在系统中 * 在大数据方面NoSQL有更好的表现 * 支持unstructured data - 不同 ...

  8. 为什么会出现NoSQL数据库

    为什么会出现NoSQL数据库 一.总结 一句话总结:sql不支持分布式且且有性能瓶颈且不支持分布式,不同NoSQL适合不同的场景 1."不同的NoSQL数据库只适合不同的场景"这句 ...

  9. HBASE(分布式海量NOSQL数据库)

    HBase建表高级属性,hbase应用案例看行键设计,HBase和mapreduce结合,从Hbase中读取数据.分析,写入hdfs,从hdfs中读取数据写入Hbase,协处理器和二级索引 1. Hb ...

随机推荐

  1. JAVA多线程之线程池的使用

    合理利用线程池能够带来三个好处. 第一:降低资源消耗.通过重复利用已创建的线程降低线程创建和销毁造成的消耗. 第二:提高响应速度.当任务到达时,任务可以不需要等到线程创建就能立即执行. 第三:提高线程 ...

  2. Oracle11G的用户解锁、卸载以及基础操作

    Oracle用户解锁 [以下操作,必须以超级管理员身份登录,才能修改]oracle安装后,会默认生成很多个用户 以超级管理员身份登录,请注意,其中的空格符:[ sys是一个超级管理员,有最大的权限,d ...

  3. mfc 列表控件

    经常使用的mfc控件:list control,记录下   首先将list control拖入到对话框中,然后命名ID,通过类向导,类型为control,控件变量名(m_showlist),  vie ...

  4. spring开发配置编码

    在pom.xml中添加属性project.build.sourceEncoding就可以设置工程的编码 <properties> <!-- 文件拷贝时的编码 --> <p ...

  5. Centos 6.5 修改默认分辨率

    需要两步: 第一步: 编辑/etc/grub.conf文件,删除“nomodeset” 单词 ,翻到该页最后一行,就可以看到该词: 第二步: 删除文件/etc/X11/xorg.conf , Inte ...

  6. hibernate课程 初探单表映射1-5 hibernate第一个demo

    hibernate 开发步骤:(hibernate4.2+mysql6.0) 1 hibernate配置文件(hibernate.cfg.xml) 2 持久化类 3 对象-关系映射文件 4 hiber ...

  7. table-列组

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. SpringBoot的异步调用介绍

    参考博客: https://www.cnblogs.com/jebysun/p/9675345.html https://blog.csdn.net/weixin_38399962/article/d ...

  9. 关闭VAX的拼写检查_解决中文红色警告问题

    菜单VAssistX->Visual Assistant X Options->Advanced->Underlines下 取消“Underline spelling errors  ...

  10. 关于web开发中订单自动超时和自动收货的简单方法(window server)

    最近做一个订单自动超时和自动收货的功能,因为以前是用的mysql 存储过程和定时器来完成,这次的业务逻辑相对复杂用以前的方式就不太合适,本来是准备使用定时执行php脚本来实现的,后来发现业务逻辑中使用 ...