这是我第六次问这个问题,也是最短的一次。之前的所有尝试都产生了更类似于博客文章而不是问题本身的东西,但我向您保证,我的问题是真实的,只是它涉及一个大主题,并且没有这个问题包含的所有细节,它将是不清楚我的问题是什么。所以这里...
我有一个数据库,它允许以一种奇特的方式存储数据,并提供我的业务流程所需的几个非标准功能。特点如下:
可能还有其他功能我忘了提及。
所有用户数据都Items
以 JSON 编码字符串 ( ntext
) 的形式存储在表中。所有的数据库操作都通过两个存储过程进行GetLatest
和InsertSnashot
,它们允许类似Git是如何操纵源文件中的数据进行操作。
结果数据在前端链接(JOINed)成完全链接的图,因此在大多数情况下不需要进行数据库查询。
也可以将数据存储在常规 SQL 列中,而不是以 Json 编码形式存储。然而,这增加了整体复杂性压力。
GetLatest
结果与指令形式的数据,请考虑下图进行解释:
该图显示了对单个记录所做更改的演变。图上的箭头显示了编辑所依据的版本(假设用户正在离线更新一些数据,与在线用户进行的更新并行,这种情况会引入冲突,基本上是两个版本的数据而不是一个)。
因此,GetLatest
在以下输入时间跨度内调用将产生以下记录版本:
GetLatest 0, 15 => 1 <= The data is created upon it's first occurance
GetLatest 0, 25 => 2 <= Inserting another version on top of first one overwrites the existing version
GetLatest 0, 30 => 3 <= The overwrite …
Run Code Online (Sandbox Code Playgroud)