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