Недавно появилась новость о том, что Amazon решила выпустить исходный код "Babelfish for PostgreSQL", предлагая расширение базы данных PostgreSQL с реализацией определенных возможностей базы данных Microsoft SQL Server.
Ключевая цель проекта - предоставить возможность запускать приложения, написанные для SQL Server, на серверах, на которых работает PostgreSQL. Код проекта открыт под лицензиями Apache 2.0 и PostgreSQL.
Тем, кто не знаком с Babelfish, следует знать, что это поддерживает сетевой протокол, используемый для подключения клиентов к расширениям языка запросов SQL Server, T-SQL и SQL Server, позволяя вам переводить запущенные приложения с Microsoft SQL Server на PostgreSQL без модификации вашего кода или с минимальными изменениями и без замены драйверов для СУБД. Для приложений Babelfish выглядит как обычный SQL-сервер. Проект уже используется на Amazon Aurora.
Сегодня мы делаем Babelfish доступным для Aurora PostgreSQL. Babelfish позволяет Amazon Aurora PostgreSQL-Compatible Edition понимать протокол подключения к SQL Server. Это позволяет вам переносить ваши приложения с SQL Server на PostgreSQL дешевле, быстрее и с меньшим риском, связанным с таким изменением.
Утверждается, что проект Babelfish следует открытой модели разработки что позволяет участникам сообщества вносить изменения и влиять на развитие. Для пользователей изменение на Babelfish позволит вам избежать значительных гонораров за использование SQL Server., обходить лицензионные ограничения и не зависеть от изменений в политике обслуживания проприетарного продукта (отмена льгот, прекращение поддержки платформы, рост цен).
В проект входит набор расширений PostgreSQL., набор патчей PostgreSQL и набор инструментов компаса:
Расширения обеспечивают поддержку PostgreSQL для дополнительного синтаксиса, типов данных и функций, необходимых для миграции с SQL Server. Всего предлагается 4 расширения:
- Babelfishpg_tsql: который является расширением для реализации языка T-SQL (Transact-SQL), который дополняет SQL процедурным программированием, поддержкой локальных переменных и расширенных функций для обработки строк, дат и математических выражений. Реализовано большинство запрошенных функций T-SQL, включая точки сохранения, хранимые процедуры и вложенные транзакции. Однако значительная часть синтаксиса и функций остается нереализованной (как правило, это характеристики, которые редко используются в реальных приложениях, таблица совместимости). Например, конструкции «ДОБАВИТЬ ПОДПИСЬ», «СОЗДАТЬ АГРЕГАТ», «СОЗДАТЬ / ИЗМЕНИТЬ / УДАЛИТЬ РОЛЬ ПРИЛОЖЕНИЯ | СБОРКА | АСИММЕТРИЧЕСКИЙ КЛЮЧ», «НАЧАТЬ ВРЕМЯ РАЗГОВОРА», «КОНЕЦ / ПЕРЕМЕСТИТЬ РАЗГОВОР» и т. Д. они еще не доступны.
- Babelfishpg_tds: расширение для реализации протокола TDS (Tabular Data Stream), используемого в SQL Server для сетевого соединения между СУБД и клиентом. Поддерживается протокол TDS версии 7.1 и выше.
- Babelfishpg_common: расширение для реализации конкретных типов данных SQL Server.
Babelfishpg_money: представляет собой реализацию типа денег, основанную на коде расширения FixedDecimal.
Патчи включают изменения в движке PostgreSQL, необходимые для обеспечения дополнительных функций расширений Babelfish. В настоящее время совместно с разработчиками PostgreSQL ведется работа по включению подготовленных патчей в основной состав PostgreSQL. Патчи подготовлены для PostgreSQL 13.
Утилита compass предназначена для синтаксического анализа сценариев T-SQL DDL и кода SQL на совместимость с Babelfish. В результате создается отчет о том, какие функции, необходимые для запуска приложения, еще не поддерживаются Babelfish.
Официально поддерживаются следующие клиентские библиотеки для подключения к MS SQL Server:
- Поставщик OLEDB / MSOLEDBSQL
- Драйвер OLEDB / SQLOLEDB
- Структура сущностей Ado.NET
- Собственный клиент SQL Server 11.0
- ODBC (открытое подключение к базе данных)
JDBC (подключение к базе данных Java)
В конце концов если вам интересно узнать об этом больше, вы можете проверить детали заметки По следующей ссылке. Что касается тех, кто заинтересован в возможности увидеть исходный код, они могут это сделать. по этой ссылке.