可喷
一些标签应用的场景的现状:
1.作为一个独立的应用系统维护,但成本高,不易维护
2.标记,多数仅是微小的变化,跟随每条记录,场景较少,量大
3.独立标记的维护,比如redis,定期同步到存储,但一旦丢失,对下游系统影响较大
。。。
总的来说,就是没tag也不方便,但有tag偶尔要维护那么几下或作为低频的维护,又有点麻烦,那有没一种不需要大量update呢?
比如通过栈模式设计(也有点像波兰表达式),类似只+不-的做法(对于一些标签应用,实际操作可能要复杂些,配合中间件应用或许效果更好)
----总结1
A.标记不能独立,还是跟着DB走,对于更新问题,可以选择一些成本开销较小的策略,比如下列方案,类似栈结构
{
"stackName#0#tagName":{"id":"tagName","startT":1574661706330,"v":true}"skLen":0,
}例,xx项目,审核通过标t_audit_yes
{
"10172030112001#0#t_audit_yes":{"id":"t_audit_yes","startT":1574661706330}
}
,然后流程异步通知为审核中t_audited_to_process
{
"10172030112001#0#t_audit_yes":{"id":"t_audit_yes","startT":1574661706330,"v":true,"skLen":1},
"10172030112001#1#t_audited_to_process":{"id":"t_audited_to_process","startT":1574661706330}
}
,再次异步通知为审核不通过t_audit_no
{
"10172030112001#0#t_audit_yes":{"id":"t_audit_yes","startT":1574661706330,skLen":1},
"10172030112001#1#t_audited_to_process":{"id":"t_audited_to_process","startT":1574661706330},
"10172030112001#2#t_audit_no":{"id":"t_audit_no","startT":1574661706330}
}
简单伪代码:
※若同一个组有存在多个不同释义的tag,建议组名分开
※栈名,用6位日期+ipV4 9位+自增3位,保证不重复取栈名:
if 标签元数据 constains 目标元数据
获取对应stackName List
sort stackPosition
prepare 目标元数据结构
append 目标元数据
end