Хранить объекты, полученные из API, в базе данных приложения или всегда извлекать их из API?

#asp.net-core #synchronization #stripe-payments #payment-gateway

Вопрос:

Я использую API платежного шлюза, который используется нашим ASP.NET Основное приложение для получения истории платежей клиентов, когда они открывают страницу «Платежи».

Вопрос в том, является ли это хорошей практикой всегда извлекать эту информацию из API платежного сервиса или лучше хранить локальную копию этих объектов, так как это будет быстрее?

о чем следует подумать:

  • объекты оплаты не изменяются в API после их завершения
  • извлечение непосредственно из API влияет на допустимое ограничение запросов для этого API
  • чтобы хранить эти объекты локально, я думаю, что мне нужно регулярно синхронизировать таблицу БД с данными API

P.S.: Стек, который я использую:

  • бэкэнд: ASP.NET Сердечник
  • база данных: PostgreSQL
  • платежный шлюз: Stripe

Комментарии:

1. Я предлагаю немного проверить информацию о сквозной записи и обратной записи при реализации кэша, реализуйте их как кэш памяти или кэш Redis по мере необходимости

2. Используйте какую-то логику с GetOrCreate , имейте некоторую логику для организации и удаления ключа кэша по мере необходимости, должно быть достаточно

3. Я вижу это по-другому. История платежей клиента всегда должна быть правильной, если вы сохраняете копию в кэше, как обеспечить обновление последней истории платежей? Или у вас есть другой api, который достаточно умен, чтобы просто запросить последнюю часть, а затем обновить локальные данные? Поэтому я думаю, что лучше все время вызывать api и пытаться улучшить производительность api. Это всего лишь мои 2 цента.

Ответ №1:

Конечно, это полностью зависит от вашего сценария, если вы используете api. Единственная проблема заключается в том, что ваш сервер использует большую пропускную способность при большом количестве запросов, и такие вещи, как задержка, могут быть неприятными для ваших пользователей. В общем, лучше иметь копию в своей базе данных, даже если этот сервер API находится вне досягаемости, ваше приложение не будет иметь никаких проблем и будет работать должным образом