注意事项:
- 公有云禁止使用这种优化方式❗️❗️❗️❗️❗️
- 为什么使用持久化:由于我们所有的弹性模型的数据都是统一的存在于一张大的表中,如果创建新建的业务模型预计数据量较大(私有云预计几十万)可考虑使用持久化,这种方式可以将新的业务模型单独在数据库中创建一张表,其操作效率会大大增加
- 支持持久化的模型类型: 标准弹性模型/月份标准业务弹性模型
- 操作时注意区分模型名和表名
持久化字段要全部小写,不能出现大写字母
操作步骤
修改弹性模型属性(表名需要保证当前数据库的唯一性)
新增弹性模型或者月份弹性模型时,附加信息写入{"persistence_table": "表名"}
- 历史月份弹性模型需修改model层元数据配置{"persistence_table": "表名"}
历史标准弹性模型调用接口hcm.db.flex.model.edit
{ "model": null, "id_": "模型名", "info": { "company_id": 公司id, "name": "模型名", "id": "模型名", "persistence_table": "表名" } }
进入页面,对字段进行持久化(将弹性字段直接转为实体字段)
common_model_list?filter_dict=%7B"model_name":"模型名"%7D&page_index=1&page_size=20&meta_state=solid&advance_filter_dict=%7B%7D&show_fields_key=%5B"type","is_logic","is_list"%5D&base_object_str=hcm.db.field.solid
注意❗️❗️❗️❗️❗️:
在持久化字段之前,需要检查字段类型是否正确,常见错误有
a. 月份和年份字段不能设置为日期或者时间类型,需要设置成字符
b. 整数类型和浮点数类型都设置成对应的类型,不要设置成字符重启后端服务
执行接口
db.adjust.persistence.table, 该接口无参数
执行数据迁移接口(在当前弹性模型已有数据的情况下需要执行该接口,无数据可忽略)
hcm.db.flex.field.persist.table.migrate
接口参数:{"model_name": "模型名“}
补充说明
如果模型已经操作过持久化了,还需要新增字段,非必要字段依然可以直接用新增弹性字段的方式处理,如果是关键字段(比如关联字段/查询字段/排序字段)则需要专门对字段做一下持久化,这种情况只需要重复上述2,3,4步骤即可