java - MarkLogic Java 客户端 API - 修补元数据和文档内容

标签 java performance transactions marklogic marklogic-8

我有一个与 NoSQL 数据库 MarkLogic 8 和 Java Client API 3.0.5 相关的问题:

可以通过 XMLDocumentManager 和 DocumentPatchHandle 修补 XML 文档内容和元数据(属性、集合)。

# First Approach (Content & Metadata Patch at once)

XMLDocumentManager mgr = client.newXMLDocumentManager();
DocumentPatchBuilder builder = mgr.newPatchBuilder();

builder.insert(...);
builder.replacePropertyValue(...);

mgr.patch("test.xml", builder.build());

我的问题是(文档中没有回答):这样的更新是在事务中自动完成的吗?

我问这个是因为我可以分别进行内容补丁和元数据更新。如果我想那样做,我需要让服务器生成一个新的事务实例,我必须提交或回滚它。

# Second Approach (separate Content & Metadata Patch)

XMLDocumentManager mgr = client.newXMLDocumentManager();
DocumentPatchBuilder builder = mgr.newPatchBuilder();

builder.insert(...);

DocumentMetadataPatchBuilder mbuilder = mgr.newPatchBuilder();

mbuilder.replacePropertyValue(...);

Transaction tx = client.newTransaction();

mgr.patch("test.xml", builder.build());

mgr.patch("test.xml", mbuilder.build());

tx.commit();

我认为在第二个片段中这样做会导致两个 DocumentPatchHandle 实例和 4 个请求(事务、补丁、补丁、提交)。第一个似乎只需要一个请求。

换句话说:第一种或第二种方法更好/更快/优雅吗?

最佳答案

MarkLogic 中的所有更新都以事务方式执行。因此,第一种方法在这方面同样安全。是的,我认为第一种方法确实只需要调用一次后端而不是调用四次就可以做到同样的效果。所以,我个人认为第一个更优雅,特别是因为您实际上只是在更新数据库中的一个文档。

喂!

关于java - MarkLogic Java 客户端 API - 修补元数据和文档内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38390418/

相关文章:

java - 使用 KafkaProducer 发送恰好一个 ProducerRecord

java - 在java中使用数组作为switch case语句

java - 关于此 Activity 的 list 错误没有默认构造函数

linux - 进程重启后恢复数据

java - 在编译之前使用 Gradle 列出 SourceSet 中的所有 Java 包

arrays - Swift removeSubrange 足够快吗?

sql - 在SQL中具有MIN(计算得出的排名)和GROUPED BY不同列的SELECT行时性能不佳

performance - Azure worker : Read a message from the Azure queue in a mutex way

java - Java 中的 LDAP 事务

jestjs - 如何使用 cls Hook 的非托管事务?