Amazon пусна изходния код на Babelfish за PostgreSQL

наскоро гръмна новината, че Amazon реши да пусне изходния код за "Babelfish за 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 сървър. Проектът вече се използва в 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.

Помощната програма компас е предназначена да анализира T-SQL DDL скриптове и SQL код за съвместимост с Babelfish. В изхода се генерира отчет коя функционалност, необходима за стартиране на приложението, все още не се поддържа от Babelfish.

Официално се поддържат следните клиентски библиотеки за свързване към MS SQL Server:

  • Доставчик на OLEDB / MSOLEDBSQL
  • OLEDB / SQLOLEDB драйвер
  • Ado.NET структура на обекти
  • SQL Server 11.0 Native Client
  • ODBC (свързване с отворена база данни)
    JDBC (свързаност с база данни на Java)

Накрая ако се интересувате да научите повече за това, можете да проверите подробностите на бележката В следващия линк. Що се отнася до тези, които се интересуват да могат да видят изходния код, те могат да го направят от тази връзка.