NoSQL 學習筆記

nosql(not only sql)git

1、NOSQLgithub

nosql和關係型數據庫互補。web


2、4種Nosql數據庫:memcached、Tokyo Tyrant、Redis、Mongodb.算法

Memcachedsql

memcached:臨時性鍵值存儲,無硬盤IO處理。數據庫

高響應,做爲高速緩存使用,數據在內存中。數組

經過LRU(Least Recently Used)順序刪除不使用的數據,自動清除。緩存

經過散列表(關聯數組)來存儲各類格式數據的鍵值存儲,全部數據都被存儲在內存中。服務器

當使用多臺服務器運行memcached時會使用一致散列算法(Consistent Hashing)來分散數據。數據結構

不足:數據臨時性(數據可能會丟失)


Tokyo Tyrant

Tokyo Tyrant:永久性鍵值存儲,數據保存在硬盤中,速度快。

保存和讀取數據時與硬盤的IO處理無關。

不足:安裝麻煩


Redis

Redis:臨時性/持久性鍵值存儲,處理數組形式的數據。

自己做爲數據存儲設計出來的,經過命令明確刪除數據,除非設定expires(失效時間),

不會自動清除數據。從2.1版本開始能夠memcached那樣過時自動清除數據。

Redis向硬盤寫入數據時,提供了數據快照的永久化功能,內存中數據的快照被寫入

文件(*.rdb)中,再啓動時數據快照中的內容就會被讀入內存中,這樣恢復到上次數據快照時狀態。

Redis能夠處理字符串,鏈表list,集合set,有序集合zset,散列表等各類類型值數據,

但全部數據都被看成字符串進行處理。

從2.0之後的版本實現了獨立的虛擬內存結構,能夠把實際內存中保存不下的數據寫入硬盤中。

使用實例:github、digg、新浪微博、微笑直播。

不足:實例少。


MongoDB

MongoDB:面向文檔的數據庫,無需定義表結構,可添加索引進行高速處理。沒法進行join查詢。

MongoDB在保存數據時會把數據和數據結構完整地以BSON(JSON的二進制化產物)保存

起來,並把它做爲值和鍵進行關聯。數據以數組形式進行保存.

MongoDB基本上是單獨使用的,無需和關係型數據庫配合使用,沒必要再關心表結構和程序的一致性。

實例:字段不肯定的狀況,如調查問卷。字段可能會發生流動變化的狀況,

如分析結果數據。這些狀況下使用Mongodb頗有效。

不足:使用MongoDB建立和更新數據時,數據不會實時寫入硬盤中,有可能出現數據丟失狀況。


3、4種Nosql數據庫應用實例

Redis具體應用實例

時間線形式(用戶發言後以時間序列形式顯示)的web應用。

主要任務:實現用戶登陸,註銷,關注,發微博,顯示微博等功能。


 


4、4種Nosql數據庫性能



5、NOSQL實際應用問題點

待續。。。

相關文章
相關標籤/搜索