我有一个非常大的文件,与Marklogic服务器不在同一个盒子上。将文件放在同一台服务器上不是一种选择。
将文件加载到数据库的最佳方法是什么?我认为SAX
解析器可以选择节点并将它们加载到数据库中。
<a>
<b>xxx</b>
<b>yyy</b>
<b>zzz</b>
</a>
所以,使用上面的xml我会在Marklogic中创建一个包含的文档。
然后,使用SAX
解析器,我将获取第一个<b>
元素并将其作为<a>
的子元素插入。我会重复所有剩余的<b>
元素。
这听起来像是最好的方法吗?这会有效吗?
TIA
答案 0 :(得分:2)
正如Eric所说,一份大文件可能不是你想要的。 MarkLogic旨在最好地处理许多(数千到数十亿)一口大小(几十到几百千字节)的文档。如果您熟悉关系数据库,则可以将关系行(而不是表)视为与MarkLogic数据库中的文档大致等效。
您能提供一些有关您正在尝试做的事情的详细信息吗?您希望执行哪些类型的查询?您的数据实际上是什么样的? “非常大”有多大?
答案 1 :(得分:1)
首先,一旦您拥有MarkLogic中的所有数据,您就不可能在一个文档中全部拥有这些数据。
您可以使用mlcp之类的工具来帮助您分解文档并加载它。请参阅http://developer.marklogic.com/products/mlcp以及http://docs.marklogic.com/guide/ingestion,特别是http://docs.marklogic.com/guide/ingestion/content-pump上的mlcp(内容泵)位
答案 2 :(得分:0)
您可能会发现xmlsh的StAX脚本功能对您有用。 这解析像SAX,但更容易处理,因为它的PULL不是PUSH技术,所以没有回调。它的完全可编写脚本的代码比纯Java少得多,而且几乎一样快。
http://www.xmlsh.org/FunctionsStAX
-David