Babelfish поддерживает сетевой протокол, используемый для подключения клиентов к SQL Server, язык T-SQL и специфичные SQL Server расширения языка запросов, что позволяет переводить работающие приложения с Microsoft SQL Server на PostgreSQL без модификации их кода или с минимальными изменениями и без замены драйверов к СУБД. Для приложений Babelfish выглядит как штатный SQL Server. Проект уже используется в сервисе Amazon Aurora.
Заявлено, что проект Babelfish будет развиваться в соответствии с открытой моделью разработки, позволяющей участникам из сообщества вносить изменения и влиять на ход разработки. Для пользователей переход на Babelfish даст возможность избежать ощутимых отчислений за использование SQL Server, обойти ограничения лицензии и не зависеть от изменений политики сопровождения проприетарного продукта (отмена льгот, прекращение поддержки платформ, повышение цен).
Проект включает в себя набор расширений к PostgreSQL, набор патчей к PostgreSQL и инструментарий «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)
Источник: http://www.opennet.ru/opennews/art.shtml?num=56061