发表于: 2006.06.26 17:36
分类: TIMESTEN
出处: http://yangtingkun.itpub.net/post/468/126815
---------------------------------------------------------------
文档在这章介绍了Cache Connect to Oracle的概念,这章的内容也是目前我最感兴趣的。
Timesten中可以建立Oracle数据的cache group。Cache group可以缓存Oracle中的一个表或一系列相关表。可以缓存表中的所有的数据,也可以选择表中个别的行或列。
Cache Connect支持下列属性:
可以读、写Cache groups中的对象;
Cache group可以自动或者手动进行刷新;
Cache group对象的修改可以自动或手动发送到Oracle数据库。
Timesten的cache group中cache Oracle的表称为基表。Timesten的Oracle数据管理器处理cache group的所有的同步操作。而Timesten中的cache agent进程,处理cache group的异步操作。
Cache group的装载和修改:
Oracle中的数据最初装载到Timesten中,生成Cache group。装载完成后,缓存的数据可以在Timesten数据库中修改,也可以在Oracle数据库中修改。Cache Connect可以自动将修改传播到Oracle数据库,同样,可以自动的从Oracle数据库中刷新到Cache gorup。
Oracle到Timesten的修改(刷新):
Timesten支持三类刷新方式:完全刷新、增量刷新和手工刷新。
这里可以看出Timesten和Oracle之间没有好的方法进行无缝连接。对于完全刷新,个人感觉肯定是不可取的,尤其是大数据量的情况,而且,这种方式的效率也很低下。增量刷新显然是最合适的,但是根据文档的描述,配置增量刷新,居然需要在Oracle数据库端建立触发器。无论从性能上讲还是从部署复杂程度上说,都对这种触发器方式的增量持怀疑态度。而对于所谓的第三种方式,感觉只不过是刷新由自动变为手工方式,个人感觉刷新方式应该仍然是完全或增量其中的一种。
Timesten到Oracle的修改(传播):
传播包括两种方式,即PROPAGATE和FLUSH。
对于PROPAGATE可以指定下面三种方式:
创建用户管理的CACHE GROUP时指定PROPAGATE语句;
创建同步传播CACHE GROUP;
创建异步传播CACHE GROUP。
而对于FLUSH,则需要创建FLUSH CACHE GROUP,且不能指定PROPAGATE选项。
个人感觉PROPAGATE和FLUSH的最大区别就是PROPAGATE是自动完成,而FLUSH需要手工进行。但是FLUSH不会将DELETE操作传播到Oracle的规则,很是使人疑惑。
PASSTHROUGH特性:
简单的说PASSTHROUGH特性就是将Timesten接收到的SQL语句直接传回到Oracle,在Oracle端执行。可以将一些包含Timesten不支持的语法的SQL或者包含了Timesten没有Cache的表的SQL发送到Oracle执行。个人感觉PASSGHROUGH功能还是相当方便的,这样可以极大的减少了程序从Oracle移植到Timesten的成本。
总的来说,就是Timesten的刷新机制还要很多疑问,需要具体的测试才能对刷新机制有一个更清晰的了解。Timesten还有一篇文档专门描述Cache Connect to Oracle,希望在那里可以找到一些更为有价值的东西。
这一章介绍了两种Cache group:系统管理Cache group和用户管理Cache group。
感觉用户管理的Cache group的可定制功能更强一些。包括Cache group的包含的对象、Cache Instances的选择,Cache装载技术的选择以及Cache过期的算法都可以进行设置。而系统管理的Cache group功能相对比较简单,提供了READONLY和WRITEGHROUGH两种基表的Cache group设置。
最后文档介绍了Cache group的复制。值得注意的是,通过程序对Cache group的修改是会传播到Oracle中,而通过复制手段对Cache group的修改不会传播到Oracle中。
总体来说,这篇关于Cache Connect to Oracle的文档还算比较详细,但是没有包含我比较感兴趣的冲突解决方案方面的内容,希望Timesten那篇专门的文档中有这方面的介绍。











