(2)高并发读写的性能低 当关系数据库的存储的数据达到一定数量时,容易出现死锁等一系列问题,将会
影响数据库的读写性能,引发性能。
(3)支撑容量有限
(4)数据库的可扩展性和稳定性低 当需要对服务进行升级时,需要暂停数据库的使用,会对服务的使用造成困扰。
同时关系型数据库的扩展成本很高。
为了解决上述的缺点,NoSQL 数据库应运而生,和关系型数据库不同的是,NoSQL 数据库善于处理非结构化的数据,该数据库是通过键值对存储方式进行数据存储的, 它的主要特点是采用不特定的数据存储结构,每一个记录都可以包含不一样的内容, 能够依据系统的需求随时加入任意的键值对,大大减少成本的开销。
NoSQL 数据存储能够满足数据在横向伸缩性上的要求,尽管 NoSQL 数据库的编写 语言各有不同,其中有的是用 C/C++编写的,有的是用 Java 编写的,每个都有各自 的特点,但总体而言 NoSQL 都有一些共同的特点:
(1)它们可以处理超大量的数据。
(2)运行在便宜的 PC 服务器集群上。
该数据库扩展方便,通过简单的 PC 服务器集群可以扩展数据库,这样可以大大 减少成本的开销。
(3)击碎了性能瓶颈。
使用 NoSQL 可以节省大量数据类型转换的时间,加快数据处理的速度。
(4)没有过多的操作。
NoSQL 没有关系型数据库过多的功能,一定程度上简化了要求,也避免了功能过 多带来的问题。
(5)支持者源于社区。
由于 NoSQL 的源程序都是开源的,所以得从社区中寻求技术支持[5]。
3。3MongoDB 数据库
对于 MongoDB 而言,它是最接近关系型数据库的 NoSQL 数据库,它具备了两者之 间的优点。它支持的数据结构可以用来存储相对复杂的数据类型,并且该结构是比较 类似 json 的,所以它可以用来处理大量的数据且能够发挥出自己的优势。文献综述
MongoDB 的功能特性主要有:
(1)该数据库是面向集合的,比较容易进行数据存储。
(2)支持动态查询
(3)该数据库支持全索引
(4)支持查询
(5)支持复制和故障恢复
(6)通过二进制进行存储,效率较高
(7)方便支持云扩展
(8)支持 RUBY,PYTHON,JAVA,C++,PHP 等多种语言
(9)文件存储格式为 BSON(一种 JSON 的扩展)
(10)可通过网络访问[5]
MongoDB 的 逻 辑 结 构 是 一 种 层 次 结 构 , 主 要 是 由 文档 (document) 、集合 (collection)、数据库(database)组成的[1][2],如图 3-1 所示。
图 3-1 MongoDB 数据逻辑结构
文档、集合、数据库这三部分的关系如下:
(1)MongoDB 中的一篇文档相当于关系型数据库的一条记录。
(2)一个集合包含多个文档,相当于关系型数据库中的表。
(3)数据库中逻辑上包含了多个集合。
(4)一个 MongoDB 实例可以同时支持包含多个数据库[1][2]。 由于绝大部分人都比较习惯关系型数据库,于是表 3-1 将关系型数据库与
MongoDB 的逻辑结构进行了比较。
表 3-1 关系型数据库和 MongoDB 的逻辑结构对比
关系型数据库 MongoDB
database(数据库) database(数据库)
table(表) collection(集合)
row(行) document(文档)
3。4 小结