书签 分享 收藏 举报 版权申诉 / 54
上传文档赚钱

类型《NOSQL数据库技术》课件第4章-文档数据库技术.pptx

  • 上传人(卖家):momomo
  • 文档编号:5818439
  • 上传时间:2023-05-11
  • 格式:PPTX
  • 页数:54
  • 大小:1.24MB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《《NOSQL数据库技术》课件第4章-文档数据库技术.pptx》由用户(momomo)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    NOSQL数据库技术 NOSQL 数据库技术 课件 文档
    资源描述:

    1、目录目录概述概述1文档数据库文档数据库存储逻辑架构存储逻辑架构2文档数据库管理基础文档数据库管理基础3文档数据库应用文档数据库应用4小结小结512 文档数据库是最像关系数据库的文档数据库是最像关系数据库的NoSQLNoSQL数据库。数据库。本章本章内容思维导图如内容思维导图如图所示。图所示。4.1 概述概述4.1 概述概述 国际知名的数据库排名网站国际知名的数据库排名网站DB-Engines RankingDB-Engines Ranking发布的发布的20202020年年3 3月月文档数据库(文档数据库(Document storesDocument stores)排名结果)排名结果(htt

    2、ps:/db- 概述概述著名著名文档数据库文档数据库 MongoDBMongoDB 名称中名称中“Mongo”Mongo”来自单词来自单词“Humongous”Humongous”,义为,义为“庞大庞大”,MongoDBMongoDB可以应用于不同行业各种规模可以应用于不同行业各种规模企业应用系统数据的存储与管理。企业应用系统数据的存储与管理。MongoDBMongoDB是专为可扩展性、高性能和高可用性而设是专为可扩展性、高性能和高可用性而设计的数据库。它可以从单服务器部署扩展到大型、计的数据库。它可以从单服务器部署扩展到大型、复杂的多数据中心架构复杂的多数据中心架构。4https:/ 概述概

    3、述著名著名文档数据库文档数据库 CouchDBCouchDB 数据库数据库名称中的名称中的“Couch”Couch”是是“Cluster Of Unreliable Cluster Of Unreliable Commodity Hardware”Commodity Hardware”的首字母缩写,它反映了的首字母缩写,它反映了 CouchDBCouchDB 的目标同样是具有高度可伸缩性,提供高的目标同样是具有高度可伸缩性,提供高可可用性。用性。ApacheApache旗下的项目,由旗下的项目,由ApacheApache负责维护和负责维护和演进。演进。CouchDBCouchDB 最初用最初用

    4、 C+C+编写,编写,20082008年年转为转为ErlangErlang编写。编写。使用使用JSONJSON格式保存数据,支持通过格式保存数据,支持通过 RESTful JavaScript RESTful JavaScript Object Notation(JSON)API Object Notation(JSON)API 访问访问。CouchbaseCouchbase:CouchDBCouchDB+MemBaseMemBase 国内国内SequoiaDBSequoiaDB:数据库引擎中使用数据库引擎中使用BSONBSON,即二进制的方式存放,即二进制的方式存放 JSON JSON 数据

    5、。数据。5http:/ 概述概述 文档文档数据库特点数据库特点 文档是数据存储的基本单位。文档模型灵活。文档是数据存储的基本单位。文档模型灵活。6 文档数据库中数据采用文档数据库中数据采用BSONBSON、JSONJSON等格式存等格式存储。储。可方便地存储树形结构可方便地存储树形结构数据。数据。文档结构可嵌套。文档结构可嵌套。支持多种支持多种类型类型索引。索引。提供丰富的查询语言,提供丰富的查询语言,便于文本搜索、地理位便于文本搜索、地理位置信息查询。置信息查询。MongoDB文档示例4.1 概述概述 文档文档数据库特点数据库特点 支持支持事务管理机制;事务管理机制;简单易用的文档聚合运算;

    6、简单易用的文档聚合运算;支持各种编程语言。支持各种编程语言。丰富的应用开发丰富的应用开发APIAPI;成熟易用的管理、监控工具;成熟易用的管理、监控工具;高安全性保障机制,易于备份与恢复;高安全性保障机制,易于备份与恢复;分布式分布式集群集群架构易于横向弹性扩展,架构易于横向弹性扩展,支持高并发、支持高并发、高性能的数据访问高性能的数据访问保障保障数据存储的高可用性数据存储的高可用性;78 MongoDBMongoDB数据库分片、复制集集群架构数据库分片、复制集集群架构4.1 概述概述目录目录概述概述1文档数据库文档数据库存储逻辑架构存储逻辑架构2文档数据库管理基础文档数据库管理基础3文档数据

    7、库应用文档数据库应用4小结小结594.2 文档文档数据库数据库存储逻辑架构存储逻辑架构 文档数据模型突出优点:结构文档数据模型突出优点:结构+数据,能够自描述数据,能够自描述 XML:theXML:the eXtensibleeXtensible Markup Language Markup Language,可扩展标记语言,可扩展标记语言;相比相比HTMLHTML等标记语言,属于元语言;等标记语言,属于元语言;可以自定义标记;可以自定义标记;语法严格;语法严格;文档模式可单独定义,文档模式可单独定义,进行文档结构有效性检查;进行文档结构有效性检查;有有系列标准系列标准支持支持样式定义样式定义

    8、内容定位内容定位查询语言查询语言链接定义等;链接定义等;10联系人列表联系人列表 联系人联系人 姓名张三姓名姓名张三姓名 IDID001001IDID EMAILEMAILzhangzhangaaaaaacomcomEMAILEMAIL 电话电话(010)62345678(010)62345678电话电话 地址地址 街道五街街道五街12341234号街道号街道 城市北京市城市城市北京市城市 省份北京省份省份北京省份 地址地址 联系人联系人 /XML 文档示例:文档示例:张三03/11/1961医生XML声明声明根元素根元素元素元素文本文本属性属性4.2 文档数据库存储逻辑架构文档数据库存储逻辑

    9、架构4.2.1 JSON与与BSON12 JSONJSON:相比:相比XMLXML更加更加轻量级,一轻量级,一种轻量级的数据交换格式,种轻量级的数据交换格式,非常易于人阅读和编写,同时也易于机器生成和解析非常易于人阅读和编写,同时也易于机器生成和解析。JSON JSON 嵌套式嵌套式数据示例数据示例 JSON JSON 建构基于两种结构:建构基于两种结构:键键值对集合值对集合:在键值对集合结构中,每一个数据元素拥有一:在键值对集合结构中,每一个数据元素拥有一个键(名称)与一个值。值可以包含数字,字符串等常用结个键(名称)与一个值。值可以包含数字,字符串等常用结构,或嵌套构,或嵌套 JSON J

    10、SON 对象和数组。对象和数组。数组数组:在数组中的每一个元素不包含元素名,其值可以为数:在数组中的每一个元素不包含元素名,其值可以为数字,字符串等常用结构,或者嵌套字,字符串等常用结构,或者嵌套 JSON JSON 对象和数组对象和数组。对象是一个无序的对象是一个无序的“键值对键值对”集合集合 以以“”(左大括号)开始,(左大括号)开始,“”(右大括号)结束。每一个元素(右大括号)结束。每一个元素名后跟一个名后跟一个“:”:”(冒号);而元素之间使用(冒号);而元素之间使用“,”,”(逗号)分隔;(逗号)分隔;通过通过 obj.keyobj.key 的的形式来获取对应的形式来获取对应的Val

    11、ueValue134.2.1 JSON与与BSON JSONJSON数组是值的有序集合,以数组是值的有序集合,以“”(左中括号)开始,(左中括号)开始,“”(右中括号)结束。值之间使用(右中括号)结束。值之间使用“,”,”(逗号)分(逗号)分隔隔;值值可以为由双引号包裹的字符串,数值,对象,数组,可以为由双引号包裹的字符串,数值,对象,数组,truetrue,falsefalse,nullnull 数据类型相对比较简单数据类型相对比较简单144.2.1 JSON与与BSON BSON(Binary Serialized Document Format)BSON(Binary Serialize

    12、d Document Format)之名缘于之名缘于JSONJSON,含义为二进制含义为二进制JSONJSON BSONBSON是由是由10gen10gen开发的,主要被用作开发的,主要被用作MongoDBMongoDB数据库中的数据库中的数据存储和网络传输格式数据存储和网络传输格式。BSONBSON相比相比JSONJSON而言的优点而言的优点 在在数据访问性能上有很大的提升数据访问性能上有很大的提升,BSONBSON将每一个元素将每一个元素的长度存在元素的头部信息中,这样基于读取到的元的长度存在元素的头部信息中,这样基于读取到的元素长度经过计算就能直接定位到指定的内容上进行读素长度经过计算就

    13、能直接定位到指定的内容上进行读取,数据访问效率更高取,数据访问效率更高。BSONBSON相比相比JSONJSON数据类型数据类型更丰富更丰富,如,如DateDate和和BinDataBinData类类型。型。操作更简单操作更简单154.2.1 JSON与与BSON BSON BSON 数据类型:每种类型都有一个数字代号和英文别称数据类型:每种类型都有一个数字代号和英文别称$type$type 运算可以返回运算可以返回fieldfield的类型的类型164.2.1 JSON与与BSON BSON BSON 数据类型:每种类型都有一个数字代号和英文别称数据类型:每种类型都有一个数字代号和英文别称1

    14、74.2.1 JSON与与BSON BSONBSON类型示例类型示例 字符串字符串 整数整数 浮点数浮点数 日期日期 数组数组 嵌套文档嵌套文档 文档数组文档数组4.2.1 JSON与与BSON MongoDBMongoDB数据存储模型逻辑架构中的关键概念有文档、数据存储模型逻辑架构中的关键概念有文档、集合、数据库,与关系型数据库集合、数据库,与关系型数据库MySQLMySQL中的行、表、中的行、表、数据库的对应数据库的对应关系关系 在文档数据库中,数据库包含集合,集合包含文档,在文档数据库中,数据库包含集合,集合包含文档,每个文档结构可嵌套,文档可表示为树状层次结构。每个文档结构可嵌套,文档

    15、可表示为树状层次结构。194.2.2 MongoDB数据存储数据存储documentRowcollectionDBtableDB组成组成组成组成mongoMySQL管理管理 1 1数据库(数据库(DatabasesDatabases)在将文档加入集合之前,在将文档加入集合之前,MongoDBMongoDB需要将集合加到数据库需要将集合加到数据库中,一个中,一个MongoDBMongoDB主机上通常会有多个主机上通常会有多个数据库数据库 数据库是用名称作为唯一标识的,可以用几乎任何数据库是用名称作为唯一标识的,可以用几乎任何UTF8UTF8字字符来命名,数据库符来命名,数据库名称一般都是名称一般

    16、都是小写字母,名称字符长度小写字母,名称字符长度不能多于不能多于6464位,不得包含空格、位,不得包含空格、.、$、/、0 0等特殊字符。等特殊字符。MongoDBMongoDB有以下有以下4 4个保留的默认创建的数据库个保留的默认创建的数据库。adminadmin:这个是根级数据库,从权限的角度来看,是系统管理:这个是根级数据库,从权限的角度来看,是系统管理员级操作的数据库员级操作的数据库。locallocal:这个数据库不会被复制,它所存储的任何:这个数据库不会被复制,它所存储的任何collectionscollections只只能在各自的服务器实例上,可以用来存储限于本地单台服务能在各自

    17、的服务器实例上,可以用来存储限于本地单台服务器访问的任意集合。器访问的任意集合。configconfig:在分布式分片设置时,将用于存储配置相关的信息。:在分布式分片设置时,将用于存储配置相关的信息。testtest:默认连接的数据库。:默认连接的数据库。204.2.2 MongoDB数据存储数据存储 2 2集合(集合(CollectionCollection)集合相当于一个没有固定模式的表集合相当于一个没有固定模式的表。一一个集合就是多个文档的组合。个集合就是多个文档的组合。集合是模式自由的,集合是模式自由的,不受类似关系数据库中的关系范式思想的不受类似关系数据库中的关系范式思想的束缚束缚

    18、同同一个集合中可以有多种结构的文档一个集合中可以有多种结构的文档。每个每个集合是用名字来唯一集合是用名字来唯一标识,标识,名称可以是任何名称可以是任何UTF8UTF8字符字符 命名限制命名限制:system.system.是作为系统预留的,所以不能以是作为系统预留的,所以不能以system.system.作为集合名称前缀,比如作为集合名称前缀,比如system.userssystem.users保存数据库保存数据库的用户信息;用户创建集合时也不能用的用户信息;用户创建集合时也不能用“$”$”这个保留这个保留字。字。214.2.2 MongoDB数据存储数据存储 3 3文档(文档(Documen

    19、tDocument)一个文档相当于一个文档相当于RDBRDB中的一行。每个文档是一个结构类似中的一行。每个文档是一个结构类似于于JSONJSON对象的对象的BSONBSON对象对象。每每一个文档都有一个特殊的一个文档都有一个特殊的KeyKey,即,即“_id”_id”,用来作为文,用来作为文档在集合中的唯一标识,文档中各个档在集合中的唯一标识,文档中各个KeyKey关联着关联着ValueValue。一一个文档包含很多域(个文档包含很多域(fieldfield),灵活可变但不能重复),灵活可变但不能重复 文档中默认会增加名称文档中默认会增加名称_id_id为一个标识字段,用作主键,为一个标识字段

    20、,用作主键,其值唯一、不其值唯一、不可变可变 文档文档中的键中的键/值对是有序的,不同序则是不同文档值对是有序的,不同序则是不同文档。命名规范命名规范 区分区分大小写大小写 UTF-8 UTF-8 字符字符,不能不能包含包含 0 0 字符字符(空字符空字符).和和$有特殊含义,需要有特殊含义,需要避免避免224.2.2 MongoDB数据存储数据存储 存储存储嵌套嵌套结构文档结构文档示例如下,其中示例如下,其中addressaddress为为文档类型,文档类型,scoresscores类型为文档数组类型。通过文档类型为文档数组类型。通过文档数组可实现数组可实现一对一对多关系存储多关系存储。_i

    21、d:_id:ObjectIdObjectId(xxxxxxxxxxxxxx),name:name:ChenwuChenwu,age:21,age:21,address:address:city:Beijingcity:Beijing,country:chinacountry:china,code:100876code:100876 ,scores:scores:name:name:englishenglish,grade:5.0,grade:5.0,name:chinese,grade:4.0name:chinese,grade:4.0 234.2.2 MongoDB数据存储数据存储 集合在主

    22、键设计上并没有采用自动增长主键,因为在分布集合在主键设计上并没有采用自动增长主键,因为在分布式服务器之间做数据同步很麻烦式服务器之间做数据同步很麻烦。MongoDBMongoDB采用了一种采用了一种ObjectIdObjectId的方式,生成方便,占用空间的方式,生成方便,占用空间比比longlong类型数据多了类型数据多了4 4个字节,即采用个字节,即采用1212个字节存储文档的个字节存储文档的唯一标识唯一标识。用用 new new ObjectIdObjectId()来申明。()来申明。每个每个文档标识中包含标识产生时间、机器标识、进程和自文档标识中包含标识产生时间、机器标识、进程和自增序

    23、列四方面内容,组合起来保障唯一性增序列四方面内容,组合起来保障唯一性。可可近似看成是按时间的先后进行排序近似看成是按时间的先后进行排序的的 集合集合主键主键_id_id的类型除了用的类型除了用ObjectIdObjectId外,也可以被指定为其外,也可以被指定为其他的类型,如整数类型。使用他的类型,如整数类型。使用ObjectIdObjectId的好处是由的好处是由MongoDBMongoDB数据库服务器负责管理数据库服务器负责管理_id_id的唯一性。的唯一性。244.2.3 MongoDB文档唯一性机制文档唯一性机制 1.1.时间戳时间戳:时间不断变化的:时间不断变化的2.2.机器机器:主

    24、机的唯一标识码。通常是机器主机名的散列值,这样:主机的唯一标识码。通常是机器主机名的散列值,这样可以确保不同可以确保不同主机生成主机生成不同的不同的ObjectIdObjectId,不产生冲突。,不产生冲突。3.3.PIDPID:为了确保在同一台机器上并发的多个进程产生的为了确保在同一台机器上并发的多个进程产生的ObjectIdObjectId是唯一的是唯一的,所以,所以加上进程标识符加上进程标识符(PID).(PID).4.4.计数器计数器:前:前9 9个字节保证了同一秒钟不同机器不同进程产生的个字节保证了同一秒钟不同机器不同进程产生的ObjectIdObjectId是唯一的是唯一的。后。后

    25、3 3个字节就是一个自动增加的计数器,确个字节就是一个自动增加的计数器,确保相同进程同一秒产生的保相同进程同一秒产生的ObjectIdObjectId也也是不一样是不一样。同一秒最多允许。同一秒最多允许每个进程拥有每个进程拥有16 777 21616 777 216个不同的个不同的ObjectIdObjectId。1212个字节:个字节:4+3+2+34+3+2+34.2.3 MongoDB文档唯一性机制文档唯一性机制 业务需求中抽象关键的业务实体概念及其属性,创业务需求中抽象关键的业务实体概念及其属性,创建对应的集合树形结构模型,如:建对应的集合树形结构模型,如:客户集合客户集合 产品集合产

    26、品集合 供应商集合供应商集合 订单集合等;订单集合等;针对具体对象实例,按照集合树形结构,写出相应针对具体对象实例,按照集合树形结构,写出相应的文档实例,测试集合模型是否满足需求;的文档实例,测试集合模型是否满足需求;文档模型设计基本原则:相关字段,经常一起访问文档模型设计基本原则:相关字段,经常一起访问的字段设计在一个文档中;的字段设计在一个文档中;业务人员、技术人员沟通完善模型;业务人员、技术人员沟通完善模型;根据业务系统运行情况,优化模型;根据业务系统运行情况,优化模型;4.2.4 MongoDB文档模型设计文档模型设计 MongoDBMongoDB表示表示文档数据文档数据之间关系的设计

    27、方法:之间关系的设计方法:数据之间的一对一关系数据之间的一对一关系 子文档:可以把相关某类字段抽象表示为子文档子文档:可以把相关某类字段抽象表示为子文档4.2.4 MongoDB文档模型设计文档模型设计 MongoDBMongoDB表示表示文档数据文档数据之间关系的设计方法:之间关系的设计方法:数据文档之间的一对一关系数据文档之间的一对一关系28/patron document _id:joe,name:Joe Bookreader/address document patron_id:joe,/reference to patron document street:123 Fake Stre

    28、et,city:Faketon,state:MA,zip:12345 _id:joe,name:Joe Bookreader,address:street:123 Fake Street,city:Faketon,state:MA,zip:12345 4.2.4 MongoDB文档模型设计文档模型设计 MongoDBMongoDB表示表示文档数文档数据据之间关系的设计方之间关系的设计方法:法:1 1对多对多 嵌套嵌套(Embed)(Embed):文档:文档嵌嵌套的数量和深度没有套的数量和深度没有限制,但限制,但MongoDBMongoDB目目前版本限制一个文档前版本限制一个文档最大为最大为16

    29、MB16MB。嵌套的。嵌套的好处是显而易见的,好处是显而易见的,嵌套文档维持了数据嵌套文档维持了数据逻辑上的完整性,可逻辑上的完整性,可以将一整项数据作为以将一整项数据作为一个整体操作一个整体操作。29 _id:joe,name:Joe Bookreader,addresses:street:123 Fake Street,city:Faketon,state:MA,zip:12345 ,street:1 Some Other Street,city:Boston,state:MA,zip:12345 4.2.4 MongoDB文档模型设计文档模型设计 30 MongoDBMongoDB表示文

    30、表示文档数据之间关系的档数据之间关系的设计方法:设计方法:1 1对多对多 大文档分解;大文档分解;如右所示产品评价如右所示产品评价文档数据;文档数据;评论很多时,可以评论很多时,可以将评论安装时间逆将评论安装时间逆序存储,分为最近序存储,分为最近TopKTopK,如最近的,如最近的1010条和产品设计在条和产品设计在一个文档中;一个文档中;其它放在专门的评其它放在专门的评论文档中;论文档中;_id:1,name:Super Widget,description:This is the most useful item in your toolbox.,price:value:NumberDec

    31、imal(119.99),currency:USD,reviews:review_id:786,review_author:Kristina,review_text:This is indeed an amazing widget.,published_date:ISODate(2019-02-18),review_id:785,review_author:Trina,review_text:Nice product.Slow shipping.,published_date:ISODate(2019-02-17),.review_id:1,review_author:Hans,review_

    32、text:Meh,its okay.,published_date:ISODate(2017-12-06)4.2.4 MongoDB文档模型设计文档模型设计31$lookup:from:,localField:,foreignField:,as:MongoDB3.2MongoDB3.2版本以后语法中有版本以后语法中有$lookup支持关支持关联查询操作联查询操作4.2.4 MongoDB文档模型设计文档模型设计 MongoDBMongoDB表示表示文档数据文档数据之间关系的设计方法:之间关系的设计方法:方法方法1 1:前面介绍的文档之间通过:前面介绍的文档之间通过_ID_ID引用的方式关联引用

    33、的方式关联 方法方法2 2:DBRefDBRef ,可以跨库关联相关文档,可以跨库关联相关文档 引用引用链接通过链接通过DBRefDBRef对象建立,对象建立,DBRefDBRef对象存储了如何对象存储了如何根据数据库名称、集合名称及文档对象标识找到目标根据数据库名称、集合名称及文档对象标识找到目标文档的引用文档的引用信息信息 类似于类似于关系型数据库中的外键。即如果在一个文档关系型数据库中的外键。即如果在一个文档A A中中有一个有一个DBRefDBRef对象,而这个对象,而这个DBRefDBRef对象储存了关于如何对象储存了关于如何找到文档找到文档B B的信息,那么文档的信息,那么文档A A

    34、就可以通过解释这个就可以通过解释这个DBRefDBRef对象,也称作解引用,来获取文档对象,也称作解引用,来获取文档B B的数据的数据。如果方法如果方法1 1能满足需求,就尽量不用方法能满足需求,就尽量不用方法2 2324.2.4 MongoDB文档模型设计文档模型设计334.2.4 MongoDB文档模型设计文档模型设计 MongoDBMongoDB表示文档数据之间关系的设计方法:表示文档数据之间关系的设计方法:方法方法2 2:DBRefDBRef ,可以跨库关联相关文档,可以跨库关联相关文档示例:示例:db.dep.insert(name:CS,num:15,people:DBRef(pe

    35、ople,ObjectId(5d81dd075abbb6081b3e1efa),myTest),DBRef(people,ObjectId(5d81dd315abbb6081b3e1efb),myTest),DBRef(people,ObjectId(5d81df1d5abbb6081b3e1efd),myTest),)db.dep.findOne(name:CS).people0/通过fetch()函数,解析引用对应的文档内容 db.dep.findOne(name:CS).people0.fetch()344.2.5 MongoDB数据存储引擎类型数据存储引擎类型 存储引擎是数据库和硬件之

    36、间的接口,它负责处理用什么存储引擎是数据库和硬件之间的接口,它负责处理用什么数据结构存储数据,以及如何写入、删除和读取数据数据结构存储数据,以及如何写入、删除和读取数据。MongoDB MongoDB 3.03.0开始,提供了可插拔的存储引擎开始,提供了可插拔的存储引擎APIAPI。354.2.5 MongoDB数据存储引擎类型数据存储引擎类型 不同不同的工作负载类型对于读写性能的需求不同,例的工作负载类型对于读写性能的需求不同,例如新闻网站需要大量的读,而社交类网站需要大量如新闻网站需要大量的读,而社交类网站需要大量的写的写。可可插拔的存储引擎插拔的存储引擎APIAPI,使得用户可以在,使得

    37、用户可以在MongoDBMongoDB和和第三方提供的多种存储引擎之间切换第三方提供的多种存储引擎之间切换。MongoDBMongoDB也可以多种也可以多种存储存储引擎并存,满足引擎并存,满足应用更复应用更复杂的需求。例如,使用杂的需求。例如,使用In-memoryIn-memory存储引擎进行低延存储引擎进行低延时的操作,同时使用基于磁盘的存储引擎完成持久时的操作,同时使用基于磁盘的存储引擎完成持久化化。364.2.5 MongoDB数据存储引擎类型数据存储引擎类型 存储引擎存储引擎 类型类型 WiredTigerWiredTiger:MongoDBMongoDB默认默认使用使用,用于将数据

    38、持久用于将数据持久化存储到硬盘文件中化存储到硬盘文件中,提供,提供文档文档级别的级别的并发控制,并发控制,检查点,检查点,数据压缩和本地数据压缩和本地数据加密等数据加密等功能。功能。MMAPv1:MMAPv1:早期版本。早期版本。In-memoryIn-memory存储存储引擎:可引擎:可为实时分析应用提供极高为实时分析应用提供极高的性能,的性能,MongoDBMongoDB自带的自带的In-memoryIn-memory存储引擎是存储引擎是企企业版业版中中才有。才有。目录目录概述概述1文档数据库文档数据库存储逻辑架构存储逻辑架构2文档数据库管理基础文档数据库管理基础3文档数据库应用文档数据库

    39、应用4小结小结5374.3 文档文档数据库管理基础数据库管理基础 MongoDBMongoDB数据库管理系统针对数据库的状态管理,数据库管理系统针对数据库的状态管理,集合与文档的增、删、改、查等操作提供了丰富集合与文档的增、删、改、查等操作提供了丰富的库函数命令的库函数命令。本本节从可操作命令角度,先对文档数据库管理的节从可操作命令角度,先对文档数据库管理的常用操作有个整体常用操作有个整体认识。认识。在在第第5 5章结合具体实例,进一步实践相关命令,深章结合具体实例,进一步实践相关命令,深入学习相关知识。入学习相关知识。384.3.1 数据库数据库操作操作 MongoDBMongoDB没有创建

    40、数据库的命令,但有类似的命令。没有创建数据库的命令,但有类似的命令。如想创建一个名称为如想创建一个名称为myTestmyTest的的数据库数据库39 先运行先运行use use myTestmyTest命令,之后再命令,之后再做一些操作,如做一些操作,如db.createCollectiondb.createCollection(user)(user),向数,向数据库中添加一个集合,这样就可据库中添加一个集合,这样就可以创建一个名叫以创建一个名叫myTestmyTest的数据库的数据库了,通过了,通过show show dbsdbs命令可以查看命令可以查看到它;到它;但如果仅仅执行但如果仅仅执

    41、行useuse操作,不执操作,不执行数据集合创建等操作,虽然执行数据集合创建等操作,虽然执行行dbdb命令能看到当前数据库已经命令能看到当前数据库已经变更,但通过变更,但通过show show dbsdbs命令看不命令看不到它,说明该数据库还未真正建到它,说明该数据库还未真正建立。立。4.3.1 数据库数据库操作操作 MongoDBMongoDB常用数据库操作命令常用数据库操作命令40操作命令操作命令功能说明功能说明show show dbsdbs查询显示所有数据库show usersshow users显示当前DB所有用户show collectionsshow collections显示当

    42、前DB所有集合dbdb可以显示当前数据库对象或集合use use name切换/创建数据库db.help()db.help()显示可用数据库操作命令帮助信息db.dropDatabase();db.dropDatabase();删除当前使用的数据库d b.r u n C o m m a n dd b.r u n C o m m a n d(cmdObjcmdObj)执行数据库中的命令,cmdObj为命令字符串,数据库操作命令的参数非常丰富db.cloneDatabase(fromdb.cloneDatabase(fromhost)host)将指定机器上数据库的数据克隆到当前数据库db.copy

    43、Databasedb.copyDatabase(fromdfromdb b,todbtodb,fromhostfromhost)将fromhost服务器上fromdb数据库的数据复制到todb数据库中,如db.copyDatabase(mydb,temp,127.0.0.1);表示将本机的mydb的数据复制到temp数据库中4.3.1 数据库数据库操作操作41操作命令操作命令功能说明功能说明db.repairDatabasedb.repairDatabase()()修复当前数据库db.getName()db.getName()查看当前使用的数据库,与db效果相同db.stats()db.sta

    44、ts()显示当前db状态,包含集合数、空间占用情况等db.version()db.version()显示当前db版本db.getMongo()db.getMongo()查看当前db的链接机器地址db.getCollectionNames()db.getCollectionNames()查看当前db所有集合名称db.getCollectionInfos(filter)db.getCollectionInfos(filter)查看满足过滤条件集合的详细信息db.createUser(userDocument)db.createUser(userDocument)添加用户db.auth(userna

    45、me,password)db.auth(username,password)数据库认证db.dropUser(username)db.dropUser(username)删除用户 MongoDBMongoDB常用数据库操作命令常用数据库操作命令4.3.2 集合集合操作操作 MongoDBMongoDB常用数据集合操作命令常用数据集合操作命令42操作命令操作命令功能说明功能说明db.createCollectiondb.createCollection(name,(name,options)options)创建一个集合,第一个参数为集合名称,注意名称是区分大小写的,需要用引号括起来;第二个参数可

    46、选db.getCollectiondb.getCollection()()得到指定名称的Collection,结果会加上数据库的名称db.getCollectionNamesdb.getCollectionNames()()得到当前db的所有Collection名称的集合,以数组的方式显示db.printCollectionStats()db.printCollectionStats()显示当前db所有Collection索引等状态信息。db.foo.helpdb.foo.help()()显示集合操作的相关命令提示。这里foo指的是当前数据库下一个名称为foo的集合,foo是shell中默认连

    47、接test数据库中初始状态下的集合。foo可以换成其他自定义集合,其他含foo的命令类似db.foo.dropdb.foo.drop()()删除foo集合db.foo.dataSizedb.foo.dataSize()()查看集合foo的数据占用空间大小4.3.2 集合集合操作操作43 MongoDBMongoDB集合创建时不一定集合创建时不一定必须先创建集合再插入必须先创建集合再插入数据数据 可以可以直接插入数据,如果集合不存在,则会自动先创建集合,直接插入数据,如果集合不存在,则会自动先创建集合,再插入文档数据再插入文档数据。MongoDBMongoDB集合创建时,也支持限定文档总数的参数

    48、设定,可集合创建时,也支持限定文档总数的参数设定,可配置参数如下示例。配置参数如下示例。db.createCollectiondb.createCollection(iLogiLog,capped:true,size:6142800,max:capped:true,size:6142800,max:1000010000 )注:其中注:其中第二个参数的类型是文档对象类型,布尔类型的第二个参数的类型是文档对象类型,布尔类型的cappedcapped字段为字段为truetrue时表示该集合为定长集合,默认是时表示该集合为定长集合,默认是falsefalse;size size字段值指定文档占用字节数

    49、字段值指定文档占用字节数;max max字段值指定包含文档的最大数量字段值指定包含文档的最大数量。当当集合中的文档数量超出限定时,可以循环覆盖存储,如集合中的文档数量超出限定时,可以循环覆盖存储,如第第1000110001条数据将覆盖原来的第条数据将覆盖原来的第1 1条数据。条数据。4.3.3 文档文档操作操作 MongoDBMongoDB常用文档操作命令,其中常用文档操作命令,其中collectioncollection可替换成可替换成要操作的具体集合名称要操作的具体集合名称44操作命令操作命令功能说明功能说明db.collection.insert()在集合中新增一个或多个文档db.col

    50、lection.insertOne()插入一个文档db.collection.insertMany()插入多个文档db.collection.remove()删除集合满足条件的首个文档或所有文档,第一个必需的参数为查询过滤条件,第二个可选的布尔类型参数justOne用于指定删除首个还是全部满足条件的文档,默认是false,删除所有db.collection.drop()删除所有文档db.collection.deleteOne()删除一个文档db.collection.deleteMany()删除多个文档db.collection.update()修改集合中满足条件的首个或所有文档db.col

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:《NOSQL数据库技术》课件第4章-文档数据库技术.pptx
    链接地址:https://www.163wenku.com/p-5818439.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库