1. 程式人生 > >NoSQL(Not Only SQL)簡介

NoSQL(Not Only SQL)簡介

大資料
高併發
高可用
分散式
關係型資料庫一般遵循ACID,但是NoSQL不需要。
ACID Atomicity Consistency Insolation Durability

NoSQL(Not Only SQL,不限於SQL)是一類範圍非常廣泛的持久化解決方案,它們不遵循關係資料庫模型,也不使用SQL作為查詢語言。其資料儲存可以不需要固定的表格模式,也經常會避免使用SQL的JOIN操作,一般有水平可擴充套件的特徵。

NoSQL:效能較好,處理資料量較大。
有Redis MangoDB Hbase(Hbase)等

分散式資料系統的CAP原理:
1.一致性Consistency
2.可用性Availability
3.分割槽容忍性Partition tolerance

NoSQL在CAP原理中任選兩項,因為基於節點的分散式系統中,很難全部滿足,所以對事務的支援不是很好,雖然也可以使用事務,但是並不是Nosql的閃光點。
優勢

  • 易擴充套件,NoSql資料庫種類繁多,資料之間無關係(這樣就非常容易擴充套件)
  • 大資料量高效能,有非常高的讀寫效能,益於它的無關係行(結構簡單),MySQL使用Query Cache(查詢快取),每次表的更新Cache就失效,而NoSQL的Cache是記錄級的
  • 多樣靈活的資料模型,無需事先為要儲存的資料建立欄位(隨時可以儲存自定義的資料格式),關係資料庫中增、刪欄位是一件非常麻煩的事情

NoSQL資料庫四種分類:

Key-value型:鍵值型資料庫:
Redis Memcached Amazon‘s Dynamo
Key/value模型對於IT系統來說的優勢在於簡單、易部署。但是如果DBA只對部分值進行查詢或更新的時候,Key/value就顯得效率低下了。
適用場景:配置檔案 會話 購物車 引數等使用者資訊的儲存、資訊與ID掛鉤,使用主鍵訪問

文件型:Document-Oriented
MongoDB CouchDB RavenDB
資料以文件的形式儲存,每一個文件都是自包含的資料單元,是一系列的資料項的集合。資料項對應一個值:可以是基本資料型別也可以是序列表和關聯物件等複雜的資料型別。
資料儲存的最小單位是文件,同一個表中的文件屬性可以不同。儲存形式:XML JSON、JSonB。
文件型資料庫可 以看作是鍵值資料庫的升級版,允許之間巢狀鍵值。
使用場景:儲存日誌等

列儲存:Wide Column Store/Column-Family
Cassandra HBase Riak
也有鍵,只是指向了列家族
適用場景:日誌。部落格平臺

圖資料庫(Graph-Oriented)
實體為頂點,實體間的關係是邊。
邊有名字和方向,並總是有一個開始節點和一個結束節點;
邊也可以有屬性。
Neo4J、Infinite Graph 、OrientDB
適用場景:關係性強的資料、推薦引擎。

我們總結NoSQL資料庫在以下的這幾種情況下比較適用:
1、資料模型比較簡單;
2、需要靈活性更強的IT系統;
3、對資料庫效能要求較高;
4、不需要高度的資料一致性;
5、對於給定key,比較容易映射覆雜值的環境。
在這裡插入圖片描述

幾種主流的的非關係型資料庫NoSQL
**BigTable:**Google主打產品,通常是分佈在數千臺伺服器上的PB級的資料。適合讀 不適合寫。分散式、併發處理資料。支援動態伸縮,效率很高。
基礎:
GFS分散式檔案系統
Chubby

Dynamo PAD performance
高可用 總是可寫

Apache Cassandra
最初由FaceBook開發,集BigTable和Dynamo的特性於一身。
HBase
Hadoop Database
HBase利用Hadoop HDFS檔案管理系統

OLTP/OLAP
OLTP 系統強調資料庫記憶體效率,強調記憶體各種指標的命令率,強調繫結變數,強調併發操作;
OLAP 系統則強調資料分析,強調SQL執行市場,強調磁碟I/O,強調分割槽等。
在這裡插入圖片描述

OLAP和OLTP的區別具體詳見:https://www.cnblogs.com/hhandbibi/p/7118740.html
其他關於NOSQL的詳解見https://www.cnblogs.com/lina520/p/7919551.html