转自:http://fei-6666.iteye.com/blog/642796
timesten在重研所多个项目中都有内存数据库的应用,但重研所应用的内存数据库有多个版本,没有统一的版本,目前以FastDb占主流。普遍存在以下问题,访问方式不符合SQL92规范,不支持客户服务器模式,没有完整的API,可靠性不高,和数据库之间的数据互操作困难等等。
近期和Oracle技术工程师作了一次关于TimesTen,Oracle10G,Oracle9i的交流。在交流中,Oracle的工程师比较详细地介绍了Oracle的内存数据库TimesTen.因此在与Oracle技术工程师交流过程中,根据重研所的需求情况特别关注了一下TimesTen.
ORACLE和Times Ten公司6月20日在上海宣布,双方已就甲骨文收购Times Ten正式达成最终协议。Times Ten公司是一家私有的实时数据管理软件供应商,主要为电信、网络、证券交易等行业提供基础架构软件,并用这种软件进行事件管理、交易和数据的工作。其在全球的客户包括Amdocs、亚斯贝克通信公司、爱立信、JP摩根、nec、诺基亚、斯普林特、美国航空等。这家公司目前支持的系统包括实时计费系统、股票交易系统、呼叫中心系统、航线运营系统等。ORACLE收购Times Ten标志 Oracle进入内存数据库领域。
简介
Times Ten官方定义:TimesTen?/Cache (Cache) is a real-time dynamic data caching system. It includes TimesTen‘s in-memory database and data exchange technologies. Together, they enable applications to combine the real-time performance of TimesTen with the large storage capacity of an RDBMS.
Times Ten 特点:
符合RDBMS标准的独立内存数据库服务
支持SQL92
支持 ODBC & JDBC
高性能
可以作为Oracle数据库的前端Cache,目前不支持其他数据库
支持本地的高速访问和网络访问方式
可靠性高。支持完整日志,支持镜像复制功能。
不是开源代码,需要较高费用
目前不支持存储过程和触发器
前一段,我和Neusoft的朋友吃饭,聊到他们在上交所的一个大型项目中使用了TimesTen数据库,说是一种内存数据库。当时我琢磨了半天,从来没听说过TimesTen,只是记得前几年的系统分析师考试中曾考过一道关于内存数据库的题。
在上交所这个大项目中使用这种数据库,我感到非常惊讶。据说,印度证券交易所就使用了TimesTen,但我知道上交所的成交量巨大,如果我没记错的话,一秒钟要处理3万笔记录,印度交易所没法和上交所比的。
后来了解到, TimesTen是一家私有的实时数据管理软件供应商,主要为证券交易、电信、网络等行业提供基础架构软件,并用这种软件进行事件管理、交易和数据的工作。TimesTen一般使用在实时计费系统、股票交易系统、呼叫中心系统、航线运营系统等。
2005年Oracle已经将TimesTen收购。目前Oracle的客户常常使用TimesTen的架构产品,为Oracle数据库提供内存内缓存,大大提高产品的有效利用率和缩短反应时间。
其实,TimesTen 就是一种针对内存进行了优化的关系数据库,而且也可以完全当作一个数据库产品来用。如果你的数据量不是非常大,而且没有一些特别的功能需求的话,你完全可以用TimesTen作为后台的数据库,取代Oracle、DB2、Sybase 或 SqlServer等传统的数据库。只不过对TimesTen来说,它会把所有的数据预先都 Load 到内存中,这也是它速度快的一个关键因素。
TimesTen主要的四个用途:
1)主数据库:为实时应用提供服务的主数据库。这时候它和别的关系型数据库一样,作为整个应用系统中的一块:后台数据库,提供对数据的检索和更新功能。
2)实时数据管理:这时候TimesTen 和传统的数���库结合在一起,实时的数据存储在TimesTen中,而大量的数据还是存储在Oracle中,TimesTen和Oracle之间通过Cache Group来进行数据的交互。
3)消息中转:这时候TimesTen作为一个消息的中转站,可以在不同的应用之间架设一个消息传递的桥梁;不同的应用通过TimesTen,以消息的形式来进行数据的交互。
4)数据整合点:TimesTen可以将来自不同的数据源的数据整合到一起,从而作为一个单一的数据库为应用提供服务。
下列为TimesTen安装之后,可能需要设置的系统变量:
u CLASSPATH
如用到JDK,则需要设置该变量指向相应的Jar文件。目前支持的JDK有 JDK1.4、JDK5.0、BEA Weblogic Jrockit 5.0
u LIB、LIBPATH、LD_LIBRARY_PATH、SHLIB_PATH
指向TimesTen所用到的共享库,即 $INSTALL_DIR/LIB 目录;如用到Cache Group,还需包含 $ORACLE_HOME/LIB 或 $ORACLE_HOME/LIB (32位平台)。
且不同的平台该变量的名字各有差异:
SOLARIS — LD_LIBRARY_PATH
AIX — LIBPATH
HP-UX 32Bit — SHLIB_PATH
HP-UX 64Bit — LD_LIBRARY_PATH ( $INSTALL_DIR/LIB)
— SHLIB_PATH ( $ORACLE_HOME/LIB)
Tru64 UNIX — LD_LIBRARY_PATH
注意:HP-UX 64Bit平台需要两个系统变量分别指向TimesTen和Oracle 的相应LIB目录。
u ODBCINI
指向 .odbc.ini 配置文件。当用户连接TimesTen的时候,TimesTen会按照下面的顺序查找相关的配置文件:
1.环境变量ODBCINI所指向的 .odbc.ini文件
2.运行TimesTen的用户主目录下的 .odbc.ini 文件
3.环境变量SYSODBCINI所指向的 sys.odbc.ini文件
4./var/TimesTen/sys.odbc.ini
5.install_dir/info/sys.odbc.ini(非root用户才会执行该步)
u ORACLE_HOME
指向Oracle 数据库的安装目录,如果要用到Cache Group,该变量必须设置。
u PATH
指向TimesTen的bin 目录,即$INSTALL_DIR/bin;如果用到Cache Group的话,还要包含Oracle的bin目录。
u SYSODBCINI
指向 SYS.ODBC.INI 配置文件,具体说明见 ODBCINI
u SYSTTCONNECTINI
当用Client/Server 模式访问TimesTen的时候,该变量指向客户端的 sys.ttconnect.ini 配置文件。客户端查找配置文件的顺序是:
1. 环境变量SYSTTCONNECTINI所指向的 sys.ttconnect.ini 配置文件。
2. /var/TimesTen/sys.ttconnect.ini
3. $INSTALL_DIR/info/sys.ttconnect.ini(非root用户安装)
u TMP/TMPDIR
指向TimesTen的临时目录。TimesTen的某些操作,比如ttRepAdmin –duplicate 、大的删除等会用到临时目录。该参数缺省设置为:HP-UX 和AIX 是 /var/tmp;而Solaris、Linux、Tru64 UNIX 则是 /tmp。