在Web2.0应用程序中(通常使用Ajax类型的技术),我们通常不需要将所有数据下载到一页。
我们只需要下载必要的数据(比如说“开始数据”)&当我们需要其他数据(比如“其他相关数据”)时,我们只需要调用它们。
然而,有一个问题。也就是说,在我们下载“开始数据”时,我们获得了最新的最新数据。然后我们使用该数据数小时,但此时数据库中的“开始数据”被其他用户更改。
好的,现在我们在Web2.0应用程序的页面上有旧的“开始数据”。我们在数据库中也有新的(最新的)“开始数据”。
然后,我们得到“其他相关数据”。此时,用户不知道“开始数据”已更新,因此他们继续处理“其他相关数据”,假设“其他相关数据”处于OLD“开始数据”的上下文中“,但实际上”其他相关数据“已经在新的”开始数据“的背景下。
让我们看一个简单的例子。我们有2个表BeginData(ID1是主键)& OtherRelatedData(ID2是主键)全部相互关联。
At the beginning we have these 2 tables: BeginData ID1 - ID2 - Text 1 - 3 - begin data text 1 OtherRelatedData ID2 - Text 3 - other related data text 1
现在用户“A”下载了“开始数据”,因此他在这段记录“1 - 3 - begin data text 1
”上工作了好几个小时。同时,用户“B”修改了BeginData&因为它们是相关的所以“其他相关数据”也被修改了:
User "B" modified data: BeginData ID1 - ID2 - Text 1 - 3 - begin data text 2 OtherRelatedData ID2 - Text 3 - other related data text 2
现在用户“A”没有下载最新的“开始数据”&他正在使用“1 - 3 - begin data text 1
”,然后他得到“其他相关数据”,然后系统将为他提供“3 - other related data text 2
”,所以他认为“3 - other related data text 2
”是在“ 1 - 3 - begin data text 1
“但实际上并非如此。
这非常严重。如果我们有这么多相关数据,那么我们如何管理呢?
我们需要检查“开始数据”的一致性吗?每当我们得到“其他相关数据”时,1页上的“其他相关数据”?