什么是NoSQL?
NoSQL,即Not-Only SQL(不僅僅是SQL),泛指非關系型的數據庫。關系型數據庫,即數據結構是一種有行有列的數據庫。
NoSQL數據庫是為了解決高并發、高可用、高可擴展、大數據存儲問題而產生的數據庫解決方案。
NoSQL可以作為關系型數據庫的良好補充,但是不能替代關系型數據庫。
關系型和非關系型數據庫的區別?
- 關系型數據庫主要是用來存儲系統的業務數據。
- 非關系型數據庫主要是用來解決一些特殊情況下的存儲問題:高并發、高可用、高可擴展、大數據 存儲。
- 關系型數據庫和非關系型數據庫之間不是互斥的關系,而是互補的關系。
- 所有關系型數據庫都是將數據存儲到硬盤中的,而Redis一般是將數據存儲到內存中的。
NoSQL有哪些分類?
1)鍵值(Key-Value)存儲數據庫
相關產品: Tokyo Cabinet/Tyrant、Redis、Memcached、Voldemort、Berkeley DB
典型應用: 內容緩存,主要用于處理大量數據的高訪問負載。
數據模型: 一系列鍵值對
優勢:快速查詢
劣勢: 存儲的數據缺少結構化
2)列存儲數據庫
相關產品:Cassandra, HBase, Riak
典型應用:分布式的文件系統
數據模型:以列簇式存儲,將同一列數據存在一起
優勢:查找速度快,可擴展性強,更容易進行分布式擴展
劣勢:功能相對局限
3)文檔型數據庫
相關產品:CouchDB、MongoDB
典型應用:Web應用(與Key-Value類似,Value是結構化的)
數據模型: 一系列鍵值對
優勢:數據結構要求不嚴格
4)圖形(Graph)數據庫
相關數據庫:Neo4J、InfoGrid、Infinite Graph
典型應用:社交網絡
數據模型:圖結構
優勢:利用圖結構相關算法。
劣勢:需要對整個圖做計算才能得出結果,不容易做分布式的集群方案。