關系數據庫到內存數據庫同步
這部分數據同步采用增量表的方式,系統新增或更新的數據將生成到關系數據庫的增量表中,程序先到這些增量表中查詢數據。如果能在這些增量表中查到數據就把這些數據更新到內存數據庫對應表中,如果查不到,就直接從內存數據庫中直接查詢,從而保證了數據的完整性和實時性。由於增量表的數據量一般會很小,所以這部分操作不會影響系統的性能。
內存數據庫到關系數據庫同步
由於關系數據庫的數據幾乎都加載到了內存數據庫中,所以關系數據庫對應的數據表將主要用於對內存數據庫的數據備份。
用戶最新的信息都保存在內存數據庫中,實時查詢將直接連接到內存數據庫中查詢,保證用戶得到最新的信息。因此對關系數據庫中的這部分數據已經沒有實時性的要求。這時內存數據庫到關系數據庫的同步可以由應用程序生成文件,定時地往關系數據庫中同步備份,或者采用關系數據庫的存儲過程在系統相對空閑時間段進行數據導入就可以了。
傳統的數據庫系統是關系型數據庫,開發這種數據庫的目的,是處理永久、穩定的數據。關系數據庫強調維護數據的完整性、一致性,但很難顧及有關數據及其處理的定時限制,不能滿足工業生產管理實時應用的需要,因為實時事務要求系統能較准確地預報事務的運行時間。
對磁盤數據庫而言,由於磁盤存取、內外存的數據傳遞、緩沖區管理、排隊等待及鎖的延遲等使得事務實際平均執行時間與估算的最壞情況執行時間相差很大,如果將整個數據庫或其主要的“工作”部分放入內存,使每個事務在執行過程中沒有I/O,則為系統較准確估算和安排事務的運行時間,使之具有較好的動態可預報性提供了有力的支持,同時也為實現事務的定時限制打下了基礎。這就是內存數據庫出現的主要原因。
內存數據庫所處理的數據通常是“短暫”的,即有一定的有效時間,過時則有新的數據產生,而當前的決策推導變成無效。所以,實際應用中采用內存數據庫來處理實時性強的業務邏輯處理數據。而傳統數據庫旨在處理永久、穩定的數據,其性能目標是高的系統吞吐量和低的代價,處理數據的實時性就要考慮的相對少一些。實際應用中利用傳統數據庫這一特性存放相對實時性要求不高的數據。
在實際應用中這兩種數據庫常常結合使用,而不是以內存數據庫替代傳統數據庫。
而內存數據庫也分全內存計算和熱內存計算。全內存計算,即數據需要全部裝載到內存中進行計算,對硬件要求高,譬如QlikView等產品。熱內存計算,部分數據加載到內存中即可以進行計算,硬盤和內存會有數據交換來計算未加載的數據,譬如Yonghong Z-Suite。