- NoSQL数据库原理
- 侯宾
- 1773字
- 2025-03-29 00:36:49
1.1.3 NoSQL的特点
一些互联网公司着手研发(或改进)新型的、非关系型的数据库,这些数据库被统称为NoSQL,常见的NoSQL数据库,包括HBase、Cassandra和MongoDB等。有些此类数据库及其模型早就存在,但是在互联网领域才获得了大的发展和关注度。
NoSQL数据库并没有统一的模型,但通常都被认为是关系型数据库的简化,而非“第三代数据库”。NoSQL数据库一般会弱化“关系”,即弱化模式或表结构、弱化完整性约束、弱化甚至取消事务机制等,其目的就是去掉关系模型的约束,以实现强大的分布式部署能力——一般包括分区容错性、伸缩性和访问效率(可用性)等。
和Hadoop、Spark等知名的大数据批处理不同,NoSQL数据库一般提供数据的分布式存储、数据表的统一管理和维护,以及快速的分布式写入和简单查询能力等,一般不直接支持对数据进行复杂的查询和处理(例如关联查询、聚合查询等)。
在软件实现上,NoSQL数据库通常具有两个特点。
一是流行的NoSQL软件很多诞生在互联网领域中,主要为满足互联网业务需求而生。这使得传统的电信、电力或金融等行业在利用NoSQL构建本行业的大数据应用时存在难度,一方面是由于技术人员可能对这些工具缺乏掌握;另一方面是由于这些软件工具在设计之初,并没有过多考虑传统行业中大数据业务的现状和需求。
二是知名的NoSQL软件一般是开源(Open Source)免费的,包括本书介绍的所有NoSQL数据库。这可以看作是强调开放和共享的“互联网精神”的体现。开源免费使得这些软件工具的使用成本大大降低,但也使得这些软件缺少商业化运作,缺乏完善的说明文档和技术服务,加之这些软件工具采用了新型的设计理念、数据结构和操作方法,使得这些软件工具的学习难度较高。此外,NoSQL数据库的价值体现在利用分布式架构处理海量数据,而个人学习者难以构建分布式环境,也难以轻易获得海量的实验数据。
目前很多商业软件公司对原生的NoSQL软件进行了扩展、优化和企业级封装,并向传统行业和普通学习者进行推广。例如,整合多种大数据软件到一个平台,使之能够协同工作;构建易部署、易管理、易维护的大数据软件平台,使之满足大企业对IT服务规范化的需求,且简化管理难度;对原生大数据软件二次开发,使之支持SQL语句、事务机制等关系型数据库特性,以提高易用性,扩展应用范围;以及独立研发自己的NoSQL软件等。上述领域的知名公司和产品包括:华为公司的FusionInsight,Cloudera公司的Cloudera Manager,以及受Hortonwork公司支持的开源软件Ambari等。
此外,很多公有云服务商也都提供了在线的NoSQL数据库(以及关系型数据库),用户可以在免安装、免维护的情况下使用这些数据库。例如:亚马逊的公有云服务AWS中,提供了名为DynamoDB的NoSQL数据库服务,阿里云、腾讯云等知名云服务商也均提供了在线的Key-Value数据库服务(NoSQL数据库的一种)。
一家名为db-engines的网站通过采集知名搜索引擎、社交网络和招聘网站信息等方式,对全球数据库的流行度(popularity)进行评分和排名,如图1-2所示,位置靠前说明软件的流行度较高。
从2017年9月的排名来看,网站对334个数据库系统软件进行了评分,排名前15名中有9个关系型数据库(Database model为Relational DBMS),其中排前4位的均为关系型数据库。非关系型数据库则占6位,其Database model则有多种形式。

图1-2 db-engines网站2017年9月的全球数据库流行度排名前15位
该排名无法作为“哪种数据库更优秀”的权威参考,但仍可以从一个侧面说明,关系型数据库仍是应用最广泛的数据库,而NoSQL数据库的应用范围也十分广泛,其类型和实现方式也是多种多样的。
事实上,NoSQL数据库和关系型数据库是互补关系,在不限定场景的情况下,无法比较谁更强大。关系型数据库能够更好地保持数据的完整性和事务的一致性,以及支持对数据的复杂操作,在现实中拥有更普遍的适用领域。NoSQL数据库做不到上述这些,但是可以更好地实现分布式环境下对数据的简单管理和查询,即在大数据业务领域具有更大价值。
最后需要说明的是,NoSQL这个概念并不是一个严谨的分类或定义。在20世纪90年代,曾经有一款不以SQL作为查询语言的关系型数据库叫作NoSQL,这显然和NoSQL当前的含义不同。之后在2009年的一个技术会议上,NoSQL被再次提出,其目的是为“设计新型数据库”这一主题加上一个简短响亮的口号,使之更容易在社交网络上推广。
因此NoSQL更多的是代表一个趋势,而非对新型数据库进行严谨的分类和定义。有人将NoSQL解释为“No more SQL”或“Not Only SQL”等,但作为分类标准和定义来看,也都不严谨。
如果对公认被看作NoSQL的数据库系统特征进行归纳,可以得出NoSQL的一般特征包括:集群部署的、非关系型的、无模式的数据库,以及通常是开源软件等。