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

时间:2016-06-10 10:29:16

标签: marklogic marklogic-8 data-dump marklogic-7

我是MarkLogic的新手并且评估它是为了转储巨大的csv / text数据,还有基于某些条件的过滤器之类的转换等等。据我所知,我可以使用2种方式转储数据。

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

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

提前致谢。

1 个答案:

答案 0 :(得分:4)

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

将MLCP与自定义转换一起使用应该很简单。 MLCP已经知道如何process CSV data and turn it into XML or JSON。通过自定义转换,您将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指南的Loading Content Into MarkLogic Server部分。