MongoDB(芒果数据库)
数据存储阶段 | 文件管理阶段(.txt .doc .xls) | |||
数据库管理阶段 | ||||
文件管理阶段 (.txt .doc .xls) |
优点 | 1、使用简单方便 2、数据能够长期保存 3、可以存储大量数据 | ||
缺点 | 1、数据一致性差 2、数据的查找修改不方便 3、数据冗余(大量重复的数据) | |||
数据库管理阶段 |
优点 | 1、数据组织结构化,降低冗余 2、提高增删改查效率 3、方便扩展 4、方便程序调用,做自动化的处理 | ||
缺点 | 1、数据库使用特定的语句操作,相对复杂 | |||
数据 | 能够输入到计算机中并被识别处理的信息的集合 | |||
数据结构 | 研究一个数据集合中,数据之间关系的学科 | |||
数据库 | 按照数据结构存储数据的仓库。 在数据库管理系统管理下一定介质上的数据集合。 | |||
数据库管理系统 | 管理数据库的软件,用于建立维护数据库 | |||
数据库系统 | 由数据库的数据库管理系统等开发工具组成的集合 | |||
!关系数据库 | 采用关系模型来组织数据结构的数据库(二维表) | |||
比如:oracle(甲骨文) DB2 SQLServer(微软) Mysql sqlite(嵌入式) | ||||
优点 |
4、技术成熟,可以使用外部关联复杂操作 | |||
缺点 | 1、 每次都需要sql语句的解析,消耗大 2、 不能很好的满足并发需求,特别是海量数据爆发,读写能力不足 3、 关系型数据库每一步都要加锁, 以保证操作的原子性,增加了数据库负担 4、 数据的一致性有时会导致空间浪费 | |||
!非关系数据库 | (Nosql ----à not noly sql) | |||
优点 |
| |||
缺点 |
| |||
Nosql使用情况 |
| |||
Nosql分类 | 1、键值型数据库:Redis | |||
2、列存储数据库 | ||||
3、文档型数据库:MongDB | ||||
4、图形数据库 |
MongoDB 数据库 (非关系型数据库 à 文档型 数据库)
特点 | 1、由c++ 编写的数据库管理系统 2、支持丰富的增删改查操作 3、支持丰富的数据类型 4、支持众多的编程语言接口(python PHP c++ c# ) 5、使用方便,便于部署,相对成熟 |
MongoDB安装 | 自动安装 sudo apt-get install mongodb 默认安装位置 /var/lib/mongodb 配置文件 /etc/mongodb.conf 命令集(软件安装后提供功能性的命令) /usr/bin 或者 /usr/local/bin
|
手动安装
www.mongdb.com --- > get mongodb --- > community server 选择想要下载的版本
tar 解压后得到 MongoDB 文件夹
PATH=$PATH:/opt/mongo/bin export PATH 将以上两句添加 /etc/rc.local 4、重启系统 | |
MongoDB命令
| 设置数据库存储位置 mongod -- dbopath 目录 e.g. mongodb dboath dbs
设置数据库端口 mongod --port 8080 *默认端口 27017 进入mondo shell 界面: mongodb的交互界面,操作数据库 mongod 退出界面 quit() 或 ctrl + c mongodb 数据库组织形式 键值对 – > 文档 -- > 集合 -- > 数据库 ----------------------------------------- ID | NAME | AGE | ----------------------------------------- 1 | lily | 17 | ---------------------------------------- 2 | Lucy | 20 | ---------------------------------------- {“_id”:1, “NAME”:” lily”, “AGE”:17 } {“_id”:2, “NAME”:” Lucy ”, “AGE”:20 }
|
Mysql 和mongodb概念对比
mysql | mongodb | 含义 |
database |
database |
数据库 |
table |
table |
表/集合 |
column |
field |
字段/域 |
row |
document |
记录/文档 |
Index |
Index |
索引 |
mongodb数据库常用命令
数据库的创建 | use databaseName | |
例子: e.g. use stu #创建一个stu数据库
当这个数据库不存在时会自动创建
而是在实际写入数据时才会创建 | ||
查看当前系统中数据库 | show dbs | |
系统数据库 | 存放用户及其权限 admin 存储本地数据 local 存储分片信息 config | |
数据库的命名规则 |
| |
db | mongodb系统全局变量,代表当前使用的数据库
此时插入数据则创建test数据库 | |
数据库的备份和恢复 | 备份 : mongodb -h dbhost –d dbname –o dbdir 主机 要备份数据库 目录
例子: 将stu数据库备份到sthdent目录中 mongodump -h 127.0.0.1 -d stu -o sthdent
| |
恢复:mongorestore -h dbhost:port –d dbname path 主机 数据库 目录
例子: 将stu 数据库恢复到sthdent 数据库中 mongorestore -h 127.0.0.1:27017 -d sthdent sthdent/stu
| ||
数据库监测 |
mongostat insert query update delete :每秒执行增删改查次数 command :每秒运行命令此时 flushes : 每秒清理缓存次数 vsize:使用的虚拟内存 res: 物理内存 | |
监测每个数据的读写时长 | mongotop ns :数据集合 total :总时长 read :读时长 write :写时长 | |
删除数据库 | 删除db代表的数据库 db.dropDatbase()
| |
创建集合 | 方法1 db.createCollection(collection_name)
例子: 创建一个class1的集合 db.createCollection("class1") | |
方法2 当向一个集合中插入数据的时候,如果这个集合不存在则会自动创建 db.collecinoName.insert(…)
例子: 如果class2不存在则自动创建 db.class2.insert({"name":'Tom','age':17,'sex':'m'}) | ||
查看数据库中的集合 | show collections show tables
| |
集合命名规则 |
| |
删除集合 | db.collectionName.drop()
例子: 删除class db.class.drop()
| |
集合的重命名 | db.collenctonName.renameCollection(“new_name”)
例子 db.class2.renameCollection("class0") | |
文档 | Mongodb中数据的组织形式 -- > 文档 | |
Mongodb文件 | 以键值对形式组成的类似字典的数据描述形式
| |
键的命名规则 |
| |
值 | 即文档存储的数据 支持bson 数据 JavaScript ----- > 编程语言 前端 | json 前端和后端的传输格式 | bson
| |
类型 | 值 | |
整型 整数 布尔类型 true false 浮点型 小数 Array 数组 Timestamp 时间戳 Date 时间日期 Object 内部文档 Null 空值 null String 字符串 Symbol 特殊字符串 Binary data 二进制字符 code 代码 regex 正则表达式 objeId objeId 子串
{ "_id" : ObjectId("5b504b6f25a94135d37fdf6c") _id : 当在mongo 代表中插入文档时,如果不指定_id则会自动添加这个域,作为键。
ObjectID 值是系统自动生成的不重复子串标识
24位 前8位 文档创建时间 6位 机器ID 4位 进程ID 6位 计数器 | ||
集合中的文档 |
| |
集合设计 |
|