Правильный способ взаимодействия API с базой данных?

#database #api #web-services

#База данных #API #веб-сервисы

Вопрос:

Я пытаюсь разместить базу данных (на AWS или Heroku) для хранения данных из моего веб-приложения. Мне также нужно создать API для взаимодействия с базой данных. В принципе, как на этой картинке из Google.

введите описание изображения здесь Источник изображения: https://dzone.com/articles/an-introduction-to-restful-apis

Что я пытаюсь выяснить:

Обычно ли API и база данных размещаются отдельно? Или они часто размещаются вместе? Я не уверен, являются ли API и DB одним компонентом (с подкомпонентами, являющимися API и DB), или это 2 отдельных автономных компонента.

Если они представляют собой один компонент и их можно размещать вместе, то, я полагаю, вы можете использовать что-то вроде Express.js для вашего API, который может запрашивать базу данных и отвечать на HTTP-запросы с веб-сайта.

Если это два отдельно размещенных компонента, я чувствую, что это означает, что у меня должно быть 2 API, если только мой API не может напрямую взаимодействовать с базой данных (я не уверен, правильно ли это). Итак, мне нужно, чтобы мой API взаимодействовал с какой-либо серверной технологией (PHP, Java и т.д.), Которая затем запрашивала бы базу данных и возвращала результат в API. Итак, в основном мой API взаимодействует с API, который взаимодействует с базой данных. Я не уверен, что это слишком усложняет ситуацию, но похоже, что так.

Я пытаюсь пояснить, как работает этот процесс.

Ответ №1:

Обычно ли API и база данных размещаются отдельно? Или они часто размещаются вместе?

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

Поэтому, как правило, они должны размещаться вместе. Что это означает, зависит от стиля хостинга. Использование того же облачного сервиса имеет смысл, если вы используете что-то вроде AWS Lambda. В противном случае используйте один и тот же компьютер как для базы данных, так и для HTTP-сервиса, пока вы не масштабируете до точки, где вам нужно их разделить.

Если они представляют собой один компонент и их можно размещать вместе, то, я полагаю, вы можете использовать что-то вроде Express.js для вашего API, который может запрашивать базу данных и отвечать на HTTP-запросы с веб-сайта.

Это распространенный подход.