marklogic - Marklogic corb 任务回滚

标签 marklogic rollback marklogic-corb

我正在编写一个 corb 任务,其中 uri 模块将文档的 uri 列表传递到处理器模块,其中必须填充某个元素的字符串值。 uri 模块列出了字符串比所需长度短的文档。由于更新后字符串将达到所需的长度,因此无法再识别已更改的文档。此外,这些文档中不会有任何字符串先前长度的记录。因此,我没有看到编写回滚脚本的简单方法。

对于这种情况进行回滚的有效方法是什么?

我们没有版本管理文档。

最佳答案

用代表 CoRB 批处理的集合来标记所有已更改的文档怎么样?

一旦您知道它们都是新的,您只需调用xdmp:collection-delete即可。如果您需要更细粒度的数据,您可以将其添加为每次更新的一部分,无论是在文档中还是在属性中。基本上,您会在触摸每个文档时保存回滚信息。不要尝试将整个批处理的回滚信息保留在单个文档中,因为每个 CoRB 线程都希望同时更新它。

这种方法意味着您必须以某种方式提供批处理 ID。我可能会将其直接编码到尽可能短的 CoRB XQuery 模块中。我会编写一个库模块,其中的函数可以完成批处理工作中所有重要的事情。然后,一个简单的 shell 脚本可以为每个批处理作业编写一个新的主模块,并将批处理 ID 直接编码到 XQuery 中。该主模块将为 CoRB 定义 $URI、导入库并调用函数:类似于 mylib:batch-operation($URI, "batch-"||1234567). shell 脚本将提供该批处理 ID:批处理开始时的纪元秒数,或任何对您有意义的内容。

您还可以查看 https://github.com/mblakele/taskbot,看看它是否为您提供了更大的灵活性。

关于marklogic - Marklogic corb 任务回滚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24840647/

相关文章:

xquery - 使用 Xquery 在 Marklogic 中实现信封模式?

javascript - 在marklogic中使用Javascript遍历Json节点?

marklogic - corb2 与 MarkLogic 的兼容性检查

rest - 有没有办法使用 Rest API 检索 MarkLogic 服务器版本?

javascript - MarkLogic - Node.js 客户端 API - QueryBuilder - 需要数据页和查询的完整计数

node.js - MarkLogic node.js 客户端 API - 使用 XML 命名空间按元素值查询

c++ - 应用程序如何确定回滚?

c# - 事务不在 C# 中回滚

MarkLogic CoRB 信息性消息