使用lucene存储索引元数据或Amazon SimpleDB?

时间:2011-12-15 23:09:58

标签: c# amazon-s3 lucene.net amazon-simpledb

我正在构建一个Web解决方案,它将上传的文件放在S3上。上传文件时,用户可以添加元数据以进行索引和存档。我曾计划将Lucene用于此目的,因为我以前曾多次使用它,但也注意到Amazon SimpleDB为S3提供了对象元数据服务。

由于缺乏维护Web服务器的机器上的维护和开销,以及SimpleDB相对于Lucene的单一位置索引文件的分布式特性,我很容易被SimpleDB所吸引。

要求是用户在键入Lucene可以提供的Web界面时需要进行ajax搜索,但是SimpleDB也可以通过在这个有限范围的应用程序中使用Lucene上的SimpleDB索引来实现我将获得/失去什么?

感谢您的了解。

1 个答案:

答案 0 :(得分:1)

我已经将SimpleDB用于这样的事情。除了零维护之外,SimpleDB的优势在于,SimpleDB基本上无限期地扩展。如果你想为高流量的可能性进行架构,这真的只是一个优势。

我看到SimpleDB的主要缺点是:

  • 延迟更高。 SimpleDB旨在实现巨大的可扩展性和高可用性。权衡是请求具有适度的延迟 - 比使用Lucene等“本地”非分布式服务或使用RDBMS文本搜索功能更高。

  • 不太灵活的文字搜索。 Simple DB基本上具有类似SQL的查询语法,它支持通常的=,!=,>,<在通配符“%”可以出​​现在字符串的开头,字符串的结尾或两者(例如“%keyword%”)的情况下也是LIKE。无法搜索正则表达式或更复杂的模式(除了通过将运算符与AND / OR组合可以执行的操作)。 注意:LIKE条件以前只支持字符串末尾的“%” - 您可能会看到在网络上写的但不再存在的限制。

SimpleDB还默认使用“最终一致性”模型(更新可能需要一段时间 - 有时为10秒),以便始终可见。这是无法避免的可扩展性的结果。但是,我怀疑这对你的用例来说是一个问题。