gpt4 book ai didi

nosql - 如何在 DynamoDB 中处理多对多

转载 作者:行者123 更新时间:2023-12-04 16:38:24 24 4
gpt4 key购买 nike

我是 NoSql 和 DynamoDb 的新手,但来自 RDBMS ..
我的表正在从 MySql 移动到 DynamoDb。我有表:
客户(列:cid [PK]、姓名、联系人)
硬件(列:hid[PK]、名称、类型)
租金(列:rid[PK]、cid、hid、时间)。 => 这是客户和硬件项目的关联。

一个客户可以拥有多个硬件项目,而一个硬件项目可以在多个客户之间共享。

要求:应该能够检索单独的客户和硬件项目列表。
租金详细信息 - 哪个客户购买了哪个硬件项目。

我提到了 this - 二级索引表。这是关于将所有列保留在一张表中。
我以为有 2 个 DynamoDb 表:
客户 - 这具有类似于列和硬件项目散列键集的所有属性。 (然后我的问题是,当查询客户表以仅检索客户时,也会加载所有硬件 key 。)

请对表结构有任何指导吗?如何保存、加载甚至更新?
请问有java示例吗? (找不到任何类似于我的场景的有用资源)

最佳答案

看看this answer ,因为它涵盖了许多与您相关的基础知识。

DynamoDB 本身不支持外键。每个表都是独立的,没有特殊的工具来保持两个表同步。

您的客户表中可能有一个称为硬件的属性。该属性将是客户拥有的硬件 ID 列表。如果您想查看属于某个客户的所有硬件项目,您可以:

  • 对客户 ID 执行 GetItem。或者根据您查找客户的方式使用查询。
  • 对于客户硬件属性中的每个硬件 ID,在硬件表上执行 GetItem。

  • 使用 DynamoDB,与 RDBMS 解决方案相比,您通常最终会在客户端应用程序中做更多的事情。好处是它快速和简单。但是您会发现您可能将大量工作从数据库服务器转移到客户端服务器。

    关于nosql - 如何在 DynamoDB 中处理多对多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48537284/

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