技术贴—Mongodb解析
《技术贴—Mongodb解析》要点: Mongodb简介MongoDB 是一个基于分布式文件存储的数据库.旨在为 WEB 应用提供可扩展的高性能数据存储办理方案.MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的. MongoDB将数据存储为一个文档,数据结构由键值(key=>value)对组成.MongoDB 文档类似于 JSON 对象.字段值可以包括其他文档,数组及文档数组. Mongodb特点
Mongodb应用场景Mongodb现阶段已被许多大型网站应用,例如:淘宝,京东,github,ebay等.许多网站并非完全将传统的关系型数据库替换为mongodb,而是选择性的在部分模块应用.在应用mongodb之前,要根据自身需求以及mongodb的特点、不敷进行选择.目前,mongodb适用于以下一些场景:
Mongodb优缺点Mongodb相对关系型数据库有如下长处:
在满足以上长处的同时,却没有关系型数据库那样严格的事物支持,通常情况下,mongodb这一缺点阻碍了人们对其的选择.对于习惯利用关系型数据库的开发人员来说,mongodb没有关联查询,这也是在做数据库选型时会考虑到的. 在非关系型数据库中,mongdb拥有相对突出的优势,mongodb之所以是介于关系型数据库和非关系型数据库的产品,在于它提供了非常丰富的功能,例如MySQL中常用的数据增编削查,索引,聚合查询,分页这些功能,mongodb都提供了相应的能力,与hbase列存储相比,方便了数据的可操作性. Mongodb适用项目针对开发者在进行项目数据库选型时,根据mongodb的特点,优势,缺点综合考虑其适合性.例如在项目中进行的事务性操作比拟多,那么mongodb就不是合适的选择.考虑到mongodb的数据存储结构比拟灵活,并非固定结构,即扩展性高,那么在项目中经常出现需要扩展数据字段的情况,则可以选择mongodb.当然,项目中也可以利用不同的数据库,根据数据的性质选择存储的位置. Mongodb概念以下通过与MySQL对照介绍mongodb基本的术语: 通过下图实例,我们也可以更直观的的了解Mongo中的一些概念: 在mongodb中不存在表关联这一概念,但可以利用文档的内嵌到达数据的直接关联. 数据库 一个mongodb中可以建立多个数据库. MongoDB的默认数据库为"db",该数据库存储在data目录中. MongoDB的单个实例可以容纳多个独立的数据库,每一个都有本身的集合和权限,不同的数据库也放置在不同的文件中. 集合 集合就是MongoDB文档组,类似于RDBMS(关系数据库管理系统:RelationalDatabase Management System)中的表格.集合存在于数据库中,集合没有固定的结构,这意味着你在对集合可以插入不同格式和类型的数据,但通常情况下我们插入集合的数据都会有必定的关联性. 文档 文档是一组键值(key-value)对(即BSON).MongoDB的文档不必要设置相同的字段,并且相同的字段不必要相同的数据类型,这与关系型数据库有很大的区别,也是 MongoDB 非常突出的特点. MongoDB 数据类型 下表为MongoDB中常用的几种数据类型. Mongodb通用指令Mongodb的Linux安装比拟简单,在安装完mongodb后,正常启动的情况下,进入应用的/bin目录下,执行命令./mongo便进入mongodb的后台管理shell,第一次进入shell时是默认选择test库.可通过exit或quit(),或trl+C退出shell. Mongodb中常用的shell指令 以上简单介绍指令的用法,详细阐明可参考官方文档:https://docs.mongodb.com/manual/mongo/ 在mongodb中创建索引时必要注意的事项:
MongoDB GridFSGridFS是MongoDB中的一个内置功能,可以用于寄存大量小文件,以下简单介绍gridFS的用途特点:
fs.files 集合文档举例: { "filename": "test.txt", "chunkSize": NumberInt(261120), "uploadDate": ISODate("2014-04-13T11:32:33.557Z"), "md5": "7b762939321e146569b07f72c62cca4f", "length": NumberInt(646) } fs.chunks 集合文档举例: { "files_id": ObjectId("534a75d19f54bfec8a2fe44b"), "n": NumberInt(0), "data": "Mongo Binary Data" } 详细阐明可参考官方文档:https://docs.mongodb.com/manual/core/gridfs/ Mongodb的存储引擎在mongodb3.0之前,存储引擎是MMAP,属于库级锁,所有数据库的集合文档,索引数据存入一个文件. Mongodb3.0,推出了MMAPV1,wiredtiger . MMAPV1,适应于所有MongoDB版本,MongoDB3.0的默认引擎,属于集合级锁.相对付MMAP,并发性能有所提升,同时其空间预分配策略以2的N次方规则进行分配,优化了空间的利用. Wiredtiger,在mongodb3.2作为默认的存储引擎,通过多版本并发控制完成文档级别锁,并发量提高;数据压缩率高于MMAPV1,由于数据压缩率高,占用内存及CPU也增高;wiredtiger通过按期数据快照操作和预写日志完成数据的一致性,同时可作为数据恢复的依据. 在mongodb3.2版本还推出了In-Memory存储引擎,其特点是数据存储于内存中,只将少量元数据和诊断日志存储到磁盘. Mongodb的存储引擎类型可通过参数进行配置,开发者可依据几个存储引擎的特点结合实际需求进行选择. 《技术贴—Mongodb解析》是否对您有启发,欢迎查看更多与《技术贴—Mongodb解析》相关教程,学精学透。编程之家 52php.cn为您提供精彩教程。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |