Postgres - статьи



              

Разработчикам баз данных


Самое заметное и существенное изменение, которое следует здесь отметить, — это миграция модуля для полнотекстового поиска (contrib/tsearch2) в ядро системы. Разрабатываемый российскими разработчиками Олегом Бартуновым и Фёдором Сигаевым, tsearch2 долгое время являлся самым популярным contrib-модулем Постгреса. Патч для миграции полнотекстового поиска в ядро, который был принят этим летом в результате кропотливой и продолжительной работы (принятая версия патча — 58!) сразу нескольких ключевых разработчиков команды PostgreSQL, является самым большим за всю историю проекта.

Кроме того, что все возможности модуля tsearch2 теперь будут доступны по умолчанию и процессы миграции на новую версию PostgreSQL заметно упростятся, конфигурировать словари и правила обработки текстов теперь станет проще: все основные операции по конфигурированию осуществляются с помощью SQL-команд. Вот так, например, можно создать простой словарь-тезаурус: СREATE TEXT SEARCH DICTIONARY thesaurus_astro (     TEMPLATE = thesaurus,     DictFile = thesaurus_astro,     Dictionary = english_stem ); ALTER TEXT SEARCH CONFIGURATION russian     ADD MAPPING FOR lword, lhword, lpart_hword         WITH thesaurus_astro, english_stem;

Упростились и процессы создания индекса. Пример создания GIN-индекса над обычным текстовым столбцом (без создания дополнительных столбцов и триггеров):

CREATE INDEX pgweb_idx ON pgweb     USING gin(to_tsvector('russian', title body));

А вот пример запроса с ранжированием по релевантности, использующий к тому же специальную функцию plainto_tsquery для получения tsquery (позволяет забыть об экранировании символов и быстро и просто преобразовать обычный текст в tsquery):

SELECT     ts_rank_cd(textsearch_index, q) AS rank, title FROM     pgweb, plainto_tsquery('supernova star') q WHERE     q @@ textsearch_index ORDER BY     rank DESC LIMIT 10;

Другое заметное изменение — поддержка XML, в работе над которой принимал участие автор данной статьи. Данный функционал реализован в соответствии со стандартом SQL:2003 (14-я часть стандарта, SQL/XML).

Прежде всего, появился специальный тип данных xml, встроенный в ядро. При использовании данного типа, сервер проверяет, правильно ли сформированы данные (проверка на well-formedness). Причём возможны варианты использования, при которых разрешена работа с частями документа (это позволяет обеспечить свойство «замкнутости» функций для работы с XML на тип данных xml).

В соответствии со стандартом SQL:2003 реализован набор функций для преобразования реляционных данных в XML (т. н., функции публикации SQL/XML). Вот простой пример запроса на формирование XML-данных: SELECT XMLROOT (    XMLELEMENT (       NAME 'some',       XMLATTRIBUTES (          'val' AS 'name',          1 + 1 AS 'num'       ),       XMLELEMENT (          NAME 'more',          'foo'       )    ),    VERSION '1.0',    STANDALONE YES );




Содержание  Назад  Вперед