наскоро гръмна новината, че 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)
Накрая ако се интересувате да научите повече за това, можете да проверите подробностите на бележката В следващия линк. Що се отнася до тези, които се интересуват да могат да видят изходния код, те могат да го направят от тази връзка.