首页 理论教育 云计算中的MongoDB应用

云计算中的MongoDB应用

时间:2023-11-26 理论教育 版权反馈
【摘要】:MongoDB的数据模型对于开发者十分友好。MongoDB提出的是文档、集合的概念。图7-13MongoDB数据库层次结构1)文档文档是MongoDB的核心概念。一个MongoDB实例可以承载多个数据库,它们之间可视为完全独立的。MongoDB为了对数据库的管理工作进行简化,采用服务器自治的方式来实现。MongoDB支持丰富的查询表达式。推荐运行在64位平台,因为MongoDB在32位模式运行时支持的最大文件尺寸为2 GB。MongoDB的主要适用场景如下:①网站实时数据处理。

云计算中的MongoDB应用

MongoDB是一个基于文档(而非表)的存储的数据库,由C++语言编写,主要解决的是海量数据的访问效率问题,为Web应用提供可扩展的高性能数据存储解决方案。当数据量达到50 GB以上的时候,MongoDB的数据库访问速度是MySQL的10倍以上。

MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库中功能最丰富、最像关系数据库的。MongoDB的数据模型对于开发者十分友好。作为面向文档的数据库,它将关系数据库中“行”的概念换成更加灵活的“文档”模型。这种独特的数据存储结构可以将文档或者数组内嵌进来,所以用一条记录就可以表示非常复杂的层次关系。

MongoDB提出的是文档、集合的概念。MongoDB中多个文档组成集合,同样多个集合可以组成数据库。文档、集合、数据库的层次结构如图7-13所示。

图7-13 MongoDB数据库层次结构

1)文档

文档是MongoDB的核心概念。文档就是键值对的有序集,其中键是一个字符串(除了少数例外),值可以是任意的类型,包括数组和文档。每种编程语言表示文档的方法不一样,但是大多数编程语言都有相通的一种数据结构,比如映射、散列或字典。下面是以JavaScript语言表现的一份文档:

其中,键是greeting,值为hello world。

文档中的键/值对必须是有序的。下面两个就是不同的键值对:

此外,MongoDB不但区分类型,也区分大小写;MongoDB的文档中不能有重复的键。

2)集合

集合就是一组文档。如果说MongoDB中的文档类似于关系型数据库中的行,那么集合就如同表。但集合是无模式的,这意味着一个集合里面的文档可以是各式各样的。

3)数据库

数据库是一个集合的物理容器。一个MongoDB实例可以承载多个数据库,它们之间可视为完全独立的。每个数据库都有独立的权限控制,即便是在磁盘上,不同的数据库也放置在不同的文件中。将一个应用的所有数据都存储在同一个数据库中的做法就很好。要想在同一个MongoDB服务器上存放多个应用或者用户的数据,就要使用不同的数据库了。

MongoDB为了对数据库的管理工作进行简化,采用服务器自治的方式来实现。在管理操作上,仅仅有一个会在开始的时候启动服务器的操作。在主服务器出现问题的情况下,MongoDB会启动备份的服务器来完成主服务器的工作,这些都是在MongoDB内部机制下自动完成的,同时,会将备份服务器升为当前服务支持服务器。分布式环境下,集群服务器[4]在知道有新增节点的情况下,就会自动配置新的节点。MongoDB服务集群由以下3个服务器组成:

·Shards Server:数据存储服务器,存储了地理空间信息的分片数据。在分片下可以有一个或者多个Mongod服务(Mongod是MongoDB数据的核心进程)。

·Config Server:用于存储集群的元数据信息,包含了存储的分片和块的信息。

·Route Server:路由服务器,负责数据在有Client访问时候的路由分发机制。(www.xing528.com)

MongoDB的特点是高性能、易部署、易使用,存储数据非常方便,其主要功能特性包括:

①面向集合存储,易存储对象类型的数据。“面向集合”(Collenction-Orented),意思是数据被分组存储在数据集中,被称为一个集合(Collenction)。每个集合在数据库中都有一个唯一的标识名,并且可以包含无限数目的文档。集合的概念类似于关系型数据库(RDBMS)里的表(Table),不同的是它不需要定义任何模式(Schema)。

②模式自由。模式自由(Schema-free),意味着对于存储在MongoDB数据库中的文件,用户不需要知道它的任何结构定义。如果需要的话,完全可以把不同结构的文件存储在同一个数据库里

③支持查询。MongoDB保留了关系型数据库即时查询的能力,保留了索引(底层是基于B+Tree)的能力。这一点汲取了关系型数据库的优点,同类型的NoSQL redis并没有上述的能力。

④支持动态查询。MongoDB支持丰富的查询表达式。查询指令使用JSON形式的标记,可轻易查询文档中内嵌的对象及数组。

⑤支持完全索引,包含内部对象。通过MongoDB的查询优化器自动地分析查询表达式,生成一种高效、快捷的查询策略。

⑥支持复制和故障恢复。Mongo数据库支持服务器之间的数据复制,支持主-从模式及服务器之间的相互复制。复制的主要目标是提供冗余及自动故障转移。

⑦使用高效的二进制数据存储,包括大型对象(如视频等)。传统的二进制存储方式为其提供了高效的数据存取效率。

⑧自动处理碎片,以支持云计算层次的扩展性。自动分片功能支持水平的数据库集群,可动态添加额外的机器,便于云计算层面的扩展性。

⑨支持Python,PHP,Ruby,Java,C++等多种语言。支持Python,PHP,Ruby,Java,C,C#,Javascript,Perl及C++语言的驱动程序,社区中也提供了对Erlang及.NET等平台的驱动程序。

⑩文件存储格式为BSON(一种JSON的扩展)。BSON(Binary Serialized document Format)存储形式是指存储在集合中的文档被存储为键值对的形式。

⑪可通过网络访问。MongoDB服务端可运行在Linux、Windows或OS X平台,支持32位和64位应用,默认端口为27017。推荐运行在64位平台,因为MongoDB在32位模式运行时支持的最大文件尺寸为2 GB。MongoDB把数据存储在文件中(默认路径为:/data/db),为提高效率使用内存映射文件进行管理。

作为NoSQL数据库中的领导者,MongoDB得益于其自由灵活的文档模型,也被越来越多的相关领域的企业投入实际的生产环境里,成为创业团队的首选数据库,创造了许多互联网、移动应用。

MongoDB的主要适用场景如下:

①网站实时数据处理。它非常适合实时的插入、更新与查询,并具备网站实时数据存储所需的复制及高度伸缩性。

缓存。由于性能很高,它适合作为信息基础设施的缓存层。在系统重启之后,由它搭建的持久化缓存层可以避免下层的数据源过载。

③高伸缩性的场景。它非常适合由数十或数百台服务器组成的数据库。

④大尺寸、低价值的数据。使用传统的关系数据库存储一些数据时可能会比较贵,在此之前,很多程序员往往会选择传统的文件进行存储。

⑤用于对象及JSON数据的存储。MongoDB的BSON数据格式非常适合文档格式化的存储及查询。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈