我想知道Marklogic Server中片段的含义是什么。请详细解释Marklogic中的碎片化过程以及为什么我们应该避免碎片化。
答案 0 :(得分:3)
您是否阅读过文档? http://docs.marklogic.com/guide/admin/fragments#chapter
简而言之:
Marklogic索引是基于片段的,这意味着它们具有以片段级别结束的粒度。通常,文档存储为单个片段(对于其属性可选择单独存储),但您可以定义片段根和片段父级。它们会导致文档在存储时被分割成碎片,但是如果将文档的根序列化到输出中,则会检索所有子部分,并将它们连接在一起,就像文档从未被切割成碎片一样。 / p>
为什么要避免?
最重要的是因为cts查询(搜索库也使用它)通常不会跨越片段边界。您必须明确指出要跨越这些边界,例如使用cts:document-fragment-query,其中给出了一个很好的示例:http://developer.marklogic.com/pubs/5.0/apidocs/cts-query.html#cts:document-fragment-query
通过将片段存储为单独的文档来使片段明确,这使得它明确。您必须进行多次搜索才能合并结果。 MarkLogic非常快,因此进行一些搜索而不是只进行一次搜索几乎同样快。
有些人还观察到处理由许多(数万个)片段组成的大型文档时的一些性能问题。单独文件不会发生的事情。
HTH!