NoSQL
Not only SQL,对
关系数据库
的补充
关系数据库
- 二维表存储数据
- 一行一条记录
- 一个字段存储单一的值
- 1NF、2NF、3NF
- 1NF:列存储单一数据元素,是不是集合或组合
- 2NF:非键字段依赖主键列(直接依赖)
- 3NF:非主键字段直接不存在相互依赖(不存在间接/传递依赖)
- 事务处理 - (下次讲 Spring AOP 和事务处理)
- A 原子性
- C 一致性
- I 隔离性
- D 持久性
- 标准的操作语言 SQL
关系模型出现在 70 年代,最早的产品 Oracle;通用类型的数据库,并不适合所有数据存储场景
关系数据库
分类 | 产品 | 领域 |
---|---|---|
商业产品 | Oracle、DB2、SQL Server | 银行、*、传统行业… |
开源项目 | MySQL、PostgreSQL | 互联网公司、电信… |
嵌入式 | sqlite | 嵌入式设备及程序 |
NoSQL 数据库的四个主要类别
类型 | 产品 | 特点 |
---|---|---|
文档 | MongoDB、CouchDB | 文档嵌套、减少表连接、提升查询性能 |
键值 | Redis、Memcached | 内存数据库、缓存 |
图 | Neo4j | 图数据库 |
列 | Apache HBase | 横行扩展,大数据 |
MongoDB
apt install mongodb
mongod
数据库服务器
mongo
数据(命令行)客户端,也叫 mongo shell
mysql
是命令行客户端,mysqld
是服务器
// 显示数据库
show dbs
// 切换/连接 特定的数据库,若不存在会自动创建数据库
use admin / 数据库名
// 数据库中至少有一个集合,数据库才存储
// 显示集合(表)
show collections
// 创建一个集合,参数是集合名(table)
db.createCollection('staff')
// 插入数据
db.staff.insert()
db.staff.insertOne()
db.staff.insertMany()
// 查找
db.staff.find()
启用远程连接
第一步:编辑配置文件
vim /etc/mongodb.conf
第二步:修改 bind_ip
bind_ip = 0.0.0.0
第三步:重启服务
service mongodb restart
关系数据库与 MongoDB 的比较
关系数据库 | MongoDB |
---|---|
数据库 | 数据库 |
表(table) | 集合(collection) |
记录、行(row) | 文档(document) |
列(单一数据元素) | 字段可以是嵌套文档 |
多种数据类型 | bson 格式 |
使用 SQL 进行数据操作 | 自定义的命令 |
- 学习 MongoDB CRUD 操作
- MongoDB 数据操作与 SQL 操作的映射
- 熟悉 Vim
熟悉 Linux/Unix 起码要会用 vi / vim