程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> 關於Oracle數據庫 >> NoSQL常見存儲方式

NoSQL常見存儲方式

編輯:關於Oracle數據庫

       一、 鍵值存儲

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

      (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數據庫尤其引入注目。

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

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved