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

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

我即兴进行了一种“模糊”搜索,我在其中拆分了源字符串(例如,如果用户搜索“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 ... )

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

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

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

你怎么认为?

回答

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

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

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


以上是我是否为工作选择了错误的数据库?DynamoDB与Aurora的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>