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]