为啥选用Oracle TimesTen In-Memory Database

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥选用Oracle TimesTen In-Memory Database相关的知识,希望对你有一定的参考价值。

  1. 十五年内存数据库的历史,成熟稳定的产品
  TimesTen 源于1992年HP试验室,当时主要目的是针对电信网络应用,使用内存数据库技术进行一些深入研究,于1996年,由该团队核心人员成立独立运作公司,并在1996年发布TimesTen第一个商用版本(TimesTen2.0),2001年,产品中增加Cache Connect组件,以至产品可以和Oracle无缝集成,2005年由Oracle收购,到今天为止,该产品已经有15年历史,有多达11个主要的发布版本产生,全球已经有1500+的企业用户。

  2. 性能高效--闪电式的反应速度,极高的并行吞吐量
  Oracle TimesTen In-Memory Database 通过将应用库嵌入到应用程序内部,从而消除了上下文切换和不必要的网络操作,大大提高了数据访问性能,并通过在内存中管理数据并相应地优化数据结构和访问算法,同传统的基于硬盘的关系数据库相比, 即使把要访问的数据从硬盘全部缓存到关系数据库的内存中(如Oracle SGA的数据缓存Data Buffer), 无论从响应性和吞吐率, timesten都有显著的提升。实时数据管理有两个性能维度 — 响应时间和并行吞吐率。使用 Oracle TimesTen In-Memory Database,读取一条数据库记录的事务将花费不到 9 微秒的时间(1 微秒等于 1 百万分之一秒),而更新或插入一条记录的事务将花费不到 28微秒的时间。因此,即使在拥有很少处理器的系统上,吞吐率也是以每秒上万到上十万事务计的。

  3. 与oracle无缝集成,无需编码即可实现与Oracle双向同步
  Cache Connect to Oracle 是 Oracle TimesTen In- Memory Database 的一个选项,它为位于应用程序层中的 Oracle 数据创建实时、可更新的高速缓存。它免除了后端系统的计算负担,并支持反应灵敏且可伸缩的实时应用程序。Cache Connect to Oracle 能够将 Oracle 数据的子集(可以选择您需要装载的表或者指定表的某些列)加载到 TimesTen 中,无需任何编码就能够实现双向数据同步更新,从而实现和Oracle无缝集成。转载,仅供参考。
参考技术A 内存数据库,所有数据均在内存中,性能会非常好,特别是OLTP的业务系统。

如何在 MaxOSX 中从 JDBC 调用 Oracle TimesTen

【中文标题】如何在 MaxOSX 中从 JDBC 调用 Oracle TimesTen【英文标题】:How to call Oracle TimesTen from JDBC in MaxOSX 【发布时间】:2013-10-11 15:05:09 【问题描述】:

我在我的 Mac 上安装了 Oracle TimesTen 客户端,在 RedHat 机器上安装了 Oracle TimesTen Server,我可以从命令行远程连接

connect "dsn=TT1122;UID=uid;PWD=pwd";

我已成功连接回来。

现在我想使用 JDBC 来尝试连接到同一个 ODBC。但我得到了这个错误。

java.sql.SQLException: Problems with loading native library/missing methods: no ttJdbcCS in java.library.path
    at com.timesten.jdbc.JdbcOdbcConnection.connect(JdbcOdbcConnection.java:1757)
    at com.timesten.jdbc.TimesTenDataSource.getConnection(TimesTenDataSource.java:148)
    at TimesTen.main(TimesTen.java:17)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)

我正在使用 OSX Lion 和 IntelliJ。我已经运行 ttenv.sh 来设置环境。但我似乎无法让 JDBC 工作。我在互联网上搜索并没有找到任何可以解决我的问题的东西。

谢谢

【问题讨论】:

【参考方案1】:

我没有在 Mac OSX 中使用 TimesTen,但您是否在 OSX 中设置了 ODBC/DSN?在windows中安装后,您必须将ODBC连接器与十次安装分开设置。我发现这是在 OSX 中设置 ODBC 的。

http://dev.mysql.com/doc/refman/5.0/en/connector-odbc-configuration-dsn-macosx.html

【讨论】:

我做到了。我已经到了 IntelliJ 可以加载库的地步,但是我遇到了另一个异常,说我的库是错误的架构。【参考方案2】:

TimesTen 的 Mac OS X 客户端是一个 32 位库。您不能从 64 位 JVM 调用它。我相信 OS X 的唯一 32 位 JVM 是 java 1.6。

使用 32 位 1.6(我认为您必须在 jvm 上使用 -d32 标志),我能够连接到在 linux 服务器上运行的 TimesTen。

注意:从当前 TimesTen 版本 11.2.2.8.9 开始,Oracle 似乎添加了 64 位 MacOSX 客户端,所以上面的场景现在应该可以正常工作了。

【讨论】:

以上是关于为啥选用Oracle TimesTen In-Memory Database的主要内容,如果未能解决你的问题,请参考以下文章

TimesTen与Oracle数据库的兼容性

Oracle TimesTen 关系型内存数据库18.1新版本详解

如何查看timesten表结构?

如何查看timesten表结构?

无法在 Linux 上通过 JDBC 将 Sqoop 连接到 Oracle TimesTen

TimesTen In-Memory Database