Подключение к нескольким базам данных с помощью GraphQL

#graphql

#graphql

Вопрос:

Мы создаем новый GraphQL api с использованием apollo server 2. Большая часть наших данных хранится в MongoDB, и мы можем легко получить к ним доступ с помощью mongoose. Но в нашей базе данных MySQL существует множество точек данных. Как мы можем подключиться к нескольким базам данных в GraphQL API для подключения к mongodb и MySQL?

Ответ №1:

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

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

Другая стратегия, которую вы, возможно, захотите рассмотреть, заключается в создании отдельных (микро) сервисов для этих баз данных. Затем ваш сервер GraphQL извлек бы свои данные из этих служб и полностью прекратил бы обработку базы данных.

Ответ №2:

Вот ваши слои:

Клиентский уровень (браузер) имеет клиент GraphQL -> уровень http-сервера (например, Apolo) -> Поставщик сервера GraphQL, этот уровень понимает запросы GraphQL. В нем хранятся ваши преобразователи GrapgQL. —> Хранилище данных.

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

В моем случае у меня есть опыт работы с Java. Настройка должна была быть клиентом Javascript с возможностью построения запросов GraphQL. Http-сервер, который способен кэшировать ответы на запросы GraphQL. Сервер Jetty, поставляемый с поставщиком GraphQL. Тогда мои источники данных были бы настроены там.

Структура с Node.js очень похоже. Слои, строительные блоки одинаковы.