将大文件转储到 MarkLogic DB 中的更好方法

Better way to dump huge file into MarkLogic DB

我是 MarkLogic 的新手,正在评估它以转储巨大的 csv/text 数据,并进行一些转换,例如基于某些条件的过滤器等。据我所知,我可以使用两种方式转储数据。

1) Using java api for MarkLogic in a multi-threaded environment.
2) MLCP with custom transformation.

我想知道哪种方法更好?或者有没有其他的,我不知道。

提前致谢。

您提到的两种方式都可以。一个更容易实施,但您可能能够从另一个获得更好的性能。

将 MLCP 与自定义转换结合使用应该很简单。 MLCP 已经知道如何 process CSV data and turn it into XML or JSON. With a custom transform, you will get a single XML or JSON doc as input and can alter it as you like。实现非常简单。警告是这样的:

When you use a transform, the batch size is alway set to 1 and the -batch_size option is ignored.

对于大型数据集,这将对数据的加载速度产生显着影响。如果您不打算在转换中弄乱 URI,请查看 -fastload 选项。

如果您改用 Java API,则需要解析 CSV(我确定周围有一个库),应用所需的转换并进行插入。这是您需要编写的更多代码(并且可能需要维护,如果您会随着时间的推移这样做),但是由于您将插入一堆已经转换的文档,您可以 insert several documents in a single transaction

如果这是一次性过程,我会倾向于 MLCP 除非你的内容是海量的(不要让我定义海量)。如果您要在 运行 中多次 运行 这项工作,那么在 Java 层中完成这项工作可能更值得。

无论您采用哪种方式,都可能值得查看 Designing a Content Loading Strategy section of the Loading Content Into MarkLogic Server 指南。