Times Ten Training

2,635 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,635
On SlideShare
0
From Embeds
0
Number of Embeds
29
Actions
Shares
0
Downloads
69
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • 第一,传统的数据库和应用程序是两个不同的应用系统,它们之间的通讯是通过 IPC 连接来实现的。而 TimesTen 则是直接把数据库的内存映射到 应用程序的地址空间中,简单来说,这时候 TimesTen 访问数据库中的数据,就象访问应用程序自己的数组、字符串变量一样,只不过 TimesTen 有一 套完善的机制来实现数据的一致性和完整性。这种直接嵌入到应用程序的运行地址空间机制比 IPC 要高效很多。 第二,传统的数据库都是 Disk-based 的,即预先假定数据主要是放在磁盘中的,所以它的所有优化、查询算法都是以磁盘存储为主的。举个简单的例子,比如说要查找一行记录,传统的数据库要先查找 索引,通过索引查找该记录所在的页面,然后通过查找该页是已经在内存中,还是要从磁盘的数据文件中读取出来。而 TimesTen 是预先就把所有的数据 Load 到内存中,它知道所有的数据一定在内存里面,不会再通过其它的调用去决定数据在哪儿,这其中就少走了很多的弯路,基本没有磁盘的 IO ,而且都在内 存中,效率也就高了很多。所以即使传统的数据库把数据都预先 Load 的内存中,也是达不到 TimesTen 的效果的。因为传统数据库的索引机制、优化算 法、复杂的数据结构、数据的获取机制等等因素限制了它的性能。 第三,由于 TimesTen 启动的时候预先将所有的数据 Load 到内存中,所以它没有页进页出,而且也不需要类似与 Oracle 中的 SGA 缓冲区的管理。
  • create table a(a0 char(128) ,a1 char(129),a2 varchar2(127),a3 varchar2(128),a4 varchar2(129),a5 varchar2(127) not inline,a6 varchar2(129) inline);
  • Times Ten Training

    1. 1. 福建富士通信息软件有限公司 Fujian Fujitsu Communication Software Co., Ltd.(FFCS) 二零零九年十月二十八日
    2. 2. <ul><li>TimesTen 是什么? </li></ul><ul><ul><li>TimesTen 的发展 </li></ul></ul><ul><ul><li>TimesTen 的特点 </li></ul></ul><ul><li>TimesTen 基础 </li></ul><ul><ul><li>TimesTen 的结构 </li></ul></ul><ul><ul><li>TimesTen 的使用 </li></ul></ul><ul><li>可选功能简介 </li></ul><ul><ul><li>Cache Connect to Oracle </li></ul></ul><ul><ul><li>Replication </li></ul></ul>目录
    3. 3. TimesTen 是什么? <ul><li>名称: Oracle TimesTen InMemory Database </li></ul><ul><li>目的:缩短数据库层的响应时间 </li></ul><ul><li>特点: </li></ul><ul><ul><li>• TimesTen 是一个完整的数据库 </li></ul></ul><ul><ul><li>• 相关数据全部储存在计算机内存中 </li></ul></ul><ul><ul><li>• 算法的简化成就更少的 CPU 开销 </li></ul></ul><ul><ul><li>• 比 Oracle 数据库的 DB 缓存更快 </li></ul></ul>Ten Times
    4. 4. TimesTen 发展 1992 年: TimesTen 源于 HP 试验室,当时主要目的是针对电信网络应用,使用内存数据库技术进行一些深入研究。 1996 年:由该团队核心人员成立独立运作公司,并发布 TimesTen 第一个商用版本( TimesTen2.0 ) 。 2001 年:产品中增加 Cache Connect 组件,以至产品可以和 Oracle 无缝集成 。 2005 年:由 Oracle 收购,到今天为止,该产品已经有 15 年历史,有多达 11 个主要的发布版本产生,在 TimesTen 被收购之前, TimesTen 在全球已经有 1500+ 的企业用户(比如:爱立信、 CISCO 、 amdocs 、 JPMorgan 、 AVAYA 等等) 。 2009 年: 7 月 29 日,甲骨文宣布推出 Oracle 内存数据库 TimesTen 11g 和 Oracle 内存数据库高速缓存 11g(Oracle In-Memory Database Cache) 。 2007 年: Oracle 发布 Timesten 7.0.5 版本
    5. 5. TimesTen 产品 Product : Oracle TimesTen In-Memory Database Option : Cache Connect to Oracle Option : Replication - TimesTen to TimesTen
    6. 6. TimesTen 特点 <ul><li>高速数据处理 </li></ul><ul><ul><li>微秒级别的响应时间 </li></ul></ul><ul><li>采用标准技术 </li></ul><ul><ul><li>支持大部分 SQL92 的功能,包括索 引,物化视图 </li></ul></ul><ul><ul><li>减少开发难度和开发时间 </li></ul></ul><ul><ul><li>减少维护成本 </li></ul></ul><ul><li>高可靠性 </li></ul><ul><ul><li>足以满足证券行业等等业务的高可靠性要求 </li></ul></ul>
    7. 7. <ul><li>TimesTen 是什么? </li></ul><ul><ul><li>TimesTen 的发展 </li></ul></ul><ul><ul><li>TimesTen 的特点 </li></ul></ul><ul><li>TimesTen 基础 </li></ul><ul><ul><li>TimesTen 的结构 </li></ul></ul><ul><ul><li>TimesTen 的使用 </li></ul></ul><ul><li>可选功能简介 </li></ul><ul><ul><li>Cache Connect to Oracle </li></ul></ul><ul><ul><li>Replication </li></ul></ul>目录
    8. 8. TimesTen 的结构
    9. 9. 内存结构 <ul><li>Data Store </li></ul><ul><li>保存所有数据库数据的区域 </li></ul><ul><li>日志缓存 </li></ul><ul><li>用于暂时存储记录 Data Store 变更的日志 </li></ul><ul><li>临时数据区域 </li></ul><ul><li>临时存储执行计划等数据的共享区域 </li></ul><ul><li>排序等等操作临时使用 </li></ul>
    10. 10. 后台进程 <ul><li>常驻后台进程 </li></ul><ul><ul><li>主进程 (Daemon) </li></ul></ul><ul><ul><ul><li>• 监听功能 (Listener) </li></ul></ul></ul><ul><ul><ul><li>• 读取配置文件 odbc.ini </li></ul></ul></ul><ul><ul><ul><li>• 分配和监视 Sub Daemon </li></ul></ul></ul><ul><ul><li>子进程 (Sub Daemon) </li></ul></ul><ul><li>• 载入 / 卸载 Data Store </li></ul><ul><li>• 将日志缓存写入日志文件 </li></ul><ul><li>• 监视和解除死锁 (Dead Lock) </li></ul><ul><li>• 执行检查点 (Checkpoint) </li></ul><ul><li>可选后台进程 </li></ul><ul><ul><li>Replication 代理 </li></ul></ul><ul><li>• 实施 Replication </li></ul><ul><ul><li>Cache 代理 </li></ul></ul><ul><li>• 实施 Cache Connect </li></ul><ul><ul><li>TimesTen 服务器 </li></ul></ul><ul><li>• 采用客户端 / 服务器连接时的服务器进程 </li></ul>
    11. 11. 文件结构 Transaction log memory buffer Transaction log files Background log flusher persists transaction data to disk Checkpoint files Updates Committed transactions Application Application <ul><li>odbc.ini 配置文件 </li></ul><ul><li>• 用于记录各个 DSN 的参数 </li></ul><ul><li>Transaction log files 事务日志 </li></ul><ul><li>• 保存数据库的变更 </li></ul><ul><li>• 原有文件超过一定的大小后,自动生成新的日志文件 </li></ul><ul><li>• 与检查点文件一起用于数据库的恢复 </li></ul><ul><li>• 用于 redo(recovery) 和 undo(rollback) </li></ul><ul><li>Reserve Space Files </li></ul><ul><li>• 用于当日志文件所在磁盘空间满时,回滚事务 </li></ul><ul><li>Chenckpoint files 检查点文件 </li></ul><ul><li>• 保存于磁盘的数据库镜像。 </li></ul><ul><li>• TimesTen 启动时,检查点文件的数据被装载到内存中 </li></ul><ul><li>• TimesTen 运行时,隔一段时间进行一次检查点处理,仅保存改变的数据块并删除无用的日志文件 </li></ul><ul><li>• TimesTen 关闭时,用于保存 Data Store 内的数据 </li></ul><ul><li>• 出于安全考虑,存在两个文件 </li></ul>Reserve Space Files Memory-resident data store Periodic snapshot of data store to checkpoint files 2 1
    12. 12. TimesTen 连接模式 <ul><li>Direct Connect Mode - 直接驱动器连接 </li></ul><ul><ul><li>• Oracle 推荐的连接方式,具有最佳的性能 </li></ul></ul><ul><ul><li>• TimesTen 数据库与应用程序处于同一台主机上,同处于应用程序层 </li></ul></ul><ul><ul><li>• 应用程序通过 ODBC/JDBC 直接对数据库进行访问 </li></ul></ul><ul><ul><li>• 与传统的客户端 / 服务器的模式相比,减少了 TCP/IP 、 IPC 方面的开销 </li></ul></ul><ul><li>Client/Server Connect Mode - 客户端 / 服务器连接 </li></ul><ul><li>• 传统的连接方式,性能比直接驱动器连接差 </li></ul><ul><li>• TimesTen 数据库与应用程序处于不同的主机上 </li></ul><ul><li>• 客户端与服务器一般以 TCP/IP 方式连接,存在网络开销 </li></ul>
    13. 13. First Data Store Connection <ul><ul><ul><li>1). 应用程序建立与 TimesTen main daemon 的连接 . </li></ul></ul></ul><ul><ul><ul><li>2). main daemon 分配一个 subdaemon 管理 data store. </li></ul></ul></ul><ul><ul><ul><li>3). subdaemon 为 data store 创建一块共享内存 (shared memory segment). </li></ul></ul></ul><ul><ul><ul><li>4). subdaemon 加载 checkpoint files 数据到共享内存 . </li></ul></ul></ul><ul><ul><ul><li>5). subdaemon 应用事务日志前滚或者回滚 . </li></ul></ul></ul><ul><ul><ul><li>6). 应用程序将共享内存映射到自己的地址空间 . </li></ul></ul></ul><ul><li>当应用程序与 data store 建立连接后, </li></ul><ul><li>仅需进行 1) 、 6) 两步操作 </li></ul>
    14. 14. <ul><li>TimesTen 是什么? </li></ul><ul><ul><li>TimesTen 的发展 </li></ul></ul><ul><ul><li>TimesTen 的特点 </li></ul></ul><ul><li>TimesTen 基础 </li></ul><ul><ul><li>TimesTen 的结构 </li></ul></ul><ul><ul><li>TimesTen 的使用 </li></ul></ul><ul><li>可选功能简介 </li></ul><ul><ul><li>Cache Connect to Oracle </li></ul></ul><ul><ul><li>Replication </li></ul></ul>目录
    15. 15. 创建 data store <ul><ul><ul><li>Window: 控制面板- > 管理工具- > 数据源 (ODBC) - > 系统 DSN </li></ul></ul></ul>
    16. 16. Data Store RAM Policy C:Documents and SettingsChenLi> ttadmin -query tttest RAM Residence Policy : inUse plus grace period RAM Residence Grace (Secs) : 30 Replication Agent Policy : manual Replication Manually Started : False Cache Agent Policy : manual Cache Agent Manually Started : False C:Documents and SettingsChenLi> ttAdmin -ramPolicy always tttest RAM Residence Policy : always Replication Agent Policy : manual Replication Manually Started : False Cache Agent Policy : manual Cache Agent Manually Started : False <ul><li>内存策略: </li></ul><ul><li>inUse: Load store into memory only if the store has at least one connection (default) </li></ul><ul><li>always : Always keep the store resident in memory </li></ul><ul><li>manual :Manually load and unload the store </li></ul>
    17. 17. 数据类型 <ul><li>数据类型 TypeMode: </li></ul><ul><li>Oracle type mode ( recommended and default mode ) </li></ul><ul><li>Timesten type mode ( provided for backward compatibility ) </li></ul><ul><li>存储方式 : </li></ul><ul><li>固定长度: inline </li></ul><ul><li>可变长度: inline or out-line </li></ul><ul><li>Inline 与 out-line 区别: </li></ul><ul><li>Inline: 空间的分配和普通的 int , char 等类型一样,都是放在表所在的连续空间中,当可变长度的长度小于等于 128 字节时缺省是 inline 。定义多少实际消耗多少。性能好。 </li></ul><ul><li>Out-line : 放在一个另开的空间,比如堆中,当可变长度的长度大于 128 字节时,缺省是 not inline 。 out-line 存放的好处是节省空间。 </li></ul>
    18. 18. DDL/DML <ul><ul><li>DDL </li></ul></ul><ul><ul><ul><li>CREATE TABLE </li></ul></ul></ul><ul><ul><ul><li>CREATE GLOBAL TEMPORARY TABLE </li></ul></ul></ul><ul><ul><ul><li>AGING LRU/AGING USE </li></ul></ul></ul><ul><ul><ul><li>DROP TABLE </li></ul></ul></ul><ul><ul><ul><li>TRUNCATE TABLE </li></ul></ul></ul><ul><ul><ul><li>ALTER TABLE </li></ul></ul></ul><ul><ul><ul><li>CREATE INDEX ---T-tree index / hash index </li></ul></ul></ul><ul><ul><ul><li>System tables </li></ul></ul></ul><ul><ul><ul><li>Ttsize </li></ul></ul></ul><ul><ul><li>DML </li></ul></ul><ul><ul><li>select/insert/update/delete/merge </li></ul></ul><ul><ul><li>function </li></ul></ul><ul><ul><li>prepare/exec </li></ul></ul>
    19. 19. 管理工具 <ul><ul><li>ttBulkCp </li></ul></ul><ul><ul><li>ttBackup </li></ul></ul><ul><ul><li>ttRestore </li></ul></ul><ul><ul><li>ttMigrate </li></ul></ul><ul><ul><li>ttSchema </li></ul></ul><ul><ul><li>snmpTrap </li></ul></ul>
    20. 20. <ul><li>TimesTen 是什么? </li></ul><ul><ul><li>TimesTen 的发展 </li></ul></ul><ul><ul><li>TimesTen 的特点 </li></ul></ul><ul><li>TimesTen 基础 </li></ul><ul><ul><li>TimesTen 的结构 </li></ul></ul><ul><ul><li>TimesTen 的使用 </li></ul></ul><ul><li>可选功能简介 </li></ul><ul><ul><li>Cache Connect to Oracle </li></ul></ul><ul><ul><li>Replication </li></ul></ul>目录
    21. 21. <ul><li>缓存组:储存在 TimesTen 中供应用程序读写的 Oracle 数据 </li></ul><ul><li>缓存组可以存储一张或者几张 Oracle 表,或者是 Oracle 表的部分内容 </li></ul><ul><li>每个缓存组由一个根表 (root table) 和若干子表 (Child table) 组成 </li></ul><ul><li>每张子表必须与根表或者别的子表之间存在外键约束 </li></ul>Cache Group (缓存组)简介
    22. 22. <ul><li>将数据从 Oracle 数据库复制到 TimesTen 中( REFRESH ) </li></ul><ul><li>将 TimesTen 中改变过的数据通过同步 / 非同步的方式写入 Oracle 数据库中( FLUSH ) </li></ul><ul><li>缓存组 (Cache Group) 可以设置成为只读或读写模式 </li></ul><ul><li>“ 透过 (Pass Through)” 功能允许只连接 TimesTen 但可以同时访问 TimesTen 和 Oracle 数据库 </li></ul>Cache Group 的特征
    23. 23. <ul><li>System-managed </li></ul><ul><ul><li>READONLY </li></ul></ul><ul><ul><ul><li>Oracle 数据库中更新的数据通过非同步模式反映到 TimesTen 中 </li></ul></ul></ul><ul><ul><li>SYNCHRONOUS WRITETHROUGH ( SWT ) </li></ul></ul><ul><ul><ul><li>TimesTen 中更新的数据通过同步模式写入 Oracle 数据库 </li></ul></ul></ul><ul><ul><li>ASYNCHRONOUS WRITETHROUGH ( AWT ) </li></ul></ul><ul><ul><ul><li>TimesTen 中更新的数据通过非同步模式写入 Oracle 数据库 </li></ul></ul></ul><ul><li>USERMANAGED </li></ul><ul><ul><li>用户自定义 </li></ul></ul>Cache Group 类型
    24. 24. <ul><li>每隔一定时间,缓存代理将数据复制到 TimesTen </li></ul><ul><li>适合用于储存几乎没有更新的数据 </li></ul>READONLY (只读) TimesTen 对没有缓存的表的操作被 Pass Through* DML 被 PassThrough* AUTOREFRESH * 具体操作取决于 PassThrough 的设置 READONLY Application cache agent
    25. 25. <ul><li>DML 被 Pass Through 给 Oracle </li></ul><ul><li>等待 Oracle 完成 COMMIT </li></ul><ul><li>Oracle 无法 COMMIT 的话 TimesTen 会被 ROLLBACK </li></ul><ul><li>适合仅希望通过使用 TimesTen 加速 SELECT 操作的情况 </li></ul>SWT (同步写入) * 具体操作取决于 PassThrough 的设置 cache agent TimesTen Manual load Application SYNCHRONOUS WRITETHROUGH Automatically propagate updates
    26. 26. <ul><li>Application </li></ul><ul><ul><li>(0) SELECT <..> </li></ul></ul><ul><ul><li>UPDATE <..> </li></ul></ul><ul><ul><li>INSERT <..> </li></ul></ul><ul><ul><li>(1) COMMIT </li></ul></ul><ul><li>TimesTen </li></ul><ul><ul><li>(2) Propagate transaction to Oracle (UPDATE, INSERT, COMMIT) </li></ul></ul><ul><li>Oracle </li></ul><ul><ul><li>(3) Commit transaction and return to TimesTen </li></ul></ul><ul><li>TimesTen </li></ul><ul><ul><li>(4) Commit to transaction log </li></ul></ul><ul><ul><li>(5) Return control to application </li></ul></ul>SWT 数据流程 1 cache agent TimesTen transaction log 2 3 4 SYNCHRONOUS WRITETHROUGH TimesTen Application 5
    27. 27. <ul><li>DML 被 Pass Through 给 Oracle </li></ul><ul><li>不等待 Oracle 完成 COMMIT </li></ul><ul><li>Oracle 无法 COMMIT 的话将错误信息写入错误日志 </li></ul><ul><li>适合希望通过 TimesTen 加速 DML 操作的情况 </li></ul>AWT (异步写入) * 具体操作取决于 PassThrough 的设置 Automatically propagate updates Manual load replication agent cache agent ASYNCHRONOUS WRITETHROUGH TimesTen Application
    28. 28. <ul><li>Application </li></ul><ul><ul><li>(0) SELECT <..> </li></ul></ul><ul><ul><li>UPDATE <..> </li></ul></ul><ul><ul><li>INSERT <..> </li></ul></ul><ul><ul><li>(1) COMMIT </li></ul></ul><ul><li>TimesTen </li></ul><ul><ul><li>(2) Commit to transaction log </li></ul></ul><ul><ul><li>(3) Return control to application </li></ul></ul><ul><ul><li>(4) Propagate transaction to Oracle (UPDATE, INSERT, COMMIT) </li></ul></ul><ul><li>Oracle </li></ul><ul><ul><li>(5) Commit transaction and return to TimesTen </li></ul></ul>AWT 数据流程 * 具体操作取决于 PassThrough 的设置 2 Application Application 4 5 TimesTen transaction log ASYNCHRONOUS WRITETHROUGH TimesTen 3 1
    29. 29. <ul><li>0 1 2 3 </li></ul>PassThrough 的级别 在 TimesTen 出错的 DML Err O O O 对 READONLY 执行 DML Err Err O O 在 TimesTen 不出错的 DML T T O O DDL T T T O O : 在 Oracle 中执行 T : 在 TimesTen 中执行
    30. 30. Cache group 例子 配置 cache group
    31. 31. <ul><li>TimesTen 是什么? </li></ul><ul><ul><li>TimesTen 的发展 </li></ul></ul><ul><ul><li>TimesTen 的特点 </li></ul></ul><ul><li>TimesTen 基础 </li></ul><ul><ul><li>TimesTen 的结构 </li></ul></ul><ul><ul><li>TimesTen 的使用 </li></ul></ul><ul><li>可选功能简介 </li></ul><ul><ul><li>Cache Connect to Oracle </li></ul></ul><ul><ul><li>Replication </li></ul></ul>目录
    32. 32. <ul><li>基于事务 (Transaction) 日志 </li></ul><ul><li>Replication 代理通过 TCP/IP Stream Socket 收发更新信息 </li></ul><ul><li>可以选择同步 / 非同步模式 </li></ul><ul><li>基于时间戳、解决更新版本冲突问题 </li></ul>Replication 的特征 Replication - TimesTen to TimesTen Network In-Memory Database TimesTen Libraries Application TimesTen Libraries Application TimesTen Libraries Application In-Memory Database TimesTen Libraries Application TimesTen Libraries Application TimesTen Libraries Application
    33. 33. Replication 的组建方式
    34. 34. Replication 的模式 <ul><li>异步模式 </li></ul><ul><ul><li>不等待接收方的反馈 </li></ul></ul><ul><li>同步模式 </li></ul><ul><ul><li>回执模式 (RETURN RECEIPT) </li></ul></ul><ul><li>可以检测无法同步的情况 </li></ul><ul><ul><li>双重保险模式 (RETURN TWOSAFE) </li></ul></ul><ul><li>保证完全同步 </li></ul>高速 数据完整性
    35. 35. 异步模式 1.commit 2.Commit 完成 Rep agent Rep agent 3. 写入日志文件 日志文件 日志文件 8. 写入日志文件 7. 将更新信息 写入 Data Store 5. 发送更新信息 4. 生成更新信息 6. 确认更新信息发送成功 发送方 接收方 应用程序 Data Store 日志缓存 Data Store 日志缓存
    36. 36. 回执模式 (RETURN RECEIPT) 1.commit 6.Commit 完成 Rep agent Rep agent 2. 写入日志文件 日志文件 日志文件 8. 写入日志文件 7. 将更新信息 写入 Data Store 4. 发送更新信息 3. 生成更新信息 5. 确认更新信息发送成功 发送方 接收方 应用程序 Data Store 日志缓存 Data Store 日志缓存
    37. 37. 双重保险模式 (RETURN TWOSAFE) 1.pre-commit 9. 完成 Data Store 日志缓存 Rep agent Rep agent 8. 写入日志文件 日志文件 日志文件 5. 写入日志文件 4 . 将更新信息 写入 Data Store 3. 发送更新信息 2. 生成更新信息 6. 确认更新信息发送成功 发送方 接收方 7.Commit 应用程序 Data Store 日志缓存
    38. 38. replication 例子 配置 Master-subscriber 模式 replication
    39. 39. 诚谢领导关注和聆听!

    ×