我们正在开发一个应用程序,可以在我们的数据库中的产品执行搜索。我们使用的数据库是Amazon Dynamo DB,在任何给定的时间点都将存储至少1000万个产品信息。
用户通过UI输入产品名称,我们希望在2-3秒内显示搜索结果。我们知道DynamoDB将在这次搜索中扮演主要角色,但我们想知道在应用程序端是否还有其他可以做的事情。我们计划使用Memcache缓存搜索,以便在第二次搜索时速度更快。
还有没有什么我们可以实现或处理的,这样搜索就会进行得非常快。这个实现是用Java实现的。
提前谢谢。
发布于 2013-02-11 17:56:59
Dynamodb没有索引的概念,因此您只能通过主键来快速搜索。
您有一些主要选项:
的映射
发布于 2013-02-12 00:20:14
确切的功能是用户搜索产品,并显示在其当前位置半径为5公里范围内匹配的所有产品。对此有什么想法?- JavaMany
因此,您需要对产品属性进行自由文本搜索,并进行地理空间过滤。DynamoDB不支持“开箱即用”的这两个概念中的任何一个(除了执行全表扫描),也不适合关系查询。
您有一些选项-正如其他人提到的,您可以使用CloudSearch作为自由文本搜索属性;这将把10M条记录过滤到一个较小的子集;对于每个选项,您必须从DynamoDB检索经纬度,并将它们与用户点周围半径为5 5KM的范围进行比较。这取决于CloudSearch找到的记录数量,这可能会执行,也可能不会执行。
您必须找到一种方法来使CloudSearch索引保持最新。
另一种方法是使用AmazonRDS,并使用MySQL或MySQL的自由文本搜索和地理空间功能。当然,这可能需要一个模式(我假设您正在努力避免)。
https://stackoverflow.com/questions/14809621
复制相似问题