如何通过aws-cli创建带有嵌套属性定义的dynamodb架构?

7

我一直在使用命令 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是开源的话,我需要猜测或深入挖掘代码。有人知道吗?这显然是一个编造的例子,但它可以演示如何创建嵌套模式。

2个回答

5

您只需要为表的主键或索引的键的属性指定AttributeDefinitions。Dynamo基本上是无模式的(除了关键字定义)。它不关心您想要存储的任何其他属性-没有必要对任何内容进行建模。


嗯,有趣。好的,我想这是我误解了的东西,因为我来自 SQL 的世界。谢谢。 - DudeWheresMyCode

2
在学习的过程中,我想分享一些我所学到的内容。在了解DynamoDb的过程中,我尝试了几个ORM。 Dynamoose文档很糟糕,我通过反复试验才使其正常工作。 AWS文档不好,但是可以使用。这就是我一开始寻找的:https://github.com/awslabs/dynamodb-data-mapper-js。希望这对于其他想在Nodejs上使用ORM与DynamoDb的开发人员来说是一个捷径。

我对于“数据映射器”也有同样的感觉。Dynamoose现在好了一些,但文档仍然存在重大漏洞。 - alanionita

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接