3.分類:
3.1(最常見的鍵值存儲)
a.臨時性的:保存在內存中,可以進行快速的保存和讀取操作, 數據有可能丟失
b.永久性:在磁盤上保存數據,可以進行快讀的讀寫(沒有內存中快),數據不會丟失
c.兩者兼具:內存和硬盤同時保存數據,可以進行快速的讀寫操作, 硬盤上有數據不會丟失, 適合處理數組類型的數據
3.2(面向文檔的(MongoDB,CouchDB))
a.存儲方式:沒有表結構,類似於jason。
b.可以進行復雜的查詢條件
3.3(面向列的數據庫Hbase)
a.關系型數據庫是面向行的,對少量行進讀寫,而面向列的數據庫,對大量行少數列進行讀寫,對所有特定的列進行通時更新。
b.高拓展性(特別是寫入)
c.應用十分困難
d.對大量數據更新和查詢有優勢
3.1詳解:memcached(臨時性鍵值存儲):
a.高速的響應
b.作為高速緩存使用(通過關系型數據庫建立索引也可以獲得高速響應):在處理大量的數據時候,他可以當作關系型數據庫中間量,充當緩存來獲得高速的響應速度,通過快速的讀取里面的數據來彌補可能丟掉數據的可能性。
c.存儲方式:散列表方式存儲在內
d.通信:簡單的文本協議,對數據的操作就是類似於保存和鍵值相對應的值,只能對字符類型數據進行操作(其它格式的數據可以利用jason來處理進行格式化,這樣就可以跨平台傳輸)。
e.對數據操作簡單,
f.memcached增加服務器時的經典算法:一致性散列:
g.缺點:因為他的數據時在內存中的,1.所以容易造成數據的丟失。解決方法:只用它來解決數據的拷貝,而把原始的數據放在安全的地方。2.web服務用的多(國外的網站基本都會引入memcached),
兩種情況下它的威力大:1.有些網頁需要執行一些好使的SQL文,響應很慢,有些網頁訪問率高,負載大,(關系型數據庫解決這種問題的方法:增加臨時表,批處理)
Tokyo Tyrant(永久性鍵值存儲,是存儲在硬盤上的)
1.優勢:他的數據雖然是存儲在銀盤上的,但是它數據的操作硬盤的io處理無關,可以實現高速的訪問(而且還不用擔心數據會丟失)
2.它還有一個優點就是它能根據數據的類型選着存儲的結構,所以它在查詢時就有了自己優勢,不僅能像關系型數據庫范圍查詢還能進行key—value進行完全一致條件的查詢。
3.數據類型:a.緩存數據庫 ,以key-value形式來存儲 b.
4.它把復制作為作為一項標准的功能
5.缺點:安裝難度大(ruby)
Redis(臨時性/持久性鍵值存儲)
1.快速處理數組形式的數據
2.通過虛擬內存可以和操作系統進行互換結構,通過內存中的保存的所有數據的鍵來實現高效的處理。
3.引用;github, 微笑直播的觀眾人數統計
4,.應用:時間線形式的web應用
5.適合處理時間序列的數據
MongoDB(高性能和可擴展)
1.面向文檔
2.關系型數據庫的結構是事先定義好的,碰到不需要改變表結構的的信息存儲的時候,還是挺可觀的,但是如果在后來的處理中碰到了要改變表結構才能存儲的數據,那時候,處理起來就比較麻煩了。
3.普通的關系型數據庫實現(反復的表結構變換),可以通過json把數據進行系列化,然后保存到表格中,然后讀取數據的時候反系列化,然后篩選出自己需要的數據也可以解決,但是這下來時間開銷就會增大。
3。不需要定義表結構的數據庫,可以根據KEY值可以進行關系數據庫那樣的查詢亦可以添加索引。
4.數據的保存形式:BSON(JSON的二進制產物)把值和鍵進行制關聯。
5,他不能進行jion查詢,但是它可以通過嵌套達到同樣的效果。
6.優勢:沒有表結構,可以靈活的指定查詢條件。比如正則表達式查詢或者對特定數組元素的查詢都可以
7.實例應用:問卷調查數據的保存
幾種基本的NoSQL的數據庫的性能驗證:
NoSQL化的關系型數據庫
1.將MySQL數據庫NoSQL化的HandlerSocket的方法:
特征:
1.高速地完成單純的數據的插入和讀取處理
2.可以使用SQL和Handlersocket對同一數據訪問
3.可以通過協議獨立訪問MySQL的數據
4.不支持事物處理
handlesocket機構圖:

它可以直接訪問Handler的接口,但是一般的都要通過SQL層來實現訪問(免去了解析SQL和鎖表和解鎖的處理)
不足:只能支持帶有索引的查詢數據,
總結:插入數據部分:比一般的關系型數據庫快,雖然沒memcached快。讀取速度可以和Redis相仿
Berkeley DB
1.存儲形式:key-多value形式
2.不支持網絡訪問,程序是通過進程內的API訪問的
3.架構及其簡單,
4,介於內存數據庫和關系數據庫之間
選用四種算法:B+數算法:平衡的二叉樹,按其關鍵字有序存儲,和HASH算法
1.訪問速度快。
2.節約硬盤空間
3.大多數系統都用它,支持多進程和事物
4.有XMl接口,可以存儲XML數據
5,兼容一些老的Unix數據庫(DBM)
