不知道我是否应该/如何交叉发布这个......但万一有些人跟随 DBA 但不是这样......
在行版本控制的环境中,是否有一种普遍接受的方法来管理实时行与非实时行?如果没有,您尝试过哪些并取得了相当成功的方法?
(有关SO 线程的完整详细信息)。
我正在考虑实现对象版本控制,并增加需要同时拥有实时对象和草稿对象的方法,并且可以使用来自某人在这方面的经验的见解,因为我开始怀疑这是否可能没有潜在的可怕黑客攻击。
为了示例,我会将其分解为带有标签的帖子,但我的用例更一般(涉及缓慢变化的维度 - http://en.wikipedia.org/wiki/Slowly_changed_dimension)。
假设您有一个帖子表、一个标签表和一个 post2tag 表:
posts (
id
)
tags (
id
)
post2tag (
post_id fkey posts(id),
tag_id fkey tags(id)
)
Run Code Online (Sandbox Code Playgroud)
我需要几件事:
我一直在研究各种选择。到目前为止,我想出的最好的(没有点 #4/#5)看起来有点像 SCD type6-hybrid 设置,但不是有当前的布尔值,而是当前行的物化视图。出于所有意图和目的,它看起来像这样:
posts (
id pkey,
public,
created_at,
updated_at,
updated_by
)
post_revs (
id,
rev pkey,
public,
created_at,
created_by,
deleted_at
)
tags (
id pkey,
public,
created_at,
updated_at,
updated_by
)
tag_revs (
id,
public,
rev pkey, …Run Code Online (Sandbox Code Playgroud)