【问题标题】:Vogels with DynamoDB hashKey issueVogels 与 DynamoDB hashKey 问题
【发布时间】:2016-12-21 12:01:49
【问题描述】:

我一直在使用 Vogels 和 NodeJS - Vogels 会在本地 DynamoDB 中为我创建架构。它工作完美。

由于某种原因,我在尝试使用 DynamoDB 服务在 AWS 中部署应用程序时遇到问题。我收到错误消息:

Details:TypeError: Cannot read property 'hashKey' of undefined

我什至尝试手动设置架构,但是 DynamoDB 在 AWS 控制台中没有 hashKey 选项。它只提供以下选项:

  • 主键/分区(字符串/二进制/数字)
  • 排序键(字符串/二进制/数字)

有没有人遇到过这种情况或知道如何处理创建架构?

【问题讨论】:

  • 哈希键也称为分区键。
  • 谢谢,那么当有2个PrimaryKey时我们如何处理呢?

标签: node.js amazon-web-services amazon-dynamodb vogels


【解决方案1】:

当您说两个主键时。我想你的意思是哈希键和排序键(两个独立的属性)。

请注意,两个属性不能成为哈希键的一部分。

哈希键 - 1 个属性

排序键 - 1 个属性

DynamoDB 支持两种不同的主键:

分区键 - 一个简单的主键,由一个属性组成,称为分区键。 DynamoDB 使用分区键的值作为内部散列函数的输入;散列函数的输出决定了存储项目的分区。表中的两个项目不能具有相同的分区键值。

分区键和排序键 - 由两个属性组成的复合主键。第一个属性是分区键,第二个属性是排序键。 DynamoDB 使用分区键值作为内部散列函数的输入;哈希函数的输出决定了存储项目的分区。具有相同分区键的所有项目存储在一起,按排序键值排序。两个项目可能具有相同的分区键值,但这两个项目必须具有不同的排序键值。

Primary key

在 AWS 控制台中创建表格的屏幕截图:-

【讨论】:

  • 感谢您的详细回复。实际上我所指的辅助键实际上是 rangeKey。 rangeKey 和排序键一样吗?我正在尝试阅读 AWS 上的文档,但很难理解。
  • 是的,范围键与排序键相同。
  • 哇,谢谢你这么快的回复:) 有没有在表设置后添加这个?还是我必须从头开始创建它? (只是在控制台中看不到添加选项)
  • 不,一旦创建表,就不能更改它以包含范围或排序键。应使用所需的键属性创建新表。
猜你喜欢
  • 1970-01-01
  • 2023-03-04
  • 2016-12-25
  • 1970-01-01
  • 2017-05-09
  • 1970-01-01
  • 2016-02-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多