代码之家  ›  专栏  ›  技术社区  ›  Tom

dynamodb m-m邻接列表设计模式-删除所有关联?

  •  1
  • Tom  · 技术社区  · 8 年前

    我正在用GSIS设计一个表,它使用一个邻接列表设计模式——它可以执行所有指定的查询,而且所有的查询都工作得很好(如果您看到任何其他改进,请提到它们!).。

    我一直关注的一个问题是如何删除关联。假设用户删除了一个标记,该标记用于多个页面(其中页面标记有一个或多个标记)。

    我希望做的只是用户删除项-但它需要整个primarykey=partitionkey+sortkey(如果存在),并且只删除一个项。

    批处理写入将需要基本相同的-知道每个关联的排序键,以便删除它。

    例如,如果我需要删除“标记文章”,我需要删除三行:

    1. 标签本身-pk:tag-article sk:tag-article
    2. 引用第cs-ArticleID-pk页:标记文章sk:page-cs-ArticleID
    3. 参考第2-en-Article2-pk页:标签文章sk:page-en-Article2
      1. 是否有其他方法可以改进表设计,使我能够通过指定它的ID来实际删除所有关联(tags)?

        谢谢你的任何提示!

        Table Design

        我一直关注的一个问题是如何删除关联。假设用户删除了一个标记,该标记用于多个页面(其中页面标记有一个或多个标记)。

        我希望做的只是用户删除项-但它需要整个primarykey=partitionkey+sortkey(如果存在),并且只删除一个项。

        批处理写入将需要基本相同的——知道每个关联的排序键以便删除它。

        例如,如果我需要删除“标记文章”,我需要删除三行:

        1. 标签本身-pk:tag-article sk:tag-article
        2. 引用第cs-ArticleID-pk页:标记文章sk:page-cs-ArticleID
        3. 参考第2-en-Article2-pk页:标签文章sk:page-en-Article2

        有没有其他方法可以改进桌子的设计 允许我实际删除所有关联 (标签)通过指定它的ID?

        谢谢你的任何提示!

    1 回复  |  直到 8 年前
        1
  •  0
  •   Matthew Pope    8 年前

    邻接列表设计模式要求您查询GSI和/或表以查找所有相关的内容。只有当你知道所有的关联之后,你才能删除它们。