Я не уверен, что это правильное место, чтобы задать этот вопрос.
Я новичок в DynamodB и пытаюсь найти выход для создания небольшого веб-приложения.Я прочитал лучшие практики здесь http://docs.amazonwebservices.com/amazondynamodb/latest/developerguide/BestPractices.html
Мои таблицы будут:
- Здания
- Арендаторы (в здании может быть столько арендаторов, сколькономер этажа)
- Получатели (на каждом этаже может быть столько получателей, в основном псевдоним арендатора)
- Курьеры
- Доставки (курьер связан с конкретным получателем)
В настоящее время мой подход к разработке схемы выглядит следующим образом:
// Tables
// PK: Building Id, SK: name
- Building ID : {
name: <Building Name>
Tenants: [
{ TenantId: { Receipients: [{Receipient Id 1, Receipient Id 2...}] }
]
}
// PK: Courier Id, SK: createdAt
- CourierId : {
name: <Courier name>
...
}
//PK: Not Sure, SK: Not Sure <-- This is where I messed up, looks relational, defeats the purpose?
- Deliveries: {
receipient id: Courier id
}
Чтобы составить список всех доставок вместе с информацией о получателе, мне потребуется информация о получателе по идентификатору получателя.Это, согласно документам LSI , будет означать создание идентификатора получателя в качестве ключа сортировки в таблице Building.
Поскольку вы можете иметь только элементы верхнего уровня таблицы (получатель не один), это кажется невозможным согласно руководству https://docs.amazonaws.cn/en_us/amazondynamodb/latest/developerguide/GSI.html
Атрибуты ключа индекса могут состоятьлюбых строковых, числовых или двоичных атрибутов верхнего уровня из базовой таблицы;другие скалярные типы, типы документов и типы наборов недопустимы.
Итак, я безнадежно, что этого можно достичь без создания другой таблицы, куда я должен копировать всех получателей, обновляя их, все обновления происходятв таблице.Есть ли какой-то другой альтернативный или лучший подход?
Поскольку доставки, по-видимому, представляют собой отношение курьеров один к одному с получателем, можно ли сохранять идентификаторы и перебирать всех получателей и курьеров во времясписок всех поставок?