#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 очень похоже. Слои, строительные блоки одинаковы.