#目录
数据库基础
非关系型数据库的使用情况
MongoDB基础
MongoDB安装配置
查看Where命令
MongoDB配置命令
MongoD数据库组成结构
创建/选择数据库
系统数据库
数据库的命名规则
Mongo里面的指针
数据库备份
数据库恢复
数据库监测命令
删除数据库
集合的创建删除查看
集合重命名
文档(键。值)
集合设计原则
获取集合对象
文档操作
数据库基础
- 基础
优点:
数据组织结构化,降低了冗余
提高了增删改查的效率
便于扩展,方便程序调试做自动化处理
缺点:
数据库的使用专业性较强,相对比较复杂
数据:
能够输入到计算机中并被识别处理的信息集合
数据结构:
研究数据集合中,数据间关系的学科
数据库:
按照数据结构存储管理数据的仓库,是在数据管理软件管理和控制下创建在一定
介质上的数据集合
数据管理系统
数据管理软件,用于维护管理数据库
数据库系统
由数据库,数据库管理系统,开发工具等组成的工具集合
- 关系型数据库
特点:
使用关系模型来组织数据结构的数据库(常见的:二维表)
(Oracle Mysql sqlserver sqllite Sqlite)
优点:
1容易理解
2使用方便
3数据一致性高,冗余低,完整度好
4技术成熟,可以使用外部连接等复杂操作
缺点:
1每次操作都需要sql语句解析,消耗较大
2不能很好的满足并发需求,应对海量数据爆发力不足
3关系型数据库内存存在大量加锁操作,读写能力受到限制
4数据不够灵活,有时会导致结构复杂化
- 非关系型数据库Nosql(not only sql)
有点:
高并发,读写性强
扩展性强,使用灵活
弱化了数据结构,降低数据一致性
缺点:
通用性差,没有统一的操作语句
操作灵活,容易冗余
无复杂操作,版本更新快
##非关系型数据库的使用情况
1对数据一致性要求低时
2处理海量数据并发
3数据库大小不确定,要分布式扩展
4给定的数据结构建立非关系模型更加容易
##非关系型数据库分类
键值数据库 Redis
列存储数据库
文档数据库 MongoDb
图形数据库
##MongoDB基础
非关系型数据库--》文档型数据库
1 由C++编写的数据库管理系统
2 支持丰富的增删该查功能
3 支持丰富的数据类型
4 支持众多的编程语言结构
5 在Nosql中技术相对比较成熟
##Mongo安装配置
- 自动安装
sodu apt-get install mongod
默认安装路径
/var/lib/mongodb
配置文件
etc/mongodb.conf
环境变量(命令集):
usr/local/bin
- 手动安装
1 www.mongodb.com下载
2 选择合适位置解压 解压后得到mongodb文件夹
3 将文件夹下bin文件夹加入到环境变量
PATH = $PATH:(bin地址,不要双引号不要这个括号)
export PATH
将以上两句写入 /etc/rc.local文件中
4 重启系统
##查看Where命令
查看mongodb的配置文件
whereis mongodb
查看mongodb的安装位置
whereis mongo
##MongoDB配置命令
- 设置数据库的存储位置
mongod --dbpath [目录]
- 设置端口(默认端口27017)
mongod --port [端口号]
- 进入mongo shell(mongodb的交互模式)
mongo
- 退出Mongo shell
quit() 或者 ctrl+c
##MongoD数据库组成结构
键值对--》文档--》集合--》数据库
mysql mongodb
database database
table collection
column field
row document
index index
##创建/选择数据库
use database
当选择的数据库不存在时,自动创建
存在时,选择使用
只有向数据库中插入数据时,数据库才会被真实创建出来,而use后不会马上创建
##系统数据库
admin:用来存放用户和权限
local:存放本地化数据
config:存储分片信息
##数据库的命名规则
1使用utf-8字符集
2不能含有
空格
.
/
\0
这些字符
3长度不能超过64字节
4不能和系统数据库重名
* 习惯上使用小写字母,表答数据库的含义
Mongo里面的指针
db:指向当前正在使用的数据库
Mongo数据库备份
命令:
mongodump -h [所在主机] -d [数据库名字] -o [目标文件夹]
案例:
mongodump -h 127.0.0.1 -d stu -o /home/tarena/bak
数据库恢复
mongorestore -h [主机]:[端口] -d [数据库名] [数据库文件路径]
注:如果数据库不存在,则新建这个数据库并存入数据
示例:
mongorestore -h 127.0.0.1:27017 -d studnet bak/stu
数据库监测命令
- mongostat
insert query update delete 每秒增删改查的次数
command 每秒运行命令的次数
flushes 每秒和磁盘交互的次数
vsize 使用虚拟内存的大小
- mongotop
检测每个数据的读写时长
ns total read write
数据集合 总时长 读时长 写时长
删除数据库
删除db代表的数据库
db.dropDatabase()
集合的创建删除查看
- 创建集合
1 创建语句
db.createCollection(collection_name)
2 直接插入,如果集合不存在,则创建并插入
db.集合名称.insert({...})
- 查看集合
show collections
show tables
两种方法都行
- 删除集合
db.集合名.drop()
集合的命名规则
1合法的utf-8字符串
2不能有\0
3不能以‘system.’开头
4不能和关键字重复
集合重命名
db.集合名.renameCollection("new_name")
文档
mongodb中数据的组织形式 --》文档
以键值对形式组成的类似于字典的数据结构组合,是对数据的一种描述
键:文档的域
值:数据
- 键
命名规则
1 utf-8字符串
2 不能有\0
3 一个文档中的键不能重复
说明
1 文档中键值对是有序的
2 mongodb严格区分大小写
-
值:
即文档存储数据,也就是mongodb支持的数据类型
数据类型 数值
整形 123-1-2-3
bool true false
浮点型 1.23
Array [1,2,3]
Timestamp 时间戳
Date 时间日期
Object 内部文档
Null None
String 字符串
Symbol 特殊字符串
Binary data 二进制字符串
code 代码
regex 正则表达式
ObjectId ObjectId对象
##_id属性
如果插入文档时,没有设置_id域,则系统会自动添加该域作为主键
值则是一个ObjectId类型24位16进制的数据,是为了保证_id值的唯一性
这24位分为:
8位的文档创建时间
6位的机器ID
4位的进程id
6位的计数器
集合中的文档
集合中的文档不一定域的个数相同
集合中的文档不一定有相同的域
集合设计原则
1集合中的文档应该尽可能描述同一类内容,有更多相同的域
2用一类数据信息,不要过多分散集合存放
3集合中文档的层次不要包含太多(不要嵌套太多集合)
获取集合对象
db.getCollection("集合名称")
等价于db.集合名称
用法:
db.getCollection("stu").insert/save....
文档的操作
- 插入操作
db.collection.insert({...})
db.collection.save({...})
文档的键可以不加引号
_id可以自己写,但是不能重复
插入多条文档(传列表)
db.collection.insert([{..},{..},{..}])
db.collection.save([{...},{...},{...}])
save 和 insert区别:
当主键重复时save会覆盖,insert 会报错