gpt4 book ai didi

java - 如何在 dynamoDB 中连接表?

转载 作者:行者123 更新时间:2023-12-03 02:13:50 24 4
gpt4 key购买 nike

我知道 DynamoDB 不支持连接表,但这是我的用例:

(使用类似的示例来隐藏确切的细节,而不是发布作业问题)

我有四张 table

Person ( unique_id(hash key), Name(range key), Age, Gender)<br>
UIDtoSIDTable ( uid(hash key) , sid)<br>
SIDtoStudentID(sid(hash key), studentID, other attributes)<br>
StudentDetails(studentID(hash key), schoolName, Grades)

我正在使用 dynamodbmapper。

我的应用程序需要在表格中显示以下数据:

unique_id, Name, Age (from Person table)
sid
SchoolName, Grades (from studentDetails table)

现在我的实现是:

  1. 扫描 uidtosidTable 以查找列表(例如 list1)中的所有 uid-sid 对
  2. 对于list1中的每个sid,从SIDtoStudentID表中查询studentID
  3. 针对 Person 表中的每个 uid 查询,以及针对每个 StudentID 从 StudentDetails 表中获取数据

此实现的问题是需要很长时间才能完成,1000 个项目需要超过 5 分钟。

如果它是关系数据库,我会连接四个表,并获取所需的数据。

dynamodb如何有效地实现这一点?

最佳答案

DynamoDB 不支持在服务端连接表。您希望进行的任何加入都必须在客户端上完成。

如果可能,您应该重新审视您的表设计,将所有需要的信息包含在一个表的单个记录中,而不是您拥有的 4 个表。

您的 Dynamo DB 表将如下所示:

unique_id, Name, Age, Gender, studentID, schoolName, Grades, other attributes

如果这是不可能的,那么您唯一的选择是尝试结合全表扫描、索引和查询来执行内存中的联接。例如,您可以创建一个全局二级索引 (GSI),以便能够将 SID 反向映射到 UID。然后,您可以使用查询而不是扫描来执行连接 - 尽管连接仍将在客户端执行。

关于java - 如何在 dynamoDB 中连接表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39073883/

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