一、 NoSQL数据库
KV型数据库(key/value)
- Redis, Memcached
文档数据库
- Mongodb, 文档数据库, 存储的是文档(Bson->Json的二进制)
mongo内部执行流程.pngMongodb 内部执行引擎为Js解释器, 把文档存储成bson结构,在查询时转换为js对象, 并通过熟练的js语法进行操作.
- mongo与传统数据库相比,最大的不同
- 传统型数据库: 结构化数据库,定义好表结构后,每一行的内容,必是符合表结构的,列的个数,类型都一致
- mongodb 文档型数据库: 表下的每篇文档都可以有自己独特的结构(json对象都可以有自己独特的属性和值)
举例: 如果有电影、影评、影评的回复, 在传统型数据库中至少需要四张表,关联非常复杂,
在文档型数据库中,通过一篇文档即可完成,体现出文档型数据库的反范式化
{
film:"赌王",
comment:[
{
content: "影评1",
reply:["好", "不错"]
}
]
}
二、 MongoDB的安装
- 下载mongodb, 线上使用,最好下载最新的stable版
- 解压文件
- 不用编译,本身就是编译后的可执行二进制文件
- 启动mongod服务
./bin/mongod --dbpath /path/to/database --logpath /path/to/log --fork --port 27017
- 参数解析
--dbpath 数据存储目录
--logpath 日志存储目录
--port 运行端口(默认27017)
--fork 以后台进程运行mongod, 日志输出到日志文件里,而不是控制台
- mongodb非常的占磁盘空间, 刚启动后要占3~4G 左右
如果使用虚拟机练习,磁盘空间不够,则无法启动
可以用 --smallfiles来启动,将会占用较小的空间,400M左右.
三、MongoDB的基本命令
- 入门命令
- show databases/dbs 查看当前的数据库
- show tables/collections 查看当前库下的collection
- use databaseName; 选库
- db.help() 查看命令帮助
- 创建一个库
- mongodb下的库是隐式创建的,你可以use 一个不存在的库,然后在该库下创建collection,即可创建库
- db.createCollection(collectionName)
创建collection
4.collection允许隐式创建
db.collectionName.insert(document);
db.user.insert({name:"lisi",age:22})
- 删除collection
db.collectionName.drop()
6.删除库
db.dropDatabase()
网友评论