Amazon web services 如何在AWS DynamoDB中联接表?

Amazon web services 如何在AWS DynamoDB中联接表?,amazon-web-services,amazon,amazon-dynamodb,Amazon Web Services,Amazon,Amazon Dynamodb,我知道整个设计应该基于自然聚合(文档),但是我正在考虑为本地化(lang、key、text)实现一个单独的表,然后在其他表中使用键。然而,我找不到任何这样做的例子 任何提示都可能有用 没错,DynamoDB不是作为关系数据库设计的,不支持连接操作。您可以将DynamoDB看作是一组键值对 您可以在多个表中使用相同的键(例如document_id),但是DynamoDB不会自动同步它们或具有任何外键功能。一个表中的文档ID虽然名称相同,但在技术上与另一个表中的文档ID不同。由您的应用程序软件来确保

我知道整个设计应该基于自然聚合(文档),但是我正在考虑为本地化(lang、key、text)实现一个单独的表,然后在其他表中使用键。然而,我找不到任何这样做的例子


任何提示都可能有用

没错,DynamoDB不是作为关系数据库设计的,不支持连接操作。您可以将DynamoDB看作是一组键值对

您可以在多个表中使用相同的键(例如document_id),但是DynamoDB不会自动同步它们或具有任何外键功能。一个表中的文档ID虽然名称相同,但在技术上与另一个表中的文档ID不同。由您的应用程序软件来确保这些键同步

MadioDB是一种不同的数据库思维方式,您可能需要考虑使用托管关系数据库,如Amazon AuroR: < /P>


需要注意的是,Amazon EMR确实允许连接DynamoDB表,但我不确定这是您想要的:

使用DynamoDB,而不是连接,我认为最好的解决方案是将数据存储在您稍后打算读取的形状中

如果您发现自己需要复杂的读取查询,那么您可能会陷入期望DynamoDB像RDBMS一样工作的陷阱,而事实并非如此。转换和塑造您所写的数据,保持读取简单


现在,磁盘比计算机便宜得多——不要害怕去规范化。

您必须查询第一个表,然后在下一个表上使用get请求迭代每个项目

其他答案并不令人满意,因为1)没有回答问题,更重要的是,2)如何提前设计表格,以了解其未来的应用?技术债务太高,无法合理覆盖无限的未来可能性

我的回答效率极低,但这是目前唯一解决这个问题的方法


我急切地等待一个更好的答案

我知道我的反应有点晚,晚了几年。然而,我能够挖掘出一些关于Amazon DynamoDB&Joins的其他信息,这些信息可能会对您(或者其他个人,他们可能会在将来研究这些信息时偶然发现这个讨论)有所帮助

为了说明这一点,我在Amazon DynamoDB网站上找到了一些文档,其中指出可以使用Apache HiveQL查询语言对Amazon DynamoDB表、列和数据等执行连接

在DynamoDB中查询数据(w/HiveQL):

与Amazon DynamoDB和Apache Hive一起工作:

在Amazon EMR上使用Apache Hive处理Amazon DynamoDB数据:


如果不是原始海报的话,我希望这些信息能帮助一些人。

最近,我也有同样的要求,需要使用连接和聚合功能,比如与dynamoDb一起使用avg和sum,为了解决这个问题,我使用了Cdata JDBC驱动程序,它工作得非常好。它支持连接和聚合函数。尽管如此,由于cdata的许可证成本,我也在寻找避免使用cdata的解决方案

更新:此答案完全符合已定义的社区指导原则,并非仅针对商业解决方案的非答案


在这个领域,我见过多次出现的一种解决方案是将DynamoDB同步到一个单独的数据库中,该数据库更适合您所寻找的操作类型

我写了一篇关于这个主题的文章,比较了我见过的人们解决这个问题的各种方法,但是我会在这里总结一些关键的要点,这样你就不必全部阅读了

DynamoDB二级索引 什么好?
  • 快速,无需其他系统
  • 适用于您正在构建的非常具体的分析功能(如排行榜)
  • 考虑
  • 二级索引有限,查询保真度有限
  • 如果你依赖扫描,那就太贵了
  • 直接使用生产数据库进行分析的安全性和性能问题

  • DynamoDB+胶水+S3+雅典娜

    什么好?
  • 所有组件都是“无服务器”的,不需要配置基础架构
  • 易于自动化的ETL管道
  • 考虑
  • 高的端到端数据延迟数小时,这意味着过时的数据
  • 查询延迟在几十秒到几分钟之间变化
  • 架构实施可能会丢失混合类型的信息
  • 如果源中的数据结构发生变化,ETL过程可能需要不时进行维护

  • 发电机B+蜂箱/火花

    什么好?
  • 查询DynamoDB中的最新数据
  • 除了指定模式外,不需要ETL/预处理
  • 考虑
  • 当字段具有混合类型时,架构强制可能会丢失信息
  • EMR集群需要一些管理和基础架构管理
  • 对最新数据的查询需要扫描,而且成本高昂
  • 直接在Hive/Spark上查询延迟在几十秒到几分钟之间变化
  • 在操作数据库上运行分析查询的安全性和性能影响

  • DynamoDB+AWS Lambda+Elasticsearch 什么好?
  • 全文搜索支持
  • 支持多种类型的分析查询
  • 可以处理DynamoDB中的最新数据
  • 考虑
  • 需要管理和监视用于摄取、索引、复制和分片的基础架构
  • 需要单独的系统来确保DynamoDB和Elasticsearch之间的数据完整性和一致性
  • 扩展是手动的,需要提供额外的基础架构和操作
  • 不支持不同索引之间的联接

  • 发电机B+

    什么好?
  • 完全没有服务器。没有基础架构或数据的操作或调配