深入Oracle内存数据库Timesten
TimesTen在LINUX下的安装和使用
Oracle TimesTen 内存数据库在Linux下的安装和使用(依据TimesTen版本11.2.1)作者:秦诺thor.qin@2010年10月8日内容目录1 TimesTen简介 (3)1.1 内存数据库 (3)1.2 In-Memory Database Cache (4)2 TimesTen的安装 (5)2.1 创建数据库管理员用户 (5)2.2 下载TimesTen安装包 (5)2.3 用数据库管理员用户安装TimesTen (6)3 配置和创建数据库 (9)3.1 配置Oracle数据库的连接(In-Memory Database Cache) (9)3.1.1 配置Instant Client (9)3.2 在oracle数据库端配置缓存信息 (10)3.2.1 创建独立的缓存用户表空间 (10)3.2.2 创建TimesTen 架构 (11)3.2.3 创建缓存管理员(数据库用户) (11)3.2.4 授予缓存管理员必要的系统权限 (11)3.2.5 授予缓存管理员表权限(需要被缓存的表) (11)3.3 配置TimesTen需要的环境变量 (11)3.4 配置ODBC数据源信息 (12)3.4.1 服务器数据源的配置 (12)3.4.2 客户端数据源的配置 (12)3.5 创建TimesTen缓存数据库 (13)3.5.1 添加一个ODBC信息 (14)3.5.2 Linux上启动数据库之前需要完成的一些动作 (14)3.5.3 启动数据库 (14)3.5.4 在TimesTen 数据库中创建用户 (15)3.5.5 关联Oracle 中的cacheadm和TimesTen中的cacheadm用户 (15)3.5.6 创建缓存网格 (15)3.5.7 启动缓存代理 (16)3.5.8 创建缓存组 (16)3.5.9 启动数据复制代理 (16)3.5.10 加载数据到缓存中 (17)4 使用Sql Developer访问TimesTen数据库 (17)5 OCI编程需要注意的问题 (17)5.1 Oracle数据库功能限制 (17)5.2 附加的TimesTen OCI限制 (18)5.3 附加的TimesTen OCI 区别 (18)5.4 使用ttSrcScan工具 (19)1 TimesTen简介Oracle 内存数据库 TimesTen 是一个针对内存进行了优化的关系数据库,它为应用程序提供了当今实时企业和行业(如电信、资本市场和国防)所需的即时响应性和非常高的吞吐量。
Oracle_TimesTen内存数据库_6.0版推荐编程实践
Oracle TimesTen TM内存数据库6.0版推荐编程实践性能和稳定性最佳的TimesTen应用程序的设计方法内存数据库版权© 1996、2005归Oracle公司所有。
未经允许不得以任何方式和手段进行复制和使用。
附带的和光盘上的软件和文档(不管是硬拷贝形式还是电子形式)的使用和披露均应依据本许可协议。
被许可方可印刷存储在光盘上的文档,但仅限内部使用。
除上面提到的以外,未经TimesTen公司事先书面许可,不得以任何电子或机械形式或手段,包括影印、录制或通过任何信息存储和检索系统,复制或传播本文档的任何部分(不管是硬拷贝形式还是电子形式)。
Oracle、JD Edwards、PeopleSoft、Retek、TimesTen、TimesTen标志、MicroLogging和Direct Data Access是 Oracle公司和/或其子公司的商标或注册商标。
其他名称可能是其各自所有者的商标。
程序(包括软件和文档)包含专有信息;是依据一份包含了使用和披露限制条款的许可协议而提供的,并受版权、专利其他知识产权和工业产权法的保护。
除非法律有明确规定,或是为实现与其他独立开发的软件间的互操作性,否则不得对软件程序进行反向工程、反汇编或反编译。
本文所含信息如有变动,恕不另行通知。
如果您在本文中发现任何错误,请书面通知我们。
我们不保证本文没有错误。
除非在您的许可协议中对此有明确许可,否则不得为任何目的,以任何电子或机械形式或手段复制或传播这些程序的任何部分。
2005年8月19日在美国印刷。
目录1 概述TimesTen文档参考索引 (1)术语 (1)“TimesTen应用程序”或“直连应用程序” (1)“TimesTen客户机/服务器应用程序” (2)install_dir (2)C++用户:考虑使用TTClasses (2)2 实现最佳性能TimesTen文档中的性能信息 (4)有关最常见问题的(影响性能的因素)建议 (4)运行对性能要求高的直连应用程序 (4)预先准备好所有SQL语句 (5)控制磁盘写频率 (6)为查询创建合适的索引 (6)使用“showplan”验证是否使用了合适的索引来进行查询 (8)关闭自动提交(autocommit)并定期提交 (9)C/C++ (ODBC)与Java (JDBC)性能比较 (9)通过在加载数据之后创建索引来加速(大批量)数据加载 (10)使用TTClasses,避免使用OLEDB 、ADO和第三方中间件 (10)多CPU性能调优 (10)使用连接池 (11)最大限度地提高数据库的并发性 (11)及时关闭只读游标 (11)避免大批量的删除语句 (11)考虑使用 “DELETE FIRST NumRows” (12)缩短不必要的长期运行的事务 (12)3 最大限度地提高稳定性最大限度地提高稳定性 (13)TimesTen文档 (13)TimesTen架构和数据库恢复简明指南 (13)避免应用程序的意外失败 (14)必须断开TimesTen应用程序与数据库的连接 (14)避免对TimesTen应用程序使用“kill –9”命令 (14)备份 (14)检查点 (15)其他好的实践 (15)检查所有ODBC函数的返回码,然后处理它们 (15)处理数据库失效错误 (16)处理死锁和锁超时错误 (16)从一个已满磁盘恢复 (17)4 复制和XLA复制 (18)将DSN名用作文件名前缀 (18)在进行–duplicate操作之前执行两个检查点操作 (19)复制配置应(手动)指定端口号 (19)监控复制 (20)SEQUENCE与复制和故障恢复的相互影响 (21)XLA (21)使用持久性XLA (21)始终监控XLA (22)最大限度地提高XLA性能 (22)索引1 概述本文详细介绍了如何利用TimesTen开发具有最佳性能和强健性的应用程序。
浅谈TimesTen内存数据库的结构_光环大数据培训
浅谈TimesTen内存数据库的结构_光环大数据培训OracleTimesTenIn-MemoryDatabase(简称TimesTen或TT)是一种业界领先的内存中关系数据库,2005年被oracle公司收购。
TimesTen主要为电信、网络、证券交易等行业提供基础架构软件,并用这种软件进行事件管理、交易...管理数据库存储HadoopOracle进程朱亮云和恩墨技术专家,6年专职oracledba生涯先后服务于保险、金融、电信、百货等客户OracleTimesTenIn-MemoryDatabase(简称TimesTen或TT)是一种业界领先的内存中关系数据库,2005年被oracle公司收购。
TimesTen主要为电信、网络、证券交易等行业提供基础架构软件,并用这种软件进行事件管理、交易和数据的工作,支持的系统包括实时计费系统、股票交易系统、呼叫中心系统、航线运营系统等。
TimesTen主要用于以下部署方式:1、用于独立的OLTP系统的内存数据库2、用于Oracle物理数据库的内存缓存数据库3、在OracleExalytics的内存分析一般行业内,大多采用第一种和第二种方式使用TimesTen数据库。
文件结构TimesTen数据库主要包括的文件有:1、检查点文件主要用来记录和同步DataStore的内存数据,是内存在磁盘上的一个镜像,类似于oracle数据库的数据文件。
每个TimesTen实例有两个检查点文件,在做检查点操作的时候会交替写入这两个文件,两个检查点文件之间的存在一定的时间间隔。
在TimesTen数据库中,有两种类型的检查点:非阻塞检查点:非阻塞检查点也被称为模糊检查点。
这些检查点的频率可以通过应用程序进行调整。
非阻塞检查点不需要数据库上的任何锁,因此在检查点操作正在进行时,多个应用程序可以在同一数据库上异步提交或回滚事务,它是一个不完全检查点,不必保证事务的一致性。
阻塞检查点:做该检查点操作时会加上数据库级别的锁,它是一个完全检查点,必须保证事务的一致性。
Timesten内存数据库新特性
OCI -- Functionality
• TimesTen support for OCI APIs
• A subset of the Oracle OCI functionality • A subset of the SQL functionality(at the same level as TimesTen
Oracle Confidential
OCI -- Motivation & Benefit
• OCI has a very large customer base
• Oracle Call Interface provides a set of C API with Oracle DB • OCI has been available since Oracle DB V6
<Insert Picture Here>
TimesTen 11gR2 New Features
Oracle Confidential
<Insert Picture Here>
Application Development TimesTen Support for OCI, Pro*C/C++, PL/SQL, ttSrcScan
C or C++ source programs • Supports embedded SQL 92 syntax • Provides same level of SQL functionality as supported in the
TimesTen ODBC interface • TimesTen 11.2.1 installer provides all required software for
TimesTen安装配置-Oracle 内存数据库
因为工作的需要,我编写了一份timesten的安装文档。
安装环境是RedHat AS5 64位的操作系统。
1、用 root 登录系统2、在 /etc/sysctl.conf 文件后追加一些配置, vi /etc/sysctl.conf保存退出3、修改 limit 配置4、重启机器5、建用户6、用 passwd 命令修改 timesten 用户的口令为 timesten7、切换成 timesten 用户8、把 tt70install.tar.gz 放到 /timesten 目录下9、解压 tt70install.tar.gz10、安装 timesten11、选择产品是 64 位,还是 32 位,出现如下提示:选择安装 64 位 Linux 版本,确认回车12、确认 timesten 实例名,出现如下提示默认选择 timesten 的 instance 名字,直接回车,提示:默认回车13、选择安装产品,出现如下提示选择安装“ Oracle TimesTen In-Memory Database with Cache Connect to Oracle ”,输入 2 ,确认回车14、选择安装组件,出现如下提示选择安装“ Client/Server and Data Manager ”,默认确认回车15、选择安装 timesten 的目录,出现如下提示选择 /timesten ,确认回车16、选择创建守护进程的主目录,出现如下提示默认回车,出现如下提示:提示目录不存在是否创建,默认选择 yes ,确认回车。
开始解压安装,提示如下17、解压结束后,安装 Demo 程序,出现如下提示默认回车确认,提示如下:18、选择 timesten 守护进程的端口,出现如下提示默认选择 17001 端口,确认端口没有被占用[1] ,确认方法见脚注。
如果 17001 端口没有被占用的话,则默认回车确认,如果被占用,则输入 no ,回车,出现如下提示输入一个没有被占用的端口,回车确认。
内存数据库的使用—TimesTen和Altibase
TimesTen篇—简介
结构
Log
TimesTen有自己的日志文件,以及存放日志文件 的目录(LogDir),缺省的就是和DataStore放在 同一个目录下。但一般建议分开放。日志的概念 和Oracle的一样,在回滚以及恢复的时候,都会 用到它。
TimesTen篇—简介
连接方式
Direct Driver连接 连接 Client/Server连接 连接 Driver Manager连接 连接
TimesTen篇—TT命令集
ttRepStart/ttRepStop : 功能:启动和关闭replication agent 用法: call ttrepstart(); call ttrepstop(); history Description: Lists previously executed commands. monitor Command Usage: monitor
TimesTen篇—简介
结构
DataStore
DataStore 是指TimesTen中的表、索引等放在内 存段中的一个集合,类似与Oracle中库的概念。 一个TimesTen Data Manager可以管理多个 DataStore。DataStore由放在相应ODBC配置文 件中的一个DSN(Data Source Name)所定义, 该DSN由一个名字和相关的属性组成
TimesTen篇—简介
连接方式
Direct Driver连接 连接 ቤተ መጻሕፍቲ ባይዱimesten推荐连接方式,由于没有了协议转换的开 销,这种连接方式具有最高的效率。对于JDBC应 JDBC 用程序,可以通过JDBC库访问ODBC的direct driver。这种连接方式要求应用程序和Timesten数 据库处于同一台服务器上。对于共享模式,数据库 被加载到共享内存中,多个应用程序可以共享访问 内存中的数据。可以减少TCP/IP,IPC方面的开销。
TimesTen 基础认识
1.什么是Oracle TimesTen内存数据库Oracle TimesTen内存数据库是一款内存优化的关系型数据库。
该产品可使应用大幅提高响应速度和吞吐量来满足当今有实时需求的企业,尤其适合电信,金融,互联网,旅游,在线游戏,保险等行业的企业。
部署在应用层的TimesTen数据库是一款可嵌入式或者独立的数据库。
它完全驻留在物理内存中,通过标准SQL接口进行数据库操作。
此外,该产品还包括复制技术来进行实时事务在TimesTen数据库之间的复制,进而实现高可用性和分担负载的目的。
2.什么是Oracle TimesTen应用层数据库缓存自从Oracle 12c 数据库推出了In-Memory功能,为了避免理解上的误解,将之前的Im-Memory Database Cache 改为了应用层数据库缓存。
该功能是Oracle TimesTen数据库的一个选项,来提供实时的对Oracle 数据库的读写缓存。
通过缓存性能敏感的表的子集从Oracle数据库到应用层,来提高应用事务响应时间。
缓存表在TimesTen数据库中的管理仍然是常规的关系型数据库表的管理方式。
因此,可以提供给应用一个完全通用和功能完备的关系型数据库,与Oracle数据库保持缓存透明维护的一致,并且实时高效的内存数据库。
为了实现高可用性,OraleTimesTen应用层数据库缓存可以通过使用actinve-standby配置的部署方案,且缓存表可以在Oracle TimesTen数据库之间进行实时复制。
3.TimesTen 内存数据库是否是Oracle 12c数据库的一部分Oracle TimesTen应用层数据库缓存是针对Oracle 12c 和11g数据库的一个数据库功能。
它包括了TimesTen内存数据库和缓存技术。
可以使得TimesTen作为一个内存缓存数据库自动将数据在TimesTen 和Oracle 数据库同步。
Oracle TimesTen内存数据库需要单独购买License。
1-TimesTen内存库同步异常处理
CacheGroup的基本操作:TimesT en的组成:TT由三部分来组成的,分别是TT数据库服务器、数据复制选件和高速缓存选件。
Oracle TimesTen In- Memory Database:是一个优化了的内存数据库。
Replication-TimesT en T o TimesT en:是TT的一个选件,它支持数据库之间的实时复制,这个数据库之间可以是Oracle的主备机之间,也可以是两个TT之间的数据Rep。
但不能是Oracle和TT之间的数据复制。
可以使用异步和同步的传输,可以进行冲突解决和冲突检测,以及服务器故障后的自动重新同步。
Cache Connect T o Oracle:是Oracle的一个选件,能够将Oracle中的数据加载到TT中。
然后实现Oracle和TT的双向更新。
在TT中查看CacheGroup的相关信息:>>cachegroup;//查看所有的cache的信息>>cachegroup CG_RA T_RES_ACCUMULA TOR_556 //查询单个cache的信息。
使用该命令输出的相关信息说明:手动刷新ReadOnly的CacheGroup的命令:首先要保证该CacheGroup的状态为Paused或OFF。
使用查看命令查看该Cache的状态如果是ON则需要手动修改该状态。
>>alter cache group cachegroupname set Autorefresh State paused状态正确则可以执行手动更新:>>refresh cache group cachegroupname commit every 1000 rows手动删除CacheGroup在删除CacheGroup的时候要保证CacheAgent是开启的,这样删除Cache的时候也会同步修改Oracle库中的信息,这样能保证彻底的删除,如果是在CacheAgent关闭的情况下删除的则可能造成TT的同步失败。
Oracle_内存数据库Times_Ten(_33_)
Oracle Corporation - Copyright 2007
数据发布 - Transaction Log API (XLA)
XLA Apps
Real-time Apps
• Transaction Log API (XLA)
• • • • 跟踪实时数据变化 监控交易变化 发送数据变化到外部应用 实现实时事件通知与处理
AutoRefresh
Reads
Oracle
应用读取数据 TimesTen 之间数据复制. 从 Oracle 到 TimesTen Node 1 = 主节点 Node 2 = 备用节点
TimesTen Node 1
TimesTen Node 2
AutoRefresh
Oracle
After Failure
Oracle Corporation - Copyright 2007
HA – 只读缓存组
Reads Reads
Reads
Replication
TimesTen Node 1 TimesTen Node 2
TimesTen Node 1
TimesTen Node 2
AutoRefresh
Oracle
TimesTen 之间的复制
• 高稳定性、高可靠性 • 灵活的配置方式
• Active-standby, Active-active, 多路
Oracle Corporation - Copyright 2007
复制 – 从TimesTen 到 TimesTen
Active - Standby
• 交易复制
TimesTen Node 1
TimesTen Node 2
内存数据库 TimesTen 简介
第一,传统的数据库和应用程序是两个不同的应用系统, 它们之间的通讯是通过IPC连接来实现的;而TimesTen 则是直接把数据库的内存映射到应用程序的地址空间中, 简单来说,这时候TimesTen访问数据库中的数据,就象 访问应用程序自己的数组、字符串变量一样,只不过 TimesTen有一套完善的机制来实现数据的一致性和完整 性。这种直接嵌入到应用程序的运行地址空间机制比IPC 要高效很多。
Oracle TimesTen 内存数据管理软件由TimesTen数据库服务器、数据复 制选件和高速缓存选件三部分组成。
Oracle TimesTen In- Memory Database Oracle TimesTen In-Memory Database 是一个内存优化的关系数据库,它为应用程序提供了当今实 时企业和行业(例如电信、资本市场和国防)所需的即时响应性和非常高的吞吐量。Oracle TimesTen In-Memory Database 作为高速缓存或嵌入式数据库被部署在应用程序层中,它利用标准的 SQL 接口对 完全位于物理内存中的数据存储区进行操作。 Replication – TimesTen to TimesTen Replication – TimesTen to TimesTen 是 Oracle TimesTen In-Memory Database 的一个选项,它 支持服务器间的实时数据复制,以获得高可用性和负载共享。数据复制配置可以是双机热备份 (activestandby) 或负载均衡 (active-active),可以使用异步或同步传输,可以包含冲突检测和冲突解决以及在 故障服务器恢复后自动重新同步。数据复制与 Cache Connect to Oracle 选项完全兼容。 Cache Connect to Oracle Cache Connect to Oracle 是 Oracle TimesTen In- Memory Database 的一个选项,它为位于应用 程序层中的 Oracle 数据创建实时、可更新的高速缓存。它免除了后端系统的计算负担,并支持反应灵敏 且可伸缩的实时应用程序。Cache Connect to Oracle 能够将 Oracle 数据的子集加载到 TimesTen 中, 能够双向传播更新,能够使对非高速缓存数据的 SQL 请求的透传自动化,并能够在故障之后自动重新同步 数据。Cache Connect to Oracle 与 Replication – TimesTen to TimesTen 选项完全兼容。
Oracle TimesTen内存数据库技术白皮书
Oracle TimesTen 产品和技术Oracle 白皮书2005 年 12 月引言 (3)“满足实时应用场合的需要” (3)实时应用程序的发展 (3)实时行业 (3)实时企业 (4)实时数据管理软件 (4)应用程序层部署 (4)产品 (5)Oracle TimesTen In- Memory Database (5)Replication – TimesTen to TimesTen (5)Cache Connect to Oracle (5)内存中数据库技术 (5)ORACLE TIMESTEN 的物理结构 (6)应用程序层共享库 (6)内存中数据结构 (7)系统进程 (8)管理程序 (8)检查点和日志文件 (8)数据复制技术 (8)高速缓存技术 (9)深入研究 IMDB 技术 (11)查询优化 (11)缓冲池管理 (11)索引结构 (12)差别体现在哪里 (13)非凡的性能 (13)可伸缩性 (13)响应时间 (14)实时功能 (15)数据管理 (15)查询处理 (19)数据复制 (19)高速缓存 (21)事件处理 (24)结论 (25)Oracle TimesTen 产品和技术引言“Oracle 收购 TimesTen 是一次绝好的技术整合,它将TimesTen 高性能内存中体系结构与 Oracle 巨大的数据库潜力结合起来”—Rob Hailstone,2005 年 6 月,Oracle 收购了内存中数据库软件的领先供应商TimesTen, Inc.。
Oracle 产品与 TimesTen 产品的结合为端到端数据管理提供了独有的单供应商解决方案。
本文介绍了 Oracle TimesTen 产品和技术及其与其他 Oracle 产品集成方面的问题,并使用该软件及其手册前的“书面”评估。
“满足实时应用场合的需要”Oracle TimesTen 产品为性能关键系统提供了应用层数据管理,并针对快速响应以及实时高速缓存 Oracle 数据进行了优化。
oraclen内存数据库timesten的C++编程资料
Oracle TimesTen In-Memory Database TTClasses GuideRelease 7.0B31691-03Copyright ©1996, 2007, Oracle. All rights reserved.ALL SOFTWARE AND DOCUMENTATION (WHETHER IN HARD COPY OR ELECTRONIC FORM) ENCLOSED AND ON THE COMPACT DISC(S) ARE SUBJECT TO THE LICENSE AGREEMENT.The documentation stored on the compact disc(s) may be printed by licensee for licensee’s internal use only. Except for the foregoing, no part of this documentation (whether in hard copy or electronic form) may be reproduced or transmitted in any form by any means, electronic or mechanical, including photocopying, recording, or any information storage and retrieval system, without the prior written permission of TimesTen Inc.Oracle, JD Edwards, PeopleSoft, Retek, TimesTen, the TimesTen icon, MicroLogging and Direct Data Access are trademarks or reg-istered trademarks of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners.The Programs (which include both the software and documenta-tion) contain proprietary information; they are provided under a li-cense agreement containing restrictions on use and disclosure and are also protected by copyright, patent, and other intellectual and industrial property laws. Reverse engineering, disassembly, or de-compilation of the Programs, except to the extent required to obtain interoperability with other independently created software or as specified by law, is prohibited.The information contained in this document is subject to change without notice. If you find any problems in the documentation, please report them to us in writing. This document is not warranted to be error-free. Except as may be expressly permitted in your li-cense agreement for these Programs, no part of these Programs may be reproduced or transmitted in any form or by any means, elec-tronic or mechanical, for any purpose.September 2007Printed in the United States of AmericaContentsAbout this GuideTimesTen documentation . . . . . . . . . . . . . . . . . . . . . 1Background reading . . . . . . . . . . . . . . . . . . . . . . . 2Conventions used in this guide . . . . . . . . . . . . . . . . . . . 3Technical Support . . . . . . . . . . . . . . . . . . . . . . . . 5 1Introduction to TTClassesOverview of TTClasses . . . . . . . . . . . . . . . . . . . . . . 7Scope of TTClasses. . . . . . . . . . . . . . . . . . . . . . . . 7 2Compiling TTClassesCompiling TTClasses on UNIX. . . . . . . . . . . . . . . . . . . 9Compiling TTClasses on Windows . . . . . . . . . . . . . . . . . 9Compilation options . . . . . . . . . . . . . . . . . . . . . . .10 Compiling TTClasses for client/server mode . . . . . . . . . . . .10 Installing TTClasses after compilation (UNIX only). . . . . . . . . . .11TTClasses compiler macros . . . . . . . . . . . . . . . . . . . .11 TTEXCEPT: Throw C++ exceptions . . . . . . . . . . . . . . .11USE_OLD_CPP_STREAMS: Use old C++ iostream code . . . . . . .11TTDEBUG:Generate additional debugging and error checking logic . . .12TT_64BIT: Use TTClasses with 64-bit TimesTen . . . . . . . . . .12Platform-specific compiler macros . . . . . . . . . . . . . . . .12 3Class DescriptionsCommonly used TTClasses . . . . . . . . . . . . . . . . . . . .14 TTStatus . . . . . . . . . . . . . . . . . . . . . . . . . .15TTConnection . . . . . . . . . . . . . . . . . . . . . . . .19TTCmd . . . . . . . . . . . . . . . . . . . . . . . . . . .25TTConnectionPool . . . . . . . . . . . . . . . . . . . . . .44TTGlobal (logging) . . . . . . . . . . . . . . . . . . . . . .47 System catalog classes . . . . . . . . . . . . . . . . . . . . . .50 TTCatalog . . . . . . . . . . . . . . . . . . . . . . . . . .51TTCatalogTable. . . . . . . . . . . . . . . . . . . . . . . .54TTCatalogColumn. . . . . . . . . . . . . . . . . . . . . . .56TTCatalogIndex . . . . . . . . . . . . . . . . . . . . . . .58 XLA classes . . . . . . . . . . . . . . . . . . . . . . . . . .60 TTXlaPersistConnection . . . . . . . . . . . . . . . . . . . .61TTXlaRowViewer. . . . . . . . . . . . . . . . . . . . . . .65iiiTTXlaTableHandler . . . . . . . . . . . . . . . . . . . . . .69TTXlaTableList. . . . . . . . . . . . . . . . . . . . . . . .72 Internal classes . . . . . . . . . . . . . . . . . . . . . . . . .74 4Using TTClassesUsing TTCmd, TTConnection, and TTStatus. . . . . . . . . . . . . .75TTClasses logging . . . . . . . . . . . . . . . . . . . . . . . .77Using XLA classes . . . . . . . . . . . . . . . . . . . . . . . .78Acknowledging XLA updates at transaction boundaries . . . . . . . . .78 Indexiv Oracle TimesTen In-Memory Database TTClasses GuideAbout this GuideOracle TimesTen In-Memory Database is a high-performance, in-memorydatabase that supports the ODBC and JDBC interfaces. The TimesTen C++Interface Classes (TTClasses) library was written to provide an easy-to-use,high-performance interface to Oracle TimesTen In-Memory Database. This C++class library provides wrappers around the most common ODBC functionality.This guide is for application developers who use and administer TimesTenODBC.To work with this guide, you should understand how database systems work. Youshould also have knowledge of SQL (Structured Query Language) and ODBC.TimesTen documentationTimesTen documentation is available on the product distribution media and onthe Oracle Technology Network:/technology/documentation/timesten_doc.html.Including this guide, the TimesTen documentation set consists of thesedocuments:Book Titles DescriptionOracle TimesTen In-Memory Database Installation Guide Contains information needed to install and configure TimesTen on all supported platforms.Oracle TimesTen In-Memory Database Introduction Describes all the available features in the Oracle TimesTen In-Memory Database.Oracle TimesTen In-Memory Database Operations Guide Provides information on configuring TimesTen and using the ttIsql utility to manage a data store. This guide also provides a basic tutorial for TimesTen.Oracle TimesTen In-Memory Database C Developer’s and Reference Guideand theOracle TimesTen In-Memory Database Java Developer’s and Reference Guide Provide information on how to use the full set of available features in TimesTen to develop and implement applications that use TimesTen.Oracle TimesTen In-Memory Database API Reference Guide Describes all TimesTen utilities, procedures, APIs and provides a reference to other features of TimesTen.About this Guide12 Oracle TimesTen In-Memory Database TTClasses GuideBackground readingFor a Java reference, see:•Horstmann, Cay and Gary Cornell. Core Java(TM) 2, Volume I--Fundamentals (7th Edition) (Core Java 2). Prentice Hall PTR; 7 edition (August 17, 2004).A list of books about ODBC and SQL is in the Microsoft ODBC manualincluded in your developer’s kit. Your developer’s kit includes the appropriate ODBC manual for your platform:•Microsoft ODBC 3.0 Programmer’s Reference and SDK Guide provides allrelevant information on ODBC for Windows developers.•Microsoft ODBC 2.0 Programmer’s Reference and SDK Guide , included online in PDF format, provides information on ODBC for UNIX developers.For a conceptual overview and programming how-to of ODBC, see:Oracle TimesTen In-MemoryDatabase SQL ReferenceGuideContains a complete reference to all TimesTen SQL statements, expressions and functions, including TimesTen SQL extensions.Oracle TimesTen In-MemoryDatabase Error Messagesand SNMP TrapsContains a complete reference to the TimesTen error messages and information on using SNMP Traps with TimesTen.Oracle TimesTen In-MemoryDatabase TTClasses GuideDescribes how to use the TTClasses C++ API to use the features available in TimesTen to develop and implement applications.TimesTen to TimesTenReplication Guide Provides information to help you understand how TimesTen Replication works and step-by-stepinstructions and examples that show how to performthe most commonly needed tasks.This guide is for application developers who use andadminister TimesTen and for system administratorswho configure and manage TimesTen Replication.TimesTen Cache Connect to Oracle Guide Describes how to use Cache Connect to cache Oracledata in TimesTen data stores. This guide is fordevelopers who use and administer TimesTen forcaching Oracle data.Oracle TimesTen In-Memory Database Troubleshooting Procedures GuideProvides information and solutions for handlingproblems that may arise while developing applicationsthat work with TimesTen, or while configuring ormanaging TimesTen.About this Guide 3•Kyle Geiger. Inside ODBC . Redmond, WA: Microsoft Press. 1995.For a review of SQL, see:•Melton, Jim and Simon, Alan R. Understanding the New SQL: A Complete Guide . San Francisco, CA: Morgan Kaufmann Publishers. 1993.•Groff, James R. / Weinberg, Paul N. SQL: The Complete Reference, Second Edition. McGraw-Hill Osborne Media. 2002.For information about Unicode, see:•The Unicode Consortium, The Unicode Standard, Version 5.0,Addison-Wesley Professional, 2006.•The Unicode Consortium Home Page at Conventions used in this guideTimesTen supports multiple platforms. Unless otherwise indicated, theinformation in this guide applies to all supported platforms. The term Windows refers to Windows 2000, Windows XP and Windows Server 2003. The term UNIX refers to Solaris, Linux, HP-UX, Tru64 and AIX.TimesTen documentation uses these typographical conventions:TimesTen documentation uses these conventions in command line examples and descriptions:If you see...It means...code font Code examples, filenames, and pathnames.For example, the .odbc.ini. or ttconnect.ini file.italic codefont A variable in a code example that you must replace.For example:Driver=install_dir /lib/libtten.slReplace install_dir with the path of your TimesTeninstallation directory.If you see...It means...fixed widthitalics Variable; must be replaced with an appropriate value. In some cases, such as for parameter values in built-inprocedures, you may need to single quote (' ') the value.[ ]Square brackets indicate that an item in a command line is optional.{ }Curly braces indicated that you must choose one of theitems separated by a vertical bar ( | ) in a command line.| A vertical bar (or pipe) separates arguments that you mayuse more than one argument on a single command line....An ellipsis (. . .) after an argument indicates that you mayuse more than one argument on a single command line.%The percent sign indicates the UNIX shell prompt.#The number (or pound) sign indicates the UNIX rootprompt.TimesTen documentation uses these variables to identify path, file and usernames:If you see...It means...install_dir The path that represents the directory where the currentrelease of TimesTen is installed.TTinstance The instance name for your specific installation ofTimesTen. Each installation of TimesTen must beidentified at install time with a unique alphanumericinstance name. This name appears in the install path. Theinstance name “giraffe” is used in examples in this guide.bits or bb Two digits, either 32 or 64, that represent either the 32-bitor 64-bit operating system.release or rr Two digits that represent the first two digits of the currentTimesTen release number, with or without a dot. Forexample, 51 or 7.0 represents TimesTen Release 7.0.jdk_version Two digits that represent the version number of themajor JDK release. Specifically, 14 represent JDK 1.4;5 represents JDK 5.timesten A sample name for the TimesTen instance administrator.You can use any legal user name as the TimesTenadministrator. On Windows, the TimesTen instanceadministrator must be a member of the Administratorsgroup. Each TimesTen instance can have a uniqueinstance administrator name.DSN The data source name.4 Oracle TimesTen In-Memory Database TTClasses GuideTechnical SupportFor information about obtaining technical support for TimesTen products, go tothe following Web address:/support/contact.htmlAbout this Guide56 Oracle TimesTen In-Memory Database TTClasses Guide1 Introduction to TTClassesThis chapter includes the following topics:•Overview of TTClasses•Scope of TTClassesOverview of TTClassesThe Oracle TimesTen In-Memory Database provides high performance through astandard ODBC and SQL interface. Unlike other RDBMS implementations ofODBC, access to TimesTen row ODBC is extremely fast. The TimesTen C++Interface Classes (TTClasses) was developed to meet the demand for an API thatis easier to use than ODBC, but does not sacrifice performance. This C++ classlibrary provides wrappers around the most common ODBC functionality. Usingthis library allows easier interaction with TimesTen data stores.In addition, the TTClasses library is intended to promote best practices whenwriting application software that uses the TimesTen Data Manager. The libraryuses TimesTen in an optimal manner. For example, autocommit is disabled bydefault. Parameterized SQL is strongly encouraged, and its use is greatlysimplified when compared to hand-coded ODBC.TimesTen includes demos for TTClasses in the i nstall_dir/demo/ttclassesdirectory.Scope of TTClassesTTClasses is a wrapper around all major ODBC functionality.In addition to providing a C++ interface to TimesTen’s ODBC interface,TTClasses also provides an interface to TimesTen’s Transaction Log API (XLA).XLA allows an application to monitor one or more tables in a TimesTen datastore. When other applications change that table, the changes are reportedthrough XLA to the monitoring application. TTClasses provides an easy-to-useinterface to the most commonly used aspects of XLA functionality. For moreinformation about XLA, see Chapter 3, “XLA and TimesTen EventManagement” in Oracle TimesTen In-Memory Database C Developer’s andReference Guide.Introduction to TTClasses7Note: TTClasses has been integrated with TimesTen since release 6.0. Previousversions of TTClasses were distributed separately from TimesTen, so earlierversions of TTClasses were compatible with multiple TimesTen versions.Starting with TimesTen 6.0, TTClasses is no longer tested or supported incombination with any other TimesTen release besides the release that it shipswith.8Oracle TimesTen In-Memory Database TTClasses Guide2 Compiling TTClassesTTClasses comes preconfigured during TimesTen installation. To compileTTClasses, use the make (UNIX) or nmake (Windows) command.Compiling TTClasses on UNIXTo build TTClasses and run the TTClasses demo programs, ensure that your shellenvironment variables are set correctly. Assume your TimesTen 7.0 instance isnamed tt70 and is installed at the following location:/opt/TimesTen/tt70Run one of the following scripts or add a call to one of these scripts in your logininitialization script (.profile or .cshrc):/opt/TimesTen/tt70/bin/ttenv.sh(sh/ksh/bash)/opt/TimesTen/tt70/bin/ttenv.csh(csh/tcsh)If you choose an instance name other than tt70, use that name in place of tt70 inthe above directory paths.After your PATH and shared library load path are configured properly, change tothe TTClasses directory and compile TTClasses:$ cd /opt/TimesTen/tt70/ttclasses$ makeCompiling TTClasses on WindowsChange to the TTClasses installation directory. The default location is:C:\TimesTen\tt70\ttclassesTo compile this Makefile, ensure that the PATH, INCLUDE, and LIBenvironment variables point to the correct Visual Studio directories. There is abatch file named “VCV ARS32.BAT” (Visual C++ 6.0) or “VSV ARS32.BAT”(Visual Studio .NET) in the Visual Studio directory tree that will set up yourPATH, INCLUDE, and LIB environment variables correctly. Run this batch file.9If you are using Visual Studio .NET:C:\TimesTen\tt70\ttclasses> nmake /f Makefile.vsdotnetIf you are using VC++ 6.0:C:\TimesTen\tt70\ttclasses> nmakeCompilation optionsThe following “make target” options are available when you compile TTClasses:•all: Build a shared optimized library•shared_opt: Build a shared optimized library•shared_debug: Build a shared debug library•static_opt: Build a static optimized library•static_debug: Build a static debug library•opt: Build the optimized libraries (shared and static)•debug: Build the debug libraries (shared and static)•clean: Delete the TTClasses libraries and object filesNote: If you do not specify an option when you compile, the default is all.To specify a make target, use the name of the make target on the command line.To build a shared, debug version of TTClasses:(Unix)$ make clean shared_debug(Windows)C:\TimesTen\tt70\ttclasses> nmake clean shared_debugCompiling TTClasses for client/server modeTo compile TTClasses for client/server mode, use the “MakefileCS” makefile.Example 2.1To build a client/server version of TTClasses:(Unix)$ make -f MakefileCS clean all(Windows)10Oracle TimesTen In-Memory Database TTClasses GuideC:\TimesTen\tt70\ttclasses> nmake /f MakefileCS clean allInstalling TTClasses after compilation (UNIX only)After compilation, install the library so all users of the TimesTen instance can useTTClasses. This step is not part of compilation because different privileges arerequired for installing TTClasses than for compiling TTClasses.Note that installation occurs automatically after compilation on Windows.Example 2.2$ cd /opt/TimesTen/tt70/ttclasses$ make installTTClasses compiler macrosMost users do not need to manipulate the TTClasses Makefile. If you need tomodify the TTClasses Makefile manually, you can add flags for the TTClassescompiler macros to the Makefile. For Unix, add –D<flagname>; for Windows,add /D<flagname>.This section includes information about the following compiler macros:•TTEXCEPT: Throw C++ exceptions•USE_OLD_CPP_STREAMS: Use old C++ iostream code•TTDEBUG:Generate additional debugging and error checking logic•TT_64BIT: Use TTClasses with 64-bit TimesTenSee also “Platform-specific compiler macros” on page 12.TTEXCEPT: Throw C++ exceptionsCompile TTClasses with the -DTTEXCEPT flag to make TTClasses throw C++exceptions. All of the TTClasses demo programs assume that exceptions areturned on, and all TTClasses testing is done with exceptions turned on.If you use exceptions, put try/catch blocks around all TTClasses function callsand catch exceptions of type “TTStatus”.If you do not use exceptions, you must check the TTStatus::rc value after everyTTClasses function call (checking for != SQL_SUCCESS). See “TTStatus” onpage 15.USE_OLD_CPP_STREAMS: Use old C++ iostream codeThere are at least two major types of C++ streams, and they are not compatiblewith each other. Do not use both stream implementations inside a program.If your program uses old C++ streams (your code has #include <iostream.h>),then you must compile TTClasses with theCompiling TTClasses11-DUSE_OLD_CPP_STREAMS flag to be compatible with the rest of your programcode.If your program uses new C++ streams (your code has #include <iostream>),then you must not use this compiler macro.TTDEBUG:Generate additional debugging and errorchecking logicCompile TTClasses with -DTTDEBUG to generate extra debugging information.This extra information reduces performance slightly, so use this flag only indevelopment (not production) systems.TT_64BIT: Use TTClasses with 64-bit TimesTenCompile TTClasses with -DTT_64BIT if you are writing a 64-bit TimesTenapplication.Note that 64-bit TTClasses has been tested on AIX, HP-UX, Solaris, Red HatLinux, and Tru64.Platform-specific compiler macrosThe following compiler macros are specific to a particular platform or compilercombination. You should not have to specify these compiler macros manually.Their use is determined by the Makefile chosen by the “configure” program.GCCCompile TTClasses with the -DGCC flag when using gcc on any platform.HPUXCompile TTClasses with the -DHPUX flag when compiling on HP-UX.MERANTCompile TTClasses with the -DMERANT flag when using the Merant ODBCDriver Manager.12Oracle TimesTen In-Memory Database TTClasses Guide3 Class DescriptionsThis chapter contains descriptions of all classes in the external interface to TTClasses and brief descriptions of some of the internal TTClasses. It is divided into the following sections:•Commonly used TTClasses•System catalog classes•XLA classes•Internal classesClass Descriptions13Commonly used TTClassesThis section includes the following classes:•TTStatus•TTConnection•TTCmd•TTConnectionPool•TTGlobal (logging)14Oracle TimesTen In-Memory Database TTClasses GuideTTStatusThe TTStatus class is used by other classes in the TTClasses collection to report errors and warnings. You can think of TTStatus as a value-added C++ wrapper around the SQLError ODBC function.SubclassesTTStatus has the following subclasses:•TTError•TTWarningTTErrorTTError is a subclass of TTStatus and is used to encapsulate ODBC errors (return codes: SQL_ERROR, SQL_INV ALID_HANDLE).TTWarningTTWarning is a subclass of TTStatus and is used to encapsulate ODBC warnings (return code: SQL_SUCCESS_WITH_INFO).ODBC warnings are usually not as serious as ODBC errors and should be handled with different logic. Logging ODBC warnings to an application’s log is usually appropriate, but ODBC errors usually need to be programmatically handled.Public MembersMember Descriptionrc Return code from the failing ODBC call. Typical valuesfor this field are SQL_SUCCESS,SQL_SUCCESS_WITH_INFO, SQL_ERROR,SQL_NO_DATA_FOUND, andSQL_INV ALID_HANDLE.native_error TimesTen native error number (if any) for the failingODBC call.odbc_error ODBC error code for the failing ODBC call.err_msg ASCII printable error message for the failing ODBCcall.Class Descriptions15Public MethodsMethod Descriptionostream Prints errors to a stream.ostreamfriend ostream& operator<<(ostream&, TTStatus&)Example 3.1This method can be used to print the error to a stream.TTStatus stat;// ...cerr << "Error fetching data: " << stat << endl;UsageTTStatus objects are used in one of two different ways, depending on whether thelibrary was built with the TTEXCEPT preprocessor variable defined. DefiningTTEXCEPT is the default and recommended use of TTClasses.If the library was built with the TTEXCEPT preprocessor variable defined,TTStatus objects are thrown as exceptions whenever an error occurs. This allowsC++ applications to use {try/catch} in C++ to detect and recover from failure,resulting in very readable source code.Example 3.2This example shows how to use TTStatus with TTEXCEPT defined.try {cmd1.Prepare(&conn, "select * from foo", stat);cmd2.Prepare(&conn, "insert into foo values(?,?,?)",stat);cmd3.Prepare(&conn, "update foo set x = ? where y=?",stat);mit(stat);}catch (TTStatus st) {cerr << "Error preparing statements: " << st << endl;// Rollback, exit(), throw -- whatever is appropriate}If you build TTClasses without the TTEXCEPT preprocessor variable defined,TTStatus objects are returned by reference from most method calls. The callermust explicitly check for errors after each method call, as demonstrated in thenext example.Example 3.3This example shows how to use TTStatus without TTEXCEPT defined.16Oracle TimesTen In-Memory Database TTClasses GuideTTStatus stat;[...]cmd1.Prepare(&conn, "select * from foo", stat);if (stat.rc) {cerr << "Error preparing statement: " << stat << endl;// Rollback, exit(), throw -- whatever is appropriate}cmd2.Prepare(&conn, "insert into foo values(?,?,?)",stat);if (stat.rc) {cerr << "Error preparing statement: " << stat << endl;// Rollback, exit(), throw -- whatever is appropriate}cmd3.Prepare(&conn, "update foo set x = ? where y = ?",stat);if (stat.rc) {cerr << "Error preparing statement: " << stat << endl;// Rollback, exit(), throw -- whatever is appropriate}mit(stat) ;if (stat.rc) {cerr << "Error in commit: " << stat << endl;// Rollback, exit(), throw -- whatever is appropriate}Note that with exceptions enabled, TTError objects are thrown for ODBC errors,and TTWarnings are thrown for ODBC warnings.Example 3.4This example illustrates how TTError and TTWarning relate to TTStatus. The two code fragments shown have identical behavior.// first code fragment: using TTStatustry {// some TTClasses method calls}catch (TTStatus st) {if (st.rc == SQL_SUCCESS_WITH_INFO) {cerr << "Warning encountered: " << st << endl;}else {cerr << "Error encountered: " << st << endl;}}// second code fragment: using TTError & TTWarningtry {// some TTClasses method calls}catch (TTWarning warn) {cerr << "Warning encountered: " << warn << endl; }catch (TTError err) {cerr << "Error encountered: " << st << endl;}TTConnectionThe TTConnection class encapsulates the concept of a connection to a TimesTen database. You can think of TTConnection as a value-added C++ wrapper around the ODBC HDBC handle.Public MembersNone.Public MethodsMethod DescriptionConnect Opens a new connection to a TimesTen datastore.Disconnect Closes a connection to a TimesTen data store. Rollback Rolls back changes made to the databasethrough this connection since the last call toCommit() or Rollback() methods. isConnected Returns true if the object is connected toTimesTen.getHdbc Returns the ODBC level “HDBC” associatedwith this connection. SetIsoReadCommitted Sets the transaction isolation level of theconnection to be TXN_READ_COMMITTED. SetIsoSerializable Sets the transaction isolation level of theconnection to be TXN_SERIALIZABLE. CheckpointBlocking Performs a blocking checkpoint operation onthe data store by calling the TimesTen built-inprocedure ttCkptBlocking. CheckpointNonBlocking Performs a “true fuzzy” checkpoint operationon the data store by calling the TimesTen built-in procedure ttCkpt.DurableCommit Performs a durable commit operation on thedata store.SetLockWait Sets the lock timeout interval for the connectionby calling the TimesTen built-in procedurettLockWait.Method DescriptionSetPrefetchCloseOn Turns on the TT_PREFETCH_CLOSEconnection option. This is useful for optimizingSELECT query performance for client/serverconnections to TimesTen.SetPrefetchCloseOff Turns off the TT_PREFETCH_CLOSEconnection option.SetPrefetchCount Turns off the TT_PREFETCH_CLOSEconnection option.SetAutocommitOff Sets AUTOCOMMIT off for the connection.SetAutoCommitOn Sets AUTOCOMMIT on for the connection.GetTTContext Returns the connection’s context value.Connectvoid Connect (const char* connStr, TTStatus&)Opens a new connection to a TimesTen data store. The connection stringspecified in the connStr parameter is used to create the connection.Example 3.5TTConnection conn;TTStatus stat;conn.Connect("DSN=mydsn", stat);// Now this connection can be used to interact with// TimesTenIf exceptions are enabled, a TTStatus object is thrown as an exception if an erroroccurs. If exceptions are disabled, the TTStatus& object passed as the lastparameter to the method contains information about errors upon return from themethod.Calling this method sometimes results in warnings that can often be safelyignored. The following logic is preferred when using ::Connect().try {conn.Connect(stat);}catch (TTWarning warn) {// warnings from ::Connect() are usually informationalcerr << ‘’Warning while connecting to TimesTen: ‘’<< warn << endl;}catch (TTError err) {// handle the error; this could be a serious problem。
大数据新宠:内存数据库之Timesten评测
内存数据库之Timesten评测TimesTen是Oracle公司的数据库产品,其全称为Oracle TimesTen In-Memory Database。
TimesTen是一个内存优化的关系数据库(即内存数据库),它为应用程序提供了即时的响应性和非常高的吞吐量。
Oracle TimesTen In-Memory Database 可以作为单独的数据库使用,也可以作为高速缓存或嵌入式数据库被部署在应用程序层中,它利用标准的SQL接口对完全位于物理内存中的数据存储区进行操作。
TimesTen 起源于Hewlett Packard。
1992年,由HP 的一个研发小组开发了最早的核心技术,即TimesTen 的实时事件处理系统,目的是为了嵌入到HP 的电信系统中。
1996年TimesTen从HP剥离出来成为独立的公司;并于2005年6月被Oracle公司收购。
经过Oracle公司几年的整合,现在TimesTen已经与Oracle进行了很好的集成。
最显著的特点是TimesTen的Cache Group,能够实现内存数据库TimesTen与传统磁盘数据库Oracle 的互联互通。
在TimesTen的最新版本中,Oracle公司又对TimesTen产品在功能上进行Oracle化,加入了许多新的功能。
如OCI的支持,Cluster的功能等。
安装配置安装TimesTen之前,需要先从Oracle官方网站上下载TimesTen的安装包。
当前版本安装包是timesten112230.linux8664.tar.gz。
下载完成后,对压缩包进行解压缩:gzip timesten112230.linux8664.tar.gz|tar -xvf –解压缩后,得到linux8664目录。
TimesTen的安装文件就放在这个目录中。
在正式安装之前,需要进行一些准备工作,基本的有以下几个命令:创建TimesTen工作组:[root@localhost ~]# groupadd ttadmin创建TimsTen工作用户:[root@localhost ~]# useradd -G ttadmin tttest对相关目录更改权属:[root@localhost ~]# chown -R tttest:ttadmin /etc/TimesTen准备工作完成后,就可以转到之前解压缩后得到的linux8664目录下运行./setup.sh开始安装。
timesten内存数据库官方操作文档
<Insert Picture Here>Oracle TimesTen 基础&Tips日本甲骨文公司Oracle Direct Seminar<Insert Picture Here>Agenda• TimesTen 是什么?• 应用实例介绍 • TimesTen 的优势• TimesTen 基础• TimesTen 的结构 • TimesTen 的各种构成• 可选功能简介• Replication• Cache Connect to Oracle• TimesTen 的系统设计• Sizing• 系统维护管理• 附录关于测试数据的说明本讲座中将会使用一些测试数据来说明TimesTen的特 性。
对于这些测试数据,请注意以下几点。
1、根据测试环境的不同,会有一定的差异。
2、本讲座中的测试数据,仅在本讲座中使用。
严禁传 播和用于其他用途。
3、本讲座中提供的数据仅可作为参考,不可用于购买 TimesTen产品时的依据。
TimesTen是什么?• 名称:Oracle TimesTen InMemory Database • 目的:缩短数据库层的响应时间• 特点:• TimesTen是一个完整的数据库• 相关数据全部储存在计算机内存中• 算法的简化成就更少的CPU开销• 比Oracle 数据库的DB缓存更快应用实例介绍①:独立的数据库 • 应用于某电话服务器• 需求包括:• 高可用性(99.999%)• 地区性的容灾备份功能• 极短的响应时间• 易于部署• 可管理性• TimesTen成功地满足了所有的需求• 高性能• 移动解决方案• 可靠的数据库Replication应用实例介绍②:In Memory Database Cache• 系统描述:• 某信用卡消费监视系统 • 实时对消费记录进行分析• 性能需求:• 每秒10,000的更新、插入 • 每秒100,000的查询 • 响应时间小于1毫秒• 可扩展性需求:• 未来将达到每秒1~2M 查询 • 响应时间不变• 对应用程序的影响最小• 其它需求:• 负载平衡 • 防灾冗余 • 硬件成本• TimesTen的解决方案TimesTen 的优势• 高速数据处理• 微秒级别的响应时间• 采用标准技术• 支持大部分SQL92的功能, 包括索引,物化视图• 减少开发难度和开发时间 • 减少维护成本• 高可靠性• 足以满足证券行业等等业 务的高可靠性要求表示层应用程序TimesTen应用层数据库层Real Application Clusters与Oracle Database 互动Replication优势一:TimesTen 为什么这么快?• 因为数据全部保存在内存中?• 要是把Oracle DB 的数据全部保存到内存中 是不是也有这么快?• 因为数据处于应用程序层?• 要是把Oracle DB 也配置在应用程序层是不是也有这么快?NoNo No TimesTen 的数据都在内存中, 拥有更优化的算法和更少的CPU 开销,所以才这么快!优势一:TimesTen 为什么这么快? (续)CPU 开销的对比数据全部保存在内存中,这样的设计使得CPU 开销大幅下降TimesTen应用程序应用程序基于磁盘的RDBMS连接开销 多个进程 同时工作 的开销转换检索结果 造成的开销缓存管理 的开销复制缓存数据 的开销磁盘IO 的开销应用程序R DBM S 引擎 数据TimesTen Vs. Oracle Database 参考资料执行100%Select句的执行效率会话数 CPU占用率的比较执行100%Select句,30000TPS时的CPU占用率 执行70%Select句,15000TPS时的CPU占用率• 10倍以上的TPS以及更低的CPU占用率•CTC验证结果•TimesTen 7.0.5 / Oracle Database 11.1.0.6•DualCore×2•http://www.thinkit.co.jp/article/96/3/2.htmlDB 层AS 层应用程序 (J2EE etc)将Oracle 数据库的表或者表的一部分提取 出来,在应用程序服务器上建立 TimesTen 缓存Oracle TimesTen InMemory Database带来的高速应用程序开发应用程序 (J2EE etc)应用程序通过JDBC/ODBC 执行SQL 语句 高速访问Cache Connect to Oracle 使缓存与后台 数据库保持同步Replication 功能保证冗余和高可用性开发、维护成本大大降低开发、维护成本大大降低 “Cache Connect to Oracle”提供的同步功能高速的SQL 执行优势二:采用标准技术,简化开发和维护优势三:高可靠性• 高可靠性的保证:• 日志记录功能将数据保存到非易失存储器中• Oracle TimesTen Replication 提供的冗余和容灾功能维持各个Oracle TimesTen 的数据一致性应用程序数据库引擎 (ODBC/JDBC Driver )日志文件Data Store临时 空间日志 缓存<Insert Picture Here>Agenda• TimesTen 是什么?• 应用实例介绍 • TimesTen 的优势• TimesTen 基础• TimesTen 的结构 • TimesTen 的各种构成• 可选功能简介• Replication• Cache Connect to Oracle• TimesTen 的系统设计• Sizing• 系统维护管理• 附录TimesTen 的结构引擎 (ODBC/JDBC 驱动器)Daemon配置文件odbc.ini检查点文件 ds0检查点文件 ds1日志文件Data Store临时 数据日志缓存Sub Daemon应用程序后台进程内存结构文件结构可选进程TimesTen引擎• 动态链接程序库(Link Library) • 功能包括:• 执行SQL语句并返回执行结果• 往日志缓存中写入日志内存结构• Data Store• 保存所有数据库数据的区域• 日志缓存• 用于暂时存储记录Data Store变更的日志 • 临时数据区域• 临时存储执行计划等数据的共享区域• 排序等等操作临时使用• 主进程(Daemon)• 监听功能(Listener)• 读取配置文件odbc.ini• 分配和监视Sub Daemon • 子进程(Sub Daemon)• 载入/卸载Data Store• 将日志缓存写入日志文件• 监视和解除死锁(Dead Lock)• 执行检查点(Checkpoint)• Replication代理• 实施Replication• Cache代理• 实施Cache Connect• TimesTen服务器• 采用客户端/服务器连接时的服务器进程文件结构• 配置文件odbc.ini• 用于记录各个DSN的参数• 检查点(Checkpoint)文件• 保存于磁盘的数据库镜像。
TimesTen介绍
<Insert Picture Here>TimesTen内存数据库 内存数据库TimesTen内存数据库的背景 内存数据库的背景• 1992 --在HP美国总部, 第一个对于内存数据库的实验室, 主要研究内 存数据库技术在电信网络中的应用 • 1996 – TimesTen从HP实验室分离出来, 成立了一家独立的内存数据 库公司• 公司中的核心成员都从HP实验室来 • 同时发布了第一个内存数据库的商用版本(TimesTen 2.0)• 1999 – Timesten 在欧洲开业, 设在伦敦 • 2001 – Cache Connect capability released • 2005 – Oracle 收购了Timesten• 推出主要的商用版本 (TimesTen 6.0) • 过去三年每年有30%以上的增长率 • 庞大的客户, 超过1500 企业级的用户• 2007 – Timesten 新版本 7.0 正式推出TimesTen 高性能技术针对物理内存而特别设计优化的数据库• 所有数据存于物理内存• 针对物理内存而特别设计优化的数据 存储结构与算法NetworkApplication• 采用关系型数据模型 • 标准 APIs (ODBC, JDBC, SQL92)TimesTen libraries...ApplicationTimesTen librariesClientServerIn-Memory Database(s)Transaction Logs Checkpoint filesApplication-Tier Platform闪电般的响应速度TimesTen In-Memory Database 6.0, 4-CPU, 3 GHz x86 Xeon, 32-bit RHLinux30microseconds2028 millionths of a second1025 millionths of a second 9 millionths0 update mixed70% select; 20% update; 10% insertselect极高的处理能力Oracle TimesTen 6.0, 4-CPU, 3 GHz x86 Xeon, 32-bit RHLinuxTransactions per second300,000250,550250,000 200,000 150,000 100,000 50,000 032,6631 CPU 2 CPUs 4 CPUs121,70598,56870,11154,303updatemixed70% select; 20% update; 10% insertselect响应时间及吞吐量的比较内存数据库与磁盘数据库的比较数据库特性 目标应用 数据模型 优化 典型部署方式 架构 响应时间 数据容量 可扩展性 Oracle 10g 关键业务应用 关系型 - SQL Database Oracle TimesTen In-Memory Database 关键业务应用 关系型 - SQL磁盘为中心 数据库层 客户机/服务器 毫秒到秒级TB到PB级 Cluster (RAC) & SMP内存为中心 应用层 嵌入式(直接数据访问) 嵌入式(直接数据访问) 微秒到毫秒级GB级 SMPOracle TimesTen支持 实时世界 支持“实时世界 支持 实时世界”全球有超过1500家企业客户采用Oracle TimesTen内存数据库解决方案In NetworksIn TelecomOn Wall StreetIn the Enterprise呼叫处理 呈现业务 定位服务 软交换 一键通话( 一键通话(PTT) )实时计费 欠费分析 认证鉴权 网络/QoS管理 管理 网络 自服务门户订单匹配 智能订单路由 成交撮合 实时分析呼叫中心 用户个性化在线 实时订座 实时物流 BI / BAM SOATimesTen 无数据丢失技术日志与数据持久性Memory-resident Data Store• Transaction log manager 来协调 大量事务吞吐 • 内存缓冲区交易日志与同步交易 日志 • 交易日志与检查点文件保存在磁 盘之上 • 交易日志与检查点文件保障数据 可恢复ApplicationsUpdatesCommitted TransactionsTransaction Log Memory BufferBackground Log flusher persists transaction data to diskPeriodic snapshot of data store to checkpoint files1 Transaction Log files2Checkpoint files与Oracle数据库的无缝连接 数据库的无缝连接 Cache 选件Cache Connect to Oracle• 缓存Oracle数据库的数据 • 只读或可更新的缓存 • 双向更新 • 在一个Oracle数据库上可以 建立多个缓存实例NetworkApplication Program Application ProgramTimesTenTimesTenIn-Memory DatabaseIn-Memory DatabaseCache Connect to OracleOracleCache Group 定义需要被缓存到 TimesTen data store里 Cache Group 的Oracle数据库的数据集合,称之为缓 存组(Cache Group)。
DTCC2014:TimesTen内存数据库— 架构扩展应用实践_IT168文库
子系统1
统应该是相对比较独立的,子系统 之间关联较少,而且相互关联的子
字体数量相对较少。
实际情况
子系统2
实际情况往往是大相径庭的,子系 统之间存在很高的耦合性。子系统
子系统5
内读写错综复杂,基本上不可能实 子系统4
现读写分离。 面对这样的现实,出于成本和风险
子系统1
子系统3
的考虑,很难做到子系统的解耦,
视子进程。
子进程(Sub Daemon): 载入/卸载Data Store;将日志缓存写入日志文件;监视 和解除死锁;执行检查点。
Timesten
TimesTen的Cache Group选择
1. 每隔一定时间,缓存代理将数据复制到TimesTen中; 2. 适合用于储存几乎没有更新的数据;
3. 能保证单一数据库源的写入,能更好控制数据一致性,重点推荐。 1. 异步写入,DML被抛给Oracle,不等待Oracle完成COMMIT;
TimesTen中,表和索引均保存在内存中,容量
(内存)估算很重要,单库尽可能控制在 50~60GB,不超过100GB。 表字段不宜过多,字段不宜过长,TimesTen存 储具有字段对齐的特点,比Oracle需要更多的 存储空间,尽可能不超过128字节。
目录
架构现状
TimesTen
个性定制 应用效果 其他
②
① 应用COMMIT提交; ② 立刻返回应用COMMIT提交成 功; ③ 通过日志缓存写入日志文件; ④ 将更新信息发送给Replication
Rep Agent
④ ⑤
③
LogFile
Agent;
⑤ 将更新信息从Active发生到
LogFile
Oracle TimesTen Scaleout分布式数据库介绍
要求: 细粒度的并发控制机制、高效的进程访问、 高效的内存使用、并行 IO算法, …
•
某些数据库由于纵向扩展的限制,要求必须在相同 主机内有多实例 – 该要求需要数据消息共享:效率不高 – 理想情况: 一台主机一个实例
Instance #1
Instance #2
TimesTen专注于 Scale-Up 架构二十年
• 2016 的服务器:
– Oracle SPARC T7-4 – 4 processors 256 倍以上!
• 128 cores (1024 hw threads)
– – – –
480 MHz 4 GB RAM 728 GB disk 100 Mbit/sec Ethernet
– – – –
4.13 GHz 9 倍以上! 4 TB RAM 1024 倍以上! 9.6 TB disk 13 倍以上! 10 Gbit/sec Ethernet100 倍以上!
逻辑统一、横向扩展、无共享、应用透明、高可用
• 逻辑统一的分布式数据库 - 不是一个分片数据库 添加和删除数据库 elements - 数据自动重新分布 - 负载自动使用新添加的计算资源 内置高可用 - 多活副本 – 副本之间自动同步 高度兼容 Oracle 数据库 (子集) - 数据类型、API 接口口、SQL & PLSQL
For Oracle Database
Real-Time Analytics – Dashboard, Scorecard Data Mart
Telco Services Financial Services
eCommerce, Personalization
•
利用TimesTen 缓存Oracle Database 热数据提升响应时间 Read-write 缓存 – 事务在TimesTen中执行并持久化
Oracle数据库中的内存计算那点事
Oracle数据库中的内存计算那点事内存计算那点事迄今为止,内存还是我们目前能用到的最快的存储设备,把数据尽可能放进内存成为各种应用提高数据访问性能的最有效途径。
对于很多关键业务系统而言,内存又是一种挥发性的和大小非常有限的存储设备,如何在保证性能的同时使数据能持久化,如何把有限的内存投入到无限的待处理数据上是程序设计的一个重大课题。
Oracle的内存TImesTen内存数据库为有高并发,低延时和高可用要求的关键业务系统提供了一个接近完美的解决方案:把数据放进内存,使用SQL简化开发,应用开发者可以更加专注在业务实现上而不用关心底层的内存分配。
TImesTen在大并发的环境中还能提供媲美Oracle数据库的数据完整性,一致性和可恢复性,内存的挥发性缺点也被克服,维护工作也极大地简化了。
因此Oracle TImesTen被广泛地应用于电信,金融等行业已经有20多年的历史。
基于内存计算的另外一个问题始终困扰着业内人士内存有限而数据相对无限:单一服务器的内存远远不足以存储需要处理的数据,频繁的内存交换消耗太多资源,用户不得不使用手工分库的方式把数据分散到多个服务器上来处理,这又带来了管理、开发复杂,扩展性差等诸多问题。
随着技术的发展,分布式内存网格技术也开始被用于加速数据访存的速度,比如Redis,Oracle Coherence等。
分布式内存网格技术采用key-value的内存数据存储方式可以方便把磁盘型数据库的数据分布到集群系统的各个节点上缓存,为简单的数据查询和事务提供了很高的性能。
但这类技术的问题是:数据的强一致性,数据持久化,复杂报表和统计,大并发事务处理等。
分布式的关系型内存数据库理想的内存数据库对于一个高并发,实时响应需求的关键业务系统而言,一个分布式的关系型数据库是最理想的选择:它既具有关系型数据ACID的特性,可以处理高并发的用户请求,可以实时响应业务的数据访问请求,拥有完善的备份恢复和容灾机制,同时和NoSQL的内存网格技。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
订单匹配 智能订单路由 成交撮合 实时分析
SOA 呼叫中心 用户个性化在线 BI / BAM 实时物流 实时订座
内存数据库 和 传统关系型数据库 的比较
内存数据库与磁盘数据库的比较
数据库特性 目标应用 数据模型 优化 典型部署方式 架构 响应时间 数据容量 可扩展性 Oracle Database 10g 关键业务应用 关系型 - SQL 磁盘为中心 数据库层 客户机/服务器 毫秒到秒级 TB到PB级 Cluster (RAC) & SMP Oracle TimesTen In-Memory Database 关键业务应用 关系型 - SQL 内存为中心 应用层 嵌入式(直接数据访问) 微秒到毫秒级 GB级 SMP
§ 所有数据存于物理内存 § 采用关系型数据模型 § 针对物理内存而特别设计优 化的数据存储结构与算法 § 多进程/多线程共享数据存 储(Data Store)
•
Network
Application
TimesTen libraries
...
Application
TimesTen libraries
嵌入式 或 客户机-服务器式
内存数据库的特性
内存数据库解决方案
实时数据管理软件
即时响应 Ÿ 高可伸缩性 Ÿ 持续可用性
For managing events, transactions and data within performance-critical applications.
全球有超过1500家企业客户采用Oracle TimesTen内存数据库解决方案
ClientServer
In-Memory Database(s)
Transaction Logs Checkpoint files
§ 标准 APIs (ODBC, JDBC, SQL-92) § 易于安装与配置
Application-Tier Platform
内存数据库的部署
针对物理内存而优化的应用层数据库,可以获得极高的响 应速度并实现实时数据缓存
交易与并发访问
§ Data store 可被多进程/多线程所共享
•
嵌入式或客户机-服务器模式
§ 完全的交易机制支持 (COMMIT/ROLLBACK) § 交易独立性
• • • •
Read-committed (non-blocked versioning) Reads do not block writes Writes do not block reads Serializable is also supported 锁: data store-level, 表级锁, 行级锁
§ 并发访问控制
•
§ 死锁检测
MicroLogging 保护内存数据库不 受应用故障影响
TM
§ 共享进程空间会使嵌入式应用受进程故障的影响 § MicroLogging™ 技术可以确保Oracle TimesTen 内存数据库不受应用进程故障的影响
•
• •
异常终止的应用进程不会影响Data Store,受到影 响的交易会被滚回(Rollback) 其他进程/线程可以继续运行,不受影响 内存数据库可以继续运行,不需中断
为性能关键应用提供的实时数据管理:
l l l l l l l l l l 电信和网络 资本市场 国防和情报 旅行和预订 面向服务的体系结构(SOA) 中间层数据高速缓存 操作数据存储 商务智能 业务活动监视 自助式门户
日志与数据持久性
§ 内存缓冲区交易日志与同 步交易日志
•
Network
Application
传统的预付/后付费业务是两个世界
网络接口 认证授权 客户资料 帐务处理
服务控制
资费管理
套餐捆绑
累帐出账
服务逻辑
帐户管理
资费/促销
信用管理
IVR/接 口
充值
批价
缴费
预付费业务— — 基于IN/SCP进行支撑
后付费业务— — BSS系统进行支撑
现有模式不能满足运营商的需求
§ 基于智能网的预付费系统实时而不灵活
§ 安全且高性能
数据发布 - Transaction Log API (XLA)
§ Transaction Log API (XLA)
• • • • Real-time Apps XLA Apps
跟踪实时数据变化 监视交易变化 发送数据变化到外部应用 实现实时事件通知与处理
Updates In-Memory Data Store
电信业业务系统的发展趋势
预付费业务与后付费业务的融合
§ 电信行业竞争的深入,要求电信运营商对所有 客户进行统一的、个性化的服务,为客户提供 一致的客户体验。 § 在3G时代,电信运营商之间的竞争将更加激烈 ,向客户提供更加灵活多变的资费策略和更加 丰富的业务选择将是竞争的一大优势! § 运营商为了控制欠费,降低运营风险,需要对 客户进行信用控制。
0 update mixed
70% select; 20% update; 10% insert
select
极高的处理能力
Oracle TimesTen 6.0, 4-CPU, 3 GHz x86 Xeon, 32-bit RHLinux
Transactions per second
300,000
极快的响应速度
TimesTen In-Memory Database 6.0, 4-CPU, 3 GHz x86 Xeon, 32-bit RHLinux
30
microseconds
20
28 millionths of a second
10
25 millionths of a second 9 millionths
呈现层
“ 针对性能要求高的 系统的应用层数据 管理解决方案”
应用层
数据库层
Oracle TimesTen支持“ 实时世界”
In Networks In Telecom On Wall Street In the Enter 定位服务 呈现业务
实时计费 认证鉴权 收入保障 网络/Qos管理 自服务门户 SOA
融合计费帐务系统
网络接口 授权 客户资料 帐务处理
Diameter CC
服务控制
帐户管理
套餐捆绑
累帐出账
服务逻辑
充值
开 放 接 口
资费/促销
信用管理
IVR/接口
批价
缴费
IN/SCP用于呼叫控制
融合计费帐务系统统一管理资费/产品/客户,执行 所有批价处理(包括实时批价)和主帐户余额管理
3G对BSS系统的新需求
XLA interface
移动网络
OCS
事件/会话业务控制请求 事件/会话业务控制响应 事件/会话业务控制请求 事件/会话业务控制响应 扣费、批价、预 留、生成配额 批价、预留、 生成配额
§
从归属地发出的呼叫可以获得免费 短信促销 配额使用完毕
配额使用完毕
事件/会话业务控制请求 事件/会话业务控制响应 扣费、批价、预 留、生成配额
Online Charging Functions MSC CAP Account Balance Management Function Rc GGSN Ro Account Session Based Charging Function Rr Online Charging System SGSN CAP
响应时间及吞吐量的比较
Oracle TimesTen 产品家族
Oracle TimesTen 产品家族
Product: Oracle TimesTen In-Memory Database Option: Replication –TimesTen to TimesTen Option: Cache Connect to Oracle
250,550
250,000 200,000 150,000 100,000 50,000 0
32,663
1 CPU 2 CPUs 4 CPUs
121,705
98,568
70,111
54,303
update
mixed
70% select; 20% update; 10% insert
select
针对物理内存而特别设计优化的数据库
Subdaemon
(multi-threaded process)
Data Store
Log Files Log Files dsName.log0 dsName.log1
Checkpoint dsName.ds1 Checkpoint dsName.ds0
Log Files dsName.logN
•
支撑新业务周期长 Ÿ 新业务可能需要修改SCP核心 不能支持灵活多变的资费策略 对数据业务的处理能力差 客户管理能力有限 帐户余额管理能力有限 成本较高 由于必须等待用户使用业务事件结束才能计费,这种模式 存在无法回避的技术难题
• • • • •
§ 基于CDR的BSS系统的计费信控能力有限
•
§ 客户资料不统一
IMS MRFC
Ro
MMS Relay / Server
Ro
Event Based Charging Function Re
Rating Function
Tariff Info Ro
GMLC
在线计费的技术要求
§ § 事件业务计费与会话业务计费 折扣/优惠/奖励
• • •
“ 下载50MB数据后,每MB价格 优惠为0.8元” 发送50条SMS后,本月以后短 信发送打5折 每次GPRS会话后用户获得免 费发送一条短信的奖励