DynamoDB中的多个表与组合键

时间:2019-09-20 15:41:40

标签: amazon-dynamodb

我到处都进行了研究,但很少有关于使用多个DynamoDB表的讨论。因此,我希望有人能对此有所启发。 请考虑以下情形:

数据库必须存储用户的书籍和用户的漫画。

最常见的访问模式是获取/放入一本书,获取/放入一本漫画,并查询整个书籍或漫画集。

以下哪个设计更好?

情况1:使用多个表格(一个用于书籍,一个用于漫画)

BooksTable

{PartKey:用户ID,SortKey:BookId1}

{PartKey:用户ID,SortKey:BookId2}

漫画表

{PartKey:用户ID,SortKey:ComicId1}

{PartKey:用户ID,SortKey:ComicId2}

要获取或放置一本书,您需要使用完整键{UserId,BookId1}来获取或放置在BooksTable上 要获取所有用户的书籍,请使用{UserId}

在BooksTable上进行查询

情况2:使用复合排序键(TYPE#ID)

SharedTable

{PartKey:用户ID,SortKey:BOOK#BookId1},

{PartKey:用户ID,SortKey:BOOK#BookId2},

{PartKey:用户ID,SortKey:COMIC#ComicId1},

{PartKey:用户ID,SortKey:COMIC#ComicId2}

要获取或放置一本书,请使用完整键{UserId,BOOK#BookId}进行获取或放置 要获取所有用户的图书,您可以使用{UserId}并使用SortKey条件Starts_With(BOOK#)

进行查询

这里正确的选择是什么?

0 个答案:

没有答案