首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle Soda -版本现场使用案例

Oracle Soda -版本现场使用案例
EN

Stack Overflow用户
提问于 2020-07-10 19:04:31
回答 1查看 126关注 0票数 3

我正在研究Oracle SODA,因为它在我的Java项目中用作非sql的文档存储。

每个集合都表示为Oracle数据库中的一个SQL表。该表由一些字段组成,如包含JSON有效负载的BLOB和版本字段。

你能给我一些在版本字段中有用的用例吗?

如何使用?它是用于JSON版本控制,还是由数据库管理的私有字段?

EN

回答 1

Stack Overflow用户

发布于 2020-08-06 04:09:23

我假设您正在研究Java implementation of SODA (因为您提到您正在做一个Java项目)。

每个文档的版本组件由SODA自动维护,并用作文档内容已更改的指示器。只要文档内容发生变化(例如,由于替换操作符),版本就会发生变化。一种常见的有用方法是“乐观锁定”:在更新或删除事务中的文档之前,可以使用版本来确保文档没有更改。例如:

代码语言:javascript
复制
col.find().key("k1").version("123E...").replaceOneAndGet(...)

这将替换具有键k1的文档,但前提是其版本与提供的十六进制版本字符串匹配(即,如果在您的事务上次读取文档后,另一个事务更新了文档,则其存储的版本将与提供给version(...)方法的版本不匹配,替换将不会成功)。

如何获取文档的当前版本?最初使用insertAndGet(...)插入文档时,返回的结果文档将包含为该文档自动生成的版本。如果使用replaceOneAndGet(...)成功更新了文档,则返回的结果文档也将包含更新后的版本。

如果你正在构建一个REST应用,Version也可以用作一个eTag。

有不同的版本控制方法可用(这些方法可以在集合创建时选择)。请参阅他们对here的描述。可以在创建集合的过程中选择合适的方法。

目前,本地数据库的默认值是SHA256,但我们正在从它转向UUID (它的生成成本更低,并且不会阻碍我们将来要做的一些优化)。它已经成为某些云环境(自治数据库云服务)中SODA的新默认设置。如果您想了解更多关于不同版本控制方法的优缺点的信息,或者如何使用这些方法来配置集合,请让我知道。通常,我们建议使用UUID,除非有充分的理由选择另一种版本控制方法。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62832954

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档