Я разрабатываю свою первую базу данных DynamoDB для финансового приложения, в котором пользователи создают несколько финансовых портфелей ios, которые содержат такие объекты, как счета, инвестиции, транзакции и т. Д. c. Я не на 100% уверен в лучших методах работы с ключами разделов.
У меня есть 2 вопроса для следующих случаев использования:
1.) Большинство таблиц состоят из строк, где каждый пользователь в приложении будет иметь от 10 до 200 объектов на портфель (учетные записи например, инвестиции). Поскольку я загружаю данные по userId иfolioId, userId - это первая часть ключа раздела. Тем не менее, что лучше создать ключ сортировки для PortalId или его следует объединить с userId? 10 000 и 250 000. Опять же, лучше ли concat, особенно с учетом того, что не все транзакции загружаются сразу, а только самые последние (на основе transactionDate)?
2.1) PartitionKey: userId, SortKey: portfolioId
or
2.2) PartitionKey: userId + portfolioId, SortKey: transactionDate
Поскольку мои методы get будут получать только самые последние транзакции, дополнительный фильтр используется на transactionDate.
-> Насколько я понимаю, 1.2 и 2.2 являются лучшими проектами, поскольку они должны ускорить извлечение данных, при этом сохраняя равномерное распределение данных по разделам, поскольку ключ начинается с userId, которого в приложении должно быть много оф. Мы очень ценим любой совет или опыт в этом отношении!
UPDATE:
Я не достаточно разбирался в таблицах. Существует таблица портфолио, в которой вы можете запросить все портфели ios по userId, оттуда приложение загружает только одно портфолио за раз.
Нет необходимости запрашивать весь портфель ios по таким таблицам, как account. Учитывая, что это 1,2 и 2,2, это все еще не очень хороший шаблон?