Как мне создать схему DynamodB с вложенными определениями атрибутов через aws-cli? - PullRequest
0 голосов
/ 11 января 2019

Я использовал команду aws dynamodb create-table --cli-input-json для создания локальных таблиц DynamodB для тестирования на моем локальном компьютере.

Я могу создавать простые таблицы, но не могу создавать более сложные таблицы реального мира. Я просмотрел документацию AWS, и в ней отсутствует объяснение вложенных атрибутов AttributeDefinitions, или я не смог его найти. Вот простой пример, который работает (для создания через CLI AWS):

{
  "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 ]

0 голосов
/ 15 января 2019

В духе обучения я поделюсь некоторыми из того, что я узнал, и в процессе изучения DynamoDb я играл с парой ORM.

Документация к Dynamoose ужасна, у меня получилось много проб и ошибок. Документация AWS плохая, но выполнимая. Это то, что я искал с самого начала https://github.com/awslabs/dynamodb-data-mapper-js

Надеюсь, это будет ярлык для других разработчиков, которые хотят использовать DynamoDb с ORM на Nodejs

0 голосов
/ 12 января 2019

Необходимо указать AttributeDefinitions только для атрибутов, которые будут частью первичного ключа таблицы или частью ключа индекса. Динамо в основном без схемы (кроме ключевых определений). Он не заботится ни о каких других атрибутах, которые вы хотите сохранить - не нужно ничего моделировать.

...