[]
type=info
推荐
请下载示例后使用活字格设计器打开,对照本页面的解读,深入了解详情。
数据归档用到的都是活字格的基础数据操作,其主要难点集中在于架构设计。
示例展示了如何基于启用了数据归档机制的出库单进行开发。对于出库单这种类似于“流水”的单据,通常可以设置为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)作为查询条件,将上个月的数据复制到冷数据库,然后在热数据库中执行删除
关注数据归档日志,及时处理归档错误