我是否为工作选择了错误的数据库?DynamoDB 与 Aurora

Nik*_*kov 0 amazon-web-services amazon-dynamodb amazon-aurora dynamodb-queries

我正在建立一个房地产网站,其中包含房产列表、一些搜索过滤器和一个带有自动完成功能的地址字段。它工作正常,但自动完成性能非常慢。几乎需要一秒钟才能得到回应。考虑到所有服务都在我所在的地区,我认为这很慢。

我即兴进行了一种“模糊”搜索,我在其中拆分了源字符串(例如,如果用户搜索“Jumeirah, Rimal”变为 [“jumeirah”, “rimal”])并尝试匹配某个位置的完整“路径”(一个像 locationID/city/community/sub-community/tower 这样的字符串,在这个例子中是“are.1.50/Dubai/Jumeirah Beach Residence/Rimal”)到分割字符串的每个部分。表达式变成这样:

contains(#path, :fullString) OR 
(contains(#path, :stringOne) AND contains(#path, :stringTwo) AND ... )
Run Code Online (Sandbox Code Playgroud)

重要的是,因为我需要使用“包含”运算符,所以我不能用 KeyExpression 有效地完成它,我需要使用较慢的 FilterExpression 进行完整扫描。我只有 7,500 个位置可供搜索,而且性能已经很差了。

这让我思考是否应该使用像 Aurora 这样的基于 SQL 的数据库。AFAIK SQL 可以非常高效地执行复杂的查询。

我还将研究 AWS 的弹性搜索解决方案。

你怎么认为?

Chr*_*ams 6

当您能够执行查询操作以找到确切的分区键时,DynamoDB 的性能最高,使用扫描运算符可能会导致性能下降并导致读取积分的使用增加。

虽然 Aurora 等关系数据库可以执行此操作,但使用 ElasticSearch 执行此操作可能会更高效。

支持使用 ElasticSearch 功能执行模糊搜索,这是将其用作文档存储的主要好处之一。