2. 什么是NoSQL?
成都做网站、成都网站设计、成都外贸网站建设的开发,更需要了解用户,从用户角度来建设网站,获得较好的用户体验。创新互联建站多年互联网经验,见的多,沟通容易、能帮助客户提出的运营建议。作为成都一家网络公司,打造的就是网站建设产品直销的概念。选择创新互联建站,不只是建站,我们把建站作为产品,不断的更新、完善,让每位来访用户感受到浩方产品的价值服务。
2.1 NoSQL 概述
NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是SQL”,
泛指非关系型的数据库。随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题,包括超大规模数据的存储。
(例如谷歌或Facebook每天为他们的用户收集万亿比特的数据)。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。
2.2 NoSQL代表
MongDB、 Redis、Memcache
3. 关系型数据库与NoSQL的区别?
3.1 RDBMS
高度组织化结构化数据
结构化查询语言(SQL)
数据和关系都存储在单独的表中。
数据操纵语言,数据定义语言
严格的一致性
基础事务
ACID
关系型数据库遵循ACID规则
事务在英文中是transaction,和现实世界中的交易很类似,它有如下四个特性:
A (Atomicity) 原子性
原子性很容易理解,也就是说事务里的所有操作要么全部做完,要么都不做,事务成功的条件是事务里的所有操作都成功,只要有一个操作失败,整个事务就失败,需要回滚。比如银行转账,从A账户转100元至B账户,分为两个步骤:1)从A账户取100元;2)存入100元至B账户。这两步要么一起完成,要么一起不完成,如果只完成第一步,第二步失败,钱会莫名其妙少了100元。
C (Consistency) 一致性
一致性也比较容易理解,也就是说数据库要一直处于一致的状态,事务的运行不会改变数据库原本的一致性约束。
I (Isolation) 独立性
所谓的独立性是指并发的事务之间不会互相影响,如果一个事务要访问的数据正在被另外一个事务修改,只要另外一个事务未提交,它所访问的数据就不受未提交事务的影响。比如现有有个交易是从A账户转100元至B账户,在这个交易还未完成的情况下,如果此时B查询自己的账户,是看不到新增加的100元的
D (Durability) 持久性
持久性是指一旦事务提交后,它所做的修改将会永久的保存在数据库上,即使出现宕机也不会丢失。
3.2 NoSQL
代表着不仅仅是SQL
没有声明性查询语言
没有预定义的模式
键 - 值对存储,列存储,文档存储,图形数据库
最终一致性,而非ACID属性
非结构化和不可预知的数据
CAP定理
高性能,高可用性和可伸缩性
分布式数据库中的CAP原理(了解)
CAP定理:
Consistency(一致性), 数据一致更新,所有数据变动都是同步的
Availability(可用性), 好的响应性能
Partition tolerance(分区容错性) 可靠性
P: 系统中任意信息的丢失或失败不会影响系统的继续运作。
定理:任何分布式系统只可同时满足二点,没法三者兼顾。
CAP理论的核心是:一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需求,
因此,根据 CAP 原理将 NoSQL 数据库分成了满足 CA 原则、满足 CP 原则和满足 AP 原则三 大类:
CA - 单点集群,满足一致性,可用性的系统,通常在可扩展性上不太强大。
CP - 满足一致性,分区容忍性的系统,通常性能不是特别高。
AP - 满足可用性,分区容忍性的系统,通常可能对一致性要求低一些。
CAP理论就是说在分布式存储系统中,最多只能实现上面的两点。
而由于当前的网络硬件肯定会出现延迟丢包等问题,所以分区容忍性是我们必须需要实现的。
所以我们只能在一致性和可用性之间进行权衡,没有NoSQL系统能同时保证这三点。
说明:C:强一致性 A:高可用性 P:分布式容忍性
举例:
CA:传统Oracle数据库
AP:大多数网站架构的选择
CP:Redis、Mongodb
注意:分布式架构的时候必须做出取舍。
一致性和可用性之间取一个平衡。多余大多数web应用,其实并不需要强一致性。
因此牺牲C换取P,这是目前分布式数据库产品的方向。
4. 当下NoSQL的经典应用
当下的应用是 SQL 与 NoSQL 一起使用的。
代表项目:阿里巴巴商品信息的存放。
去 IOE 化。
ps:I 是指 IBM 的小型机,很贵的,好像好几万一台;O 是指 Oracle 数据库,也很贵的,好几万呢;M 是指 EMC 的存储设备,也很贵的。
难点:
数据类型多样性。
数据源多样性和变化重构。
数据源改造而服务平台不需要大面积重构。
举例说明如下:
银行A账户向B账户汇款100元,数据库执行如下过程
从A账户减少100元,然后在B账户增加100元,这个过程称为一个事务
但是:
如果从A账户减少100元后系统出故障了或者出现了其他意外造成B账户没有增加100元(这种事情相信无论是谁遇到也会很无语吧?好吧言归正传)这种情况称为事务不一致,因为一个事务没有做完,所以数据库会将整个过程回滚,你可以理解为就当什么事也没发生过,这种回滚机制就是事务的一种特征,目的就是为了保持数据库的数据库的事务一致性。
一:传统数据库
(1)传统索引不适于海量数据
传统行存数据库索引需要手工设定,对应用不完全透明,随场景和需求的变化需要不断调整,人工维护成本很高。并且传统索引占用存储空间很大,甚至高于数据本身,造成查询效率的下降。
(2)数据装载速度慢
因为索引需要重新创建,加载性能会变的很糟糕。分析型架构系统要解决这些个问题,必须最大限度地减少磁盘 I/O ,提升查询效率,减小人工维护成本。南大通用分析型数据库GBase8a (以下简称GBase 8a)通过列存储模式、数据压缩、智能化的索引、并行处理、并发控制、高效的查询优化器等技术,使得上述问题得到有效解决。以下各节将描述 GBase 8a 的创新架构如何实现这些目标。
二:新型数据库
新型数据库采用分布式并行计算架构,部署于X86通用服务器,满足大数据实时交易需求,成本低、扩展性高,突破了传统数据库性能瓶颈。
分布式非关系型数据库技术创新
非关系型数据库即NoSQL,抛弃了关系数据库复杂的关系操作、事务处理等功能,仅提供简单的键值对(Key, Value)数据的存储与查询,换取高扩展性和高性能,满足论坛、博客、SNS、微博等互联网类应用场景下针对海量数据的简单操作需求。主要技术创新为:
(1) 简单的数据操作换取高效响应。NoSQL仅支持按照Key(关键字)来存储和查询Value(数据),不支持对非关键字数据列的高效查询;因数据操作简单、数据间一般不需要关联操作,故系统可支持高并发和较快的响应速度。
(2) 多种一致性策略满足业务需求。不同于传统关系型数据库仅支持强一致性策略,NoSQL还支持弱一致性和最终一致性等多种策略,可根据应用场景进行对应配置。例如,对写入操作频繁,但数据读取最新版本要求并不严格的应用,如互联网网页数据的存储和分析应用,可以采用最终一致性策略;而对订购关系存储的应用,则必须用强一致性策略,保证总是读取最新版本数据