Oracle TimesTen & Sybase ASE

內存數據庫(或IMDB)能夠是一個獨立的數據庫管理系統(DBMS),如Oracle的TimesTen,或者從屬於DBMS的一個特殊數據庫,如SAP Sybase Adaptive Server Enterprise (ASE)。算法

IMDB的目標是經過使用計算機內存實現數據存儲來提升吞吐量和下降延遲。這與使用磁盤存儲的傳統數據庫管理系統不一樣。因爲內部優化算法更簡單,並且執行的CPU指令較少,因此內存內數據的速度比基於磁盤的數據庫快。訪問內存數據能夠提升響應速度。對於一些響應時間要求較高的應用程序,如交易、電信和國防系統,通常都會使用IMDB。因爲IMDB的這種特性,這些數據庫使用內存要多於磁盤數據庫產品。數據庫

  Oracle TimesTenSybase ASE-IMDB是一種使用過程外主內存的數據庫。它們實現了SQL的完整支持,也支持一些特殊語言、安全性和數據庫管理。這兩種數據庫都支持經過SQL訪問數據。它們都具備一些磁盤數據庫產品的特性。所以,使用這些產品緩存SQL後臺持久化數據庫的SQL請求就很簡單。緩存

  TimesTen、ASE-IMDB及現有的全部商業內存數據庫都基於所謂的基於行的關係存儲模型。這些產品很適合OLTP應用程序使用。安全

  Oracle TimesTen內存數據庫是什麼?服務器

  Oracle TimesTen是一個全新設計的內存數據庫。它使用基於行的關係模型(表、列、數據類型、索引等)實現數據存儲,並使用SQL做爲訪問語言。它提供了許多API,而且支持Oracle PL/SQL。應用程序的訪問方式與其餘關係數據庫徹底相同。TimesTen與傳統數據庫的主要區別在於它的性能要遠遠高於傳統數據庫。雖然TimesTen徹底運行在內存中,可是它也可以在磁盤中建立數據庫副本,支持數據庫重啓和恢復。經過檢查點和事務日誌,這種副本可以保持更新,所以可以從任何故障事故中恢復。TimesTen支持一種用於實現高可用性的複製機制。它的Cache Connect功能能夠做爲後臺Oracle數據庫數據子集的高速緩存。在這種狀況中,它就成爲Oracle數據庫的內存數據庫緩存。網絡

  在C/S模式中,客戶端API庫一般使用TCP/IP(可是有時也會使用UNIX域套接字或本地共享內存鏈接)與TimesTen服務器進程交換請求和響應,以執行實際的數據庫訪問。這正是在TimesTen數據庫主機以外運行應用程序的經常使用模式。除了網絡回程所形成的延遲,各個數據庫訪問形成的代碼增長、環境切換等問題也會對性能形成影響。併發

  只有當應用程序和TimesTen運行在同一臺主機上時,纔會使用直接模式。在這種模式下,數據管理器API庫基本上就是充當TimesTen數據庫引擎的做用。API調用是進程內函數調用,而TimesTen數據庫(共享內存片斷)會映射到應用程序的地址空間。這樣能夠消除數據庫訪問路徑的切換競爭,實現最高的性能和最低的延遲,從而保持穩定的輸出。函數

  TimesTen數據庫也常常採用混合模式的併發訪問,即不一樣的應用程序進程/線程會經過直接模式和客戶端/服務器模式併發訪問數據庫。單個數據庫能夠支持最高2000個用戶鏈接。若是TimesTen具備一個實例(管理多個TimesTen數據庫),那麼用戶鏈接數限制爲2500。工具

  這兩種模式在API層只有極少的差異,因此在通常的應用程序代碼中,不須要知道或關心所使用的模式——它實際上只是一個在編譯時或運行時的配置選擇。性能

  直接模式是TimesTen的特殊特性之一。大多數TimesTen生產部署都採用獨立或直接模式。然而,在一些狀況下也會使用客戶端/服務器模式。

  TimesTen緩存不能經過通常的關係工具訪問。若是應用程序擁有以數據庫爲中心的數據訪問方式——即,使用SQL和JDBS訪問數據,那麼TimesTen是最佳的選擇。然而,TimesTen自己不支持與非Oracle數據庫進行互操做,因此應用程序代碼必須自行管理TimesTen與Sybase或其餘數據庫的數據傳輸。

TimesTen的內存結構

  TimesTen內存結構比Oracle數據庫簡單不少。與Oracle不一樣,TimesTen並無數據庫緩衝區、保存池或丟棄池的概念。傳統數據庫系統都會經過使用一些減小磁盤I/O的策略。這種設計策略源於磁盤I/O對數據庫性能的影響。相反,內存數據庫從一開始就不存在磁盤I/O問題。它們的最高優化目標就是減小內存和CPU需求。

  TimesTen目前支持兩種索引方式:散列索引和T樹索引。散列索引僅支持全鍵-值查找,可是速度很是快,並且執行過程與底層表的數量無關(只要它們的大小合適而且忽略小型表的硬件L1/L2/L3緩存效果)。這些索引具備很高的讀取擴展性和很好的併發性。T樹索引的讀取效率很高,可是散列索引效率不高。若是支持範圍查找,那麼它們會更靈活。可是,其中有一個弱點是在繁重寫操做時併發性較差,由於每一個索引修改都必須鎖住整個索引。然而,在低延遲條件下,T樹索引的寫性能很是好。

  TimesTen的應用

  TimesTen的主要價值在於響應時間,而吞吐量和高可用性則是第二位。TimesTen通常更利於OLTP風格的工做負載,由於這些負載要求極低且極穩定的響應時間。此外,一樣重要的是冗餘性。一般,一個數據庫服務器上會運行多個應用程序。在這些應用程序服務器上使用TimesTen能夠減小數據庫的負載,所以可以減小網絡延遲和磁盤I/O。

  例如,有一些交易系統會在網頁上顯示價格信息。若是不使用TimesTen,那麼應用程序服務器就須要不停地從磁盤數據庫查詢價格信息。在達到每秒100,000次的查詢水平時,數據庫性能就會急劇降低。TimesTen與應用層關係密切,而典型的DBMS則具備更普遍的用途。在實時響應與適度容量方面,使用TimesTen具備任何經典DBMS沒法實現的壓倒性優點。在一些數據快速變化的領域,如交易和銷售數據管理,TimesTen極有明顯的優點,由於數據是實時傳輸的,而計算也必須以接近實時的速度完成,而且只對執行引擎產生很小的影響。另外一些應用領域包括電信、國防和情報等機構。

Sybase ASE內存數據庫結構

  ASE在它的15.5版本中加入了本身的內存數據庫(IMDB)。ASE-IMDB能夠追溯到Sybase的Real Analytics Platform (RAP),但這是ASE第一次以IMDB產品出現。

  與TimesTen相似,ASE-IMDB也是高性能數據庫,它徹底整合到Sybase ASE平臺中。這一點與TimesTen相反,由於後者是一個徹底獨立的數據庫。ASE-IMDB能夠讀寫同一個Sybase ASE中其餘的數據庫,而且能夠接收其餘ASE或非ASE數據庫的數據。ASE-IMDB還使用複製技術接收來自全部這些數據源的數據。

  ASE經典數據庫是專門面向那些嚴格遵照ACID(原子性、一致性、隔離性、持久性)事務語義的應用程序。這些ACID屬性以提早寫事務日誌、定位持久化存儲(例如,磁盤)等手段實現。在這個方面,ASE-IMDB容許在低響應時間和高吞吐量的數據交換中放寬持久性和原子性要求。這一點與TimesTen相反,後者徹底遵照ACID。

要運行ASE-IMDB,您必須擁有足夠的緩存,纔可以將整個數據庫運行在內存中。一旦建立了這個專用的緩存,它就成爲IMDB的設備載體,數據庫就可以在這些內存設備上建立。ASE-IMDB是基於一個可用的模板數據庫建立的。模板數據庫是一個經典的ASE數據庫。啓動的ASE-IMDB會繼承模板數據庫的全部對象和數據。建立ASE-IMDB的典型語法是:

  create inmemory database ASEIMDB 
  use ASEIMDB_template as template 
  on ASEIMDB_data01='4000M' 
  log on ASEIMDB_log01='1000M' 
  with durability = no_recovery

  這種方法很簡潔,數據庫管理員都可以更容易地掌握。注意,在上面的語法中,它顯示引用了一個模板數據庫——這裏是ASEIMDB_template 。此外,持久性必須設置爲no recovery,這意味着ASE-IMDB數據庫不可恢復。所以,ASE-IMDB的全部內容在ASE服務器重啓或意外關閉時都會丟失,由於這種方式不使用持久化存儲。另外一方面,它容許Sybase優化事務日誌(它徹底在內存中進行);因爲在ASE 重啓時,IMDB徹底不須要從事務日誌恢復,因此您能夠得到更優的事務可擴展性和更高的性能。

  ASE-IMDB的索引算法沒有任何變化。換而言之,數據庫運行在內存中時,其消耗的存儲空間不會有任何變化。在處理大容量數據時,須要增長大量的內存,纔可以支撐內存內運行。因爲您能夠將常規的ASE數據庫轉儲和加載到ASE-IMDB中,因此您可使用ASE經典數據庫的現有索引,從而實現全面兼容性。

  ASE-IMDB的應用

  若是已經在使用ASE,那麼只須要得到受權就可使用ASE-IMDB。ASE-IMDB主要面向寫密集型應用程序,其中數據持久化是第二位考慮特性。我認爲,應用程序必須清晰規定IMDB是否支持可恢復性。有一些應用程序並不須要恢復支持。這些應用程序能夠部署ASE-IMDB以提升性能。

  因爲ASE-IMDB能夠徹底整合在混合結構的經典服務器中,它徹底支持ASE自己的SQL語法、安全性和加密。電子商務、購物車、特殊交易系統及清理數據後提交到經典數據庫的分段/中間數據庫,都是適合使用ASE-IMDB的例子。此外,它還可以經過一些普通複製方法從其餘數據源接收數據,這使得ASE-IMDB成爲一些有快速響應需求公司的首選工具。ASE-IMDB快速複製到其餘數據庫的功能仍在開發中。然而,若是您的應用程序迫切須要恢復功能,那麼ASE-IMDB可能不適合這個要求。

相關文章
相關標籤/搜索