《NOSQL数据库技术》课件第4章-文档数据库技术.pptx
- 【下载声明】
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文档唯一性机制文档唯一性机制 业务需求中抽象关键的业务实体概念及其属性,创业务需求中抽象关键的业务实体概念及其属性,创建对应的集合树形结构模型,如:建对应的集合树形结构模型,如:客户集合客户集合 产品集合产
展开阅读全文