【发布时间】:2020-10-23 00:48:35
【问题描述】:
我正在使用 DynamoDB 来存储我的数据。我正在创建一个仪表板应用程序,用户可以在其中按字段排序、按字段搜索以及一次添加多个过滤器。表中将有大约 100 - 1000 个条目。
要实现这个搜索、过滤、排序功能,我有两种方法可以实现:
-
使用 FilterExpression。 然而,一个简单的解决方案需要在过滤之前提取所有数据(不是“真正的”查询),需要更多的服务器端处理 + FilterExpression 通常被视为“糟糕”练习”。
-
为每个字段单独创建 GSI。 允许我使用真正的查询按字段搜索和排序,减少服务器端处理 - 可以直接获取我需要的项目.这样做的问题是添加多个过滤器,因为不可能在单个查询调用中使用多个 GSI。如果我有多个过滤器,这种方法将需要多次查询调用,并在客户端手动聚合/查找常见项目。
在这种情况下使用 FilterExpression 是否可以接受?从编码/维护的角度来看,它会大大简化这个过程,但我不确定这是否是一种好的做法。如果 GSI 是更好的选择,您将如何处理多个过滤器?
最后,除了上面列出的两个选项之外,还有更好的方法吗?
提前非常感谢!
【问题讨论】:
标签: node.js amazon-web-services amazon-dynamodb dynamodb-queries