記憶體資料庫

germany006發表於2014-06-16
轉載地址:%E5%86%85%E5%AD%98%E6%95%B0%E6%8D%AE%E5%BA%93

維基百科:
記憶體資料庫是指一種將全部內容存放在中,而非傳統那樣存放在中的。記憶體資料庫指的是所有的資料訪問控制都在記憶體中進行,這是與相對而言的,磁碟資料庫雖然也有一定的機制,但都不能避免從外設到記憶體的交換,而這種交換過程對效能的損耗是致命的。由於記憶體的讀寫速度極快(雙通道DDR3-1333可以達到9300 /s,一般磁碟約150 /s),隨機訪問時間更是可以計(一般磁碟約10 ,雙通道DDR3-1333可以達到0.05 ),所以這種資料庫的讀寫效能很高,主要用在對效能要求極高的環境中,但是在關閉後會立刻丟失全部儲存的資料。常見的例子有的MEMORY儲存引擎、等。


轉載地址:

百度百科:

記憶體資料庫,顧名思義就是將資料放在記憶體中直接操作的資料庫。相對於,記憶體的資料讀寫速度要高出幾個數量級,將資料儲存在記憶體中相比從磁碟上訪問能夠極大地提高應用的效能。

1簡介

同時,記憶體資料庫拋棄了磁碟資料管理的傳統方式,基於全部資料都在記憶體中重新設計了,並且在、快速演算法、並行操作方面也進行了相應的改進,所以速度比的資料處理速度要快很多,一般都在10倍以上。記憶體資料庫的最大特點是其“主複製”或“工作版本”常駐記憶體,即活動只與實時記憶體資料庫的記憶體複製打交道。
定義:設有DBS,DB為DBS中的資料庫,DBM(t)為在時刻t,DB在記憶體的資料集,DBM(t)屬於DB。TS為DBS中所有可能的構成的集合。AT(t)為在時刻t處於活動狀態的集,AT(t)屬於TS。Dt(T)為T在時刻t所操作的資料集,
Dt(T)屬於DB。若在任意時刻t,均有:
任意T屬於AT(t) Dt(T)屬於DBM(t)
成立,則稱DBS為一個記憶體,簡稱為MMDBS;DB為一個記憶體資料庫,簡稱為MMDB。
常見的例子有的MEMORY儲存引擎、、TT、、、Microsoft SQL Server Compact等

2資料載入

電信的和實時累賬是中的兩個必備功能。所謂是相對於一次批價來說的。一次批價是按照國家標準資費來進行價格計算,比如: 全球通每分鐘本地通話為0.4元,在一次批價完成後,會根據這個使用者的套餐進行再一次的計算。以全球通使用者接聽4分鐘的電話為例,一次批價完成後,這條話單的價格是1.6元,如果這個使用者參加了10元包月接聽套餐,那麼在後,這次通話的費用就為0元。一次批價是用於各大運營商之間結算的,而是針對使用者個人的。
實時累賬是將使用者從每月1號到目前為止的所有費用累加起來,也就是使用者目前可以透過10086查到截止到前一天的。累賬值可以幫助使用者控制高額話費或是供使用者即時查詢消費資訊。
二次批價和實時累賬過程涉及使用者資料、使用者套餐等與使用者相關的資訊,電信在開始批價時必須載入這些資料。稍大一點的省級運營商的這些資料就會超過1000萬條,計費處理模型也由於套餐的組合、產品的組合以及不同的優惠規則變得相當複雜,載入這部分資料對系統而言是一筆不小的開銷,這就使得現在的計費處理速度比較慢,而且很難做到對資料的實時更新。記憶體資料庫的引入在一定程度上解決了這個問題。
在計費過程中資料量最大的是詳單資料,這部分資料不用放在記憶體資料庫中,每處理完一個話單檔案或達到設定的提交記錄數時直接操作磁碟資料庫,不會影響系統效能。最急切的是將使用者資料、套餐、營業套餐和計費套餐對應關係資料、計費套餐模型資料及使用者累計資料放到記憶體資料庫中,這部分資料查詢操作遠比資料新增和更新操作要頻繁。除了這些資料外,當然還有應用需要的其他資料也都可以載入到記憶體資料庫。
在採用記憶體資料庫後,使用者透過營業部或客戶查詢的時候完全可以做到實時,比目前只能提供查詢到前一天的實時話費在業務上有了質的飛躍。因為系統在處理這部分資料時查詢流程和以前的完全一樣,但系統省去了以往記憶體中的資料和磁碟資料庫的環節,所以就能做到了實時查詢。對於信控來說也同樣,以往系統在累完賬後要按照一定週期重新整理信控資料,這就存在一個,不能夠完全做到實時。
而採用記憶體資料庫後,信控可以直接取得記憶體資料庫中的累計表中的資料,完全實現實時預警、停機。和累賬中採用記憶體資料庫後,對防欺詐、收入保障系統也有相當大的好處,這樣能夠充分保證運營商的切身利益。
另外,在採用記憶體資料庫後,整體提高了系統批價、累賬的處理速度,大大緩解訪問磁碟資料庫的壓力,提高資料查詢、修改、刪除的效率,也為後付費和預付費的融合提供了可能。

3資料同步

電信營業資料和中的資料總是在不斷的變化中,這就涉及記憶體資料庫中的資料和磁碟資料庫資料的同步問題(為了描述清楚,這裡的磁碟資料庫以Oracle DB為例來說明)。包括兩部分: 從記憶體資料庫到Oracle DB資料同步和從Oracle DB到記憶體資料庫的同步。
Oracle DB到記憶體資料庫同步
這部分採用增量表的方式,營業系統或CRM新增或更新的資料將生成到Oracle的增量表中,計費程式先到這些增量表中查詢資料。如果能在這些增量表中查到資料就把這些到記憶體資料庫對應表中,如果查不到,就直接從記憶體資料庫中直接查詢,從而保證了資料的完整性和實時性。由於增量表的資料量一般會很小,所以這部分操作不會影響系統的效能。
記憶體資料庫到Oracle DB同步
由於Oracle的計費批價、累賬資料幾乎都載入到了記憶體資料庫中,所以Oracle資料庫對應的資料表將主要用於對記憶體資料庫的。
使用者最新的等資訊都儲存在記憶體資料庫中,實時話費查詢將直接連線到記憶體資料庫中查詢,保證使用者得到最新的費用資訊。信控也直接從記憶體資料庫查詢資料,因此對Oracle中的這部分資料已經沒有實時性的要求。這時記憶體資料庫到Oracle的同步可以由生成檔案,定時地往Oracle資料庫中同步備份,或者採用Oracle在系統相對空閒時間段進行資料匯入就可以了。
記憶體資料庫與傳統資料庫的異同
傳統的是,開發這種資料庫的目的,是處理永久、穩定的資料。關聯式資料庫強調維護資料的完整性、一致性,但很難顧及有關資料及其處理的定時限制,不能滿足工業生產管理實時應用的需要,因為實時要求系統能較準確地預報事務的執行時間。
對磁碟資料庫而言,由於磁碟存取、內外存的資料傳遞、管理、排隊等待及鎖的延遲等使得實際平均執行時間與估算的最壞情況執行時間相差很大,如果將整個資料庫或其主要的“工作”部分放入記憶體,使每個事務在執行過程中沒有I/O,則為系統較準確估算和安排事務的執行時間,使之具有較好的動態可預報性提供了有力的支援,同時也為實現事務的定時限制打下了基礎。這就是記憶體資料庫出現的主要原因。
記憶體資料庫所處理的資料通常是“短暫”的,即有一定的有效時間,過時則有新的資料產生,而當前的決策推導變成無效。所以,實際應用中採用記憶體資料庫來處理實時性強的業務邏輯處理資料。而旨在處理永久、穩定的資料,其效能目標是高的系統吞吐量和低的代價,處理資料的實時性就要考慮的相對少一些。實際應用中利用這一特性存放相對實時性要求不高的資料。
在實際應用中這兩種資料庫常常結合使用,而不是以記憶體資料庫替代。
而記憶體資料庫也分全記憶體計算和熱記憶體計算。全記憶體計算,即資料需要全部裝載到記憶體中進行計算,對硬體要求高,譬如QlikView等產品。熱記憶體計算,部分資料載入到記憶體中即可以進行計算,硬碟和記憶體會有資料交換來計算未載入的資料,譬如Yonghong Z-Suite。

4技術特點


  (1)採用複雜的資料模型表示資料結構,資料冗餘小,易擴充,實現了資料共享。
  (2)具有較高的資料和程式獨立性,資料庫的獨立性有物理獨立性和邏輯獨立性。
  (3)記憶體資料庫為使用者提供了方便的使用者介面。
  (4)記憶體資料庫提供4個方面的資料控制功能,分別是併發控制、恢復、完整性和安全性。資料庫中各個應用程式所使用的資料由資料庫統一規定,按照一定的資料模型組織和建立,由系統統一管理和集中控制。
  (5)增加了系統的靈活性。[1] 
參考資料
  • 1.   .SAP記憶體資料庫官方網站 [引用日期2013-04-2] .

轉載地址:

MemSQL,號稱世界上最快的記憶體資料庫

MemSQL是一款記憶體資料庫,它透過將資料存在記憶體中,將SQL語句預編譯為C++而獲得極速執行效率。

從MemSQL瞭解到,MemSQL具有以下幾大特色:

  • 無可比擬的效率
    MemSQL的執行效率是傳統的基於磁碟的資料庫的30倍,同時它優於其他記憶體資料庫的資料,因為它將SQL轉換成C++。
  • 強大的SQL執行能力
    支援全功能的關係型資料庫,開發者不必修改現有程式即可獲得NoSQL鍵值儲存系統的效率。
  • 水平和垂直擴充套件
    MemSQL支援垂直擴充套件,CPU越好效率就越高;支援向多CPU擴充套件;此外,MemSQL還可與MySQL節點結合起來處理百萬兆級的負載。
  • 預設支援資料永續性
    MemSQL預設支援資料從記憶體到磁碟/SSD的同步,保證資料的安全可靠。
  • 簡易安裝
    只需30秒即可完成安裝並使用MemSQL,相容MySQL,學習曲線平滑。

因為其快速,所以MemSQL非常適用於哪些視時間為金錢的行業,如資本市場、廣告服務、雲端計算與移動應用等。

感興趣的讀者可從學習、和等。

MemSQL在微博上引起了眾多技術人士的圍觀。說:

MemSQL是一種偽技術,老瓶子裝新酒,並不是革命性的東西。很多人覺得需要更快的DB,實際上,他們需要的是寫更有效率SQL語句的人。

這條微博引起了關於“更快的DB vs 能寫更有效率的SQL的人?”的討論。說:

……更多人需要的是寫出高效率的SQL,而不是寄託在某種技術上。

也有持不同意見者,如就認為:

效率差1個數量級是很難透過寫SQL來提升的,除非之前的SQL不是專業人士寫的。
寫好SQL會有很大的提升,但是寫對了以後想繼續提高就非常難,畢竟天花板是在資料庫的實現上。

雙方的觀點都不無道理,只是出發點不同罷了。我們既需要能寫出更有效率的SQL語句的人,也需要更效率更高的資料庫系統。當語句寫到最優卻仍然不能解決滿足需求時,就需要新技術的產生。二者有機結合起來才能推動技術的進步。且不論MemSQL是否偽技術,但它至少是技術前進道路上的一小步。正是由於這許許多多的小步,才推動著技術不斷革新的大步。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28371090/viewspace-1183973/,如需轉載,請註明出處,否則將追究法律責任。

相關文章