gpt4 book ai didi

many-to-many - DynamoDB M-M 邻接表设计模式

转载 作者:行者123 更新时间:2023-12-03 12:05:39 25 4
gpt4 key购买 nike

引用 amazon .我想知道是否有人可以帮助我。
第一个图像是表格,第二个是 GSI。这是表格:
here
在 table 上,我不明白如何创建排序键?这是同时存储 Bill-ID 和 Invoice-ID 的属性吗?还是两个单独的属性?我有一种感觉,这是一个灵活的属性,如果是这样,你如何区分一个和另一个?以及我们如何在排序键上构造查询?
只是通过查看前缀“Bill-”或“Invoice-”吗?
DynamoDB 的做法似乎使用破折号(“-”)来分隔属性中的值。如果有人可以给我这些事情的用例,我也将不胜感激,但除非在这种情况下很重要,否则我会离题。
现在,这是非常相关且非常有趣的YouTube ,演示者使用一个产品表来存储各种类型的项目:书籍、歌曲专辑和电影;并且每个都有自己的属性。
同样,我在理解那里使用的排序键时遇到了问题。我知道 productID=1 是 bookID,productID=2 是专辑。现在变得令人困惑的是我用红色圈出的地方。这些是专辑 2 的轨道。但是,排序键的结构是“albumID:trackID”。现在,“trackID”在哪里?是用实际 ID 代替“trackID”这个词吗?或者这是否意味着与“albumID:trackID”完全一样的文本?
如果我想查询特定的 trackID 怎么办?我的查询的语法是什么?
请在 youtube 上查看图片:
enter image description here
谢谢大家!!! :-)

最佳答案

在第一张图片中,您发布了 中的项目基表(主键)看起来像这样:

First_id(Partition key)        Second_id(Sort Key)          Dated
------------- ---------- ------
Invoice-92551 Invoice-92551 2018-02-07
Invoice-92551 Bill-4224663 2017-12-03
Invoice-92551 Bill-4224687 2018-01-09
Invoice-92552 Invoice-92552 2018-03-04
Invoice-92552 Bill-4224687 2018-01-09
Bill-4224663 Bill-4224663 2018-12-03
Bill-4224687 Bill-4224687 2018-01-09

中的相同项目GSI 这些项目看起来像这样
Second_id(Partition Key)       First_id
---------- ---------------
Invoice-92551 Invoice-92551
Bill-4224663 Invoice-92551
Bill-4224687 Invoice-92551
Invoice-92552 Invoice-92552
Bill-4224687 Invoice-92552
Bill-4224663 Bill-4224663
Bill-4224687 Bill-4224687

他们以相当困惑的方式绘制了它。
  • 他们已将分区键合并到一个框中,但它们是单独的项目。
  • 他们还试图在同一张照片中展示 GSI。您可以将基表和 GSI 视为两个保持同步的独立表,在许多方面它们就是这样。
  • 他们实际上并没有为关键属性提供名称。在我的示例中,我将它们命名为 First_id 和 Second_id。

  • 对基表进行查询时,可以使用带有分区键 Invoice-92551 的查询并且您将同时获得 Invoice 项目以及属于它的所有账单项目。

    假设您正在查看发票 Invoice-92551在应用程序中,您可以看到它有两个关联的账单( Bill-4224663Bill-4224687 )。如果您单击账单,应用程序可能会在 GSI 上进行查询。 GSI 查询将具有分区键 Bill-4224687 .如果你看一下我上面画的 GSI 表,你可以看到这将返回两个项目,显示 Bill-4224687是两张发票的一部分( Invoice-92551Invoice-92552)

    在您的第二张图片中,“bookID”和“albumID”等词应该代表实际的 ID(比如说 293847 和 3340876)。

    我会像这样画他的例子:
    ProductID(Partition Key) TypeID(Sort Key)  Title          Name      
    --------- ------ ------ ------
    Album1 Album1 Dark Side
    Album1 Album1:Track1 Speak to me
    Album1 Album1:Track2 Breathe
    Movie8 Movie8 Idiocracy
    Movie8 Movie8:Actor1 Luke Wilson
    Movie8 Movie8:Actor2 Maya Rudolph

    以下是您的查询:
    Partition key: Album1

    为您提供专辑 1(黑暗面)上的所有信息(包括轨道)
    Partition key: Album1 and Sort Key: Album1:Track2

    只为您提供有关呼吸的信息。
    Partition key: Movie8

    为您提供有关 Movie8 (Idiocracy) 的所有信息(包括 Actor )

    如果我正在构建表格,我会制作它,因此电影、专辑等单词是实际 ID 的一部分(例如 Movie018274 和 Album983745987),但这不是必需的,它只是使 ID 更易于阅读。

    关于many-to-many - DynamoDB M-M 邻接表设计模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50205518/

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