MongoDB属于非关系型数据库,增加对比。
关系型数据库:
-
关系型数据库:
- 使用二维表表示数据,数据联系
- 数据库管理三个阶段:手工管理,文件管理,数据库管理
- 存放数据,提供快速的增删改查操作
- 备份、恢复、管理系统工具、编程语言的接口
-
关系型数据库概念:
- 数据:表达信息的载体
- 数据结构:数据组织的方式,数据之间的关系
- 数据库:数据库科学,有效管理,有效存放,管理的仓库
- DBMS:数据库管理系统,数据库管理软件
- 表:由行,列组成,用来表示一定意义的数据
- 字段:表的一列,表示实体的一个属性
- 键:可以区分实体的属性(属性的组合)
- 主键:从键中选择一个作为一个主键
- 索引:提高查询效率,避免全表扫描
-
缺点:
- 性 能:高并发数据量大的情况下,性能容易成为瓶颈
- 数据一致性:写数据的时候需要加锁
- 连表查询:容易导致性能下降
- 扩展性:无法通过横向扩展性能和负载
- 非结构化数据的处理:不方便
MongoDB(非关系型数据库)
非关系型数据库
-
优点:
- 高并发,读写能力强
- 易扩展
- 弱化数据结构,降低数据一致性要求
-
缺点:
- 技术成熟度不如关系型数据库
- 通用性较差,不像SQL语言有统一标准
- 操作冗长,容易混乱
- 有些不支持jion、事务,一致性不如关系型数据库
-
使用关系型数据库的情况
- 对数据一致性要求较低(低价值数据)
- 数据库需要处理海量并发
- 需要快速处理数据的情况
- 方便构建非关系数据模型
-
分类:
- 键值对:key-value 【redis
- 文档型: 【MongoDB
- 列存储: 【Hbase
- 图形数据库: 【暂无
-
MOngoDB 特点
- 开发语言C++
- 支持丰富的增删改查,最想像关系型数据库
- 技术相对成熟,支持丰富的存储类型
- 支持众多的编程语言接口
- 使用方便,易于扩展 部署
Mongo 安装部署
-
Ubuntu : sudo apt-get install mongodb
- 默认安装到:/Var/lib/mongodb
- 配置文件: /etc/mongodb.conf
- 命令集:/usr/bin
MongoDB基本操作
-
mogod --dbpath 目录
- 功能:设置mongodb数据存储路径
- e.g. mogod – dbpath /home/…
-
mongod --port 端口号
- 功能:修改服务监听端口 默认27017
-
启动mongo操作界面(mongo shell)
- mongo(本机)
- mongo IP:端口号 (远程)
- mongo IP/数据库名 -u xxx -p xxx (使用指定用户名密码远程数据库)
Mongo数据库结构
- 键值对–>文档–>集合–>数据库
关系型数据库 | MongoDb数据库 |
---|---|
数据库 | 数据库 |
表 | 集合(collection) |
行 | 文档(document) |
列 | 域(field) |
索引 | 索引 |
主键 | 主键 |
MongoDB库操作
- 创建库:use databaseName
说明: 进入某个库,当库不存在时实际写入数据时自动创建
命名规则: 使用utf-8字符,长度不超过64,不能重名系统数据库 - 查看库:show dbs
系统中有几个默认库
admin 该库中成员拥有最高权限
local存储跟本地数据库相关的数据,即使远程也不会复制到其他服务器 - 查看当前所在库: db
- 删除库: db.drop.Database()
删除之前先进入该库
MongoDB数据的备份和恢复
-
备份:mongodump -h 主机 -d 库名 -o 目录
-
恢复:mongorestore -h 主机:端口 -d 库名 路径
MongoDB数据库监控
- mongostat
mongotop 检测读写时长 - insert query update delete 每秒执行的增删改查的次数
- command 每秒运行的命令次数
- flushes 每秒清理缓存次数
- vsize 虚拟内存的使用量
- res 物理内存使用量
MongoDB集合操作
-
集合:相当于关系型数据库中的表,包含很多文档,没有特定的结构,有数据插入时自动创建
-
集合的使用:
- 同一类数据放入一个集合
- 尽量保持数据一致性
-
集合数据的操作:
[注意事项:不能为空,不能含有\0 字符串,不能以system开头,不能含有系统保留前缀]- 创建集合: db.cresteCollection(‘collectionName’)
- 插入集合:db.acct.insert({acct_nu:622345000001,acct_na:‘Jerry’,balance:5000.00})
- 查看文档:db.acct.find().pretty()
- 重命名集合: db.acct.renameCollection(‘newName’)
MongoDB文档操作
-
文档:文档时构成集合的基本单元,相当于关系型数据库的行,由一系列键值对组成
-
文档:键不能重复并且是有序的,区分大小写,使用UTF-8
-
操作:
-
插入文档:
-
同时插入两笔 :db.acct.insert([{acct_nu’6227000001’,acct_na:‘Rookie’,acct_type:1,balance:1882.67},{acct_nu’6227000001’,acct_na:‘Duke’,acct_type:1,balance:893445.67}])
-
save 插入(如果存在加上UUID则修改,不存在就插入): db.acct.save({"_id" : ObjectId(“5c10cf8792a9b98ba2418526”),acct_nu:‘3227000002’,acct_na:‘Ema’,acct_type:2,balance:9999.99})
- objectID 长度:24
- 8:文档创建时间
- 6:机器ID
- 4:进程ID
- 6:流水号
-
-
MongoDB数据类型
- Double 1 浮点型
- String 2 字符串
- Object 3 内嵌文档
- Array 4 数组
- Binarry Data 5 二进制
- Objectid 7 系统生成object
- Boolean 8 布尔值
- Date 9 日期时间
- NULL 10 空值
- Integer 16/18 整形(32b/64b)
- Timestamp 17 时间戳