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實際應用問題點
待續。。。