资源预览内容
第1页 / 共55页
第2页 / 共55页
第3页 / 共55页
第4页 / 共55页
第5页 / 共55页
第6页 / 共55页
第7页 / 共55页
第8页 / 共55页
第9页 / 共55页
第10页 / 共55页
亲,该文档总共55页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
.,nosql数据库_MongoDB,2015-10-02,.,CONTENTS,目录,1,2,3,4,MongoDB简介,MongoDB下载安装,MongoDB应用,GridFS,存取数据机制,6,7,8,9,服务器管理,MongoDB总结,MongoDB与mysql对比,复制与分片,5,.,初步了解MongoDB,认识什么是mongoDB,为什么要用MongoDB,MongoDB特性,第 一 节,返回,.,MongoDB简介,什么是MongoDB? MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。 MongoDB的特点? 高性能、易部署、易使用,存储数据非常方便,.,MongoDB简介,MongoDB主要功能特性? 面向集合存储,易存储对象类型的数据。 模式自由。 支持动态查询。 支持完全索引,包含内部对象。 支持查询。 支持复制和故障恢复。 使用高效的二进制数据存储,大型对象(如视频等)。 自动处理碎片,以支持云计算层次的扩展性 支持RUBY,PYTHON,JAVA,C+,PHP等多种语言。 文件存储格式为BSON(一种JSON的扩展) 可通过网络访问,.,MongoDB简介,使用原理 所谓“面向集合”(Collenction-Oriented),意思是数据被分组存储在数据集中,被称为一个集合(Collenction)。每个集合在数据库中都有一个唯一的标识名,并且可以包含无限数目的文档。集合的概念类似关系型数据库(RDBMS)里的表(table),不同的是它不需要定义任何模式(schema)。 模式自由(schema-free),意味着对于存储在mongodb数据库中的文件,我们不需要知道它的任何结构定义。如果需要的话,你完全可以把不同结构的文件存储在同一个数据库里。 存储在集合中的文档,被存储为键-值对的形式。键用于唯一标识一个文档,为字符串类型,而值则可以是各种复杂的文件类型。我们称这种存储形式为BSON(Binary JSON)。,.,MongoDB简介,为什么要用MongoDB? MongoDB的设计是要结合键值存储和关系型数据库的最好特性。键值存储,因为非常简单,所以速度极快而且相对容易伸缩。关系型数据库较难伸缩,至少很难水平伸缩,但拥有富数据模型和强大的查询语言。如果MongoDB能介于两者之间,就能成为一款易伸缩、能存储丰富数据结构、提供复杂查询机制的数据库。在使用场景方面,MongoDB非常适合用做以下应用程序的主要数据存储:Web应用程序、分析与记录应用程序,以及任何要求有中等级别缓存的应用程序。此外,由于它能方便地存储无Schema数据,MongoDB还很适合保存事先无法知晓其数据结构的数据。,.,了解如何获得MongoDB软件,包括如何为自己的环境选择正确的版本,如何在Windows和linux中安装和检测运行。,第 二 节,返回,.,MongoDB下载安装,选择正确版本? MongoDB所使用的版本管理相当简单:偶数号为稳定版,奇数号为开发版。注意:32 位产品与 64 位产品之间的区别。32 位和 64 位版本的数据库目前有着相同的功能,唯一的区别是:32 位版本将每个服务器的数据集总大小限制在 2GB左右;64 位版本没有任何限制,所以在生产环境中应该优先使用 64 位版本。另外,不同的版本之间也有可能发生变化 下载MongoDB? 下载地址:https:/www.mongodb.org/downloads 安装MongoDB? 在Linux中安装MongoDB,有两种方式:一、通过仓库安装 MongoDB;二、手动安装MongoDB 在Windows中安装MongoDB,只需要根据自己的需要下载安装包、解压后运行即可。,.,MongoDB下载安装,安装 解压安装包后在mongodb 下建立Data文件夹 mongodbdata ,然后分别建立db,log两个文件夹,至此mongodb下有以下文件夹 mongodbbin mongodbdatadb mongodbdatalog 在log文件夹下创建一个日志文件MongoDB.log,mongodbdatalogMongoDB.log,.,MongoDB下载安装,启动MongoDB? 命令行方式启动:只需按照启动命令来执行就行了。 配置文件方式启动:MongoDB也支持同mysql一样的读取启动配置文件的方式来启动数据库 Daemon方式启动:启动MongoDB进程的session窗口不小心关闭时,MongoDB进程也将随之停止,MongoDB提供了一种后台Daemon方式启动的选择,只需加上一个”-fork”参数即可 停止MongoDB? Control-C:通过Control-C的方式去停止MongoDB实例 shutdownServer()指令:通过在admin库中发送db.shutdownServer()指令去停止MongoDB实例 Unix系统指令:在找到实例的进程后,可能通过发送kill -2 PID或kill -15 PID来停止进程,.,MongoDB下载安装,命令启动 进入到bin目录下,输入命令 ./mongod -dbpath=/usr/local/soft/mongodb/data -logpath=/usr/local/soft/mongodb/logs/MongoDB.log -logappend -auth -port=27017 -fork 配置文件启动 在mongodb下创建mongo.config文件,编辑mongo.config,输入 dbpath=D:mongodbdatadb logpath=D:mongodblogmongo.log 进入bin目录下,输入 mongod -config /mongodb/mongo.config,.,MongoDB下载安装,停止服务 最稳妥的方式,处理完当前所有操作并将缓存的数据保存到磁盘上才停止 user admin db.shutdownServer(); 当然我们也可以直接关闭进程,但这种方式会导致缓存中的数据未急时刷新保存到磁盘上而丢失 参数解释: -dbpath 数据库路径(数据文件) -logpath 日志文件路径 -master 指定为主机器 -slave 指定为从机器 -source 指定主机器的IP地址 -logappend 日志文件末尾添加,.,MongoDB下载安装,-pologSize 指定日志文件大小不超过64M.因为resync是非常操作量大且耗时,最好通过设置一个足够大的oplogSize来避免resync(默认的 oplog大小是空闲磁盘大小的5%)。 -port 启用端口号 -fork 在后台运行 -only 指定只复制哪一个数据库 -slavedelay 指从复制检测的时间间隔 -auth 是否需要验证权限登录(用户名和密码),.,本节主要了解怎么运用MongoDB,包括其添加,修改,删除,查询,索引,聚合。本节将会是重点。,第 三 节,返回,.,MongoDB应用,.,MongoDB应用,添加? 添加有两种方式insert()与save() MongoDB是面向文档存储的数据库,文档结构形式叫BSON(类似JSON) db.c1.insert(name:user1); db.c1.save(_id:1, name:user1); 他们两者之间的区别是: 1、使用save函数里,如果原来的对象不存在,那他们都插入数据,如果已经存在,save会调用update更新里面的记录,而insert则会忽略操作 2、insert可以一次性插入一个列表,而不用遍历,效率高, save则需要遍历列表,一个个插入。具体的看一下函数的源码。,.,MongoDB应用,数组操作? $push向文档数组中添加元素,如果没有该数组,则自动添加数组。 db.foo.update(,$push:users:1)向users数组末尾添加一个1元素 db.foo.update(,$push:users:“$each”:1,2)向users数组末尾添加多个元素,要$each 配合使用 $addToSet 可以避免插入重复元素,配合$each使用,可以添加多个不同的值,数组修改器慢,因为文档大小可能会变 $pop从头部或尾部删除元素 $pull删除满足条件的元素,不止删除一个 默认情况下,更新只能对符合匹配条件的第一个文档执行操作,要是多个文档符合条件,只有第一个文档会被更新,其他文档不会发生变化, 要更新所有匹配的文档,可以将update的第四个参数设置为true db.foo.update(,$set:name:tes,false,true) 在MongoDB找下级是按点的方式:比如user下有叫logs数组,就user.logs,.,MongoDB应用,修改? db.collection.update( , , , ) 修改现有存在的文档或集合时使用。默认的update()方法值更新单个文档。但是如果multi参数设置为true,则更新操作可以更新全部符合条件的文档。 Query 类型:文档;用于更新选择过滤。 Update 类型:文档;需要更新的文档的内容。 Upsert 类型:文档或boolean;设置为true时,当查询没有匹配到文档时进行新建。默认值为false Multi: - 类型:文档或boolean;设置为true时,则更新满足查询条件的所有文档(多个)。设置为false时只更新单个文档。默认为false。,.,MongoDB应用,.,MongoDB应用,删除? db.collection.remove(query, justOne) Query 类型:文档;用于删除选择过滤。 JustOne 类型:boolean;当设置为true时只删除一个文档。 db.collection.remove();删除collection中的所有数据,一旦删除不可恢复。但是不会删除collection; db.collection.drop();直接删除collection; 去重? Distinct() db.collection.distinct(field, query) Field 类型:字符串;返回非重复的字段。 Query 类型:文档;查询条件。 db.user.distinct(_id, age: 1),.,MongoDB应用,查询? db.collection.find(, ) find()返回的是一个文档集合; db.collection.findOne(, ) findOne()返回的是一个文档 前一个是查询条件,后一个参数是显示的数据 查询操作符(Query Operators)可以让我们写出复杂查询条件,让我们使用的过程更加灵活。 比较查询操作符 $all 语法: field: $all: , . field:文档中键的名称(不使用双引号)。 $gt 语法:field: $gt: value 匹配键值大于指定值的所有文档。,.,MongoDB应用,$gte 语法:field: $gte: value 匹配键值不小于指定值的所有文档。 $lt 语法:field: $lt: value 匹配键值小于指定值的所有文档。 $lte 语法:field: $lte: value 匹配键值不大于指定值的所有文档。 $in 语法: field: $in: , , . 匹配键值等于指定数组中任意值的文档。类似sql中in. $nin
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号