NoSQL
是什麼
- Not Only SQL
- 泛指非關係型數據庫
爲什麼會出現
- 關係數據庫存在的缺點
- 關係數據庫存儲的是行數據,無法存儲數據結構
- 關係數據庫的schema擴展不方便(schema:數據庫對象,包括表、視圖、索引、存儲過程等)
- 關係數據庫讀取時會將同一行數據一次讀出,造成I/O高
- 關係數據庫的全文搜索功能比較弱,like的整表掃描,性能不能滿足複雜業務下的需求
- NoSQL的優勢
- 易擴展
- 大數據量、高性能、高可用
- 靈活的數據模型
常見的NoSQL
- K-V存儲:解決關係數據庫只能存儲行數據,無法存儲數據結構的問題
- 如Redis
- 文檔存儲:解決關係數據庫中強schema的問題
- 如MongoDB
- 列式存儲:解決關係數據庫中I/O高的問題
- 如HBase
- 【全文搜索】新方式
- 如ES(ElasticSearch)
NoSQL細節
NoSQL模式 | 技術代表 | 關鍵點 | 不足 |
---|---|---|---|
K-V存儲 | Redis | Key-Value存儲,Key是數據的標識,Value是具體的數據;Redis的Value數據結構可以是string、hash、list、set、sorted set、bitmap和hyperloglog | Redis的事務只能保證一致性和獨立性,不能保證原子性持久性,即不能滿足ACID(原子性、一致性、獨立性、持久性) |
文檔存儲 | MongoDB | 特點no-schema,採用JSON或BSON格式(加強版的JSON,可以存儲ByteArray數據),屬性及屬性的類型增刪改非常的靈活 | 不支持事務;不支持join |
列式存儲 | HBase | 離線大數據分析或統計的場景中;壓縮率高,節約空間,節省I/O | 更新列效率低--操作不連續的空間和更新壓縮的數據需要先解壓進行修改 |
全文搜索 | ES | 倒排索引--建立單詞到文檔的索引(即根據關鍵詞搜索所在的所有文檔) |