Электронное интервью.

Руководитель отдела продвижения экономических программ фирмы «1С»

Алексей Харитонов


Фирма «1С» объявила о выходе версии 8.1 платформы «1С:Предприятие», серверная часть которой работает под управлением Linux. В качестве хранилища данных теперь используется в том числе и PostgreSQL. Патчи к исходному коду PostgreSQL доступны по адресу http://v8.1c.ru/overview/postgres_patches_notes.htm.

Можно долго и эмоционально говорить о продуктах фирмы «1С», но они реальны и реальность эта повседневна. А то, что эта реальность стала использовать продукты с открытым кодом, это явно плюс. Для выяснения подробностей я связался с представителем фирмы Алексеем Харитоновым через стандартный e-mail 1c@1c.ru.

В дальнейшем текст интервью был прокомментирован Фёдором Сигаевым и Олегом Бартуновым. Интервью с Фёдором Сигаемым и Олегом Бартуновым были опубликованы в декабрьском и ноябрьском номерах LXF, соответственно.


Евгений Балдин Евгений: Почему был выбран именно PostgreSQL? Лет пять назад особого выбора среди свободных продуктов не было. Но сейчас подросла в своих возможностях MySQL, Firebird восстал из пепла Interbase, да и смысла зацикливаться на открытых реализациях для 1С особого нет. Или есть?

Алексей Харитонов Алексей: Нам требовалась DBMS, работающая под ОС Linux, лицензия на которую предусматривала бы возможность её свободного (без отчислений) распространения и самостоятельной модификации. Такой вариант мы считаем полезным для определённого сегмента рынка. Из DBMS для Linux, лицензируемых на таких условиях, мы оценили PostgreSQL как наиболее качественную и эффективную.

Евгений: Какие изменения были внесены в базовый код PostgreSQL? Будут ли эти изменения интегрированы в основное дерево проекта PostgreSQL?

Алексей: Основная причина, по которой появилась необходимость модифицировать PostgreSQL 8.1 -- это то, что оригинальная версия не поддерживает сравнение строк, нечувствительное к регистру букв. Внесённые в PostgreSQL изменения позволили эффективно (быстро) работать с русскими символами в кодировке Unicode. Кроме того, конфигурационные файлы, которые получаются после установки PostgreSQL 8.1, модифицированного для работы с «1С:Предприятием», несколько отличаются от оригинальных. Это также сделано для лучшего согласования PostgreSQL 8.1 с «1С:Предприятием» 8.1.

Просьба о комментарии: Не совсем понятно что значит «не поддерживает сравнение строк, нечувствительное к регистру букв»? Разве нельзя до сравнения привести строки к одному регистру?

Комментарий: Так как 1C разрабатывалась под MS SQL, в которой сравнение строк нечувствительно к регистру, то многие запросы использовали этот факт. Для разработчиков 1C было принципиально не переписывать запросы специально под PostgreSQL, который имеет разные операции для сравнения строк. Но переделки/усовершенствования не ограничивались нечувствительностью к регистру. В процессе разработки мы старались не сильно менять поведение PostgreSQL, поэтому часть изменений была оформлена как подключаемые модули. Реализация в виде модуля позволяет использовать библиотеки с лицензией отличной от BSD, под которой распространяется PostgreSQL.

Полный список (вкратце, так как подробности могут занять много места):

Мы взаимодействуем с разработчиками PostgreSQL. Дополнительные модули расширения и необходимые изменения к БД были подготовлены членами команды разработчиков PostgreSQL Олегом Бартуновым и Фёдором Сигаевым. Включение этих изменений в основную ветку будет ещё обсуждаться.

Просьба о комментарии: Что было уже добавлено и планируется добавить в ближайшее время в основную ветку в результате этой работы?

Комментарий: Добавлена возможность использования модификатора типа для пользовательских типов. Возможность указания положения NULL реализована (см. выше). Также мы планируем внести оптимизацию OR запросов и индексную поддержку IS [NOT] NULL. Второй пункт требует заметной модернизации существующего патча в связи с изменением внутренних интерфейсов.

Остальные модификации являются, на наш взгляд, 1С-специфичными, поэтому мы не будем предлагать их к включению в PostgreSQL, хотя ни в коей мере не ограничиваем их распространение (как и 1С).

Евгений: Что с точки зрения «1C» нужно добавить PostgreSQL, чтобы улучшить его функциональность?

Алексей: Критически важные для нас исправления мы внесли в патч, часть этих исправлений уже внесена в PostgreSQL 8.2. Прежде всего мы рекомендовали бы внести в основной проект все сделанные нами изменения, поскольку они необходимы для работы различных систем (не только «1С:Предприятия») с русским языком. Есть и другие пожелания -- пока мы обсуждаем их с разработчиками PostgreSQL.

Просьба о комментарии: Хотелось бы узнать о каких пожеланиях идёт речь. Какое место у PostgreSQL и для каких задач является узким?

Комментарий: Остался открытым вопрос о блокировках интенсивно обновляемой таблицы. Разработчикам 1C хочется как можно меньше интерферировать с автовакуумом, что приводит к существенной деградации производительности в этом случае. Этот вопрос несколько раз обсуждался среди разработчиков, но пока особого энтузиазма не проявляется. Дело в том, что вся система блокировок в PostgreSQL требует переработки и частные решения сейчас просто никому не нужны.

Евгений: Есть ли в планах «1С» сотрудничество с сообществом открытых исходников, ну, или, хотя бы, использование других открытых продуктов для целей бизнеса кроме PostgreSQL?

Алексей: Примеры использования нами open source продуктов не ограничиваются PostgreSQL -- так, в «1С:Предприятии 8.1» расширенная поддержка XML реализована на основе библиотек Apache Xerces и Apache Xalan. Для интернационализации используется библиотека ICU.

Просьба о комментарии: Честно говоря, библиотека ICU (International Components for Unicode) обошла меня стороной. Я посмотрел домашнюю страничку библиотеки http://icu.sourceforge.net, но так и не понял в чём её достоинства.

Комментарий: Дело в том, что локализация PostgreSQL является системно-зависимой, что приводит к тому, что поведение, порядок сортировки, например, может отличается даже под разными версиями Linux, не говоря уже об отличиях между Windows и Unix. Например, отличия в сортировке между FreeBSD и Linux, даже для английских символов:

FreeBSD   	Linux
AA		aa
Aa		aA
aA		Aa
aa		AA
Oracle, DB2, например, используют свою, внутреннюю локализация, что делает поведение приложений под разными ОС более предсказуемым. Использование библиотеки ICU, распространяемой под X-лицензией (http://www-306.ibm.com/software/globalization/icu/license.jsp), в то время как PostgreSQL распространяется под лицензией BSD, возможно, так как библиотека используется в отдельном модуле, который может распространяться отдельно.

В качестве одного из возможных направлений бизнес-сотрудничества мы сейчас рассматриваем варианты лицензирования Linux-версии сервера приложений «1С:Предприятия 8.1» для ОЕМ-поставки с дистрибутивами Linux.





baldin 2007-07-01