Как спроектировать микросервисную базу данных один ко многим? - PullRequest
4 голосов
/ 21 марта 2019

У меня вопрос о микросервисах и дизайне базы данных.Ситуация: у меня есть сервисная служба самолетов, которая обрабатывает все данные о самолете, типе самолета и так далее.И у меня есть Сервисная служба Авиабилеты, которая обрабатывает все данные о рейсах.Я должен связать самолет с рейсом.Обычно я создаю внешний ключ в таблице полетов, который связывает самолет.Но в микросервисной архитектуре я понимаю, что у меня есть домены и отдельные базы данных.Поэтому мой вопрос заключается в том, как я могу представить эту проблему.

Моей первой мыслью было, что у меня есть база данных для всех самолетов и база данных для всех рейсов.таблица полетов становится «косвенным» внешним ключом для самолета.Когда я звоню в службу полетов, служба полетов звонит в службу обслуживания самолетов с идентификатором из таблицы полетов, а затем формирует ответ.Это обещало, что я не буду звонить в базу данных самолетов прямо из службы полетов

Правильно ли мое решение?Какова наилучшая практика в этом случае использования?

После того, как я подумал о проблеме, когда я удаляю самолет, я должен сообщить службе полета, что указанный самолет больше не существует, и служба полета имеетобновить «косвенный» внешний ключ.

Может ли кто-нибудь мне помочь?

Спасибо

1 Ответ

1 голос
/ 04 апреля 2019

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

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

1 - Private-tables-per-service – each service owns a set of tables that must only be accessed by that service
2 - Schema-per-service – each service has a database schema that’s private to that service
3 - Database-server-per-service – each service has it’s own database server.

Вы можете смешивать и сопоставлять их в соответствии с вашим размером данных и количеством данных.

Я бы хотел, чтобы вы обратились и просмотрели эту страницу для идеального примера.

Лучшие базы данных микросервисов

Определите нагрузку на каждую службу, которую вы будете иметь. Нагрузку можно посчитать двумя способами.

  • Загрузка данных (сколько данных будет извлечено)
  • Количество обращений к службе (сколько раз будет вызываться служба)

Тогда вы можете принять решение об оценке.

...