SlideShare a Scribd company logo
Что нового  в PostgreSQL 8.3? Николай Самохвалов, «Постгресмен» октябрь 2007
PostgreSQL – это... ...самая развитая СУБД с открытым кодом ...надежность и устойчивость на любых нагрузках ...кроссплатформенность (FreeBSD, Linux, Solaris, Windows, OS X)‏ ...высокий уровень соответствия ISO/ANSI SQL 92, 99, 2003 ...интерфейсы для Tcl, Perl, C, C++, PHP, ODBC, JDBC, Embedded SQL in C, Python, Ruby, ... ...развитые административные утилиты (pgAdmin, phpPgAdmin, ...)
11 лет развития PostgreSQL ...1995 – «прошлая жизнь» (Postgres)‏ 1996...1998 – стабильность 1998...2001 – стандарт SQL 2001...н. в. – выход на уровень Enterprise производительность простота администрирования 24/7 1997 2007
Новое в PostgreSQL 8.3 Производительность Разработчикам баз данных Администраторам баз данных Проекты сторонних разработчиков
Производительность
The 1 st  PostgreSQL Enterprise-level Benchmark (SPEC * )‏ PostgreSQL 8.2 – 813.73 JOPS SPECjAppServer2004 2x Sun Fire X4200 appservers (8 cores, 4 chips) and 1 Sun Fire T2000 DB server (8 cores, 1 chips) with PostgreSQL 8.2.4 HW: ~$60,000; SW: $0 Josh Berkus: «...a good day for Open Source» *)  SPEC – Standard Performance Evaluation Corporation,  http://spec.org Oracle 10g – 874.17 JOPS SPECjAppServer2004 1 HP rx2660 appserver (4 cores, 2 chips) and 1 rx2660 DB server (4 cores, 2 chips) with Oracle Database 10g Enterprise Edition Release 10.2.0.2 HW: ~$74,000; SW: ~$110,000 MySQL 5.0 – 720.56 JOPS SPECjAppServer2004 3x Sun Fire X4100 appservers (12 cores, 6 chips) and 1 Sun Fire X4100 DB server (4 cores, 2 chips) with MySQL 5.0.27 64-bit
Индексы: GiST и GIN GiST GIN
HOT (Heap Only Tuples)‏ При обновлении (UPDATE) индекс  не  меняется, если: UPDATE не затрагивает проиндексированные столбцы, новая версия строки записывается на той же странице данных (heap). «Моментальное» повторное использование места в heap без ожидания процесса VACUUM.
Обновление без HOT Heap Page 8kb Page Header Item1 Ptr Item2 Ptr Item3 Ptr Item 2: row #1, v2 Item 1: row #1, v1 Item 3: row #1, v3 1 2 3 Index
HOT-обновление Heap Page 8kb Page Header Item1 Ptr Item2 Ptr Item3 Ptr Item 2: row #1, v2 Item 3: row #1, v3 1 Index
Asynchronous Commit SET synchronous_commit TO OFF; Позволяет отложить fsync на небольшое время (COMMIT без ожидания fsync)‏ возможна потеря небольшой порции данных (порядка 0.2...1.0 сек)‏ нарушение целостности данных невозможно! (в отличие от fsync=off)‏
Надёжность производительности
Сглаживание контрольной точки (checkpoint smoothing)‏ «Размазывание» процесса checkoint во времени, уменьшение интенсивности I/O-операций. Работает только для background checkpoints (при выключении сервера – полная скорость I/O-операций).
Устройство PostgreSQL
Synchronized Scans Позволяет процессу «подсесть» к уже выполняющейся операции SeqScan другого процесса Сессия 1 Сессия 2 синхронизированный просмотр
Кроме того Autovacuum включён по умолчанию Несколько параллельных процессов autovacuum Экономия пространства (varvarlena)‏ VARLENA-значения менее 128 байт:  -6 байт ! заголовок строки:  -4 байта ! При «читающих» транзакциях xid не меняется Автонастройка bgwriter ORDER BY ... LIMIT w/o sorting («Top N» sorting)‏
Разработчикам баз данных
Полнотекстовый поиск contrib/tsearch2 --> ядро системы Новый синтаксис Упрощённое создание индекса (без триггера)‏ Простая миграция и апгрейд версии PostgreSQL
Полнотекстовый поиск CREATE 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; CREATE INDEX pgweb_idx ON pgweb USING gin(to_tsvector('russian', title || body)); 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 Новый тип данных:  xml Стандартные (ISO/ANSI SQL) функции публикации SQL/XML DTD-валидация XPath: функция  xpath()  (с поддержкой Namespaces)‏ Альтернативные функции экспорта объектов БД в XML B-tree и GIN-индексы для XML-данных, полнотекстовый поиск
Поддержка XML SQL: SELECT XMLROOT ( XMLELEMENT ( NAME ’some’, XMLATTRIBUTES ( ’ val’ AS ’name’, 1 + 1 AS ’num’ ), XMLELEMENT ( NAME ’more’, ’ foo’ )‏ ), VERSION ’1.0’, STANDALONE YES ); Результат: <?xml version=’1.0’ standalone=’yes’ ?> <some name=’val’ num=’2’> <more>foo</more> </some>
Поддержка XML SELECT * FROM table1 WHERE ((xpath(’//person/@smpl:pid’, xdata, ARRAY[ARRAY[’smpl’, ’http://example.com’]]))[1])::text = ’111’; CREATE INDEX i_table1_xdata ON table1 USING btree( xpath(’//person/@name’, xdata)‏ );
Типы данных GUID/UUID enum массивы составных типов
Кроме того Автоматическая инвалидация плана («чистка» кэша функций)‏ Table Function Updatable Cursors ORDER BY NULLS FIRST/LAST  (ISO/ANSI SQL)‏ Поддержка NULL-значений в GiST-индексах
Администраторам баз данных
EXPLAIN: больше информации QUERY PLAN ---------------------------------------------------------------------------------- Sort  (cost=34.38..34.42 rows=13 width=176) (actual time=0.946..0.948 rows=6 loops=1)‏ Sort Key: obj2tag.o2t_tag_name Sort Method:  quicksort  Memory: 18kB ->  Hash Join  (cost=19.19..34.14 rows=13 width=176) (actual time=0.812..0.835 rows=6 loops=1)‏ Hash Cond: (obj2tag.o2t_tag_obj_id = tag.obj_id)‏ ->  Bitmap Heap Scan on obj2tag  (cost=4.43..19.21 rows=13 width=172) (actual time=0.079..0.093 rows=6 loops=1)‏ Recheck Cond: (o2t_obj_obj_id = 179313440)‏ Filter: (obj_status_did = 1)‏ ->  Bitmap Index Scan on u_obj2tag_ids  (cost=0.00..4.43 rows=24 width=0) (actual time=0.037..0.037 rows=24 loops=1)‏ Index Cond: (o2t_obj_obj_id = 179313440)‏ ->  Hash  (cost=9.89..9.89 rows=389 width=12) (actual time=0.700..0.700 rows=389 loops=1)‏ ->  Seq Scan on tag  (cost=0.00..9.89 rows=389 width=12) (actual time=0.012..0.396 rows=389 loops=1)‏ Total runtime: 1.064 ms (13 rows)‏
Кроме того pg_standby – создание Warm Standby (Linux, Windows)‏ Удаление пользователя вместе со всеми принадлежащими ему объектами GSSAPI Улучшенная сборка под Win32 (MS VC++)‏
Кроме того Оценки стоимости вызовов функций: ALTER FUNCTION log_data(text)‏ COST 100000 ROWS 1; Per-function GUC settings: ALTER FUNCTION log_data(text)‏ SET synchronous_commit TO OFF; Создание таблиц по «подобию»: CREATE TABLE dict2 (LIKE dictionary INCLUDING INDEXES);
Проекты сторонних разработчиков
PL/pgSQL Debugger
Продукты Skype PL/Proxy – прокси-язык для удаленного вызова процедур и партицирования данных между разными базами. PgBouncer – простой и быстрый менеджер соединений.  SkyTools WalMgr Londiste PgQ
Кроме того pgSNMP – SNMP-агент для PostgreSQL (мониторинг)‏ SEPostgres – расширение, основанное на модели SELinux (безопасность)‏ phppgadmin: настройка Slony и полнотекстового поиска, автовакуума Index Advisor
Вопросы? http://postgresql.org http://postgresmen.ru http://developer.postgresql.org/index.php/Feature_Matrix   [email_address] ,  Skype: postgresmen Special thanks to: Bruce Momjian, Josh Berkus, Teodor Sigaev, «PFC»

More Related Content

What's hot (20)

PDF
Нереляционный SQL
Andrei Nikolaenko
 
PDF
СХД для обработки сейсмики: сравнительный обзор
Vsevolod Shabad
 
PPTX
Чем заняться вечером, если я знаю сколько будет ++i + ++i / Андрей Бородин (Y...
Ontico
 
PDF
Продуктовая стратегия Baikal Electronics 2025
Leonid Salnikov
 
PDF
Отказоустойчивая обработка 10M OAuth токенов на Tarantool / Владимир Перепели...
Ontico
 
PDF
Мощнее или умнее? Возможности оптимизации ИТ-инфраструктуры для сейсмики
Vsevolod Shabad
 
PDF
HPCSolutions (c)2018
Vladimir Konovalov
 
PDF
Введение в современную PostgreSQL. Часть 1
Dzianis Pirshtuk
 
PDF
Александр Крижановский, NatSys Lab
Ontico
 
PDF
Машины баз данных: концентрированное обозрение
Andrei Nikolaenko
 
PPTX
"Многомерные индексы в РСУБД с открытым кодом" Бородин Андрей , Октоника, УрФУ
it-people
 
PDF
Hive vs Pig
Anatoliy Nikulin
 
PDF
11 встреча — Введение в GPGPU (А. Свириденков)
Smolensk Computer Science Club
 
PPTX
Программирование на PySpark
RamblerML
 
PDF
Архитектура и программирование потоковых многоядерных процессоров для научных...
a15464321646213
 
PPTX
OpenACC short review
Andrei Poliakov
 
PPTX
Тюним память и сетевой стек в Linux: история перевода высоконагруженных серве...
Ontico
 
PPTX
Hpc 2.26.03.2013.
Boris Kizko
 
PDF
Использование очередей асинхронных сообщений с PostgreSQL (Илья Космодемьянский)
Ontico
 
PPTX
SOA: строим свой service mesh / Иван Круглов (Booking.com)
Ontico
 
Нереляционный SQL
Andrei Nikolaenko
 
СХД для обработки сейсмики: сравнительный обзор
Vsevolod Shabad
 
Чем заняться вечером, если я знаю сколько будет ++i + ++i / Андрей Бородин (Y...
Ontico
 
Продуктовая стратегия Baikal Electronics 2025
Leonid Salnikov
 
Отказоустойчивая обработка 10M OAuth токенов на Tarantool / Владимир Перепели...
Ontico
 
Мощнее или умнее? Возможности оптимизации ИТ-инфраструктуры для сейсмики
Vsevolod Shabad
 
HPCSolutions (c)2018
Vladimir Konovalov
 
Введение в современную PostgreSQL. Часть 1
Dzianis Pirshtuk
 
Александр Крижановский, NatSys Lab
Ontico
 
Машины баз данных: концентрированное обозрение
Andrei Nikolaenko
 
"Многомерные индексы в РСУБД с открытым кодом" Бородин Андрей , Октоника, УрФУ
it-people
 
Hive vs Pig
Anatoliy Nikulin
 
11 встреча — Введение в GPGPU (А. Свириденков)
Smolensk Computer Science Club
 
Программирование на PySpark
RamblerML
 
Архитектура и программирование потоковых многоядерных процессоров для научных...
a15464321646213
 
OpenACC short review
Andrei Poliakov
 
Тюним память и сетевой стек в Linux: история перевода высоконагруженных серве...
Ontico
 
Hpc 2.26.03.2013.
Boris Kizko
 
Использование очередей асинхронных сообщений с PostgreSQL (Илья Космодемьянский)
Ontico
 
SOA: строим свой service mesh / Иван Круглов (Booking.com)
Ontico
 

Similar to SAMag2007 Conference: PostgreSQL 8.3 presentation (20)

PDF
Олег Бартунов, Федор Сигаев, Александр Коротков (PostgreSQL)
Ontico
 
PDF
Народные средства оптимизации PostgreSQL
Nikolay Pisarev
 
PDF
Три вызова реляционным СУБД и новый PostgreSQL - #PostgreSQLRussia семинар по...
Nikolay Samokhvalov
 
PDF
Расширяемость PostgreSQL для хакеров и архитекторов / Олег Бартунов, Александ...
Ontico
 
PPTX
Денормализованное хранение данных в PostgreSQL 9.2 (Александр Коротков)
Ontico
 
PDF
Владимир Бородин - PostgreSQL
Yandex
 
PDF
PostgreSQL: вчера, сегодня, завтра, Олег Бартунов, Postgres Professional, Мо...
it-people
 
PDF
Олег Бартунов и Иван Панченко
CodeFest
 
PDF
PostgreSQL
dev1ant
 
PDF
PostgreSQL: практические примеры оптимизации SQL-запросов / Иван Фролков (Po...
Ontico
 
PDF
Современному хайлоду - современные решения: MySQL 8.0 и улучшения Percona
Sveta Smirnova
 
PDF
Postgresql v509
luis perez
 
PDF
2014.12.23 Николай Самохвалов, Ещё раз о JSON(b) в PostgreSQL 9.4
Nikolay Samokhvalov
 
PDF
Иван Фролков
CodeFest
 
PPTX
Query perfomance tuning
collabock
 
PDF
#RuPostgresLive 4: как писать и читать сложные SQL-запросы
Nikolay Samokhvalov
 
PDF
Как читать и интерпретировать вывод команды EXPLAIN
Alexey Ermakov
 
PPTX
Оптимизации скорости выполнения запросов
Alex.Kolonitsky
 
PDF
Архитектура и новые возможности B-tree
Anastasia Lubennikova
 
PDF
PostgreSQL performance recipes
Alexey Ermakov
 
Олег Бартунов, Федор Сигаев, Александр Коротков (PostgreSQL)
Ontico
 
Народные средства оптимизации PostgreSQL
Nikolay Pisarev
 
Три вызова реляционным СУБД и новый PostgreSQL - #PostgreSQLRussia семинар по...
Nikolay Samokhvalov
 
Расширяемость PostgreSQL для хакеров и архитекторов / Олег Бартунов, Александ...
Ontico
 
Денормализованное хранение данных в PostgreSQL 9.2 (Александр Коротков)
Ontico
 
Владимир Бородин - PostgreSQL
Yandex
 
PostgreSQL: вчера, сегодня, завтра, Олег Бартунов, Postgres Professional, Мо...
it-people
 
Олег Бартунов и Иван Панченко
CodeFest
 
PostgreSQL
dev1ant
 
PostgreSQL: практические примеры оптимизации SQL-запросов / Иван Фролков (Po...
Ontico
 
Современному хайлоду - современные решения: MySQL 8.0 и улучшения Percona
Sveta Smirnova
 
Postgresql v509
luis perez
 
2014.12.23 Николай Самохвалов, Ещё раз о JSON(b) в PostgreSQL 9.4
Nikolay Samokhvalov
 
Иван Фролков
CodeFest
 
Query perfomance tuning
collabock
 
#RuPostgresLive 4: как писать и читать сложные SQL-запросы
Nikolay Samokhvalov
 
Как читать и интерпретировать вывод команды EXPLAIN
Alexey Ermakov
 
Оптимизации скорости выполнения запросов
Alex.Kolonitsky
 
Архитектура и новые возможности B-tree
Anastasia Lubennikova
 
PostgreSQL performance recipes
Alexey Ermakov
 
Ad

More from Nikolay Samokhvalov (20)

PDF
Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва...
Nikolay Samokhvalov
 
PDF
Промышленный подход к тюнингу PostgreSQL: эксперименты над базами данных
Nikolay Samokhvalov
 
PDF
The Art of Database Experiments – PostgresConf Silicon Valley 2018 / San Jose
Nikolay Samokhvalov
 
PDF
Nancy CLI. Automated Database Experiments
Nikolay Samokhvalov
 
PDF
#RuPostgresLive 4: как писать и читать сложные SQL-запросы
Nikolay Samokhvalov
 
PDF
Database First! О распространённых ошибках использования РСУБД
Nikolay Samokhvalov
 
PDF
2016.10.13 PostgreSQL in Russia
Nikolay Samokhvalov
 
PDF
#RuPostges в Yandex, эпизод 3. Что же нового в PostgreSQL 9.6
Nikolay Samokhvalov
 
PDF
#noBackend, или Как выжить в эпоху толстеющих клиентов
Nikolay Samokhvalov
 
PPTX
#PostgreSQLRussia в банке Тинькофф, доклад №1
Nikolay Samokhvalov
 
PDF
SFPUG 2015.11.20 lightning talk "PostgreSQL in Russia"
Nikolay Samokhvalov
 
PDF
Владимир Бородин: Как спать спокойно - 2015.10.14 PostgreSQLRussia.org meetu...
Nikolay Samokhvalov
 
PDF
#PostgreSQLRussia 2015.09.15 - Николай Самохвалов - 5 главных особенностей Po...
Nikolay Samokhvalov
 
PPTX
#PostgreSQLRussia 2015.09.15 - Максим Трегубов, CUSTIS - Миграция из Oracle в...
Nikolay Samokhvalov
 
PPTX
2014.12.23 Александр Андреев, Parallels
Nikolay Samokhvalov
 
PDF
2014.10.15 Сергей Бурладян, Avito.ru
Nikolay Samokhvalov
 
PDF
2014.10.15 Мурат Кабилов, Avito.ru #PostgreSQLRussia
Nikolay Samokhvalov
 
PDF
2014.10.15 блиц-доклад PostgreSQL kNN search
Nikolay Samokhvalov
 
PDF
2014.09.24 история небольшого успеха с PostgreSQL (Yandex)
Nikolay Samokhvalov
 
PDF
PostgreSQL Moscow Meetup - September 2014 - Ilya Kosmodemyansky
Nikolay Samokhvalov
 
Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва...
Nikolay Samokhvalov
 
Промышленный подход к тюнингу PostgreSQL: эксперименты над базами данных
Nikolay Samokhvalov
 
The Art of Database Experiments – PostgresConf Silicon Valley 2018 / San Jose
Nikolay Samokhvalov
 
Nancy CLI. Automated Database Experiments
Nikolay Samokhvalov
 
#RuPostgresLive 4: как писать и читать сложные SQL-запросы
Nikolay Samokhvalov
 
Database First! О распространённых ошибках использования РСУБД
Nikolay Samokhvalov
 
2016.10.13 PostgreSQL in Russia
Nikolay Samokhvalov
 
#RuPostges в Yandex, эпизод 3. Что же нового в PostgreSQL 9.6
Nikolay Samokhvalov
 
#noBackend, или Как выжить в эпоху толстеющих клиентов
Nikolay Samokhvalov
 
#PostgreSQLRussia в банке Тинькофф, доклад №1
Nikolay Samokhvalov
 
SFPUG 2015.11.20 lightning talk "PostgreSQL in Russia"
Nikolay Samokhvalov
 
Владимир Бородин: Как спать спокойно - 2015.10.14 PostgreSQLRussia.org meetu...
Nikolay Samokhvalov
 
#PostgreSQLRussia 2015.09.15 - Николай Самохвалов - 5 главных особенностей Po...
Nikolay Samokhvalov
 
#PostgreSQLRussia 2015.09.15 - Максим Трегубов, CUSTIS - Миграция из Oracle в...
Nikolay Samokhvalov
 
2014.12.23 Александр Андреев, Parallels
Nikolay Samokhvalov
 
2014.10.15 Сергей Бурладян, Avito.ru
Nikolay Samokhvalov
 
2014.10.15 Мурат Кабилов, Avito.ru #PostgreSQLRussia
Nikolay Samokhvalov
 
2014.10.15 блиц-доклад PostgreSQL kNN search
Nikolay Samokhvalov
 
2014.09.24 история небольшого успеха с PostgreSQL (Yandex)
Nikolay Samokhvalov
 
PostgreSQL Moscow Meetup - September 2014 - Ilya Kosmodemyansky
Nikolay Samokhvalov
 
Ad

SAMag2007 Conference: PostgreSQL 8.3 presentation

  • 1. Что нового в PostgreSQL 8.3? Николай Самохвалов, «Постгресмен» октябрь 2007
  • 2. PostgreSQL – это... ...самая развитая СУБД с открытым кодом ...надежность и устойчивость на любых нагрузках ...кроссплатформенность (FreeBSD, Linux, Solaris, Windows, OS X)‏ ...высокий уровень соответствия ISO/ANSI SQL 92, 99, 2003 ...интерфейсы для Tcl, Perl, C, C++, PHP, ODBC, JDBC, Embedded SQL in C, Python, Ruby, ... ...развитые административные утилиты (pgAdmin, phpPgAdmin, ...)
  • 3. 11 лет развития PostgreSQL ...1995 – «прошлая жизнь» (Postgres)‏ 1996...1998 – стабильность 1998...2001 – стандарт SQL 2001...н. в. – выход на уровень Enterprise производительность простота администрирования 24/7 1997 2007
  • 4. Новое в PostgreSQL 8.3 Производительность Разработчикам баз данных Администраторам баз данных Проекты сторонних разработчиков
  • 6. The 1 st PostgreSQL Enterprise-level Benchmark (SPEC * )‏ PostgreSQL 8.2 – 813.73 JOPS SPECjAppServer2004 2x Sun Fire X4200 appservers (8 cores, 4 chips) and 1 Sun Fire T2000 DB server (8 cores, 1 chips) with PostgreSQL 8.2.4 HW: ~$60,000; SW: $0 Josh Berkus: «...a good day for Open Source» *) SPEC – Standard Performance Evaluation Corporation, http://spec.org Oracle 10g – 874.17 JOPS SPECjAppServer2004 1 HP rx2660 appserver (4 cores, 2 chips) and 1 rx2660 DB server (4 cores, 2 chips) with Oracle Database 10g Enterprise Edition Release 10.2.0.2 HW: ~$74,000; SW: ~$110,000 MySQL 5.0 – 720.56 JOPS SPECjAppServer2004 3x Sun Fire X4100 appservers (12 cores, 6 chips) and 1 Sun Fire X4100 DB server (4 cores, 2 chips) with MySQL 5.0.27 64-bit
  • 7. Индексы: GiST и GIN GiST GIN
  • 8. HOT (Heap Only Tuples)‏ При обновлении (UPDATE) индекс не меняется, если: UPDATE не затрагивает проиндексированные столбцы, новая версия строки записывается на той же странице данных (heap). «Моментальное» повторное использование места в heap без ожидания процесса VACUUM.
  • 9. Обновление без HOT Heap Page 8kb Page Header Item1 Ptr Item2 Ptr Item3 Ptr Item 2: row #1, v2 Item 1: row #1, v1 Item 3: row #1, v3 1 2 3 Index
  • 10. HOT-обновление Heap Page 8kb Page Header Item1 Ptr Item2 Ptr Item3 Ptr Item 2: row #1, v2 Item 3: row #1, v3 1 Index
  • 11. Asynchronous Commit SET synchronous_commit TO OFF; Позволяет отложить fsync на небольшое время (COMMIT без ожидания fsync)‏ возможна потеря небольшой порции данных (порядка 0.2...1.0 сек)‏ нарушение целостности данных невозможно! (в отличие от fsync=off)‏
  • 13. Сглаживание контрольной точки (checkpoint smoothing)‏ «Размазывание» процесса checkoint во времени, уменьшение интенсивности I/O-операций. Работает только для background checkpoints (при выключении сервера – полная скорость I/O-операций).
  • 15. Synchronized Scans Позволяет процессу «подсесть» к уже выполняющейся операции SeqScan другого процесса Сессия 1 Сессия 2 синхронизированный просмотр
  • 16. Кроме того Autovacuum включён по умолчанию Несколько параллельных процессов autovacuum Экономия пространства (varvarlena)‏ VARLENA-значения менее 128 байт: -6 байт ! заголовок строки: -4 байта ! При «читающих» транзакциях xid не меняется Автонастройка bgwriter ORDER BY ... LIMIT w/o sorting («Top N» sorting)‏
  • 18. Полнотекстовый поиск contrib/tsearch2 --> ядро системы Новый синтаксис Упрощённое создание индекса (без триггера)‏ Простая миграция и апгрейд версии PostgreSQL
  • 19. Полнотекстовый поиск CREATE 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; CREATE INDEX pgweb_idx ON pgweb USING gin(to_tsvector('russian', title || body)); 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;
  • 20. Поддержка XML Новый тип данных: xml Стандартные (ISO/ANSI SQL) функции публикации SQL/XML DTD-валидация XPath: функция xpath() (с поддержкой Namespaces)‏ Альтернативные функции экспорта объектов БД в XML B-tree и GIN-индексы для XML-данных, полнотекстовый поиск
  • 21. Поддержка XML SQL: SELECT XMLROOT ( XMLELEMENT ( NAME ’some’, XMLATTRIBUTES ( ’ val’ AS ’name’, 1 + 1 AS ’num’ ), XMLELEMENT ( NAME ’more’, ’ foo’ )‏ ), VERSION ’1.0’, STANDALONE YES ); Результат: <?xml version=’1.0’ standalone=’yes’ ?> <some name=’val’ num=’2’> <more>foo</more> </some>
  • 22. Поддержка XML SELECT * FROM table1 WHERE ((xpath(’//person/@smpl:pid’, xdata, ARRAY[ARRAY[’smpl’, ’http://example.com’]]))[1])::text = ’111’; CREATE INDEX i_table1_xdata ON table1 USING btree( xpath(’//person/@name’, xdata)‏ );
  • 23. Типы данных GUID/UUID enum массивы составных типов
  • 24. Кроме того Автоматическая инвалидация плана («чистка» кэша функций)‏ Table Function Updatable Cursors ORDER BY NULLS FIRST/LAST (ISO/ANSI SQL)‏ Поддержка NULL-значений в GiST-индексах
  • 26. EXPLAIN: больше информации QUERY PLAN ---------------------------------------------------------------------------------- Sort (cost=34.38..34.42 rows=13 width=176) (actual time=0.946..0.948 rows=6 loops=1)‏ Sort Key: obj2tag.o2t_tag_name Sort Method: quicksort Memory: 18kB -> Hash Join (cost=19.19..34.14 rows=13 width=176) (actual time=0.812..0.835 rows=6 loops=1)‏ Hash Cond: (obj2tag.o2t_tag_obj_id = tag.obj_id)‏ -> Bitmap Heap Scan on obj2tag (cost=4.43..19.21 rows=13 width=172) (actual time=0.079..0.093 rows=6 loops=1)‏ Recheck Cond: (o2t_obj_obj_id = 179313440)‏ Filter: (obj_status_did = 1)‏ -> Bitmap Index Scan on u_obj2tag_ids (cost=0.00..4.43 rows=24 width=0) (actual time=0.037..0.037 rows=24 loops=1)‏ Index Cond: (o2t_obj_obj_id = 179313440)‏ -> Hash (cost=9.89..9.89 rows=389 width=12) (actual time=0.700..0.700 rows=389 loops=1)‏ -> Seq Scan on tag (cost=0.00..9.89 rows=389 width=12) (actual time=0.012..0.396 rows=389 loops=1)‏ Total runtime: 1.064 ms (13 rows)‏
  • 27. Кроме того pg_standby – создание Warm Standby (Linux, Windows)‏ Удаление пользователя вместе со всеми принадлежащими ему объектами GSSAPI Улучшенная сборка под Win32 (MS VC++)‏
  • 28. Кроме того Оценки стоимости вызовов функций: ALTER FUNCTION log_data(text)‏ COST 100000 ROWS 1; Per-function GUC settings: ALTER FUNCTION log_data(text)‏ SET synchronous_commit TO OFF; Создание таблиц по «подобию»: CREATE TABLE dict2 (LIKE dictionary INCLUDING INDEXES);
  • 31. Продукты Skype PL/Proxy – прокси-язык для удаленного вызова процедур и партицирования данных между разными базами. PgBouncer – простой и быстрый менеджер соединений. SkyTools WalMgr Londiste PgQ
  • 32. Кроме того pgSNMP – SNMP-агент для PostgreSQL (мониторинг)‏ SEPostgres – расширение, основанное на модели SELinux (безопасность)‏ phppgadmin: настройка Slony и полнотекстового поиска, автовакуума Index Advisor
  • 33. Вопросы? http://postgresql.org http://postgresmen.ru http://developer.postgresql.org/index.php/Feature_Matrix [email_address] , Skype: postgresmen Special thanks to: Bruce Momjian, Josh Berkus, Teodor Sigaev, «PFC»