【问题标题】:DynamoDB joins with multiple tablesDynamoDB 连接多个表
【发布时间】:2021-07-15 22:58:58
【问题描述】:
我正在开发 ERP 系统。我将 AWS lambda(Node) 与 Dynamo DB 一起使用。我是发电机的新手。 我们正在使用多个表格。
我的一个小用例是这样的,
我有一张公司表,其中将存储公司的地址。在该地址字段中,有城市、州、国家/地区字段,它们将具有主表的主键(城市、州、国家/地区)。
因此,当我在单一查询中获取公司详细信息时,我还需要获取城市、州和国家/地区。还要过滤,排序应该从主表完成。
那么任何人都可以帮我解决这个问题,有什么方法可以实现吗?如有可能还提供一些node js查询代码供参考。
如果可能,请提供一些官方文档,以便我查看。
感谢您的帮助:)
【问题讨论】:
-
-
您正在尝试将关系数据库的概念应用于 NoSQL 数据库。如果你不知道自己在做什么,你肯定会感到非常痛苦。也许看看AWS Aurora。它是一个无服务器的关系数据库。你可能会得到更好的服务。
标签:
node.js
amazon-web-services
aws-lambda
amazon-dynamodb
dynamodb-queries
【解决方案1】:
DynamoDB 是一项了不起的技术。但是,它与 SQL 数据库完全不同。因此,您需要以不同于使用 SQL 数据库的方式处理整个过程。
关于这个主题已经写了整本书,所以我不会在这里尝试涵盖所有差异。不过,我会提供一些建议,让您找到正确的方向。
- 单表设计被认为是 DynamoDB 中的最佳实践。拥有多个表不一定是一种反模式,但请花一些时间调查为什么会出现这种情况。一个好的起点:DynamoDB 没有 SQL 连接操作!
-
The DynamoDB Book 是关于这个主题的最好的书,放下手。花几个小时阅读这本书将大大缩短学习曲线。
- 观看 AWS Re:Invent 关于 DynamoDB 的演讲。 This talk from 2019 是一个很好的起点。 (本次演讲来自 DynamoDB Book 的作者 Alex DeBrie)。
- 在使用 NoSQL 数据库时,SQL 数据库的规则不适用。换句话说,在使用 NoSQL 时,忘掉你所知道的关于 SQL 数据库的一切。这是一种范式转变,我发现最好抛开任何关于数据库的先入为主的观念,以开放的心态处理这个话题。说起来容易做起来难,但无论如何这是我的建议:)
- DynamoDB 要求您构建数据模型以匹配应用程序的用例,也就是您的应用程序“访问模式”。在考虑如何访问数据之前将数据放入 DynamoDB 是错误的方法。相反,问问自己“我的应用程序需要通过哪些方式获取数据?”并相应地设计您的数据模型。
NoSQL 数据建模有一个陡峭的学习曲线,但如果你做对了,它真棒!祝你好运!