如何可视化更新和稍后回滚 JavaScript 更新事务

How to visualise update and later rollback JavaScript update transactions

我有 JavaScript 包含两个事务的程序:

T1 -> 在数据库中生成新文档(更新语句)

T2 -> 转换现有 MarkLogic 文档

此程序的成功执行需要两个事务都成功或回滚。

我希望控制执行,以便我可以看到内存中的新文档,但稍后在 T1 测试后回滚。如果我对T1完全满意,继续T2。

在 RDBMS (Oracle) 中,我可以操纵、查看和回滚此类更改(类似于拍摄快照,当操作完成时,快照将被丢弃)。

如何在 MarkLogic 中获得这种控制?

插入发生在当前语句的末尾,因此要查看结果,需要启动一个多语句事务,在一条语句中插入,在下一条语句中读取,然后提交或回滚。

也就是说,在 MarkLogic 中,更好、更常见的方法是在插入之前验证输入,以便事务可以在单个语句中发生。如果输入有效并且可用于主模块,则几乎没有任何理由从持久化数据中重新读取输入。

例如,对于三元组,通常使用 sem.rdfParse() 并在执行 sem.rdfInsert() 之前验证三元组。或者,如果使用 TDE 投影三元组,则在 xdmp.documentInsert().

之前执行 tde.nodeDataExtract()

希望对您有所帮助,