#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-запросы с веб-сайта.
Это распространенный подход.