Json Oracle Soda-版本字段用例

Json Oracle Soda-版本字段用例,json,oracle,soda,oracle-soda,Json,Oracle,Soda,Oracle Soda,我正在学习在我的Java项目中将它用作非sql文档存储 每个集合在Oracle数据库中表示为一个SQL表。此表由一些字段组成,如包含JSON负载的BLOB和VERSION字段 你能给我一些在版本领域有用的用例吗 如何使用?它是用于JSON版本控制,还是由数据库管理的私有字段?我假设您正在查看(因为您提到您正在做一个Java项目) SODA自动维护每个文档的版本组件,并将其用作文档内容已更改的指示器。只要文档内容发生变化(例如,由于替换操作员),版本就会发生变化。一种常用的方法是“乐观锁定”:在更

我正在学习在我的Java项目中将它用作非sql文档存储

每个集合在Oracle数据库中表示为一个SQL表。此表由一些字段组成,如包含JSON负载的BLOB和VERSION字段

你能给我一些在版本领域有用的用例吗


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

我假设您正在查看(因为您提到您正在做一个Java项目)

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

col.find().key("k1").version("123E...").replaceOneAndGet(...)
这将用键
k1
替换文档,但前提是其版本与提供的十六进制版本字符串匹配(即,如果自您的事务上次读取文档后,另一个事务更新了该文档,则其存储的版本与提供给
version(…)
方法的版本不匹配,替换将不会成功)

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

如果您正在构建REST应用程序,则版本也可以用作eTag

有不同的版本控制方法可用(可以在集合创建时选择这些方法)。看看他们的描述。可以在集合创建期间选择适当的方法

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