Download presentation
Presentation is loading. Please wait.
Published byHerbert Hertz Modified 6年之前
1
单元目标 1.什么是NO-SQL? 2.认识MongoDB数据库 3. MongoDB的下载与安装 4. MongoDB的体系结构
5.客户端GUI工具集合 6.常用命令(基本的增删改查)
2
什么是NO-SQL NoSQL指的是非关系型的数据库,是以key-value形式存储,和传统的关系型数据库不一样,不一定遵循传统数据库的一些基本要求,比如说遵循SQL标准、ACID属性、表结构等等,这类数据库主要有以下特点:非关系型的、分布式的、开源的、水平可扩展的。
3
NoSQL发展现状 目前国内外正在应用NoSQL的网站有: 新浪微博 Redis Google Bigtable
Amazon SimpleDB 淘宝数据平台 Tair (淘宝自主开发的Key/Value结构数据存储系统) 视觉中国网站 MongoDB 优酷运营数据分析 MongoDB 飞信空间 HandlerSocket 豆瓣社区 BeansDB 大部分常用功能在前面的学习过程中基本上已经多多少少接触过了,这里写到一起可以起到一个整体回顾的巩固作用 在第9~14页中,对于之前未讲过的部分知识(例如重定向输入、追加输入/输出、历史命令条数的限制等),则应该适当强调,其余的简略讲解即可
4
三、和高可用性的需求对数据库的高可扩展性
我们为什么要使用NOSQL非关系数据库? 一、对数据库高并发读写的需求 二、对海量数据的高效率存储和访问的需求 三、和高可用性的需求对数据库的高可扩展性 大部分常用功能在前面的学习过程中基本上已经多多少少接触过了,这里写到一起可以起到一个整体回顾的巩固作用 在第9~14页中,对于之前未讲过的部分知识(例如重定向输入、追加输入/输出、历史命令条数的限制等),则应该适当强调,其余的简略讲解即可
5
NoSQL数据库的优缺点 在优势方面,主要体现在下面这几点: 简单的扩展 快速的读写 低廉的成本 灵活的数据模型
在不足方面,常见主要有下面这几点: 不提供对SQL的支持 支持的特性不够丰富 现有产品的不够成熟 大部分常用功能在前面的学习过程中基本上已经多多少少接触过了,这里写到一起可以起到一个整体回顾的巩固作用 在第9~14页中,对于之前未讲过的部分知识(例如重定向输入、追加输入/输出、历史命令条数的限制等),则应该适当强调,其余的简略讲解即可
6
NOSQL的种类 大部分常用功能在前面的学习过程中基本上已经多多少少接触过了,这里写到一起可以起到一个整体回顾的巩固作用
在第9~14页中,对于之前未讲过的部分知识(例如重定向输入、追加输入/输出、历史命令条数的限制等),则应该适当强调,其余的简略讲解即可
7
MongoDB介绍 MongoDB是什么? {“name”:”mongo”,”type”:”DB”}
MongoDB(from “humongous”) Is a scalable,high-performance,open source, Document-oriented database,Written in C++ 大部分常用功能在前面的学习过程中基本上已经多多少少接触过了,这里写到一起可以起到一个整体回顾的巩固作用 在第9~14页中,对于之前未讲过的部分知识(例如重定向输入、追加输入/输出、历史命令条数的限制等),则应该适当强调,其余的简略讲解即可
8
MongoDB数据库 MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。它的特点是高性能、易部署、易使用,存储数据非常方便。 大部分常用功能在前面的学习过程中基本上已经多多少少接触过了,这里写到一起可以起到一个整体回顾的巩固作用 在第9~14页中,对于之前未讲过的部分知识(例如重定向输入、追加输入/输出、历史命令条数的限制等),则应该适当强调,其余的简略讲解即可
9
MongoDB数据库 主要功能特性: ◆ 面向集合存储,易存储对象类型的数据
◆ 面向集合存储,易存储对象类型的数据 “面向集合”(Collenction-Orented),意思是数据被分组存储在数据集中,被称为一个集合(Collenction)。每个 集合在数据库中都有一个唯一的标识名,并且可以包含无限数目的文档。集合的概念类似关系型数据库(RDBMS)里的表(table),不同的是它不需要定 义任何模式(schema)。 ◆ 模式自由 模式自由(schema-free),意味着对于存储在mongodb数据库中的文件,我们不需要知道它的任何结构定义。如果需要的话,你完全可以把不同结构的文件存储在同一个数据库里。 ◆支持动态查询 ◆支持完全索引,包含内部对象 大部分常用功能在前面的学习过程中基本上已经多多少少接触过了,这里写到一起可以起到一个整体回顾的巩固作用 在第9~14页中,对于之前未讲过的部分知识(例如重定向输入、追加输入/输出、历史命令条数的限制等),则应该适当强调,其余的简略讲解即可
10
MongoDB数据库 ◆支持查询 ◆支持复制和故障恢复 ◆使用高效的二进制数据存储,包括大型对象(如视频等)
◆自动处理碎片,以支持云计算层次的扩展性 ◆支持RUBY,PYTHON,JAVA,C++,PHP等多种语言 ◆文件存储格式为BSON(一种JSON的扩展) BSON(Binary Serialized Document Format)存储形式是指:存储在集合中的文档,被存储为键-值对的形式。键用于唯一标识一个文档,为字符串类型,而值则可以是各中复杂的文件类型。 大部分常用功能在前面的学习过程中基本上已经多多少少接触过了,这里写到一起可以起到一个整体回顾的巩固作用 在第9~14页中,对于之前未讲过的部分知识(例如重定向输入、追加输入/输出、历史命令条数的限制等),则应该适当强调,其余的简略讲解即可
11
MongoDB数据库 ◆可通过网络访问 MongoDB服务端可运行在Linux、Windows或OS X平台,支持32位和64位应用,默认端口为27017。推荐运行在64位平台,因为MongoDB在32位模式运行时支持的最大文件尺寸为2GB。 MongoDB把数据存储在文件中(默认路径为:/data/db),为提高效率使用内存映射文件进行管理。 大部分常用功能在前面的学习过程中基本上已经多多少少接触过了,这里写到一起可以起到一个整体回顾的巩固作用 在第9~14页中,对于之前未讲过的部分知识(例如重定向输入、追加输入/输出、历史命令条数的限制等),则应该适当强调,其余的简略讲解即可
12
MongoDB数据库 面向集合(Collenction-Orented)
大部分常用功能在前面的学习过程中基本上已经多多少少接触过了,这里写到一起可以起到一个整体回顾的巩固作用 在第9~14页中,对于之前未讲过的部分知识(例如重定向输入、追加输入/输出、历史命令条数的限制等),则应该适当强调,其余的简略讲解即可
13
MongoDB数据库 模式自由(schema-free) 意思是集合里面没有列和行的概念,下面两个记录可以存在于同一个集合里面:
{“name" : “mongo"} {"age" : 25} 大部分常用功能在前面的学习过程中基本上已经多多少少接触过了,这里写到一起可以起到一个整体回顾的巩固作用 在第9~14页中,对于之前未讲过的部分知识(例如重定向输入、追加输入/输出、历史命令条数的限制等),则应该适当强调,其余的简略讲解即可
14
MongoDB数据库 文档型(documents) 意思是我们存储的数据是键-值对的集合,键是字符串,值可以是数据
类型集合里的任意类型,包括数组和文档,每一个文档相当于关系数据库中的一条记录。 大部分常用功能在前面的学习过程中基本上已经多多少少接触过了,这里写到一起可以起到一个整体回顾的巩固作用 在第9~14页中,对于之前未讲过的部分知识(例如重定向输入、追加输入/输出、历史命令条数的限制等),则应该适当强调,其余的简略讲解即可
15
MongoDB介绍 文档是什么? 这个Document,不是文件!! {“name”:”李捷”,”alias”:”李小帅”}
Not JSON,BUT BSON 大部分常用功能在前面的学习过程中基本上已经多多少少接触过了,这里写到一起可以起到一个整体回顾的巩固作用 在第9~14页中,对于之前未讲过的部分知识(例如重定向输入、追加输入/输出、历史命令条数的限制等),则应该适当强调,其余的简略讲解即可
16
MongoDB的体系结构 1、逻辑结构关系对比 关系型数据库:
MySQL数据库(database)、表(table)、记录(rows) 三个层次概念组成。 非关系型数据库: MongoDB 数据库(database)、集合(collection)、文档对象(document)三个层次概念组成。 MongoDB 里的集合对应于关系型数据库里的表,但是集合中没有列、行和关系的概念,集合中只有文档,一个文档就相当与一条记录,这体现了模式自由的特点。
18
2、数据存储结构 MySQL的数据存储结构:
MySQL的每个数据库存放在一个与数据库同名的文件夹中,MySQL如果使用MyISAM存储引擎,数据库文件类型就包括.frm、.MYD、.MYI。 MongoDB的数据存储结构: MongoDB的默认数据目录是/data/db,它负责存储所有的MongoDB的数据文件。在MongoDB内部,每个数据库都包含一个.ns文件和一些数据文件,而且这些数据文件会随着数据量的增加而变得越来越多。所以如果系统中有一个叫做test的数库,那么构成test这个数据库的文件就会由test.ns,test.0,test.1等等组成。
19
3、MongoDB 数据类型 MongoDB的文档使用BSON(Binary JSON)来组织数据,BSON类似于JSON,JSON只是一种简单的表示数据的方式,只包含了6种数据类型(null、布尔、数字、字符串、数组及对象),不能完全满足复杂业务的需要,因此,BSON还提供日期、32位数字、64位数字等类型。以下对mongoDB的数据类型进行简要说明:
20
1、 null null类型用于表示空值或不存在的字段 如:{“one”:null} 2、 布尔类型 布尔类型有两上值,’true’和’false’ 如:{“one”:true} 3、 32位整数 mongoDB的控制台使用JS引擎进行输入,而JS仅支 持64位浮点数,所以32位整数将会被自动转义。 4、 64位整数 64位整数与32位整数一样,在MongoDB控制台使用 时,会转义成64位浮点数。
21
5、 64位浮点数 MongoDB控制台数字的默认类型。 如:{“one”:2.02} {“one”:10} 6、字符串 UTF-8字符串都可以表示为字符串类型的数据。 如:{“one”:”Hello World”} 7、 符号 在MongoDB控制台中不支持这种类型,将自动转义成 字符串。
22
8、 ObjectId 类型 对象id是文档中唯一的12位的ID 0|1|2|3|4|5|6|7|8|9|10|11 时间戳 |机器 | PID | 计数器 如:ObjectId("4eae239f e051e7fd") 9、 日期 注意:使用的时候要加上new 如:{“one”:new Date()} 10、正则表达式 文档键值可以包含正则表达式,其正则表达式采用JS语法来表示。 如:{“one”:/ho/i}
23
11、代码 文档中可以包含JS代码 如:{“one”:function(){/*………….*/}} 12、数组 文档中键值可以表示为数组,在数组内还可以嵌套数组; 如:{“x”:[“a”,”b”,[“c”,”d”]]} 13、内嵌文档 文档可以包含别的文档,也可以作为值嵌入到父文档中。 如:{“x”:{“name”:”Tom”,”age”:20}}
24
Document store RDBMS MongoDB Database Table, View Collection Row
Document (JSON, BSON) Column Field Index Join Embedded Document Foreign Key Reference Partition Shard Javascript
25
Document store > db.user.findOne({age:39}) {
RDBMS MongoDB Database Table, View Collection Row Document (JSON, BSON) Column Field Index Join Embedded Document Foreign Key Reference Partition Shard > db.user.findOne({age:39}) { "_id" : ObjectId("5114e0bd42…"), "first" : "John", "last" : "Doe", "age" : 39, "interests" : [ "Reading", "Mountain Biking ] "favorites": { "color": "Blue", "sport": "Soccer"} } Flexible schema Javascript
26
CRUD Create Read Update Delete
db.collection.insert( <document> ) db.collection.save( <document> ) db.collection.update( <query>, <update>, { upsert: true } ) Read db.collection.find( <query>, <projection> ) db.collection.findOne( <query>, <projection> ) Update db.collection.update( <query>, <update>, <options> ) Delete db.collection.remove( <query>, <justOne> ) Create The field name _id is reserved for use as a primary key; its value must be unique in the collection, is immutable, and may be of any type other than an array. The field names cannot start with the $ character. The field names cannot contain the . character. Create with save If the <document> argument does not contain the _id field or contains an _id field with a value not in the collection, the save() method performs an insert of the document. Otherwise, the save() method performs an update. sds
27
CRUD example > db.user.find () { "_id" : ObjectId("51…"),
> db.user.insert({ first: "John", last : "Doe", age: 39 }) > db.user.find () { "_id" : ObjectId("51…"), "first" : "John", "last" : "Doe", "age" : 39 } > db.user.update( {"_id" : ObjectId("51…")}, { $set: { age: 40, salary: 7000} } ) > db.user.remove({ "first": /^J/ })
28
MongoDB的安装(Linux平台) 第一步:下载MongoDB安装包
如果有网络的话,用命令直接下载(CentOS版本) wget 大部分常用功能在前面的学习过程中基本上已经多多少少接触过了,这里写到一起可以起到一个整体回顾的巩固作用 在第9~14页中,对于之前未讲过的部分知识(例如重定向输入、追加输入/输出、历史命令条数的限制等),则应该适当强调,其余的简略讲解即可
29
MongoDB的安装(Linux平台) 第二步:解压压缩包 tar zxvf mongodb-linux-i686-2.0.2.tgz
最好给解压的文件夹改个名字,方便操作。 mv mongodb-linux-i mongodb 大部分常用功能在前面的学习过程中基本上已经多多少少接触过了,这里写到一起可以起到一个整体回顾的巩固作用 在第9~14页中,对于之前未讲过的部分知识(例如重定向输入、追加输入/输出、历史命令条数的限制等),则应该适当强调,其余的简略讲解即可
30
MongoDB的安装(Linux平台) 第三步:安装准备 将mongodb移动到/usr/local/mongdb文件夹(跟据个人习惯指定)
mv mongodb /usr/local/mongodb 创建数据库文件夹 (默认的数据库文件的位置是/data/db,启动时会自动创建) mkdir /usr/local/mongodb/data 提示:mongoDB没有具体的安装过程,解压文件包后,可以直接使用,非常高效和方便。 大部分常用功能在前面的学习过程中基本上已经多多少少接触过了,这里写到一起可以起到一个整体回顾的巩固作用 在第9~14页中,对于之前未讲过的部分知识(例如重定向输入、追加输入/输出、历史命令条数的限制等),则应该适当强调,其余的简略讲解即可
31
MongoDB的安装(Linux平台) 第四步:开机自启动 将mongodb启动项目加入rc.local保证mongodb在服务器开机时启动
echo"/usr/local/mongodb/bin/mongod --dbpath= /usr/local/mongodb/data" >> /etc/rc.local 大部分常用功能在前面的学习过程中基本上已经多多少少接触过了,这里写到一起可以起到一个整体回顾的巩固作用 在第9~14页中,对于之前未讲过的部分知识(例如重定向输入、追加输入/输出、历史命令条数的限制等),则应该适当强调,其余的简略讲解即可
32
MongoDB的安装(Linux平台) 第五步:启动mongodb 运行mongod命令
--dbpath执行数据库存放路径(默认是/data/db) --fork是以Daemon(守护进程)方式运行, 注意:如果指定--fork参数,必须指定--logpath 日志文件路径 大部分常用功能在前面的学习过程中基本上已经多多少少接触过了,这里写到一起可以起到一个整体回顾的巩固作用 在第9~14页中,对于之前未讲过的部分知识(例如重定向输入、追加输入/输出、历史命令条数的限制等),则应该适当强调,其余的简略讲解即可 /usr/local/mongodb/bin/mongod --dbpath= /usr/local/mongodb/data --fork --logpath=/usr/local/mongodb/dblogs
33
不加--fork参数启动成功 加--fork参数启动成功 注意:如果不加--fork参数,则需要再开启一个MongoDB启动窗口。
Similar presentations