內存數據庫
內存數據庫,顧名思義就是將數據放在內存中直接操作的數據庫。相對於磁盤,內存的數據讀寫速度要高出幾個數量級,將數據保存在內存中相比從磁盤上訪問能夠極大地提高應用的性能。同時,內存數據庫拋棄了磁盤數據管理的傳統方式,基於全部數據都在內存中重新設計了體係結構,並且在數據緩存、快速算法、並行操作方麵也進行了相應的改進,所以數據處理速度比傳統數據庫的數據處理速度要快很多,一般都在10倍以上。內存數據庫的最大特點是其“主拷貝”或“工作版本”常駐內存,即活動事務隻與實時內存數據庫的內存拷貝打交道。
內存數據庫與傳統數據庫的異同
傳統的數據庫係統是關係型數據庫,開發這種數據庫的目的,是處理永久、穩定的數據。關係數據庫強調維護數據的完整性、一致性,但很難顧及有關數據及其處理的定時限製,不能滿足工業生產管理實時應用的需要,因為實時事務要求係統能較準確地預報事務的運行時間。
對磁盤數據庫而言,由於磁盤存取、內外存的數據傳遞、緩衝區管理、排隊等待及鎖的延遲等使得事務實際平均執行時間與估算的最壞情況執行時間相差很大,如果將整個數據庫或其主要的“工作”部分放入內存,使每個事務在執行過程中沒有I/O,則為係統較準確估算和安排事務的運行時間,使之具有較好的動態可預報性提供了有力的支持,同時也為實現事務的定時限製打下了基礎。這就是內存數據庫出現的主要原因。
內存數據庫所處理的數據通常是“短暫”的,即有一定的有效時間,過時則有新的數據產生,而當前的決策推導變成無效。所以,實際應用中采用內存數據庫來處理實時性強的業務邏輯處理數據。而傳統數據庫旨在處理永久、穩定的數據,其性能目標是高的係統吞吐量和低的代價,處理數據的實時性就要考慮的相對少一些。實際應用中利用傳統數據庫這一特性存放相對實時性要求不高的數據。
在實際應用中這兩種數據庫常常結合使用,而不是以內存數據庫替代傳統數據庫。
常見內存數據庫
SQLite
SQLite是一個開源內存數據庫,實現了獨立的,可嵌入的,零配置的SQL數據庫引擎。
Oracle TimesTen內存數據庫
Oracle TimesTen是一個全新設計的內存數據庫。它使用基於行的關係模型(表、列、數據類型、索引等)實現數據存儲,並使用SQL作為訪問語言。它提供了許多API,並且支持Oracle PL/SQL。應用程序的訪問方式與其他關係數據庫完全相同。
https://download.csdn.net/detail/xunzaosiyecao/7307121l
IBM SolidDB
IBM solidDB 可以提供每秒數萬至數十萬事務的吞吐率,並且始終可以獲得微秒級的響應時間(或延時)。
https://www-01.ibm.com/software/data/soliddb/
SAP-HANA
Sqlserver 2014 Hekaton內存數據庫引擎
https://www.cnblogs.com/CareySon/p/3155753.html
其他參考資料:
https://www.searchdatabase.com.cn/guide/imdb.htm
https://hemeicun.blog.163.com/blog/static/11157304820113645525209/
最後更新:2017-04-03 12:56:33