Лучший ключ разделения DynamoDB и ключ сортировки для таблицы с сотнями миллионов строк - PullRequest
0 голосов
/ 04 ноября 2019

Допустим, у меня есть таблица с именем "CustomerRequest", и она содержит следующие атрибуты:

  • "CustomerId": уникальный идентификатор клиента, может содержать сотни миллионов значений,является последовательностью, сгенерированной старой системой, и ее нельзя изменить.
  • "CountryCode": код страны клиента.
  • "RequestType": тип запроса, значения из определенного спискас менее чем 100 значениями.
  • «RequestDate»: дата запроса.

Вот ограничения:

  • Пользователь может заказать запрос к существующему клиенту.
  • При заказе запроса пользователю предоставляется идентификатор запроса, чтобы он мог получить запрос позже. Формат должен быть определен, но он не может быть UUID.
  • Пользователь также может получить все запросы для идентификатора клиента.
  • Пользователь также может получить все запросы для кода страны.

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

Что является лучшим выбором для раздела иключ сортировки?

В настоящий момент я могу придумать следующее решение:

  • Использовать CustomerId в качестве ключа раздела и RequestDate в качестве ключа сортировки. Идентификатор запроса, предоставленный пользователю, будет выглядеть как «CustomerId-RequestDate» с указанием даты в виде метки времени в миллисекундах (очень маловероятно, что 2 запроса на один и тот же идентификатор клиента будут инициированы одновременно). Я могу использовать этот индекс для получения запроса по его идентификатору И для получения всех запросов для идентификатора клиента.
  • Добавить GSI с CountryCode в качестве ключа раздела и идентификатором клиента в качестве ключа сортировки. Я думаю, что я могу использовать этот индекс для получения всех запросов на код страны.

Есть ли лучшее решение?

Спасибо за вашу помощь.

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