您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 人事档案/员工关系 > MongoDB数据模型-厦门大学数据库室
第0页封面页文档型NoSQL系统-----MongoDB报告人:阮榕城导师:林子雨厦门大学数据库实验室2015年7月17日3第2页什么是面向文档的数据库?什么是面向文档的数据库?第一章4第3页第一章文档数据库集合文档(Document):每一个文档都是自包含的数据单元,是一系列数据项的并集。每个数据项都有一个名称与对应的值,可以是简单的数据类型,如字符串、数字、日期;也可以是复杂的类型,如有序列表等。文档很类似JSON的字段和值对。什么是面向文档的数据库?集合(Collection):一组相关的文档,他们拥有一套共享的通用索引。集合与关系型数据库中的表是类似的。5第4页什么是面向文档的数据库?第一章MongoDB6MongoDBMongoDB是10gen公司开发一款以高性能和可扩展性为特征的开源软件,是面向文档的数据库。它介于关系型和非关系型数据库之间的产品。MongoDB最大的特点是支持的查询语句非常强大,其语法类似面向对象的查询语句,类似关系数据库单表查询的绝大部分功能,支持对数据建立索引。它是面向集合,模式自由的文档型数据库。第一章第5页什么是面向文档的数据库?7第6页国内使用的案例国内使用的案例第二章8第7页国内使用的案例第二章1视觉中国资讯数据库2优酷在线评论业务3奇虎360“HULK”云平台上,每天都运行着1,500多个实例以及共计200亿次查询4百度百度云的MongoDB数据库支持9第8页为什么要使用MongoDB?为什么要使用MongoDB?第三章10表字段:”love_cycle”,”love_cook”,”love_guitar”……不能确定的表结构,表结构过于复杂JSON序列化和反序列化并不能解决全部问题第三章第9页为什么要使用MongoDB??{key1-’骑行’key2-’下厨’key3-’吉他’}11MongoDB的优势无表结构容易扩展性能卓越简便管理功能丰富第三章第10页为什么要使用MongoDB?第一点无表结构正文第三章第一节MongoDB的优势为什么要使用MongoDB?第11页1、不用关心表结构和程序之间的一致性。2、减少了增加字段的开销{“welcome”:“Beijing”}{“age”:“25”}共存一个集合13第二点容易扩展正文第三章第一节MongoDB的优势为什么要使用MongoDB?第12页升级(购买更好的机器)?扩展(将数据分散到很多机器上)?1、自动分散数据2、平衡集群数据和负载3、自动重排文档14第三点丰富功能正文第三章第一节MongoDB的优势为什么要使用MongoDB?第13页索引丰富的功能存储JavaScript聚合固定集合文件存储15第四、五点性能卓越,便捷管理正文第三章第一节MongoDB的优势为什么要使用MongoDB?第14页服务器自动配置简化数据库的管理性能卓越,便捷管理预分配数据文件空间,存储引擎中使用内存映射文件16事务查询Join查询空间需求不足需要进行join的地方不能使用MongoDB由关系型数据库查询空间换取性能,对硬盘空间逐渐增大!第三章第15页为什么要使用MongoDB?17第16页是否需要迁移?是否需要迁移?第四章18如果有2个以上的需求在关系型数据上无法满足,就应该考虑迁移到MongoDB?第四章第17页是否需要迁移?Tips:项目开发中请不要试图去使用一些开发人员不熟悉的技术,也要考虑后期维护成本,经常debug的风险!19第18页是否需要迁移?MongoDB数据模型第五章20第19页MongoDB数据模型第五章21第20页MongoDB数据模型第五章22第21页MongoDB数据模型第五章引用内嵌文档结构存储链接或者引用信息来实现两个不同文档之间的关联。把相关联的数据保存在同一个文档结构之内23正文第五章第22页第1节文档结构----引用MongoDB数据模型第五章文档结构------引用24正文第五章第23页第2节文档结构----内嵌MongoDB数据模型第五章文档结构------内嵌25正文第五章第24页第3节使用场景----引用MongoDB数据模型第五章文档结构------引用一般如下情况建议使用引用文档结构:当内嵌数据会导致很多数据的重复,并且读性能的优势又不足于盖过数据重复的弊端时候。需要表达比较复杂的多对多关系的时候。3大型多层次结构数据集。1引用比内嵌要更加灵活一些。但客户端应用必须使用二次查询来解析文档内包含的引用。26正文第五章第25页第4节使用场景----内嵌MongoDB数据模型第五章文档结构------内嵌一般如下情况建议使用引用内嵌结构:数据对象之间有“contains”(包含)关系。数据对象之间有一对多的关系。这些情况下“多个”或者子文档会经常和父文档一起被显示和查看。1引用比内嵌要更加灵活一些。但客户端应用必须使用二次查询来解析文档内包含的引用。27第26页简单的MongoDB操作简单的MongoDB操作第六章28正文第六章第27页第1节启动数据库简单的MongoDB操作第一点启动数据库D:\MongoDB\Server\mongod.exe--dbpathD:\MongoDB\Data\db29正文第六章第28页第2节连接数据库简单的MongoDB操作第二点连接数据库D:\MongoDB\Server\mongo.exe客户端:服务端:30正文第六章第29页第3节插入文档简单的MongoDB操作第三点插入文档db.users.insert(JSON);客户端:31正文第六章第30页第3节插入文档简单的MongoDB操作第三点插入文档Vardocuments=[{name:”ruanrc”,addr:”dblab303”,hobby;”riding”},{name:”luodw”,addr:”dblab303”,hobby;”coding”},];插入:文档数组db.users.insert(documents);32正文第六章第31页第3节插入文档简单的MongoDB操作第三点插入文档_idkey_id是MongoDB自有产物,存储在集合中的每个文档都有一个默认的主键_id,名称固定,类型可以是MongoDB支持任何类型,但默认是ObjectId,但是同一个集合中文档的_id的值必须是唯一的,不能重复。即使插入文档的时候没有指定_id,MongoDB也会自动生成。同样不支持自增主键。33正文第六章第32页第四节更新文档简单的MongoDB操作第四点更新文档将name是ruanrc的文档的hobby字段修改成riding_bak:db.users.update({name:”ruanrc”},{$set:{hobby:”riding_bak”}});remove:find:34正文第六章第33页第五节删除文档简单的MongoDB操作第五点删除文档将name是luodw的文档从users集合删除:db.users.remove({name:”luodw”});update:find:35正文第六章第34页第六节复杂查询和修改简单的MongoDB操作第六点复杂查询和修改更新内嵌的字段db.users.update({name:”ruanrc”},{$set:{“hobby.num”:”9527”}});返回指定的字段db.users.find({name:”ruanrc”},{_id:0});1Sort排序db.users.find().sort({age:1});或查询db.users.find({$or:[{name:”ruanrc”},{addr:”dblab303”}]});23436第35页MapReduceMapReduce第七章欲知详情,请听下回分解!37第36页封面页谢谢聆听!导师:林子雨演讲者:阮榕城
本文标题:MongoDB数据模型-厦门大学数据库室
链接地址:https://www.777doc.com/doc-3640242 .html