回顾:通过栈结构进行update

可喷

一些标签应用的场景的现状:

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

 

 

你可能感兴趣的:(碎碎谈)