【问题标题】:What are the advantages and disadvantages of using a search engine as a key value store?使用搜索引擎作为键值存储的优缺点是什么?
【发布时间】:2010-01-11 23:23:18
【问题描述】:

给定一个像 Lucene 这样的搜索引擎和一组需要完全保留的 XML 文档,在给定每个文档包含的唯一主键的情况下,使用搜索引擎作为键值存储返回 XML 文档的优点和缺点是什么?

【问题讨论】:

  • 我无法理解你的意思。是进行传统的全文索引,还是使用某种模式映射将数据项从 XML 转换为 Lucene 中的许多字段?
  • 我希望能够获取(或重建我想,但最好是获取)我通过简单查询输入的原始文档,以获取该给定文档的明确唯一键。基本上我想将搜索引擎视为一个 SQL 数据库,每行都有一个主键字段和一个 clob 字段。
  • 投票结束的人不是一个真正的问题:就像地狱一样。我的老板特别希望我提出这样做​​的利弊作为文档的 KV 存储的实现(而不是使用文件系统或类似沙发数据库的东西)
  • 也许您可以编辑问题以将材料包含在您的评论中?
  • 您需要 Lucene 不保证的 ACID(或接近 ACID)语义。简单来说,DB 可以从故障中恢复到最后一致的状态。写入 Lucene 索引时发生崩溃可能使其无用。

标签: xml lucene key-value-store


【解决方案1】:

阅读Search Engine versus DBMS。 IMO,您的应用程序属于 DBMS 领域,可能最好由键值数据库(如 couchDB)提供服务。这是因为您没有利用诸如标记化、词干提取等文本操作。

【讨论】:

    【解决方案2】:

    如果您使用 Compass 之类的东西,它是 XML-to-Lucene mapping engine,它是存储和查询 XML 文档的绝佳解决方案,而无需一直使用 XML 数据库。

    一个缺点是只能通过 Lucene API 检索 XML 文档(底层数据存储非常难以理解),但我可以接受。

    【讨论】:

      【解决方案3】:

      如果您要做的只是测试密钥是否相等并检索 blob,则 Lucene 与 bdb 相比没有明显优势。而且在您将其他东西放在上面之前,您没有交易。并发性具有一定的复杂性。而且,对于您正在做的简单事情,API 有点巴洛克式。

      我已经实现了与您描述的类似的东西,但是对数据进行实际的全文搜索是一个关键要求,证明了其余部分的合理性。

      【讨论】:

        猜你喜欢
        • 2010-10-11
        • 2010-09-21
        • 1970-01-01
        • 2021-10-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-11-14
        • 2011-11-16
        相关资源
        最近更新 更多