【问题标题】:How do I create a dynamodb schema with nested attribute definitions via aws-cli?如何通过 aws-cli 创建具有嵌套属性定义的 dynamodb 模式?
【发布时间】:2019-01-15 06:43:26
【问题描述】:

我一直在使用命令 aws dynamodb create-table --cli-input-json 创建本地 dynamodb 表,以便在本地机器上进行测试。

我可以创建简单的表格,但无法创建更复杂的真实表格。我查看了 AWS 文档,它缺少对嵌套 AttributeDefinitions 的解释,或者我找不到它。 这是一个有效的简单示例(用于通过 AWS CLI 创建):

{
  "TableName": "fruitsTable",
  "KeySchema": [
    {
      "AttributeName": "fruitId",
      "KeyType": "HASH"
    }
  ],
  "AttributeDefinitions": [
    {
      "AttributeName": "fruitId",
      "AttributeType": "S"
    }
  ],
  "ProvisionedThroughput": {
    "ReadCapacityUnits": 5,
    "WriteCapacityUnits": 5
  }
}

效果很好。 aws dynamodb create-table --cli-input-json file:///Users/you/subfile/server/config/tables/fruits.json --endpoint-url http://localhost:8000

但是,我希望看到一个创建更复杂对象的示例。什么架构适用于此?

{
  "ComplexFruit" : [
    {
      "complexFruitId": "redbanana-fromGroceryStore"
      "name" : "redBanana", 
      "notes": "this one is red",
      "count" : {
        "ripe" : 5,
        "total": 10
       },
      "stores" : [ 
          {"storeName" : "Exito"}
       ]
     }
   ]
}

我不知道如何创建嵌套的AttributeDefinition 而无需大量猜测或挖掘代码(如果 dynamodb 是开源的?)。 有人知道吗?这显然也是一个人为的例子,但它会演示如何创建嵌套模式。

【问题讨论】:

    标签: node.js amazon-dynamodb aws-sdk aws-cli


    【解决方案1】:

    您只需为将成为表的主键或索引键的一部分的属性指定AttributeDefinitions。 Dynamo 大多是无模式的(除了键定义)。它不关心您要存储的任何其他属性 - 无需建模任何东西。

    【讨论】:

    • 嗯,很有趣。好吧,我想这是我刚刚误解的事情,因为我来自 SQL 世界。谢谢。
    【解决方案2】:

    在精神学习中,我会分享一些我学到的东西,在学习DynamoDb的过程中,我玩过几个ORM。

    Dynamoose 的文档很糟糕,我通过大量的试验和错误得到了它。 AWS 文档不好但可行。这就是我从一开始就在寻找的东西https://github.com/awslabs/dynamodb-data-mapper-js

    希望这将是其他开发人员在 Nodejs 上使用带有 ORM 的 DynamoDb 的捷径

    【讨论】:

    • 我对@9​​87654322@ 也有同样的感觉。 Dynamoose 现在看起来好多了,但在文档中仍然存在很大差距。
    猜你喜欢
    • 2018-02-28
    • 2019-09-12
    • 2014-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    • 2021-03-30
    相关资源
    最近更新 更多