我是 MarkLogic 的新手,并评估它以转储巨大的 csv/文本数据,并根据某些条件等进行一些转换,如过滤器等。据我所知,我可以使用 2 种方式转储数据。
1) Using java api for MarkLogic in a multi-threaded environment.
2) MLCP with custom transformation.
我想知道实现这一目标的更好方法是什么?或者是否还有其他我不知道的。
提前致谢。
我是 MarkLogic 的新手,并评估它以转储巨大的 csv/文本数据,并根据某些条件等进行一些转换,如过滤器等。据我所知,我可以使用 2 种方式转储数据。
1) Using java api for MarkLogic in a multi-threaded environment.
2) MLCP with custom transformation.
我想知道实现这一目标的更好方法是什么?或者是否还有其他我不知道的。
提前致谢。
你提到的两种方式都可以。一个更容易实现,但您可能能够从另一个获得更好的性能。
将 MLCP 与自定义转换一起使用应该很简单。MLCP 已经知道如何处理 CSV 数据并将其转换为 XML 或 JSON。使用自定义转换,您将获得一个 XML 或 JSON 文档作为输入,并且可以随意更改它。实现非常简单。需要注意的是:
在大型数据集上,这将对您的数据加载速度产生显着影响。如果您不打算在转换中弄乱 URI,请查看该-fastload
选项。
如果您改用 Java API,则需要解析 CSV(我确定周围有一个库),应用所需的转换并进行插入。那是您需要编写的更多代码(并且可能需要维护,如果您会随着时间的推移这样做),但是由于您将插入一堆已经转换的文档,因此您可以在单个文档中插入多个文档交易。
如果这是一个一次性的过程,我会倾向于 MLCP,除非您的内容是大量的(不要让我定义大量)。如果您要在长期内多次运行此作业,那么在您的 Java 层中进行这项工作更有可能是值得的。
无论您采用哪种方式,都可能值得查看将内容加载到 MarkLogic Server指南的设计内容加载策略部分。