TimesTen数据交换技术提供在Oracle数据库和TimesTen数据管理器之间进行连接和双向数据传送。数据交换技术也使得能够方便的捕获和处理进入到TimesTen数据管理器的大流量事件流,并且能进行并发传送数据到Oracle数据库。
TimesTen允许通过创建cache group来高速缓存Oracle数据,以在TimesTen中映射一个或多个Oracle表。
允许高速缓存Oracle数据的TimesTen联合特征就称为Cache Connect to Oracle。
一个cache group就是描述被高速缓存到TimesTen数据存储中的Oracle数据。高速缓存集合可以创建来自一个单表的所有或部分数据,或一个相关的Oracle数据表集。
高速缓存集合可以使用CREATE CACHE GROUP SQL语句或基于浏览器的Cache Administrator(Chapter 6, “CacheAdministrator.”)来创建。
图 1.1 显示名为target_customers高速缓存集合缓存Oracle表tablecustomer。高速缓存集合中的数据是存储在Oracle数据库中所有用户的大数据集的一个子集。
图1.1高速缓存一个表
如果定义一个root table和多个child tables,则可以在同一个高速缓存集合中缓存多个Oracle表。在一个高速缓存集合中只能有一个root table。
在拥有多个表的高速缓存集合中,每个子表必须通过一个外键约束连接到高速缓存集合中的根表或另一个子表。尽管TimesTen中缓存的表必须使用外键连接约束,但这些表在Oracle实例中不一定必须有连接。缓存集合中的根表不能通过外键约束来引用缓存集合中的任何其它表。所有缓存集合中的其它表都是子表
从Oracle加载到TimesTen缓存集合中的基本单位是cache instance,用来描述通过外键与根表特定行相关联的行集。缓存集合中每个表中粗体显示的是由根表中主键为122标识的缓存实例。此cache instance key确定根表中的行和引用此行的子表中所有的行。
图 1.2显示缓存集合target_customers中的表。根表是customer,orders和order_item是子表。
图1.2高速缓存多个表
如图 1.3所示,flush或propagate表示从TimesTen缓存拷贝表数据到Oracle,load或refresh表示从Oracle拷贝数据到TimesTen缓存。
图1.3在TimesTen和Oracle之间交换数据
至于怎样将缓存集合中的数据传送到Oracle和从Oracle刷新数据,将依据所选择的缓存集合的类型。
缓存集合的基本类型为:
• READONLY缓存集合。
READONLY缓存集合通过AUTOREFRESH机制来将Oracle表中的更新进行强制缓存以应用到TimesTen。
• SYNCHRONOUS WRITETHROUGH (SWT) 缓存集合。
SYNCHRONOUS WRITETHROUGH (SWT)缓存集合将强制把集合中的缓存数据更新至TimesTen,并且发送到Oracle。SWT缓存集合的更新将被进行同步提交(Oracle)。
• ASYNCHRONOUS WRITETHROUGH (AWT)缓存集合。
ASYNCHROUNOUS WRITETHROUGH (AWT)缓存集合将强制把集合中的缓存数据更新至TimesTen,并且发送到Oracle。AWT缓存集合的更新将被进行异步提交(Oracle)。
• USERMANAGED缓存集合。
USERMANAGED缓存集合可以进行自定义。例如,USERMANAGED缓存集合中的表可以拥有READONLY或PROPAGATE属性。