Я не понимаю SOA (Service-oriented Architecture) и базы данных. Хотя меня привлекает концепция SOA (инкапсуляция многоразовой бизнес-логики в сервисы), я не могу понять, как она должна работать, если таблицы данных, инкапсулированные в службу, требуются другими службами/системами --- или SOA подходит для все в этом сценарии?
Чтобы быть более конкретным, предположим, что у меня есть две службы:
-
CustomerService
: содержит таблицуCustomers
базы данных и связанную с ней бизнес-логику. -
OrderService
: содержит мою таблицуOrders
и логику.
Теперь что, если мне нужно JOIN
таблицы Customers
и Orders
с выражением SQL? Если в таблицах содержится миллионы записей, неприемлемая производительность будет результатом, если мне придется отправлять данные по сети с использованием SOAP/XML. И как выполнить JOIN
?
Проведя небольшое исследование, я нашел несколько предлагаемых решений:
- Использовать репликацию, чтобы сделать локальную копию необходимых данных там, где это необходимо. Но тогда нет инкапсуляции, а затем какой смысл использовать SOA? Это обсуждается qaru.site/info/224928/..., но нет четкого консенсуса.
- Настройте Главная служба данных, которая инкапсулирует все данные базы данных. Я предполагаю, что он получит размер монстра (по существу, один вызов API для каждой хранимой процедуры) и потребует обновлений все время. Для меня это похоже на концепцию корпоративная шина данных.
Если у вас есть какие-либо данные, сообщите мне.
Изменить: Прошел год, и мой интерес к SOA уменьшился, так же как и популярность концепции в целом. В настоящее время люди, похоже, хотят сосредоточиться на сервисах RESTful.