首页 > 知识点讲解
       文档数据库MongoDB
知识路径: > 数据库技术 > 数据库技术基础 > 数据库模型 > 典型数据库:RDB(关系数据库)、OODB(面向对象数据库)、ORDB(对象关系数据库)、XML数据库、NoSQL(非关系数据库) > 非关系型数据库NoSQL > NoSQL数据库的种类 > 文档存储 > 
被考次数:1次     被考频率:低频率     总体答错率:59%     知识难度系数:     
相关知识点:2个      
        MongoDB是10gen公司开发的以高性能和可扩展性为特征的文档型数据库,也是NoSQL文档存储模式数据库中的重要一员。MongoDB的最大特点就是无表结构。在保存数据和数据结构的时候,会把数据和数据结构都完整地以BSON的形式保存起来(BSON是JSON的二进制编码格式,但比JSON支持更加复杂的格式,在空间利用上更加高效,支持的数据类型如下表所示),并把它作为值和特定的键进行关联。正是由于这种设计,使得它不需要表结构,而被称为文档型数据库。
        
        BSON支持的数据类型
        
        这里说的文档,是一种可以嵌套的数据集合。从关系数据库的范式的概念来说,嵌套是明显的反范式设计。范式设计的好处是消除了依赖,但是增加了关联,查询需要通过关联两张或者多张表来获得所需要的全部数据,但是更改操作是原子的,只需要修改一个地方即可。反范式则是增加了数据冗余来提升查询性能,但更新操作可能需要更新冗余的多处数据,需要注意一致性的问题。
        由于MongoDB最大的特点就是无表结构,无论是定义还是使用,所以,对于任何关键字,它都可以像关系型数据库那样进行复杂的查询。此外,MongoDB拥有比关系型数据库更快的速度,而且,可以像关系型数据库那样通过添加索引来进行高速处理。
        根据它的特点,可以通过“添加字段”“查询数据”这两个操作看出MongoDB与传统的关系型数据库相比的优势与不足,如下表所示。
        
        MongoDB与传统的关系型数据库的比较
        因此,在实际应用中,我们要根据MongoDB的特点灵活使用:在最初的设计时就避免join查询的使用,当然,可以在最开始的时候就将必要的数据嵌入到文档中去,这可以实现同样的功能。
        除此之外,MongoDB有它自己的通信协议,有几种语言的socket驱动。MongoDB还有强大的查询语言可以和SQL相媲美,它的查询语言同样支持Map/reduce函数。此外,MongoDB的分区方法采用的是“读写分离”,以主从模式对数据进行复制和修改。
        MongoDB具有四点主要特征:
        (1)高性能:提供JSON、XML等可嵌入数据快速处理功能;提供文档的索引功能,相对传统数据库而言,大大提高查询速度。
        (2)丰富的查询语言:为数据聚合、结构文档、地理空间提供丰富的查询功能。
        (3)高可用性:提供数据冗余处理和故障自动转移的功能。
        (4)水平扩展能力:通过集群将数据分布到多台机器,而不是只提升单个节点的性能,具体处理分为主从和权衡两种处理模式。
        MangoDB为C、C#、.NET、Java、PHP等各种开发语言提供了程序库,如下表所示。
        
        MangoDB为各种开发语言提供的程序库(部分)
        Java驱动程序是MongoDB最早的驱动,它已经使用多年,而且非常稳定,是企业级开发的首选。下面使用Java驱动程序来举一个各种汽车信息统计的搜索引擎的例子,每种汽车收集的信息都不同,本例子的目的是使得这些信息都能被搜索到。
        宝马的属性就比较多,所以它的文档也复杂一些:
        
        MangoDB能存放任意数量、任意属性的被统计信息,这样应用就能轻易扩展,但目前还不能对当前的格式进行有效的索引。MangoDB索引可以将数组的每一个元素进行涵盖,所以可以将想要索引的属性放到一个保护常用键名的数组中。例如,对于宝马汽车,可以为索引添加一个数组,将全部属性放到数组中:
        
        对于奥迪汽车,只有一个属性,就是价格:
        
        现在只要创建一个“index.name”和“index.value”的复合索引就行了。使用Java代码举例,使用ensureIndex函数建复合索引:
        
        实现宝马汽车信息的文档如下:
        
        只要实现了java.util.List,就可以用来表示数组,所以用java.tuil.ArrayList来存放表示汽车不同属性信息的内嵌文档。
 
本知识点历年真题:
隶属试卷 题号/题型 题干 难度系数/错误率
   2015年上半年
   数据库系统工程..
   上午试卷 综合知识
第63题
选择题
MongoDB是一种NoSQL数据库,具体地说,是( )存储数据库。

59%
 
 相关知识点:
 
软考在线指南
优惠劵及余额
在线支付
修改密码
下载及使用
购买流程
取消订单
联系我们
关于我们
联系我们
商务合作
旗下网站群
高级资格科目
信息系统项目管理师 系统分析师
系统架构设计师 网络规划设计师
系统规划与管理师
初级资格科目
程序员 网络管理员
信息处理技术员 信息系统运行管理员
中级资格科目
系统集成项目管理工程师 网络工程师
软件设计师 信息系统监理师
信息系统管理工程师 数据库系统工程师
多媒体应用设计师 软件评测师
嵌入式系统设计师 电子商务设计师
信息安全工程师
 

本网站所有产品设计(包括造型,颜色,图案,观感,文字,产品,内容),功能及其展示形式,均已受版权或产权保护。
任何公司及个人不得以任何方式复制部分或全部,违者将依法追究责任,特此声明。
本站部分内容来自互联网或由会员上传,版权归原作者所有。如有问题,请及时联系我们。


工作时间:9:00-20:00

客服

点击这里给我发消息 点击这里给我发消息 点击这里给我发消息

商务合作

点击这里给我发消息

客服邮箱service@rkpass.cn


京B2-20210865 | 京ICP备2020040059号-5 |京公网安备 11010502032051号 | 营业执照 | Copyright ©2000-2023 All Rights Reserved 软考在线版权所有