DynamoDB - Сокращение количества запросов - PullRequest
0 голосов
/ 19 февраля 2020

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

Приложение позволяет пользователю запускать определенные оповещения, которые отправляются другим пользователям. Например: «Отгрузка получена, приходите на палубу», «Отгрузка завершена» и т. Д. c.

Выполнены следующие звонки:

  1. Получить дату окончания лицензии на программное обеспечение компании .
  2. Получите местоположение компьютера в здании (например, «Офис А»).
  3. Получите виды предупреждений, которые могут быть активированы (например, «Отгрузка получена, поступите на палубу», «» Отгрузка завершена ", et c).
  4. Получить информацию о пользователе (то есть о командах компании, к которой принадлежит пользователь, и уровне администратора пользователя (который может быть 0, 1, 2 или 3).

Потенциальные решения, которые я имею о:

  1. Поместите дату окончания лицензии компании в качестве атрибута каждого компьютера (Это уменьшит количество запросов на 1 Однако, если мне нужно обновить дату истечения срока действия лицензии компании, то мне нужно обновить ее для КАЖДОГО ОДНОГО компьютера, который есть в моей системе, что кажется мне непрактичным, поскольку у меня может быть 200, 300 или, возможно, даже больше компьютеров в базы данных.

    * 10 22 *
  2. Добавить дату истечения срока действия лицензии компании в качестве атрибута предупреждений (это уменьшит количество запросов на 1); что кажется более разумным, потому что есть только около 15 различных видов предупреждений, поэтому, если мне понадобится изменить дату окончания лицензии позже, это не так уж плохо.

  3. Кэшируйте информацию на пользовательское устройство; Тем не менее, я не могу найти хорошую стратегию, чтобы сохранить информацию, хранящуюся локально, как можно более обновленной.

Я все еще думаю, что эти 3 варианта звучат не слишком хорошо, поэтому я надеясь, что кто-то может направить меня в правильном направлении. Есть ли хороший способ уменьшить количество звонков? Я получаю информацию о 4 различных объектах (лицензия, компьютер, оповещение, пользователь). Должен ли я оставить эти 4 вызова после входа пользователей?

1 Ответ

0 голосов
/ 21 февраля 2020

Вот несколько вещей, которые можно сделать с каждым компонентом.

  1. Получить информацию о пользователе

    сохранить ее в хранилище сеансов, а при изменении данных обновлять хранилище , Хранилища сессий обычно реализуются с использованием кеша, например, redis.

  2. Расположение компьютера

    Храните его в распределенном кеше, как redis. лениво инициализируй это. и всякий раз, когда происходит новая запись в местоположение компьютера (редко IMO), удаляйте запись из redis, используя потоки DynamodB и aws лямбда.

  3. Вид предупреждений

    То же, что компьютер location

  4. Дата окончания срока действия лицензии

    Если возможно, не разрешайте указывать дату окончания срока действия лицензии (для этих случаев выдайте новую, чтобы обеспечить возможность отслеживания.) и лицензию для кэширования. истечение навсегда. ИЛИ так же, как местоположение компьютера.

...