Как определить ключ сортировки в serverless.yaml - PullRequest
0 голосов
/ 24 мая 2018

Я новичок в области функций без сервера, AWS и лямбда-функции.
Я хочу знать, как определить ключ сортировки в файле serverless.yaml и как мы можем сортировать данные в порядке ASC или DEC при получении данных из таблицы DynamoDB?

Я также хочу знать, что, предположим, у меня есть поля таблицы пользователя, такие как

ID(Primary key)
Fullname(String)
Email(String)
City(String)
State(String)
PhoneNumber(String)

Я хочу отсортировать в порядке ASC или DEC по полному имени и столбцу электронной почты.Итак, насколько я понимаю, мне нужно определить полное имя и столбец электронной почты в качестве ключа сортировки.

Вот мой файл serverless.yaml

resources:
Resources:
UserDynamoDbTable:
  Type: 'AWS::DynamoDB::Table'
  DeletionPolicy: Retain
  Properties:
    AttributeDefinitions:
      -
        AttributeName: id
        AttributeType: S
    KeySchema:
      -
        AttributeName: id
        KeyType: HASH
    ProvisionedThroughput:
      ReadCapacityUnits: 1
      WriteCapacityUnits: 1
    TableName: 'user'

Итак, как я могу определить несколько ключей сортировки(Вот полное имя и адрес электронной почты) в таблице?

В приведенном выше файле .yaml как я могу определить полное имя и адрес электронной почты в качестве ключа сортировки?

Пожалуйста, помогите мне здесь.Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 19 июля 2019

Пример определения первичного ключа сортировки в вашем файле serverless.yml:

В этом примере я добавил ключ сортировки по метке времени в свою таблицу.

Этот ключ должен быть определен в AttributeDefinitions и KeySchema .

resources:
  Resources:
    MyTable:
      Type: 'AWS::DynamoDB::Table'
      DeletionPolicy: Retain
      Properties:
        TableName: your_table_name
        AttributeDefinitions:
          -
            AttributeName: id
            AttributeType: S
          -
            AttributeName: timestamp
            AttributeType: N
        KeySchema:
          -
            AttributeName: id
            KeyType: HASH
          -
            AttributeName: timestamp
            KeyType: RANGE

Я рассмотрел определение, и оно следует документам Cloud Formations.

AttributeDefinitions - https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-keyschema.html

KeySchema - https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_AttributeDefinition.html

0 голосов
/ 24 мая 2018

Ваше понимание ключей сортировки выглядит неправильно.Ключи сортировки работают полностью в зависимости от ключей HASH.Вы можете думать об этом как о подкатегории определенного ключа HASH.Dynamodb хранит все вместе в одном ключе HASH.Ключи сортировки должны указать, как они упорядочены, когда они хранятся вместе.

Из документа AWS Локальные вторичные индексы

enter image description here

DynamoDB сохраняет все элементы содно и то же значение ключа раздела.В этом примере, учитывая конкретное имя ForumName, операция Query может немедленно найти все потоки для этого форума.В группе элементов с одинаковым значением ключа раздела элементы сортируются по значению ключа сортировки.Если в запросе также указан ключ сортировки (Subject), DynamoDB может сузить возвращаемые результаты - например, вернуть все темы на форуме «S3», в которых Subject начинается с буквы «a»

Я бы посоветовал изучить, как работает DynamoDB, поможет вам в разработке моделей данных вашего приложения.

Насколько я понимаю, вы хотите отсортировать все элементы в этой таблице по FullName и по электронной почте.Это означает, что все они должны храниться вместе, что означает, что они должны иметь один и тот же ключ HASH, что означает, что они будут записаны в один и тот же «раздел».Это, конечно, не очень хороший дизайн.Существует такая схема, как Данные временных рядов , которая использует ту же логику, но другим способом.Взглянуть.Но это не ваш случай точно.DynamoDB не подходит для таких операций, которые вы хотите.Вы должны либо изменить свой дизайн модели данных, либо искать другие варианты базы данных для этого требования сортировки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...