Связь двух сущностей в разных базах данных и связь между двумя приложениями - PullRequest
0 голосов
/ 22 января 2019

Короткая история: Как связать две сущности в разных базах данных?В микросервисах у каждого сервиса есть своя собственная база данных. Как сущности в разных базах данных связаны друг с другом в архитектуре микросервиса?

Длинная история: Я пишу два отдельных, но связанных приложения,скажем, система управления для продавцов подержанных автомобилей и система учета и финансирования.Я хочу, чтобы мои приложения работали друг с другом и независимо друг от друга.

Теперь давайте предположим, что сделка с транспортным средством завершена в системе управления, а затем из окончательных данных сделки я бы сгенерировал счет в финансовой системе.Точно так же, если сделка удаляется, мне нужно будет также удалить соответствующий счет-фактуру, но для удаления соответствующего счета-фактуры я хочу как-то связать сделку и счет-фактуру, но я не могу просто установить связь между объектами, потому что я хочу, чтобы мои приложениябыть полностью независимым, что означает разные базы данных.Или есть способ установить связь между двумя таблицами в разных базах данных?Является ли хорошей идеей даже связать две таблицы в разных базах данных?

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

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

Технологический стек: Мой технологический стек - .Net и MSSQL

Я ищу ответы от людей, которые разработали подобную систему или сталкивались с подобными проблемами до

1 Ответ

0 голосов
/ 22 января 2019

Используйте uuids для идентификации ваших сущностей и ссылки на них как на простые строки.

См. Как мне сгенерировать UUID в C #

Например:

{
  "Name" : "MyDeal",
  "Id" : "6a0e5244-2a85-4944-9be4-04c8cfbf3e45"
}

{
  "Name" : "MyInvoice",
  "Id" : "efed8b94-0065-4004-adcc-9f2d219fb6eb",
  "DealReference" : "6a0e5244-2a85-4944-9be4-04c8cfbf3e45"
}

Не используйте общее постоянство, такое как общая база данных. Смотри https://stackoverflow.com/a/43618284/7803650.

...