gpt4 book ai didi

amazon-web-services - 用于工单管理系统的 dynamo db 中的数据建模

转载 作者:行者123 更新时间:2023-12-05 02:28:33 26 4
gpt4 key购买 nike

我是第一次在 Dynamo DB 中工作。我的任务是票务管理系统,它有 3 个实体部门、用户和票务。每个实体之间的关系是。

enter image description here

我已经确定了以下访问模式

  1. 找一个部门。
  2. 获取部门中的所有用户
  3. 获取部门中的给定用户
  4. 获取属于该部门的所有工单
  5. 获取分配给用户的所有工单

我为其定义了以下数据模型。我正在考虑创建 GSI,将 Tickets 作为 PK,将 User 作为 SK 来执行 4 和 5

enter image description here

在更高层次上,我需要执行 2 次更新。我可以更新工单分配给的用户,我可以将工单状态更新为 inprogress, resolved 。在表中,我将 Ticket 详细信息作为 JSON 对象,如下所示。

enter image description here

无论我的理解和方法是否有效,我都需要有经验的人的帮助。

最佳答案

我认为您走在正确的轨道上。我将其设计为具有两个全局二级索引的表。基表如下所示:

Base Table

像这样的第一个全局二级索引 (GSI1):

Global Secondary Index 1

像这样的第二个全局二级索引 (GSI2):

Global Secondary Index 2

现在是为什么:

此设计使您可以轻松更新以下内容:

  • 用户部门
  • 知道工单 ID 时的工单状态
  • 工单的用户,如果您知道工单 ID
  • 如果知道工单 ID,则为工单部门

你可以从这个模型中得到一堆信息:

Fetch a Department.

以部门名称查询基表或列出所有部门

Fetch all users in Department

使用部门名称查询 GSI 1 并使用 begins_with = USER# 过滤排序键

Fetch a given user in Department

听起来您知道 UserId,所以在基表上执行 GetItem。如果不是这种情况,请执行“获取部门中的所有用户”中提到的查询。

Fetch all Tickets belongs to the Department

以部门名称作为 PK 查询 GSI 1,并使用 begins_with = Ticket# 过滤 SK

Fetch all Tickets assigned to the User

使用用户 ID 作为 PK 查询 GSI 2,并使用 begins_with = Ticket# 过滤 SK

关于amazon-web-services - 用于工单管理系统的 dynamo db 中的数据建模,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72593393/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com