[]
        
(Showing Draft Content)

【示例解读】数据归档Demo

type=info

推荐

请下载示例后使用活字格设计器打开,对照本页面的解读,深入了解详情。

数据归档用到的都是活字格的基础数据操作,其主要难点集中在于架构设计。


冷数据缓存DEMO-v9.fgcc


示例展示了如何基于启用了数据归档机制的出库单进行开发。对于出库单这种类似于“流水”的单据,通常可以设置为1年的冷热分界线,即归档实际出库(不能用创建时间或申请时间,与财务结算相关的数据,推荐以“确认入账”的时间作为划分冷热数据的基准字段)距今超过1年的单据。这种做法有效降低了出库单表的数据行数,大幅提升当前年度的出库单的操作速度。

数据流向示意

数据归档流向示意图

出库单操作

  • 在热数据库和冷数据库上分别创建结构一致的出库单相关数据表,以及相关联的主数据和字典表

  • 创建出库单时,在热数据库上执行。Demo:“CreateOutputRecord”服务端命令

  • 修改出库单时,需要先判断是否为归档数据,根据业务需求决定是否支持修改。Demo:“UpdateOutputRecord”服务端命令

    • 与财务结算相关的“已确认”单据,通常不支持修改

    • 如确需修改,需要同步更新对应的统计数据。注意:分处在不同数据库上的事务是无法保证的,这里存在一定的数据一致性风险

  • 删除出库单时,处理策略同上

  • 查询出库单时,推荐提供热数据查询和冷数据查询两个WebAPI(服务端命令),对应的页面也建议分开。Demo:“QueryOutputRecord”和“QueryArchivedOutputRecord”服务端命令

    • 热数据查询的设计和实现仅在热数据库上执行

    • 在业务允许的前提下,减少对冷数据库查询相关功能的开发投入,适当精简冷数据查询功能

  • 获取出库单详情时,需要先判断是否为归档数据,在不同的数据库上完成查询。Demo:“GetOutputRecordByID”服务端命令

统计数据操作

出入库统计数据因为数据量不高,可不做归档,仅存放在热数据表。Demo:“QueryInOutRecords”服务端命令

主数据操作(以存货档案为例)

存货档案表中创建IsRemoved字段,以支持标记删除。Demo:“字典表_单位”表

删除时,仅需在热数据库上执行操作。Demo:“RemoveInventory”服务端命令

查询时,仅需在热数据库上执行操作,需要过滤掉标记为IsRemoved的行。Demo:“QueryInventory”服务端命令

数据归档

推荐采用成熟的ETL或归档工具,不建议自行开发

对于正常作息的企业应用场景,推荐每月1日凌晨执行归档操作

如果资源允许,强烈建议在数据归档前,对热数据库执行备份操作

处理主数据和字典表时,推荐全量覆盖

处理业务数据时,推荐以基准字段(Demo中的ApplyDate)作为查询条件,将上个月的数据复制到冷数据库,然后在热数据库中执行删除

关注数据归档日志,及时处理归档错误