我们正在开发一款可以对我们数据库中的产品进行搜索的应用。我们使用的数据库是Amazon Dynamo DB,在任何给定的时间点都会存储至少1000多万个产品信息。
用户通过UI输入产品名称,我们希望在不到2-3秒的时间内显示搜索结果。我们知道DynamoDB将在此搜索中发挥重要作用,但想知道在应用程序端是否还有其他任何事情可以完成。我们计划使用Memcache缓存搜索,以便在第二次搜索时更快。
还有什么我们可以实现或照顾,以便搜索发生得非常快。实现是在Java。
提前致谢。
答案 0 :(得分:1)
Dynamodb没有索引的conecpt,因此除了主键之外,您将无法快速搜索。
您有一些主要选择:
答案 1 :(得分:0)
确切的功能是用户搜索产品,并显示在当前位置的半径5KM范围内匹配的所有产品。有什么想法吗? - JavaMany
因此,您需要针对产品属性和地理空间过滤进行自由文本搜索。 DynamoDB不支持这两个概念中的任何一个"开箱即用" (除了通过执行全表扫描),并不真正适用于关系查询。
您有一些选择 - 正如其他人提到的那样,您可以将CloudSearch用于自由文本搜索属性;将10M记录过滤为较小的子集;对于每一个,您必须从DynamoDB中检索长/纬度,并将它们与用户点周围的半径5KM进行比较。根据CloudSearch找到的记录数量,这可能会也可能不会令人满意。
您必须找到一种方法来保持CloudSearch索引的最新状态。
另一种方法是使用AmazonRDS,并使用MySQL或MS SQL的自由文本搜索和地理空间功能。当然,这可能需要一个架构(我假设你正试图避免)。