Amazon відкрила вихідний код Babelfish для проекту PostgreSQL
Компанія 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 Server. Проект вже використовується в Amazon Aurora.
Зазначається, що проєкт 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.
- Утиліта компас призначена для аналізу скриптів T-SQL DDL і SQL-коду на сумісність з Babelfish. На виході формується звіт, який функціонал, необхідний для запуску програми, в Babelfish ще не підтримується.
Офіційно підтримуються такі клієнтські бібліотеки для підключення до MS SQL Server:
- Постачальник OLEDB/MSOLEDBSQL
- Драйвер OLEDB/SQLOLEDB
- Ado.NET Структура сутності
- Рідний клієнт SQL Server 11.0
- ODBC (відкрите підключення до бази даних)
- JDBC (підключення до бази даних Java)