amazon-dynamodb - DynamoDB:获取与可能键之一匹配的所有项目
问题描述
假设我有下表——</p>
itemA | itemB | relationScore | type
----------------------------------------
"s" | "a" | 1.0 | "foo"
"s" | "b" | 1.0 | "bar"
...
在这里,itemA
+itemB
是每行唯一的,我分别将它们设为哈希键和范围键。
然而,我的查询需要我获取所有项目,例如——</p>
itemA
等于 (A,B,C,D ....) 之一(即选项列表)type
等于“富”
如何构建索引以便能够在不使用扫描/需要多个查询的情况下执行此操作?
注意:我不想只查询type
并稍后在内存中过滤它,因为type
它的基数非常低,最终会返回一个巨大的列表。
解决方案
也许...
如果您使用
哈希键创建了 GSI:类型
范围键:itemA
然后您可以使用 GSI 和 (type = "foo", itemA between "A" and "D") 进行查询
但显然这要求 itemA 的值是一个连续的范围。您的示例似乎就是这种情况,但实际数据可能并非如此。
编辑
由于 itemA 值实际上并不连续,并且 DDB 不支持IN
您遇到多个查询。
这不是世界末日,因为您可以并行执行查询。在这种情况下,我可能会使用带有
哈希键的 GSI:itemA
范围键:类型
从而确保每个查询都是特定于分区的。(即使您的数据或 I/O 要求足够低以至于 DDB 不会实际创建单独的分区)
推荐阅读
- pipe - 在重定向到文件和管道到进程之间动态选择
- scala - 我可以在 sbt 中相对复制文件吗?
- typescript - TypeScript 中的结果变化函数
- matplotlib - 如何设置合适的视角?
- javascript - 更新嵌套的 MongoDB 文档对象
- database - Azure 托管实例找不到存储过程“sys.sp_MS_marksystemobject”
- android - Android Studio - 在 buildSrc 中测试业务逻辑(Gradle Kotlin DSL)
- typescript - @typescript-eslint/no-unused-vars 在不应该的地方发出警告
- python-3.x - Django 3:创建 CRUD 表模板(将上下文变量传递给 HTML)
- wordpress - 谷歌图片中的图片缺少标题说明