NoSQL数据库打破了传统关系型数据库管理系统(RDBMS)的世界观,同关系型数据库相比,这类数据库提供了海量的数据伸缩范围、极强经济性和高度的灵活性。然而,在当今数据泛滥的世界,两种数据库系统都具有相应的适用场景。本文将就如何正确选择合适的数据库系统给予讲解。
在数据库技术领域,存在着两种类型的数据库系统:SQL和NoSQL,或者是关系型数据库和非关系型数据库。它们的主要区别在于如何创建数据库、如何构建数据以及如何存储数据。关系型数据库的数据结构类似于存储电话号码和地址的电话簿,而非关系型数据则是面向文件和分布式的,数据是用户从电话号码联系地址至社交帐户信息全部内容的一个文件夹,就象在线购物的购物车一样,包含了所有东西。以上的两种数据库就被称为SQL和NoSQL。
RDBMSs的兴起
早在1970年,E.F.Codd在他的一篇叫做《A Relational Model of Data for Large Shared Data Banks》的论文中设想了一种新的数据库管理系统模型,为之后关系型数据库管理系统(RDBMS)的出现铺平了道路。
- RDBMSs制订了一套存储数据以及处理大型数据库的方法
- 每条记录(数据)都被存储在数据表中
- 之后,操作数据的SQL语言进化而来
关系型数据库管理系统的细节和优点都具有巨大影响,其结果会在选择数据库管理系统厂商体现出来。
许多关系型数据管理系统,诸如 Sybase、Microsoft SQL Server、Informix、MySQL、DB2以及Oracle几乎同时出现,每个厂商都宣称其产品具有如下特性:
- 性能
- 可用性
- 功能性
- 存储成本
- 经济性
由于没有有效的竞争,至2000年初,关系型数据库已经占据了全部IT业务生态系统。
NoSQL的发展
到了2005年,软件架构由传统的客户机——服务器模式转换为超大规模Web应用架构,这让传统的关系型数据库管理系统在以下方面承受了巨大压力:
- 应用级别
- 数据量识别
- 掌控/监控变化的能力
于是,业界开启了非关系型数据库管理系统的新纪元,这就是之后被称为NoSQL的系统。NoSQL之所以能够适应现代应用的开发,吸引所有人的注意,其原因在于它改变了传统基于SQL数据库管理系统的工作方式。
小提示:预计到2020年,NoSQL将具有42亿美元的收入规模。
图.1 RDBMS Vs NoSQL
NoSQL以下几个关键特性,使它成为数据库领域的新宠儿:
- 它是一个分布式计算系统
- 更高的可扩展性
- 更低的成本
- 灵活的架构设计
- 处理非结构化或半结构化的数据
- 没有复杂的关系系统
- 开源
RDBMS 和 NoSQL的比较
以下将对两种数据库的关键参数进行比较。
1] 扩展性
关系型数据库的扩展性:
- 架构被设计成在单台主机上良好运行
- 为了应付大数据量的操作,需要采用性能更好的处理器和不断增加主机内存
- 在可以扩展性方面存在缺陷
NoSQL数据库的扩展性:
- NoSQL数据库的目的是可以在较低配置的服务器集群中良好的运行
- 为了处理更多的数据,只需要不断的为集群中添加服务器
- 这些数据库可以被低成本的服务器精确操控
- 这被看作是处理更多数据的较为合适的方案
- 可以处理更为大量的数据
2] 维护性
关系型数据库是一种高维护成本的数据库系统:
- RDBMS系统的维护成本是非常昂贵的,需要由专业人员进行数据库管理
NoSQL数据库是低维护成本的数据库:
- NoSQL的维护成本相对较低,并且系统具有很多新特性,包括自动数据修复、数据简易分发以及简单数据模型等
3] 数据模型
关系型数据库具有严格的数据模型:
- 关系型数据库要求数据具有预先设定的数据模型以结构化的格式进行组织
- 使用SQL来管理数据面临很多困难,由于主键和外键的强依赖性,造成想到插入特定数据时会变得复杂
NoSQL数据库是基于无模式数据模型:
- NoSQL数据库是无模式的,数据可以被随时插入,即使没有任何预定义的模式
- 数据类型可以随时更改,并且不会影响应用
4] 缓存
关系型数据使用单独的硬件资源进行缓存:
- 典型的关系型数据库需要单独的硬件设施来实现缓存功能
- 由于存在系统开销,所以每次检索时都有一定的延迟
NoSQL系统是集成缓存:
- NoSQL系统支持在内存中进行缓存,可以加快数据检索性能
SQL关系型数据库的应用场景
- 如果你的应用要求数据严格符合ACID(Atomicity、Consistency、 Isolation、Durability)原则,那么关系型数据库当然是首选。NoSQL数据库牺牲了部分ACID性能以达到更大的灵活性和处理速度,所以在对于数据具有严格要求的金融、电子商务等领域依然会使用关系型数据库
- 如果你的数据类型比较固定,结构也较为单一,那么就没有必要采用一个用于应付支持各种数据类型和高流量的系统。
NoSQL数据库的应用场景
- 如果你的需求是存储海量数据,而数据又没有固定的类型,那么就可以考虑NoSQL了。NoSQL可以将大量的数据存储在一起而并没有类型限制,并且可以根据需要随时修改数据类型。基于文档的数据库模型,允许先存储数据而不必预先指定数据类型。
- NoSQL是充分利用云计算和云存储的数据库,这样可以有效的控制服务器硬件成本,可以根据业务量来动态增加服务器。
- 应用快速开发,如果你只有两周时间来开发一个应用,可能会根据需要不断的更改数据结构,那么你可能没有足够时间来等待关系型数据库在不同数据版本间的切换,而NoSQL则不需要这些准备工作,可以直接进行开发。