NoSQL数据库原理(第2版·微课版)
上QQ阅读APP看书,第一时间看更新

前言

互联网和物联网的兴起,使得人们生产和收集数据的能力大大增强。大数据业务不断出现,并逐渐渗透到社会的方方面面,人们也更加迫切地希望从数据中获得新价值。然而,一般的关系型数据库可能无法对大数据和新业务进行有效支撑。在很多互联网和大数据业务中,使用关系型数据库好像在“用钳子拧螺丝”,优点无从发挥,但弱点却暴露无遗。

在这种背景下,相关领域的技术人员不约而同地着手研发非关系型数据库,其核心理念是通过打破关系模型,去除用不到的约束规则,以获得更好的分布式部署能力、横向扩展能力和数据管理能力,使其在特定大数据场景下,具有更好的数据承载能力和查询处理性能。

随着新型数据库系统不断被研发出来,人们开始将这些分布式非关系型数据库统称为“NoSQL”数据库。NoSQL并非是对SQL语言的否定,而是强调不必再用关系型数据库适配所有的业务场景,特别是一些新兴的大数据业务场景。NoSQL也并非是一个严谨的概念,它更像技术革新运动的一个口号,代表一个趋势:“大数据时代”来临,我们必须为不同的业务场景选择更合适的技术工具,此时不再强调技术工具的全面,而强调“取舍”。

NoSQL数据库的出现,为数据领域带来了新的挑战,主要表现如下。

首先,由于业务人员对NoSQL系统的技术特点不熟悉,因此难以判断NoSQL系统的适用场景,难以对不同类型的NoSQL系统进行技术选型,难以利用NoSQL系统开展技术创新和业务创新。

其次,NoSQL数据库一般不支持SQL,且由于技术特点的差异,不同类型的NoSQL系统之间的操作方法各不相同,这使得用户难以使用关系型数据库;并且由于NoSQL数据库一般都支持分布式部署,这使得NoSQL系统的部署和维护要求较高。

本书希望从NoSQL系统的技术特点、使用方式和部署方式等方面对典型的NoSQL数据库进行介绍,帮助读者拓展大数据管理和处理方面的思路,学习基本的NoSQL系统部署、使用和编程等方法。

本书前两章介绍NoSQL数据库的基本趋势,并简单介绍NoSQL数据库的基本原理。前两章尽量避免对技术原理进行抽象讨论,重点突出NoSQL数据库为进行分布式部署,实现高可用性、高效率和易用性等目标所采取的设计理念和功能取舍,使读者能够理解NoSQL数据库的特点,进而判断各种NoSQL系统的适用场景。

本书的第3~9章对主流NoSQL数据库的使用方法和编程方法进行讲解。

本书的第3~5章介绍的是最为流行的文档式数据库MongoDB和图数据库Neo4j,考虑到一些读者可能没有Linux系统的使用经验,因此主要基于Windows平台进行部署和操作演示,以便帮助读者快速上手。

本书的第6章、第7章介绍了键值对数据库Redis和环形列存储数据库Cassandra等,并描述了其在Linux环境下的部署和操作方法。本书的第8章、第9章对基于Hadoop体系的列存储数据库HBase、时序数据库InfluxDB和一些全文检索数据库等进行了简要介绍。

本书主要基于2022年的主流软件版本和权威官方文档进行描述,重点介绍基本库表操作、数据增删改查方法等。在编程语言上,本书基于两种主流编程语言:Java和Python。

此外,伴随虚拟化和容器化等技术的兴起,当前大多数公有云均提供了各种各样的NoSQL服务,并提供快速部署、快速调整和几乎免维护等特性,这使得NoSQL数据库的使用和维护门槛大大降低,因此本书对NoSQL系统的集群部署、维护和优化等内容介绍较少,同时,也建议读者对云计算和容器化等相关内容进行学习,以便更好地发挥NoSQL数据库的价值。

本书的编写工作由北京邮电大学智能信息技术课题组共同完成,成员包括俎云霄、侯宾、刘刚、李巍海、张健明。其中俎云霄负责拟定全书框架,侯宾进行主体内容撰写,李巍海、张健明负责对文中代码进行测试和审核,刘刚负责对全书进行审阅。

最后,书中难免有疏漏和不足之处,恳请各位读者批评指正,以便今后不断完善、改进!

作者
2023年8月