Amazon открыл код Babelfish, PosgtreSQL-расширения для замены MS SQL Server

Компания Amazon открыла исходные тексты проекта “Babelfish for PostgreSQL“, предлагающего расширения к СУБД PostgreSQL с реализацией специфичных возможностей СУБД Microsoft SQL Server. Ключевой целью проекта является предоставление возможности выполнения приложений, написанных для SQL Server, на серверах под управлением СУБД PostgreSQL. Код проекта открыт под лицензиями Apache 2.0 и PostgreSQL License.

Babelfish поддерживает сетевой протокол, используемый для подключения клиентов к SQL Server, язык T-SQL и специфичные SQL Server расширения языка запросов, что позволяет переводить работающие приложения с Microsoft SQL Server на PostgreSQL без модификации их кода или с минимальными изменениями и без замены драйверов к СУБД. Для приложений Babelfish выглядит как штатный SQL Server. Проект уже используется в сервисе Amazon Aurora.

Заявлено, что проект Babelfish будет развиваться в соответствии с открытой моделью разработки, позволяющей участникам из сообщества вносить изменения и влиять на ход разработки. Для пользователей переход на Babelfish даст возможность избежать ощутимых отчислений за использование SQL Server, обойти ограничения лицензии и не зависеть от изменений политики сопровождения проприетарного продукта (отмена льгот, прекращение поддержки платформ, изменение ценовой политики).

Проект включает в себя набор расширений к PosgtreSQL, набор патчей к PosgtreSQL и инструментарий compass:

  • Расширения реализуют в PostgreSQL поддержку дополнительного синтаксиса, типов данных и функций, необходимых для миграции с SQL Server. Всего предложено 4 расширения:
    • babelfishpg_tsql – реализация языка T-SQL (Transact-SQL), дополняющего SQL средствами для процедурного программирования, поддержки локальных переменных и дополнительными функциями для обработки строк, дат и математических выражений. Реализована большая часть востребованных возможностей T-SQL, включая контрольные точки (savepoint), хранимые процедуры и вложенные транзакции. Тем не менее ощутимая часть синтаксиса и функций остаётся нереализованной (таблица совместимости). Например, пока недоступны конструкции “ADD SIGNATURE”, “CREATE AGGREGATE”, “CREATE/ALTER/DROP APPLICATION ROLE|ASSEMBLY|ASYMMETRIC KEY”, “BEGIN CONVERSATION TIME”, “END/MOVE CONVERSATION” и т.п.
    • babelfishpg_tds – реализация протокола TDS (Tabular Data Stream), применяемого в SQL Server для организации сетевого взаимодействия между СУБД и клиентом. Поддерживается версия протокола TDS 7.1 и выше.
    • babelfishpg_common – реализация специфичных для SQL Server типов данных.
    • babelfishpg_money – реализация типа “money”, основанная на коде расширения FixedDecimal.
  • Патчи включают изменения движка PostgreSQL, необходимые для реализации дополнительной функциональности в расширениях Babelfish. В настоящее время совместно с разработчиками PostgreSQL ведётся работа по включению подготовленных патчей в основной состав PostgreSQL. Патчи подготовлены для PostgreSQL 13.
  • Утилита compass предназначена для анализа скриптов T-SQL DDL и кода SQL на предмет совместимости с Babelfish. На выходе генерируется отчёт, какая из используемой функциональности пока не поддерживается в Babelfish.

Официально поддерживаются следующие клиентские библиотеки для подключения к MS SQL Server:

  • OLEDB Provider/MSOLEDBSQL
  • OLEDB Driver/SQLOLEDB
  • Ado.NET Entity framework
  • SQL Server Native Client 11.0
  • ODBC (Open Database Connectivity)
  • JDBC (Java Database Connectivity)

Release. Ссылка here.