NoSQL第一部分
一、什么是NoSQL?
问题:12306在开始诞生的前几年,每到重大节假日,经常“瘫痪”,直接原因就是集中超负荷的访问量。技术原因是它在此期间所采用的国际著名的某大型关系型数据库产品。这里暴露出来的问题特点便是:
(1) 传统大型关系型数据库无法更好地解决问题
(2) 在互联网上的应用
(3) 超大规模集中时间段在线访问和业务处理(订火车票)。
NoSQL正是为了解决这个问题而诞生了,重点突出处理速度的响应和海量数据的存储问题。
海量数据?PB级以上
二、 数据库分类
2.1 TRDB数据库
技术特点:
(1) 使用强存储模式技术。这里特别值数据库表、行、字段的建立,都需要预先严格定义,并进行相关属性约束。
(2) 采用SQL技术标准来定义和操作数据库。
(3) 采用强事务保证可用性及安全性
(4) 主要采用单机集中式处理(CP,Centralized Processing)方式。
分析:传统关系型数据库技术的产生,没有考虑过大数据下的应用需要,或者在当时的硬件环境下,无法很好地考虑。适用范围以*、企业内部业务数据应用为主。在大数据环境下的直接使用,存在速度、存储、数据多样性等方面的技术瓶颈。
2.2 NoSQL数据库
技术特点:
(1) 使用弱存储模式技术
(2) 没有采用SQL技术标准来定义和操作数据库
(3) 采用弱事务保证数据可用性及安全性或根本没有事务处理机制。
(4) 主要采用多机分布式处理(DP,Distributed Processing)方式。
目的:NoSQL技术是为大数据的应用而研发的,是基于互联网大数据应用而产生的新一类数据库技术。
2.3 NewSQL数据库
目的:为了结合TRDB和NoSQL的优点,实现在大数据环境下的数据存储和处理。既要实现NoSQL技术快速、有效的大数据处理能力,又要实现传统关系数据库的SQL、事务处理等的优势。
热门产品:PostgreSQL、SequoiaDB、SAPHANA、MariaDB、VoltDB、Clustrix等。
TRDB、NoSQL、NewSQL的一个小比喻:
船、飞机与水上飞机的关系,它们都是交通工具。船是最古老的一种交通工具,虽然目前不是其最旺盛的应用年代,但是现实世界还是离不开它;飞机是20世纪发明的新的交通工具,它的出现让我们远距离到达更加便捷;水上飞机出现结合了前两者的特点,既可以在水上开,又可以在天上飞,但是似乎并没有把船和飞机给淘汰了。它们三者应用领域各有侧重。TRDB、NoSQL、NewSQL也具有这样的关系。
三、TRDB与NoSQL的技术比较
3.1 单机的局限性
(1)传统关系型数据库系统设计之初主要基于一台服务进行业务运行的,所以其受单机的硬件性能影响,所能提供的业务应用能力是受到严格限制的,最大性能不能超过单机硬件运行的极限.这里的极限包括了CPU、硬盘、主板、内存、网卡等的IO速度,硬盘、内存的存储空间等。
(2)这里的核心瓶颈是硬盘,它的IO速度会比内存慢得多,而且自身再提高受物理性能限制,进展特别缓慢。另外,单硬盘的容量也是有限。
3.2服务器的纵横扩充
当单机的诸多局限性出现后,人们为了解决数据处理问题,通过两个方向的努力,想解决该问题。一个是基于服务器本身的功能挖掘,所谓的纵向扩充;另外一个是基于多服务器的横向扩充。
(1) 纵向扩充
(纵向扩充,产生了基于内存的NOSQL数据库产品)
主要从物理高配置扩充和基于内存处理的两个方面着手。如Redis、FastDB、Memcached等,主要解决数据处理速度问题。
(2) 横向扩充
(NOSQL数据库的主要应用硬件环境)
采用多服务器,通过集群(Cluster)一起处理数据。
3.3 软件实现技术比较
NOSQL是弥补传统关系型数据库技术的不足而产生的新的数据库技术。能正确区分TRDB与NOSQL技术的不同特点,无论是深入理解NOSQL的设计和执行原理,还是进行不同数据库技术选择,都是非常有必要的。
∴数据库数据存储模式不一样,TRDB为强数据存储模式,NOSQL为弱数据存储模式;
∴分布式技术是NOSQL的核心技术思路,而TRDB以集中部署一台物理机为最初出发点;
∴TRDB的事务严格遵循ACID原则,而NOSQL遵循Base原则或者根本没有;
∴TRDB都遵循SQL操作标准,NOSQL没有统一的操作标准;
∴TRDB基于单机的硬盘数据处理技术为主,NOSQL基于分布式的或者内存数据处理技术为主;
(1) 数据库存储结构更加简单
去掉TRDB的严格约束,是NOSQL的技术建立思路之一。
(2) 引入分布式技术架构
引入分布式管理软件系统是NOSQL技术建立思路之二。
(3)事务
a) ACID强事务,确保数据的可用和准确性。
TRDB在具体数据处理过程,经常需要用到事务处理功能,目的为了保证数据处理的ACID,即原子性(A, Atomicity)、一致性(C, Consistency)、隔离性(I, Isolation)、持久性(D, Durability)。这四个属性通常称为ACID特性。
b) BASE事务,基本可用,允许数据偶尔出错。NoSQL技术建立思路之三。
NOSQL技术诞生那一刻,就定位于非结构性很强的数据,如网页、网站访问点击量、大量的视频存储、地理位置的最优路径处理、广告智能推送等。而这些数据允许插入出错,给客户带来的损失往往是可以接受的。
BASE:基本可用(BA, Basically Available)、软状态(S, Soft State)、最终一致性(E, Soft State)
(4) SQL技术标准
SQL是TRDB标准配置技术之一,关系数据库的典型特征,属于高级语言的特征。
NOSQL技术发展到现在,已经公开的并被使用的,有200多种数据库技术。相关的数据库存储及数据使用操作命令没有做到命名等的统一,这给学习、技术移植等带来了麻烦。后续NOSQL标准的统一是一种发展趋势。
(5)分析技术
NOSQL技术的发展,解决了大数据的存储和分析问题,由此产生了更多的分析技术;TRDB技术做不到对大数据的分析。
四、 NoSQL数据存储模式分析
数据库的主要功能是存储和处理数据,由此NOSQL也不列外。鉴于NOSQL数据库系统现在至少有200多种产品,而且他们的存储模式没有统一标准,所以,我们需要对NOSQL的数据存储模式做分类介绍,这里重点介绍NOSQL的四大类数据库存储模式,包括了键值存储模式、文档存储模式、列族存储模式、图存储模式。
这里详细以列族数据库进行讲解,后面会以一个BigTable的一个产品进行详细介绍。
4.1 列族数据存储模式
列族数据库为了解决大数据存储问题,引入了分布式处理技术,为了提高数据操作效率,针对传统数据库的弱点,采用了去规则去约束化的思路。
(1) 列族数据库实现基本原理
(2)列族数据库存储结构基本要素
- 命名空间(NameSpace)
命名空间是列族数据库的*数据库结构。相当于传统关系型数据库的表名。
- 行键(Row Key)
行键用来唯一确定列族数据库中不同行数据区别的标识符。
- 列族(Column Family)
由若干个列所构成的一个集合叫列族。
- 列(Column)
列是列族数据库里用来存放单个数值的数据结构。
列的每个值(Value)都附带时间戳(Time Stamp)。通过时间戳来区分值的不同版本。
(3)列族存储特点
- 擅长大数据处理
- 对于命名空间、行键、列族需要预先定义,列无须提早定义,随时可以增加。
- 在大数据应用环境下,管理复杂,必须借助各种高效的管理工具来监控系统的正常运行。
- Hadoop生态系统为基于列族的大数据分析,提供了各种开发工具
- 数据存储模式相对键值数据库、文档数据库要复杂。
- 查询功能相对更加丰富
- 高密集写入处理能力