2011-12-15 61 views
0

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

我因缺乏维护和开销服务的Web应用程序在机器上的,和SimpleDB的超过Lucene的一个位置索引文件中的分布式特性吸引到SimpleDB的。

需求是当你输入Lucene可以提供的web界面时,用户需要有一个ajax搜索,但是SimpleDB也可以做这个有限的作用域应用程序通过Lucene使用SimpleDB索引来获得或失去什么?

感谢您的知识。

回答

1

我用的SimpleDB这样的事情。除了零维护之外,SimpleDB的优点是基本上无限期地扩展。如果您想为流量非常高的可能性构建架构,这真的只是一个优势。

SimpleDB中的这样做的主要缺点我看到的是:

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

  • 不太灵活文本搜索。简单DB基本上具有类似于SQL的查询语法,其支持常规=,!=,>,<等,并且还等,其中通配符“%”可以在字符串的开始出现任一,字符串或两者的端部(例如“%keyword%”)。没有办法搜索正则表达式或更复杂的模式(除了通过将运算符与AND/OR结合可以执行的操作)。 注意:之前的LIKE条件仅支持字符串末尾的“%” - 您可能会看到在网络上编写但不再存在的限制。

的SimpleDB也默认使用“最终一致性”模型(更新可能需要一段时间 - 秒的10秒有时 - 可见一致)。这是无法避免的可扩展性的结果。但是,我怀疑这对您的使用情况会是一个问题。