Мне нужно немного понять, как оценить следующий дизайн базы данных DynamoDB.
У меня есть две таблицы, TableA
и TableB
, которые имеют одинаковый ключ раздела и две изолированные службы ServiceA
и ServiceB
. ServiceA
обрабатывает запросы CRUD API для TableA
и ServiceB
для TableB
.
Когда выполняется запрос GET, ServiceA
требует не только возврата данных из TableA
, но и одного столбца из TableB
. Для этого у меня есть два варианта:
- Дублирование данных: сохранить этот единственный столбец TableB в TableA ( ключ раздела тот же ).
- Плюсы: только один запрос DynamoDB API, и я смогу вернуть данные.
- Минусы: используйте потоки, чтобы данные всегда обновлялись в таблицах.
- Плюсы: потоки DynamoDB будут обновлять данные асинхронно в бэкэнде.
Сделайте два запроса API как для TableA, так и для TableB.
- Плюсы: нет дублирующих данных и накладных расходов на их обслуживание.
- Минусы: всего два запроса DynamoDB API (1-1) для каждой таблицы, комбинирование и возврат.
Какой путь более стандартный и оптимальный? Я не могу объединить обе таблицы, поэтому должен ли я дублировать этот единственный столбец или мне следует взять на себя накладные расходы по выполнению двух запросов API.