什么时候“流水”竟成了本质
老刘 2021-7-23 9:34
各位老师早!
在数据结构设计上,有个场景一直有个疑问。类似于库存的进出流水记录,通过这些流水记录,是可以统计出实际库存的。但是对于需要频繁查询库存的应用,每次查库存都要实时统计,非常耗时。我们采用的做法就是建个缓存表,每次有进出流水,就同步更新一下这个缓存表。
想了解一下,老师们有没有别的做法呢?
乌贼 2021-7-23 12:04
历史的流水记录是不会变的。把昨天的记录定义为历史流水,把历史流水给预计算完保存起来。每次只要把历史结果和增量流水合并就行了。数据量大的话,可以1小时、10分钟一个周期。
UMLChina潘加宇
这个本身倒也没什么问题。
不过说的好像什么时候流水变成本质了,是中了“事件溯源”之类的毒吧。
以下是扩展:
电梯每天跑来跑去,没有记住去过哪里的“流水”,难道就没法知道当前状态了(是运动的还是停止的,运动的话是往上往下,停止的话停在哪里)?
2020年12月6日8时,吴某凡啪啪都某竹,这个是行为。
啪啪的过程被录成视频了,这个视频(流水)是数据的一种。
行为发生之后,对某对象的某些属性值造成了影响。跟有没有录视频没关系。
系统的数据结构以及行为对数据的影响,这些才是本质。举例:
类图描述系统需要维护哪些类和属性,其中“出库”“入库”等流水是可选的。
以及状态机图描述行为对属性值的影响。物品规格的状态机:
(只画了一部分,其他迁移大家自行脑补。如果没有提炼出类似这样的逻辑,)
我们的系统之所以复杂,就是因为要维护类似这样的逻辑。
但是“只要记流水就可以了”的做法很讨人喜欢,因为这不用思考,不用抽象,好像记录现象就可以,不用思考背后的逻辑,刚好可以作为偷懒的遮羞布。
但不管说得怎么天花乱坠,这些复杂逻辑不会凭空消失,你不去探索它,它也不会免费出现在你的系统里,除非已经有人帮你负重前行。
有吗?