amazon-web-services - 如何减少查询时间 DynamoDB
问题描述
我正在设置 DynamoDB。我们的数据很简单,它有四个字段:
- 用户名
- 用户移位结束日期
- 用户项目代码
- 用户活动
理想情况下,我们应该根据UserShiftEndDate
. 我们数据中的所有字段/组合都不是唯一的。我可以为每条记录添加一个自动生成的 ID。
请建议我选择哪些字段作为分区键和排序键或 GSI,以获得基于UserShiftEndDate
.
例如,考虑下表:
用户名 | 用户移位结束日期 | 用户项目代码 | 用户活动 |
---|---|---|---|
用户A | 2020 年 12 月 13 日 | 45 | 监控 |
用户B | 2020 年 12 月 14 日 | 47 | 测试 |
用户c | 2020 年 12 月 17 日 | 45 | 监控 |
用户B | 2020 年 12 月 14 日 | 45 | 测试 |
用户C | 2020 年 12 月 15 日 | 47 | 管理 |
我的查询应将日期作为输入,并应返回shiftEndDate
晚于或等于给定日期的所有用户数据。
例如,如果输入 12/14/2020,则查询应返回除第 1 行之外的所有用户数据。
我们计划以即时形式存储日期。为了简单起见,我在这里提到了它作为日期
解决方案
我建议创建一个 UUID(以编程方式生成)作为主键,然后创建一个带有UserShiftEndDate
. 这样您就可以提供日期并获取具有提供日期的所有记录。请参阅这篇文章了解更多信息。
推荐阅读
- css - Angular:页面上的垫子菜单项太多
- swift - 当我键入 AF.request 时,什么都没有显示,但 Alamofire.request 正在工作,但 .GET 功能仍然没有显示出来。我如何解码数据
- c# - 使用冒号(:) 连接嵌套对象字段名称
- python - 在不使用熊猫的情况下在另一个数组中查找一个数组的元素索引的有效方法
- bloom-filter - 为什么布隆过滤器没有像 count-min 草图那样实现?
- python - 等待分组芹菜任务在python中完成
- json - Shell Script jq 在变量中读取带有句点 (.) 的 json 键
- php - OCS Inventory 不查询 BSSID 和 SSID
- serilog - Serilog - 仅保留 7 个最新文件
- c# - 用户关闭会话时如何执行代码?