Json Oracle Soda-版本字段用例
我正在学习在我的Java项目中将它用作非sql文档存储 每个集合在Oracle数据库中表示为一个SQL表。此表由一些字段组成,如包含JSON负载的BLOB和VERSION字段 你能给我一些在版本领域有用的用例吗Json Oracle Soda-版本字段用例,json,oracle,soda,oracle-soda,Json,Oracle,Soda,Oracle Soda,我正在学习在我的Java项目中将它用作非sql文档存储 每个集合在Oracle数据库中表示为一个SQL表。此表由一些字段组成,如包含JSON负载的BLOB和VERSION字段 你能给我一些在版本领域有用的用例吗 如何使用?它是用于JSON版本控制,还是由数据库管理的私有字段?我假设您正在查看(因为您提到您正在做一个Java项目) SODA自动维护每个文档的版本组件,并将其用作文档内容已更改的指示器。只要文档内容发生变化(例如,由于替换操作员),版本就会发生变化。一种常用的方法是“乐观锁定”:在更
如何使用?它是用于JSON版本控制,还是由数据库管理的私有字段?我假设您正在查看(因为您提到您正在做一个Java项目) SODA自动维护每个文档的版本组件,并将其用作文档内容已更改的指示器。只要文档内容发生变化(例如,由于替换操作员),版本就会发生变化。一种常用的方法是“乐观锁定”:在更新或删除事务中的文档之前,可以使用该版本确保文档没有更改。例如:
col.find().key("k1").version("123E...").replaceOneAndGet(...)
这将用键k1
替换文档,但前提是其版本与提供的十六进制版本字符串匹配(即,如果自您的事务上次读取文档后,另一个事务更新了该文档,则其存储的版本与提供给version(…)
方法的版本不匹配,替换将不会成功)
如何获取文档的当前版本?当您最初使用insertAndGet(…)插入文档时,返回的结果文档将包含该文档自动生成的版本。如果使用replaceOneAndGet(…)
成功更新文档,则返回的结果文档也将具有更新版本
如果您正在构建REST应用程序,则版本也可以用作eTag
有不同的版本控制方法可用(可以在集合创建时选择这些方法)。看看他们的描述。可以在集合创建期间选择适当的方法
目前,内部部署数据库的默认值是SHA256,但我们正在从这一点转向UUID(生成UUID更便宜,并且不会阻止我们将来要进行的一些优化)。在某些云环境(自治数据库云服务)中,它已经是SODA的新默认设置。如果您想了解更多关于不同版本控制方法优缺点的信息,或者如何使用这些方法配置集合,请告诉我。通常,我们建议使用UUID,除非有充分的理由选择另一种版本控制方法