萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> oracle教程 >> NoSQL常見存儲方式

NoSQL常見存儲方式

   一、 鍵值存儲

  它的數據是以鍵值的形式存儲的,雖然它的速度非常快,但基本上只能通過鍵的完全一致查詢獲取數據,根據數據的保存方式可以分為臨時性、永久性和兩者兼具三種。

  (1)臨時性(memcached)

  所謂臨時性就是數據有可能丟失,memcached把所有數據都保存在內存中,這樣保存和讀取的速度非常快,但是當memcached停止時,數據就不存在了。由於數據保存在內存中,所以無法操作超出內存容量的數據,舊數據會丟失。

  總結來說:

  1、在內存中保存數據

  2、可以進行非常快速的保存和讀取處理

  3、數據有可能丟失

  (2)永久性(ROMA、Tokyo Tyrant、Flare)

  所謂永久性就是數據不會丟失,這裡的鍵值存儲是把數據保存在硬盤上,與臨時性比起來,由於必然要發生對硬盤的IO操作,所以性能上還是有差距的,但數據不會丟失是它最大的優勢。

  總結來說:

  1、在硬盤上保存數據

  2、可以進行非常快速的保存和讀取處理(但無法與memcached相比)

  3、數據不會丟失

  (3)兩者兼備(Redis)

  Redis有些特殊,臨時性和永久性兼具。Redis首先把數據保存在內存中,在滿足特定條件(默認是 15分鐘一次以上,5分鐘內10個以上,1分鐘內10000個以上的鍵發生變更)的時候將數據寫入到硬盤中,這樣既確保了內存中數據的處理速度,又可以通過寫入硬盤來保證數據的永久性,這種類型的數據庫特別適合處理數組類型的數據。

  總結來說:

  同時在內存和硬盤上保存數據

  1、可以進行非常快速的保存和讀取處理

  2、保存在硬盤上的數據不會消失(可以恢復)

  3、適合於處理數組類型的數據

  二、面向文檔的數據庫(MongoDB、CouchDB)

  (1)不定義表結構

  即使不定義表結構,也可以像定義了表結構一樣使用,還省去了變更表結構的麻煩。

  (2)可以使用復雜的查詢條件

  跟鍵值存儲不同的是,面向文檔的數據庫可以通過復雜的查詢條件來獲取數據,雖然不具備事務處理和Join這些關系型數據庫所具有的處理能力,但初次以外的其他處理基本上都能實現。

  三、 面向列的數據庫(Cassandra、HBase、HyperTabl)

  由於近年來數據量出現爆發性增長,這種類型的NoSQL數據庫尤其引入注目。

  普通的關系型數據庫都是以行為單位來存儲數據的,擅長以行為單位的讀入處理,比如特定條件數據的獲取。因此,關系型數據庫也被成為面向行的數據庫。相反,面向列的數據庫是以列為單位來存儲數據的,擅長以列為單位讀入數據。

copyright © 萬盛學電腦網 all rights reserved