Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

2.2 DFF详情声明

设计一个DFF首先进行详情声明,包括DFF的触发类型、存储模式等信息的定义。

一、触发条件

MEMS中以状态为基础构建数学计算过程,以DataFrame流表示状态的流动变化,通过状态本身、状态触发事件、状态操作驱动状态的流转和变化,完成数学计算。

DFF被触发激活并从起始节点开始运行整个DFF网络的行为称为网络触发。DFF触发后从起始节点出发,依次执行各节点和边,直到结束节点,完成以状态张量为基本单元的数据计算和流动。

MEMS中的触发类型包括周期驱动、时间驱动、事件驱动、数据源驱动、手动驱动,具体说明如下表:

触发类型名称参数说明
SimpleRepeat周期驱动时间周期每隔一定时间周期,重复触发
TimeDrive时间驱动Cron表达式按照设定的时间触发
EventDrive事件驱动事件判断表达式当设定的事件规则满足时触发
DataSource数据源驱动/当数据源有变化时触发
Manual手动驱动/手动触发

DFF的多种触发机制支持,能够实现数据流动链路的及时性、正确性,既保证了系统对关键事件的实时响应能力,又避免了无效的周期性空转计算。

二、存储模式

MEMS对DFF的计算过程与结果设计了EveryTime、Once、Memory、Never 四种存储模式。根据具体要求,用户可以选择合理的存储模式,以实现功能需求和系统性能之间的平衡。以下为各存储模式的定义说明:

存储模式名称说明特点使用场景
EveryTime每次每次DFF流程执行都会保存结果到数据库。每次运行都会生成新的结果记录;
使用流程的开始时间作为唯一标识;
适合需要保留所有执行历史的场景;
会在数据库中存储完整的执行结果。
需要分析DFF执行历史趋势;
DFF多次执行结果需要对比;
DFF执行结果需要长期保存。
Once单次只保存DFF一次结果到数据库,后续执行不会覆盖或新增记录。无论执行多少次,只在数据库中保存一条记录;
不使用时间戳作为标识(固定使用 t=0);
适合只需要最新结果的场景;
会在数据库中存储结果,但只保存一次。
只需要最新执行结果;
结果相对稳定,不需要历史记录;
节省存储空间。
Memory内存只将DFF结果保存在内存中,不写入数据库。结果仅在内存中临时存储;
系统重启后结果会丢失;
执行速度快,因为不需要I/O操作;
适合临时计算或中间结果。
临时计算或中间结果;
对执行速度要求较高的场景;
结果不需要长期保存的情况。
Never从不不保存任何执行结果。执行完成后结果立即丢弃;
不占用任何存储空间;
适合只关注执行过程,不需要结果的场景。
测试或调试流程;
流程执行本身就是目的(如数据转换、发送通知等);
结果已经通过其他方式处理(如写入文件、发送到外部系统等)。

根据具体需求选择合适的存储模式,配置建议如下:

  • 需要完整历史记录:选择 EveryTime
  • 只需要最新结果:选择 Once
  • 追求执行速度:选择 Memory
  • 不需要保存结果:选择 Never