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可能不适合这个要求。

相关文章
相关标签/搜索