我想把我的应用程序转移到AmazonSimpleDB,因为我不会自己维护数据库服务。此应用程序在重负载下运行。每秒有很多读/写操作。我不需要一致性和原子性,我想让事情尽可能简单,所以SimpleDB是一个不错的选择。
问题是,我需要全文搜索能力。我不知道如何用AmazonSimpleDb让它变得更好。我之前已经用MongoDB数据库实现了手写全文搜索。我不得不在应用程序层中将文本拆分为单词,并构建自己的索引。这并不难,但我不想再使用SimpleDB了。
我发现了一篇有趣的文章http://codingthriller.blogspot.com/2008/04/simpledb-full-text-search-or-how-to.html
但我不想自己去执行。我正在寻找一个预先制作的解决方案
有哪些选择?
使用亚马逊RDS+Lucene更好吗?
或者可能存在针对SimpleDB的现成解决方案?
要求为:
- 能够处理大量并发请求
- 全文搜索(文本大小不得大于1MB(SimpleDB限制))
- 我宁愿不自己管理它
Lucene或类似的东西通常是人们做这件事的方式,但不知道你使用的是什么平台,很难提出任何特别的建议。Simol是SimpleDB的.NET对象持久性框架,它可以使用Lucene.NET进行索引。我还看了一些基本的Lucene.NET示例,这些示例还不错。如果你正在寻找一个托管的索引服务,你可以看看这个问题。
为了让索引做好它的工作,你很可能必须根据你的应用程序进行调整。
亚马逊似乎将在2012年1月18日宣布与搜索有关的消息。http://pandodaily.com/2012/01/17/good-news-for-ec2-customers-amazon-may-launch-new-cloud-search-tomorrow/
用于全文搜索的SimpleDB不太好。例如,使用%like%运算符,它不会在单个字段上搜索超过300000个文档。大约需要两到三次尝试——大约15秒才能浏览到100 MB的文本来寻找匹配。我认为它太慢了,其他人也是。查看AWS论坛。。。
Amazon CloudSearch已经发布,但如果不编写代码,就无法轻松地将数据从SimpleDB移动到CloudSearch。
然而,API相当简单,它可能会在一两周内开始运行,这取决于您的需求(如果您使用现有的SDK)。如果您使用的是没有SDK的编程语言,则需要更长的时间。
http://aws.amazon.com/cloudsearch/