非關系型數據庫Nosql
分類
-
鍵值存儲 (Key-Value Store):
- 代表: Redis, DynamoDB, RocksDB, etcd
- 核心優勢: 極致簡單、超高讀寫性能(尤其內存型)、高吞吐。
- 場景: 緩存、會話存儲、配置、計數器、分布式協調、簡單消息隊列。
-
列式 / 寬列存儲 (Wide-Column / Column-Family Store):
- 代表: HBase, Cassandra, ScyllaDB
- 核心優勢: 極高的可擴展性、適合海量稀疏數據、按列族高效讀寫(尤其寫吞吐)、良好的分區能力。
- 場景: 大規模時序數據(IoT, 監控)、消息/事件流存儲、用戶畫像屬性存儲、內容元數據。
-
文檔數據庫 (Document Database):
- 代表: MongoDB, Couchbase, CouchDB
- 核心優勢: 靈活的文檔模型(Schema-flexible)、支持嵌套數據結構、開發自然(映射對象)、橫向擴展。
- 場景: 內容管理(CMS)、產品目錄、用戶配置/檔案、評論/博客、實時分析(部分)、復雜對象存儲。
-
搜索引擎 (Search Engine):
- 代表: Elasticsearch, Solr, OpenSearch
- 核心優勢: 強大的全文檢索、復雜相關性排序、模糊查詢、聚合分析能力、分布式搜索。
- 場景: 應用/產品內搜索、日志分析(ELK)、應用性能監控(APM)、安全信息與事件管理(SIEM)、商業智能探索。
-
圖數據庫 (Graph Database): (補充項)
- 代表: Neo4j, Amazon Neptune, JanusGraph
- 核心優勢: 高效存儲和處理實體間復雜關系、擅長深度關聯查詢(路徑、社區、模式匹配)。
- 場景: 社交網絡、欺詐檢測、知識圖譜、推薦引擎、網絡/IT基礎設施管理。
📌 重要提示
- 界限模糊: 很多現代數據庫是多模型的。例如:
- Redis不僅僅是簡單的字符串KV,它支持多種數據結構。
- DynamoDB核心是KV,但文檔是其主要支持的數據格式。
- ArangoDB自稱是原生多模型數據庫(支持文檔、圖、KV)。
- Elasticsearch底層是文檔存儲,但功能聚焦在搜索。
- Cassandra常被歸為寬列存儲,但其數據模型和查詢方式與HBase有差異。
- 選擇依據: 最終選擇哪個數據庫(甚至組合使用多個)取決于應用的具體需求(數據模型、訪問模式、一致性要求、規模、延遲、成本等),而不是簡單地套用分類。
- 時序數據庫 (Time-Series Database - TSDB): 這是一個越來越重要的細分領域(如 InfluxDB, TimescaleDB, Prometheus)。雖然其底層存儲引擎可能基于KV、列式或LSM-Tree,但其高度優化的時間序列數據處理能力(時間窗口聚合、降采樣、高效處理時間戳索引) 使它值得單獨關注。你可以把它看作是基于特定場景優化的KV或列式數據庫的一個高度特化子集。如果你的場景主要是處理帶時間戳的指標或事件,時序數據庫通常是更優的選擇。