DocumentDB 上的并发性
Concurrency on DocumentDB
这是 DocumentDB 上的新问题。我们想为我们的应用程序使用 DocumentDB。我们有多个用户更改存储在 DocumentDB 中的数据。我们如何确保一个用户不会覆盖另一个用户的更改?
DocumentDB 具有 乐观并发性 并且每个文档都有一个 ETag
。如果在写入时ETag发生了变化,则写入失败(如果ETag发生变化,则意味着其他人修改了文档)。在这种情况下,您需要重新阅读和修改相关文档。
有关详细信息,请参阅常见问题 here。
DocumentDB 不防止并发。如果你 post 一个新版本的文件覆盖一个现有的旧文件,将会被覆盖。如果可以防止并发写入,则必须使用文档的时间戳。 documentDB 中的每个文档都有最后一个操作的时间戳。
在每次更新时,您都可以检查要更新的文档的时间戳是否与您检索到的文档相同,或者它是否已更改。如果更改了用户没有最新版本,您可以取消更新。
最好的办法是创建一个存储过程,这样您就可以将此逻辑放入存储过程中,并使您的应用程序无法识别它。
这是 DocumentDB 上的新问题。我们想为我们的应用程序使用 DocumentDB。我们有多个用户更改存储在 DocumentDB 中的数据。我们如何确保一个用户不会覆盖另一个用户的更改?
DocumentDB 具有 乐观并发性 并且每个文档都有一个 ETag
。如果在写入时ETag发生了变化,则写入失败(如果ETag发生变化,则意味着其他人修改了文档)。在这种情况下,您需要重新阅读和修改相关文档。
有关详细信息,请参阅常见问题 here。
DocumentDB 不防止并发。如果你 post 一个新版本的文件覆盖一个现有的旧文件,将会被覆盖。如果可以防止并发写入,则必须使用文档的时间戳。 documentDB 中的每个文档都有最后一个操作的时间戳。
在每次更新时,您都可以检查要更新的文档的时间戳是否与您检索到的文档相同,或者它是否已更改。如果更改了用户没有最新版本,您可以取消更新。
最好的办法是创建一个存储过程,这样您就可以将此逻辑放入存储过程中,并使您的应用程序无法识别它。