【问题标题】:How to store mapping tables - lucene or DB?如何存储映射表 - lucene 或 DB?
【发布时间】:2015-03-15 01:34:42
【问题描述】:

我想在id 和两个文本属性之间存储大型映射表。 该数据集将包含多达 100 万个条目,并且每天都会刷新。

您愿意创建一个lucene 索引和一个按该ID 的索引表吗?或者创建一个以 id 作为主键的database (postgres) 表?甚至是不同的解决方案?

为什么人们更喜欢这两种解决方案?

我只想按 ID 查找,没有反向查找。映射表应该很简单:放入一个id,取回两个字符串属性。

【问题讨论】:

  • 我警告你,这个问题很可能会引起反对,因为它读起来很像询问工具和意见,这两件事是直接的密切原因。如果我是你,我会改写。还请解释这个映射表是如何在您的应用程序中准确使用的。你只通过ID查找吗?还是您也对文本进行反向查找?
  • 在上面添加了一些信息。它应该是一个简单的键值映射(但具有多个属性)。仅按键/ID 查找。
  • 映射引擎应该具备哪些属性?据我们所知,任何可持久化的地图都足够好。不需要 lucene(文本上的野兽)或完整的数据库。

标签: java database indexing lucene


【解决方案1】:

您正在寻找的似乎是Key-value store (wikipedia article)

键值(KV)存储使用关联数组(也称为映射 或字典)作为他们的基本数据模型。在这个模型中,数据是 表示为键值对的集合,使得每个 可能的键在集合中最多出现一次。

键值模型是最简单的非平凡数据模型之一, 更丰富的数据模型通常是在它之上实现的。这 键值模型可以扩展为有序模型 按字典顺序排列的键。这个扩展很强大,因为它 可以有效地处理关键范围。

键值存储可以使用一致性模型,从最终 可序列化的一致性。一些支持键的排序。一些 将数据保存在内存 (RAM) 中,而其他人则使用固态驱动器 或旋转磁盘。

那里的文章还提供了一个相当完整的可用实现列表。不幸的是,我不能向您推荐其中一种实现,因为我没有在生产中使用过其中任何一种。但我坚信 google 充满了对键值存储的比较。

要回答您的问题,我不会选择 Lucene,因为它是一个开源信息检索软件库,旨在实现信息检索应用程序。您要做的事情不会触及 Lucene 的最佳位置。

经典的 RDBMS 更接近您的要求。但如上所述,键值存储可以解决问题。

【讨论】:

    猜你喜欢
    • 2013-08-27
    • 1970-01-01
    • 2010-09-10
    • 1970-01-01
    • 1970-01-01
    • 2012-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多