超越表:使用全局变量处理稀疏数据
IRIS 在处理和管理表格中的数据方面表现非常出色。
但正如您在标准包中所见,它在逻辑处理方面同样表现出色
分析、互操作性、所有与健康相关的处理,最重要的是,
来自我们全球合作伙伴的庞大应用程序集合。
所有这些应用程序都有一个共同的需求:
总有一些中小规模的信息需要处理,
,这些数据根本无法适应任何重复的表格结构。我常举的例子
就是一串文本行,比如我从妻子那里收到的购物清单。
- 它具有有限的生命周期,
- 维度有限,
- 结构难以预测
- ,且每一条都是独一无二的作品
将此类信息强行塞入表格是可行的,且这种情况经常发生。
但这种做法效率低下,特别是对于易变信息而言。
一种典型的做法是将信息保存在本地数组中:
但这可能会导致处理分区的内存达到极限。
因此,请将原始信息保存到一个全局数组中,该数组应采用与
处理机制的 GLOBAL 数组中保存原始信息。
这种方法速度很快,而且作为一名经验丰富的ObjectScript开发者,你会使用
“进程私有全局变量”(Process Private Global)来规避日志处理的开销
,一旦工作完成,它就会随你的进程一同消失,不留痕迹。
下一个挑战:
由于处理过程可能耗时较长,可能会阻塞进程中的交互式
用户界面。那么,你可以将处理任务移交给一个
后台作业,其优势在于可以预先选择要
:食品购物清单可能与园艺购物清单有所不同。
此时,您的“流程私有全局变量”将无法正常工作。它在后台环境中不可用。
通过在 IRISTEMP 中使用全局变量,可以保留“非日志”的优势。
此外,你还能获得另一个优势:
后台任务可以在完成或出现问题时,通过
该非私有全局变量返回信息。我承认,在
,但这一种是最简单的
,且采用异步工作方式。这也是另一项优势:
我不会被阻塞而被迫等待反馈,如果对后续步骤或活动不感兴趣,
对后续步骤或操作不感兴趣时,可以忽略该反馈。
微小的缺点:
如果未通过每日重启IRIS来完成,则需要采取一些清理措施。
此时,我已经听到了专家们的声音:
“这正是互操作性/集合分析所提供的功能!”
这基本上是正确的。主要区别在于处理的维度。
或者说:
如果你
明明可以开一辆从车库里悄悄开出来的小车去超市的话?
注:
在IRIS推出之前,ENSEMBLE需要更昂贵、范围更广的许可证。
现在它已被纳入“互操作性”范畴,功能更丰富、范围更广,甚至
对于一项相当有限的演练来说,这简直是过度配置了。
- 这是我为9月*26日文章赏金活动提交的投稿