【发布时间】:2016-12-28 16:06:51
【问题描述】:
我知道 DynamoDB 不支持连接表,但这是我的用例:
(使用类似的例子来隐藏确切的细节,而不是发布家庭作业问题)
我有四张桌子
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)
现在我的实现是:
- 扫描 uidtosidTable 以查找列表中的所有 uid-sid 对,例如 list1
- 对于 list1 中的每个 sid,从 SIDtoStudentID 表中查询 studentID
- 对于来自 Person 表的每个 uid 查询,以及对于每个 studentID 从 StudentDetails 表获取数据
这个实现的问题是它需要很长时间才能完成,1000 个项目超过 5 分钟。
如果它是一个关系数据库,我会加入四个表,并获得所需的数据。
dynamodb如何高效实现这一点?
【问题讨论】:
-
您可以使用 Amazon EMR
标签: java amazon-web-services amazon-dynamodb nosql