【问题标题】:Is there a term to describe tables where only the last value should be used?是否有一个术语来描述只应使用最后一个值的表?
【发布时间】:2018-04-02 01:03:33
【问题描述】:

在我的数据库中有每行代表一个实体的表,还有其他表中同一实体可以多次出现,但只有最新的条目是有效的。

例如,我有一个表customer,其中每一行代表一个客户,另一个表customer_membership_status 可以多次引用同一个客户,但假设只使用每个客户的最后一条记录。 customer_membership_status 中的数据永远不会更新,只会插入。

是否有一个术语来描述这种模式?我问这个问题是因为我想快速轻松地向其他人解释该表的预期用途。

【问题讨论】:

  • 事件溯源、日志记录、只写、版本控制

标签: sql database-design theory


【解决方案1】:

可能最好的术语是CQRSevent sourcing

使用事件流作为写入存储,而不是某个时间点的实际数据,避免了单个聚合上的更新冲突,并最大限度地提高了性能和可扩展性

事件溯源模式

不要只存储域中数据的当前状态,而是使用仅附加存储来记录对该数据执行的全部操作系列。存储充当记录系统并可用于实现领域对象。这可以通过避免同步数据模型和业务域的需要来简化复杂域中的任务,同时提高性能、可伸缩性和响应能力。它还可以为交易数据提供一致性,并维护可以启用补偿操作的完整审计跟踪和历史记录。

编辑:

仔细查看后,您可能还会阅读到SCD(Slowly Changing Dimension) Type 2。

此方法通过使用单独的代理键和/或不同的版本号为维度表中的给定自然键创建多条记录来跟踪历史数据。每次插入都会保留无限的历史记录。

【讨论】:

  • customer 的模式名称怎么样?将其称为常规表是否正确?
【解决方案2】:

临时表。这是一个时间戳/版本属性是键的一部分的表。 temporal / version 属性允许您识别每个客户的最新行。

【讨论】:

    猜你喜欢
    • 2011-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-17
    • 2017-04-01
    • 1970-01-01
    • 2013-02-16
    • 1970-01-01
    相关资源
    最近更新 更多