PostgreSQL PostgreSQL PostgreSQL 8.1 8.1 и дальше ... и дальше ... Олег Бартунов, Федор Сигаев ГАИШ МГУ
PostgreSQL
PostgreSQL PostgreSQL 8.18.1
и дальше ...и дальше ...Олег Бартунов, Федор Сигаев
ГАИШ МГУ
PostgreSQL
PostgreSQL - это свободно распространяемая объектно-реляционная система управления базами данных (ORDBMS), наиболее развитая из открытых СУБД в мире и являющаяся реальной альтернативой коммерческим базам данных.
PostgreSQL
PostgreSQL произносится как post-gress-Q-L В разговоре часто употребляется postgres (пост-гресс). Также, употребляется сокращение pgsql (пэ-жэ-эс-ку-эль).
PostgreSQLГенеалогия реляционных СУБД
PostgreSQLСравнение функциональности некоторых СУБД
PostgreSQL
Некоторые ограничения PostgreSQL
PostgreSQLMailing lists & IRCMailing lists & IRC
● Списки рассылки :Списки рассылки :
http://www.postgresql.org/community/lists/subscribehttp://www.postgresql.org/community/lists/subscribe
Большой траффикБольшой траффик
Высокий уровень профессиональностиВысокий уровень профессиональности
Дружественное отношениеДружественное отношение
● Архивы доступны:Архивы доступны:
http://archives.postgresql.org/
http://www.pgsql.ru/db/mw/http://www.pgsql.ru/db/mw/
● IRC: irc.freenode.net/#postgresqlIRC: irc.freenode.net/#postgresql
Уникальное сочетание компетентности и Уникальное сочетание компетентности и дружественностидружественности
● pgsql-adminpgsql-admin● pgsql-advocacypgsql-advocacy● pgsql-announcepgsql-announce● pgsql-bugspgsql-bugs● pgsql-docspgsql-docs● pgsql-generalpgsql-general● pgsql-hackerspgsql-hackers● pgsql-interfacespgsql-interfaces● pgsql-jdbcpgsql-jdbc● pgsql-novicepgsql-novice● pgsql-odbcpgsql-odbc● pgsql-pgsql-● performanceperformance● pgsql-phppgsql-php● pgsql-sqlpgsql-sql
PostgreSQLWeb resourcesWeb resources
● http://techdocs.postgresql.org/http://techdocs.postgresql.org/ Технические статьи Технические статьи
● General Bits by A. Elein MustainGeneral Bits by A. Elein Mustain http://www.varlena.com/GeneralBitshttp://www.varlena.com/GeneralBits Еженедельное обозрение pgsql-generalЕженедельное обозрение pgsql-general
● PGSearch:PGSearch: http://www.pgsql.ru/db/pgsearchhttp://www.pgsql.ru/db/pgsearch Поисковая система по ресурсам PostgreSQLПоисковая система по ресурсам PostgreSQL
PostgreSQLhttp://pgfoundry.orghttp://pgfoundry.org
PostgreSQLhttp://gborg.postgresql.org/http://gborg.postgresql.org/
PostgreSQLpgAdmin IIIpgAdmin III
● Freely available Freely available graphical administration graphical administration application for application for PostgreSQLPostgreSQL
● Runs on:Runs on: Linux,Linux, FreeBSD & FreeBSD & WindowsWindows
● Version 1.2 supports 8.0Version 1.2 supports 8.0
PostgreSQLpgAdmin IIIpgAdmin III
PostgreSQLphpPgAdminphpPgAdmin
PostgreSQL
PostgreSQL 8 работает в “native” режиме PostgreSQL 8 работает в “native” режиме под Windows 2000, XP and 2003под Windows 2000, XP and 2003
● Может работать как службаМожет работать как служба● InstallerInstaller
PostgreSQL● Включает дополнительные модули:Включает дополнительные модули:
NpgsqlNpgsql JDBCJDBC psqlODBCpsqlODBC pgAdmin IIIpgAdmin III
PostgreSQL
PostgreSQL
Что нового в Что нового в PostgreSQL PostgreSQL
8.1 ?8.1 ?
PostgreSQL
Что нового в PostgreSQL 8.1 ?Что нового в PostgreSQL 8.1 ?● SQLSQL● Двухфазный коммит (2PC) Двухфазный коммит (2PC) ● PREPARE TRANSACTION PREPARE TRANSACTION ● COMMIT PREPAREDCOMMIT PREPARED● ROLLBACK PREPAREDROLLBACK PREPARED● JDBC драйвер поддержка XA (JTA)JDBC драйвер поддержка XA (JTA)
PostgreSQL
Что нового в PostgreSQL 8.1?Что нового в PostgreSQL 8.1?● SQLSQL● Роли вместо пользователй и группРоли вместо пользователй и групп● Управление доступом к объектам базыУправление доступом к объектам базы● Database, table, function, language, schema,Database, table, function, language, schema,● Tablespace, roleTablespace, role● Роли могут принадлежать другим ролямРоли могут принадлежать другим ролям● Роли могут быть владельцами объектовРоли могут быть владельцами объектов● Роли могут наследоватьсяРоли могут наследоваться● ALTER ROLE myname SET enable_indexscan TO off;ALTER ROLE myname SET enable_indexscan TO off;
PostgreSQL
Что нового в PostgreSQL 8.1?Что нового в PostgreSQL 8.1?● Very large DatabaseVery large Database● Bitmap index (in memory)Bitmap index (in memory)● Оптимизация работы с несколькими Оптимизация работы с несколькими
индексами индексами ● Bitmap Index Scan – Bitmap Heap ScanBitmap Index Scan – Bitmap Heap Scan● GUC параметр: enable_bitmapscanGUC параметр: enable_bitmapscan
PostgreSQL
Q3C sky indexing algorithmQ3C sky indexing algorithm● SAI Catalog Access ServicesSAI Catalog Access Services
PostgreSQL
Q3C Sky indexing algorithmQ3C Sky indexing algorithm
PostgreSQL
Что нового в PostgreSQL 8.1 ?Что нового в PostgreSQL 8.1 ?● Very Large DatabaseVery Large Database● Table Partitioning Table Partitioning ● Наследование таблиц – table inheritanceНаследование таблиц – table inheritance● Улучшение в планировщикеУлучшение в планировщике● CONSTRAIN EXCLUSIONCONSTRAIN EXCLUSION● GUC параметр: constraint_exclusion (off)GUC параметр: constraint_exclusion (off)
PostgreSQL
Что нового в PostgreSQL 8.1 ?Что нового в PostgreSQL 8.1 ?● Table Partitioning (Пример)Table Partitioning (Пример)● Создаем таблицыСоздаем таблицы
create table a ( i int primary key);create table a1( check (i >=0 and i<=2000) ) inherits(a);create table a2( check (i >=2001 and i<=4000) ) inherits(a);create table a3( check (i >=4001 and i<=6000) ) inherits(a);create index a1_idx on a1(i);create index a2_idx on a2(i);create index a3_idx on a3(i);
PostgreSQL
Что нового в PostgreSQL 8.1 ?Что нового в PostgreSQL 8.1 ?● Table PartitioningTable Partitioning● Заполняем таблицыЗаполняем таблицы
for ((i=0;i<2000;i++)) do echo $i; done| psql test -c "copy a1 from stdin;"for ((i=2001;i<4000;i++)) do echo $i; done| psql test -c "copy a2 from stdin;"for ((i=4001;i<6000;i++)) do echo $i; done| psql test -c "copy a3 from stdin;"
PostgreSQL
Что нового в PostgreSQL 8.1 ?Что нового в PostgreSQL 8.1 ?● Table PartitioningTable Partitioning● Без CONSTRAINT EXCLUSIONБез CONSTRAINT EXCLUSION
test=# explain select * from a where i = 10; QUERY PLAN Result (cost=0.00..42.70 rows=34 width=4) -> Append (cost=0.00..42.70 rows=34 width=4) -> Index Scan using a_pkey on a (cost=0.00..4.82 rows=1 width=4) Index Cond: (i = 10) -> Bitmap Heap Scan on a1 a (cost=2.04..12.63 rows=11 width=4) Recheck Cond: (i = 10) -> Bitmap Index Scan on a1_idx (cost=0.00..2.04 rows=11 width=0) Index Cond: (i = 10) -> Bitmap Heap Scan on a2 a (cost=2.04..12.63 rows=11 width=4) Recheck Cond: (i = 10) -> Bitmap Index Scan on a2_idx (cost=0.00..2.04 rows=11 width=0) Index Cond: (i = 10) -> Bitmap Heap Scan on a3 a (cost=2.04..12.63 rows=11 width=4) Recheck Cond: (i = 10) -> Bitmap Index Scan on a3_idx (cost=0.00..2.04 rows=11 width=0) Index Cond: (i = 10)
PostgreSQL
Что нового в PostgreSQL 8.1 ?Что нового в PostgreSQL 8.1 ?● Table PartitioningTable Partitioning● CONSTRAINT EXCLUSION !!!CONSTRAINT EXCLUSION !!!test=# explain select * from a where i = 10;
QUERY PLAN Result (cost=0.00..17.45 rows=12 width=4) -> Append (cost=0.00..17.45 rows=12 width=4) -> Index Scan using a_pkey on a (cost=0.00..4.82 rows=1 width=4) Index Cond: (i = 10)
-> Bitmap Heap Scan on a1 a (cost=2.04..12.63 rows=11 width=4) Recheck Cond: (i = 10)
-> Bitmap Index Scan on a1_idx (cost=0.00..2.04 rows=11 width=0) Index Cond: (i = 10)(8 rows)
PostgreSQL
Что нового в PostgreSQL 8.1 ?Что нового в PostgreSQL 8.1 ?● ПроизводительностьПроизводительность● SMP – улучшение конкурентности доступа к SMP – улучшение конкурентности доступа к
разделяемой памятиразделяемой памяти● Clock-sweep алгоритм Clock-sweep алгоритм
PostgreSQL
Что нового в PostgreSQL 8.1 ?Что нового в PostgreSQL 8.1 ?● ПроизводительностьПроизводительность● GiST (Generalized Search Tree) стал GiST (Generalized Search Tree) стал
конкурентным ! конкурентным ! ● GiST WAL – восстановление после сбоевGiST WAL – восстановление после сбоев● Tsearch2, ltree, intarray, PosGIS Tsearch2, ltree, intarray, PosGIS
PostgreSQL
Что нового в PostgreSQL 8.1 ?Что нового в PostgreSQL 8.1 ?● Улучшенная поддержка функцийУлучшенная поддержка функций● IN, OUT, INOUT, совместимость с ORACLEIN, OUT, INOUT, совместимость с ORACLE
CREATE FUNCTION foo(IN x integer, INOUT y integer, OUT z integer) AS $$BEGIN y := y + 5; z := x + 5;END;$$ LANGUAGE plpgsql IMMUTABLE STRICT;
SELECT foo(10, 20); foo --------- (25,15)(1 row)
SELECT (foo(10, 20)).*; y | z ----+---- 25 | 15(1 row)
PostgreSQL
Что нового в PostgreSQL 8.1 ?Что нового в PostgreSQL 8.1 ?● Интегрированный Интегрированный autovacuumautovacuum ● MVCC -> VACUUMMVCC -> VACUUM
# select xmin,xmax,i from a where i=5999; xmin | xmax | i --------+------+------ 185789 | 0 | 5999
# begin;BEGIN=# delete from a where i=5999;DELETE 1
# select xmin,xmax,i from a where i=5999; xmin | xmax | i --------+--------+------ 185789 | 185809 | 5999
PostgreSQL
Что ожидается Что ожидается вв
PostgreSQL 8.2 PostgreSQL 8.2 ??
PostgreSQL
Что ожидается ?Что ожидается ?● PITR – незаполненные WAL-логи, встроенная PITR – незаполненные WAL-логи, встроенная
репликациярепликация● Иерархические запросыИерархические запросы● Updateable viewUpdateable view● Улучшенная сортировка – 40%Улучшенная сортировка – 40%● Bitmap indices (on-disk) Bitmap indices (on-disk) ● Gin – обобщенный обратный индексGin – обобщенный обратный индекс● Tsearch2 – UTF-8, обратный индекс, query Tsearch2 – UTF-8, обратный индекс, query
rewriting, улучшенная релевацияrewriting, улучшенная релевация● Индексная поддержка any arrayИндексная поддержка any array
PostgreSQL
Что ожидается ?Что ожидается ?
PostgreSQL
Что ожидается ?Что ожидается ?
●
Рецепты PostgreSQL
Алексей Борзов, Олег Бартунов
PostgreSQL● Sony Online EntertainmentSony Online Entertainment ● Enterprise DB, 1.5mln.Enterprise DB, 1.5mln.● Oracle -> PostgreSQL 8.1Oracle -> PostgreSQL 8.1● SUN Microsystems SUN Microsystems ● Solaris 10Solaris 10● поддержка 24x7поддержка 24x7● Beeline (Вымпелком)Beeline (Вымпелком)● SAI CAS - Catalog Access ServiceSAI CAS - Catalog Access Service● Терабайты Терабайты ● vo.astronet.ruvo.astronet.ru● Rx1620 HP RUSSIA Itanium 2, Linux 2.6Rx1620 HP RUSSIA Itanium 2, Linux 2.6
PostgreSQL
БлагодарностиБлагодарности
● РФФИРФФИ ● Astronet (Astronet (www.astronet.ruwww.astronet.ru), 05-07-90225-в), 05-07-90225-в● Научная сеть (nature.web.ru), 03-07-90187-вНаучная сеть (nature.web.ru), 03-07-90187-в● HP RussiaHP Russia