长生存期变量

有时您可能希望数据的存储时间比一条消息通过整个流的时间更长。实现此愿望的一种方法是将数据存储在数据库中。这对于长期持久性和事务性来说非常不错,但对于访问(尤其是写访问)来说却太慢。

或者,您也可以使用适当的“长生存期”ESQL 数据类型,将数据在内存中高速缓存一段时间。这样访问速度会比从数据库中访问更快,付出的代价是持续时间短并且没有事务性。

长生存期变量可通过在 DECLARE 语句中使用 SHARED 关键字创建。

消息路由样本演示了如何使用 DECLARE 语句定义共享变量。此样本演示了如何在数据库表中存储路由信息,并使用共享变量在消息流的内存中存储数据库表以提高性能。

长生存期数据类型有一个扩展的生存期,该生存期超出了一条消息通过节点的时间。在线程之间共享它们并且为消息流的生命而存在(严格地讲是在配置更改成消息流的时间段),如下表中所述:

  作用域 生存期 共享
短生存期变量
模式和模块 节点 节点中的线程 根本不
本地例程 节点 例程中的线程 根本不
本地块 节点 块中的线程 根本不
长生存期变量
共享节点 节点 节点的生存期 流的所有线程
共享流 流的生存期 流的所有线程
长生存期 ESQL 数据类型的特征包括:

这些数据类型通常在流中使用,只要涉及到流,数据表就是“只读”的。虽然表数据实际上不是静态的,但流并不更改它,并且在更改表数据之前有大量消息通过流。

一个示例是包含一天信用卡交易信息的表。此表每天都会创建并且每天的消息会针对它运行。然后停止流,更新该表,第二天的消息再运行。如果流高速缓存了数据而不是从数据库中读取每条消息,流的执行情况很可能会更好。

这些数据类型的另一个用途是从多条消息累积和集成数据。

相关概念
ESQL 节点和调试
ESQL 变量
ESQL 中用户定义的属性
相关参考
DECLARE 语句
ESQL ROW 数据类型
声明 | 商标 | 下载 | 书库 | 支持 | 反馈
Copyright IBM Corporation 1999, 2006 最后一次更新时间:2006/08/14
ak35120_