Создание двух таблиц DynamoDB в serverless.yml

Я пытаюсь добавить 2 таблицы в serverless.yml для связи с DynamoDB.

Часть моего кода в serverless.yml:

...       
 resources:
      Resources:
        ItemsTable:
          Type: "AWS::DynamoDB::Table"
          Properties:
            TableName: "InvoiceConfig"
            AttributeDefinitions:
            - AttributeName: "providerName"
              AttributeType: "S"
            KeySchema:
            - AttributeName: "providerName"
              KeyType: "HASH"
            ProvisionedThroughput:
              ReadCapacityUnits: 2
              WriteCapacityUnits: 2
            TableName: "DifferentTermsPages"
            AttributeDefinitions:
            - AttributeName: "id"
              AttributeType: "S"
            - AttributeName: "providerName"
              AttributeType: "S"
            - AttributeName: "productType"
              AttributeType: "S"
            - AttributeName: "language"
              AttributeType: "S"
            - AttributeName: "terms"
              AttributeType: "L"
            KeySchema:
            - AttributeName: "id"
              KeyType: "HASH"
            - AttributeName: "providerName"
              KeyType: "HASH"
            - AttributeName: "productType"
              KeyType: "HASH"
            - AttributeName: "language"
              KeyType: "HASH"
            - AttributeName: "terms"
              KeyType: "HASH"
            ProvisionedThroughput:
              ReadCapacityUnits: 10
              WriteCapacityUnits: 10

Это правильно??

Мои таблицы:

InvoiceConfig: with columns: providerName (String)
DifferentTermsPages: id (String), providerName (String), productType (String), language (String), terms (list)

Нужны ли мне дополнительные изменения в serverles.yml? что означают выражения «ReadCapacityUnits» и «WriteCapacityUnits»?


person Norak    schedule 16.11.2017    source источник


Ответы (2)


Между двумя ресурсами (например, двумя таблицами DynamoDB) должно быть некоторое разделение.

Примечание:-

При создании таблицы DynamoDB можно определить только ключевые атрибуты. Другими словами, вам не нужно определять все остальные неключевые атрибуты.

Попробуйте это:-

Resources:
ItemsTable:
  Type: "AWS::DynamoDB::Table"
  Properties:
    TableName: "InvoiceConfig"
    AttributeDefinitions:
    - AttributeName: "providerName"
      AttributeType: "S"
    KeySchema:
    - AttributeName: "providerName"
      KeyType: "HASH"
    ProvisionedThroughput:
      ReadCapacityUnits: 2
      WriteCapacityUnits: 2            
DifferentTermsPages:
  Type: "AWS::DynamoDB::Table"
  Properties:             
    TableName: "DifferentTermsPages"
    AttributeDefinitions:
    - AttributeName: "id"
      AttributeType: "S"
    KeySchema:
    - AttributeName: "id"
      KeyType: "HASH"
    ProvisionedThroughput:
      ReadCapacityUnits: 10
      WriteCapacityUnits: 10    

Чтение и запись единиц емкости:-

Вы указываете пропускную способность в единицах емкости чтения и единицах емкости записи:

Одна единица емкости чтения представляет собой одно строго согласованное чтение в секунду или два потенциально согласованных чтения в секунду для элемента размером до 4 КБ. Если вам нужно прочитать элемент размером более 4 КБ, DynamoDB потребуется использовать дополнительные единицы емкости для чтения. Общее количество требуемых единиц емкости чтения зависит от размера элемента и от того, хотите ли вы последовательное или строго согласованное чтение. Одна единица емкости записи соответствует одной записи в секунду для элемента размером до 1 КБ. Если вам нужно записать элемент размером более 1 КБ, DynamoDB потребуется использовать дополнительные единицы емкости записи. Общее количество требуемых единиц емкости записи зависит от размера элемента.

Чтение и запись единиц емкости

person notionquest    schedule 16.11.2017

Короткий ответ:

Единицы емкости чтения и записи — это максимальный размер данных, которые базе данных разрешено обрабатывать в секунду. Если вы превысите этот объем в любую секунду, ваш запрос будет ограничен.

Альтернатива:

Может быть проще просто использовать DynamoDB On-Demand и платить за Использование таблиц БД вместо расчета WCU и RCU.

Пример

Вот пример 3 таблиц, добавленных в отформатированном виде и без полукавычек:

resources:
  Resources:
    myDynamoDBTable1:
      Type: AWS::DynamoDB::Table
      Properties:
        TableName: Table1
        AttributeDefinitions:
          - AttributeName: ColumnName1
            AttributeType: S
          - AttributeName: ColumnName2
            AttributeType: N
        KeySchema:
          - AttributeName: ColumnName1
            KeyType: HASH
          - AttributeName: ColumnName2
            KeyType: RANGE
        ProvisionedThroughput:
          ReadCapacityUnits: 1
          WriteCapacityUnits: 1 
    myDynamoDBTable2:
      Type: AWS::DynamoDB::Table
      Properties:
        TableName: Table2
        AttributeDefinitions:
          - AttributeName: ColumnName1
            AttributeType: S
        KeySchema:
          - AttributeName: ColumnName1
            KeyType: HASH
        BillingMode: PAY_PER_REQUEST
    myDynamoDBTableN:
      Type: AWS::DynamoDB::Table
      Properties:
        TableName: TableN
        AttributeDefinitions:
          - AttributeName: ColumnName1
            AttributeType: S
        KeySchema:
          - AttributeName: ColumnName1
            KeyType: HASH
        BillingMode: PAY_PER_REQUEST

Дополнительные пояснения с примерами:

Вернитесь в Режим чтения/записи емкости:

Формула записи единиц емкости (WCU): округлить (DataSize / 1 КБ)

Пример 1: представьте, что вы предвидите трафик записи 10 КБ данных в секунду в базу данных. Используя формулу WCU, вам потребуется (10 КБ / 1 КБ) = 10WCU.

Пример 2. Ожидается запись трафика объемом 7,5 КБ данных в базу данных, нам потребуется: (7,5 КБ / 1 КБ) = 8WCU.

Единицы емкости чтения (RCU) зависят от строгой или окончательной согласованности моделей.

Режим строгой согласованности: округление в большую сторону (размер данных / 4 КБ)
Режим окончательной согласованности: округление в большую сторону (размер данных / 4 КБ) / 2

person ArtiomLK    schedule 15.02.2019