April 1, 2010

PostgreSQL 9.0: Добавлена эмуляция MySQL (MySQL Emulation Layer)

Перевод PostgreSQL 9.0: Includes the new MySQL Emulation Layer с ads' corner

(В январе 2010 г. команда разработчиков решила, что следующая версия PostgreSQL будет нумероваться 9.0, а не 8.5)


Сегодня в PostgreSQL 9.0 была добавлена возможность эмуляции MySQL, так называемый MySQL Emulation Layer.

Для активации этой возможности просто включите CUG опцию mysql_compatible в "on".

postgres=# SELECT * FROM pg_settings WHERE name = 'mysql_compatible';
-[ RECORD 1 ]----------------------------------------------------------------
name | mysql_compatible
setting | ON
unit |
category | Version AND Platform Compatibility / Other Platforms AND Clients
short_desc | Enable MySQL Emulation Layer
extra_desc |
context | backend
vartype | bool
source | DEFAULT
min_val |
max_val |


Её активация меняет следующие характеристики (для всего PostgreSQL кластера):

- Тип данных boolean теперь принимает положительные целые в дополнение к true и false.
- TCP порт по умолчанию становится 3306 для более лёгкого портирования приложений.
- Не агрегируемым колонкам в SELECT больше не надо присутствовать в GROUP BY.
- CAST может работать, а может и нет.
- В ENUM-ах теперь не могут быть числа, а только строки.
- CHAR, VARCHAR и TEXT теперь не чувствительны к регистру. Регистр учитывается только с новым ключемым словом BINARY.
- VARCHAR поддерживает текст размером не больше 255 байт. Учтите, что Unicode/UTF8 может требовать более одного байта на символ, надо это учитывать в решении что же в VARCHAR в действительности можно держать.
- Обязательно должен быть пробел после двойного тире в синтаксисе комментариев.
- Деление на ноль теперь вспупыжывает warning вместо error.
- || больше не конкатенирует строки, но выступает в качестве Exclusive OR.
- Для удобства вы можете использовать даты типа 2010-02-31.
- Репликация, включая баги, интегрирована.
- Парсер теперь понимает DESC и SHOW CREATE синтаксис.
- Система аутентификации ещё не портирована, т.ч. DBA надо использовать pg_hba.conf

Следующие новые возможности активируются включением mysql_compatible = on:

- Новый движек "чёрной дыры" - алиас /dev/null, и, конечно же, не транзакционный.
- Имена таблиц зависят от операционной системы: на Windows не чувствительны к регистру, на Unix "data", "Data" и "DATA" разные таблицы.
- Добавлены несколько критических багов, чтобы было веселее отлаживать приложение.
- Для удобства, PostgreSQL теперь работает с root-ом.

Некоторые хорошо известные PostgreSQL возможности становятся не доступными с новым расширением:

- ACID. Вместо него будет использоваться MySQL ACID. Закоммиченные данные могут быть записаны после сбоя, а могут быть и нет, в зависимости от многих других вещей - текущей фазы луны, цвета электронов и погодных условий в стране Oz.
- Транзакционный DDL и DCL.
- Определяемые пользователем типы данных.
- Для удобства EXPLAIN теперь выводится на одной строке.
- Схемы больше не поддерживаются.

Конечно же доступна поддержка для всех пользователей слоя эмуляции. Лицензирование расширения в "pure BSD-style", что позволяет всем использовать и интегрировать "PostgreSQL with MySQL Emulation Layer" в свои приложения. Двойное лицензирование уже давно не проблема.

3 comments:

gray_hemp said...

;)

oktopgen said...

Плюс стопиццот!
Жжоте!

Anonymous said...

сначала, когда увидел заголовок на официальной ленте, подумал и в правду ребятам уже делать нечго))

Post a Comment