【问题标题】:Best practice for storing and indexing 1M+ XML documents?存储和索引 1M+ XML 文档的最佳实践?
【发布时间】:2016-07-03 18:06:31
【问题描述】:

我有一个存档了几年的 XML 文档。有 100 万多个独特的文档主题,每个主题在任何给定年份都可能有一个或多个文档。每个文档包含数百个节点和参数。 XML 缓存的总大小约为 50GB。

我需要构建一个系统来存储和索引这些文档,允许搜索过滤各种参数(并且可以随着时间的推移扩大范围)。

为了实现这一点,我当然必须使用某种索引 DBMS。我考虑构建一个工具来将 XML 文件导入到 MySQL 等关系数据库中,但这似乎是一个脆弱且过于复杂的解决方案。

我听说过 ElasticSearch 和 MongoDB 作为可能的解决方案,但我对它们的功能集还不够熟悉,无法确定其中哪一个是最佳解决方案。

在此范围内存储、索引和搜索 XML 数据集的最佳实践和最佳解决方案是什么?

【问题讨论】:

  • 最佳实践是使用 XML 数据库(示例包括 MarkLogic、eXistDB 和 BaseX):但有关选择特定产品的建议超出了 StackOverflow 的范围。
  • 是否有理由选择 XML 数据库而不是 ElasticSearch?
  • 我不知道 ElasticSearch,但是拥有一个无需转换即可保留数据逻辑结构并将该结构用作其查询语言的基础数据模型的数据库有很大的好处。

标签: mysql xml elasticsearch bigdata database


【解决方案1】:

elasticsearch 和 MongoDb 都可以被认为是 NoSQL(不仅仅是 SQL)数据库,可以有效地处理大量数据。

根据CAP theorem MongoDB 优先考虑一致性和分区容错,而 elasticsearch 则为可用性和分区容错留出空间。您必须决定什么最适合您的需求。

如果您正在寻找辅助存储来查询 elsticsearch 是一个不错的选择。它很快,每个请求都会得到响应。 Elaticsearch 变为 eventually consistent。如果您需要始终准确的响应,您会喜欢 MongoDb。它优先考虑一致性。

【讨论】:

    【解决方案2】:

    1) 我将 xml 存储在文件系统中。 2)我将编写一个xml解析器并将每个属性存储在具有适当索引的mongodb中。 3) 我将在 elasticsearch 中使用 mongodb 和 index required 属性以及适当的标记器。

    记住,mongodb是用来存储数据的,你可以实现搜索但是性能不好。 Elasticsearch 从名字上就很明显了。

    希望这能回答你的问题。

    【讨论】:

      猜你喜欢
      • 2012-06-06
      • 2012-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-16
      • 1970-01-01
      • 2010-12-24
      • 1970-01-01
      相关资源
      最近更新 更多