Связывание SQL Server и PostgreSQL
Обстановка до: SQL Server, содержащий в себе две базы данных, условно: база с данными и база с процедурами, которые обращаются к базе с данными.
Обстановка после: База с данными переезжает на Postgres, и с этим ничего нельзя поделать. База с процедурами остается на SQL Server и она довольно мобильна.
Проблема: В текущей обстановке имеется несколько сложностей в общении между базами:
- Скорость запросов на SQL Server стала значительно ниже из-за обращения к Postgres;
- Требуется переписывать почти все процедуры для замены источника данных;
Основной вопрос: Какие действия можно предпринять для решения проблем разделения баз данных? В данный момент я выбираю либо простую заменой источника данных и мирюсь с тем, что процедуры и запросы выполняются в несколько раз дольше (в некоторых случаях, вместо 0.2 с. запрос выполняется 4 минуты). Либо настраиваю репликацию данных из Postgres на SQL Server. Может я что-то ещё упускаю, и есть способы проще и эффективнее.
Ответы (1 шт):
Самый быстрый способ обращения в PostgreSQL из MSSQL- это RPC.
Подготовили запрос для pg, вызвали. Так можно протолкнуть очень большой скрипт. На практике проталкивал json размером 30 мегабайт.
EXECUTE('select ....') AT PGLinkedServer
Но в целом архитектурно всё очень криво, переходите на pg полностью, отказывайтесь от mssql.