SlideShare ist ein Scribd-Unternehmen logo
1 von 47
Downloaden Sie, um offline zu lesen
Использование PostgreSQL
    в веб-приложениях


                       Николай Самохвалов
                            Иван Золотухин
                       компания Postgresmen




      29 марта 2007, Москва, PHPCenter
План действий


   00
11      Первый кофе-брейк
1215    Второй кофе-брейк
1330    Обед
   30
15      Третий кофе-брейк
   45
16      Четвёртый кофе-брейк
1800    Завершение программы
План работ


  Вводные темы
●

● Установка. Инструментарий

● Устройство PostgreSQL

● Оптимизация

● Программирование

● Полнотекстовый поиск и многое другое
Что такое PostgreSQL?


PostgreSQL – свободно распространяемая
объектно-реляционная система управления
базами данных (ORDBMS), наиболее
развитая из открытых СУБД в мире и
являющаяся реальной альтернативой
коммерческим базам данных.
Что такое PostgreSQL?


PostgreSQL произносится как post-gress-Q-L

В разговоре часто употребляется postgres
(пост-гресс).

Также, употребляется сокращение
pgsql (пэ-жэ-эс-ку-эл).
Что такое PostgreSQL?
Функциональность
Некоторые ограничения
PostgreSQL сегодня



Текущая версия – 8.2 (8.2.3)

Релиз версии 8.3 ожидается в июне 2007
PostgreSQL сегодня
    Надежность
●

       ACID, MVCC, WAL, PITR, Slony

    Безопасность данных
●

       root, SSL, pg_hba.conf, ROLE

    Производительность
●

       B-tree, hash, R-tree, GiST, Gin; geqo; partitioning; Slony, pgpool


    Расширяемость
●

       pg_catalog, наследование, GiST, Gin, contribs
PostgreSQL сегодня

    ISO/ANSI SQL (SQL:200x)
●

       схемы, представления, триггеры, rules, 2PC...

    Типы данных
●

       varlena, массивы, GIS, композитные, GiST

    Интерфейсы
●

       C, C++, C#, python, perl, ruby, php, Lisp и т.д.

    Процедурные языки
●

       PL/pgSQL, pl/Tcl, Pl/Perl и pl/Python; PHP, Java, Ruby, R, shell
PostgreSQL сегодня




    Простота
●
Кто использует


  Sony Entertainment (EnterpriseDB)
●

● Skype

● Cisco

● Fujitsu

● NTT

● Apple

● SUN Microsystems (Solaris, 24x7 support)
Кто использует



  SourceForge
●

● LAMP: Linux/Apache/ Middleware(Perl,PHP,Python,Ruby)/

  PostgreSQL
● New Zealand's Electoral Enrolment Centre

● .ORG, .INFO domain registry

● Многотерабайтные архивы астрономических данных
Кто использует: Россия



  Рамблер
●

● 1С:Предприятие (наряду с MS SQL)

● Многие крупные проекты Рунета

● Beeline
Интерфейсы абстракции (РНР)
    Good Thing
✔




Примеры:

  PDO
●

● PEAR::DB

● ADOdb

● Creole

● DbSimple
ПО на РНР
    с поддержкой PostgreSQL

  Blog: Serendipity, http://s9y.org/
●

● Wiki: Mediawiki, http://www.mediawiki.org/

● CMS: Drupal, http://drupal.org/

● CMF: CakePHP, http://www.cakephp.org/

● Bug-tracker: Mantis, http://www.mantisbt.org/

● Forum: FUDforum, http://fudforum.org/
Установка в связке с PHP

    cd postgresql-8.2.3
●



     ./configure
     make
     make install
    cd php-5.2.1
●



     ./configure –with-pgsql [--with-apxs]
     make
     make install
Начальная настройка
Всего 2 файла:
    postgresql.conf (основные настройки)
●


        listen_addresses (сетевые интерфейсы)
    –

        shared_buffers (общая память)
    –

        work_mem (память для сортировок)
    –

    pg_hba.conf (настройки доступа)
●


        host all all 127.0.0.1/32 md5
    –
Стартовые скрипты

    Linux: contrib/start-scripts/linux
●



    FreeBSD: contrib/start-scripts/freebsd
●


    Windows: обычная служба
●


    Любая другая ОС: не изобретайте, все
●

    придумано до вас. Google it!
Терминал psql
    отличный терминал
●


    многострочные команды и история (Сергей
●

    Копосов) n
    autocompletion Tab
●



    встроенная помощь h
●




    i, o, psql -c, echo | psql
●


    psql < file, etc
●
GUI средства: pgAdmin III
GUI средства: phpPgAdmin
Устройство PostgreSQL
Устройство PostgreSQL
Устройство PostgreSQL
    ACID-совместимая база данных
●


        atomicity (атомарность)
    –

        consistency (непротиворечивость)
    –

        isolation (изоляция)
    –

        durability (надежность)
    –
Устройство PostgreSQL
    MVCC: Multiversion Concurrency Control
●


        xid – transaction id
    –

        каждая запись имеет xid_start и xid_end
    –

        каждая транзакция видит версию базы в момент
    –
        xid_start
        записи не удаляются, а просто помечаются
    –
        xid_end
Устройство PostgreSQL
    MVCC – накапливаются старые версии
●

    данных
    требует пылесоса – VACUUM
●


    VACUUM: re-use мертвых данных
●


    VACUUM FULL: физическое удаление
●

    мертвых данных и дефрагментация базы
    autovacuum
●
Устройство PostgreSQL
WAL – Write Ahead Log
    механизм протоколирования всех
●

    транзакций
    позволяет восстановить систему после
●

    возможных сбоев
    все изменения данных записываются на
●

    диск только после их гарантированного
    журналирования в WAL
    PITR – Point In Time Recovery
●
Устройство PostgreSQL
postgresql.conf
    shared_buffers
●


    ~ ¼ RAM, старайтесь положить всю базу в память!
    work_mem
●


    свободная RAM / макс. число соединений
    effective_cache_size
●


     средний размер дискового кеша
    checkpoint_timeout
●


    несколько минут
    checkpoint_segments
●


    N * 16MB
Производительность PostgreSQL
Hardware
    Диски > RAM > CPU
●


    Чем больше дисков, тем лучше
●


    Отделяйте pg_xlog от данных
●


    RAID 1+0 / 0+1 > RAID 5
●


    Не ставьте на сервер другие приложения
●
Индексы в PostgreSQL
    B-tree
●


    Hash
●


    R-tree
●


    GiST (обобщенное поисковое дерево)
●


    GIN (обратный индекс)
●
Обработка запроса в PostgreSQL
1. Parser (синтаксический анализатор)
2. Planner (выбор оптимального пути)
3. Executor (непосредственное выполнение)


SQL – декларативный язык. СУБД решает, как
 именно будет выполняться запрос.
Обработка запроса в PostgreSQL
1. Parser (синтаксический анализатор)
2. Planner (выбор оптимального пути)
3. Executor (непосредственное выполнение)


SQL – декларативный язык. СУБД решает, как
 именно будет выполняться запрос.
EXPLAIN ANALYZE
    План запроса – дерево
●


    Узлы – действия
●


        соединения (join)
    –

        сортировка
    –

        просмотр таблицы
    –

    Выполнение происходит от листьев к корню
●


    Оценка количества строк и стоимости
●
EXPLAIN ANALYZE
    Способы просмотра таблицы
●


        Seq Scan
    –

        Index Scan
    –

    Способы подготовки данных
●


        Sort
    –

        Hash
    –

    Способы соединения (join)
●


        Nested Loop
    –

        Merge Join
    –

        Hash Join
    –
pgFouine: анализ логов
pgFouine: анализ логов
Наследование
 CREATE TABLE obj (
    obj_id INTEGER,
    obj_created TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE person(
    obj_id INTEGER PRIMARY KEY,
    person_name VARCHAR(32) NOT NULL,
    CHECK(obj_id >= 1000000000 AND obj_id < 2000000000)
) INHERITS(obj);

 CREATE TABLE car(
    obj_id INTEGER PRIMARY KEY,
    obj_type_id INT2 NOT NULL DEFAULT 2,
    car_model VARCHAR(16) NOT NULL,
    CHECK(obj_id >= 2000000000 AND obj_id < 3000000000)
) INHERITS(obj);
Функции / хранимые процедуры

    SQL
●



    PL/pgSQL
●



    PL/Perl
●



    PL/Tcl
●



    PL/Python
●



    PL/R
●



    PL/Java
●



    plPHP
●



    plRuby
●



    ...и даже больше!
●
Функции: SQL


CREATE OR REPLACE FUNCTION hello(text)
RETURNS text
AS $BODY$
    SELECT 'Hello ' || $1 || '!';
$BODY$ LANGUAGE sql IMMUTABLE;
Функции: PL/pgSQL


CREATE OR REPLACE FUNCTION hello(text)
RETURNS text
AS $BODY$
BEGIN
     RETURN 'Hello ' || $1 || '!';
END;
$BODY$ LANGUAGE plpgsql IMMUTABLE;
Триггеры
CREATE OR REPLACE FUNCTION ts2_page_title()
RETURNS quot;triggerquot;
AS $BODY$
BEGIN
   IF TG_OP = 'INSERT' THEN
      NEW.titlevector =
        to_tsvector('default',NEW.page_title);
   ELSIF NEW.page_title <> OLD.page_title THEN
      NEW.titlevector :=
        to_tsvector('default',NEW.page_title);
   END IF;
RETURN NEW;
END;
$BODY$ LANGUAGE plpgsql VOLATILE;

CREATE TRIGGER ts2_page_title BEFORE INSERT OR UPDATE
ON page FOR EACH ROW EXECUTE PROCEDURE ts2_page_title();
Rules и представления


CREATE VIEW myview AS SELECT * FROM mytab;


CREATE TABLE myview(...);
CREATE RULE quot;_RETURNquot; AS ON SELECT TO myview
  DO INSTEAD
     SELECT * FROM mytab;
GiST – Generalized Search Tree

      R-tree
  ●


      tsearch2
  ●


      intarray
  ●


      pg_trgm
  ●


      ltree
  ●


      hstore
  ●


      pg_sphere
  ●
The End
Спасибо за внимание!

Weitere ähnliche Inhalte

Was ist angesagt?

Jazz – открытая платформа разработки ПО
Jazz – открытая платформа разработки ПОJazz – открытая платформа разработки ПО
Jazz – открытая платформа разработки ПОSQALab
 
Rails Deployment with NginX
Rails Deployment with NginXRails Deployment with NginX
Rails Deployment with NginXStoyan Zhekov
 
Как сделать контрибут в Ruby on Rails
Как сделать контрибут в Ruby on RailsКак сделать контрибут в Ruby on Rails
Как сделать контрибут в Ruby on RailsYaroslav Markin
 
Ruby on Rails at HackDay in Saint Petersburg
Ruby on Rails at HackDay in Saint PetersburgRuby on Rails at HackDay in Saint Petersburg
Ruby on Rails at HackDay in Saint PetersburgAlexander Krass
 
Ajax и будущее Java Script
Ajax и будущее Java ScriptAjax и будущее Java Script
Ajax и будущее Java ScriptConstantin Kichinsky
 

Was ist angesagt? (7)

Jazz – открытая платформа разработки ПО
Jazz – открытая платформа разработки ПОJazz – открытая платформа разработки ПО
Jazz – открытая платформа разработки ПО
 
Rails Deployment with NginX
Rails Deployment with NginXRails Deployment with NginX
Rails Deployment with NginX
 
Как сделать контрибут в Ruby on Rails
Как сделать контрибут в Ruby on RailsКак сделать контрибут в Ruby on Rails
Как сделать контрибут в Ruby on Rails
 
Ruby on Rails at HackDay in Saint Petersburg
Ruby on Rails at HackDay in Saint PetersburgRuby on Rails at HackDay in Saint Petersburg
Ruby on Rails at HackDay in Saint Petersburg
 
Ajax и будущее Java Script
Ajax и будущее Java ScriptAjax и будущее Java Script
Ajax и будущее Java Script
 
Revisited
RevisitedRevisited
Revisited
 
Hadoop指标
Hadoop指标Hadoop指标
Hadoop指标
 

Andere mochten auch

#RuPostges в Yandex, эпизод 3. Что же нового в PostgreSQL 9.6
#RuPostges в Yandex, эпизод 3. Что же нового в PostgreSQL 9.6#RuPostges в Yandex, эпизод 3. Что же нового в PostgreSQL 9.6
#RuPostges в Yandex, эпизод 3. Что же нового в PostgreSQL 9.6Nikolay Samokhvalov
 
Python & Web: От простого к сложному
Python & Web: От простого к сложномуPython & Web: От простого к сложному
Python & Web: От простого к сложномуIlya Bolkhovsky
 
django-and-postgresql
django-and-postgresqldjango-and-postgresql
django-and-postgresqlOleg Churkin
 
PG Day'14 Russia, PostgreSQL в avito.ru, Михаил Тюрин
PG Day'14 Russia, PostgreSQL в avito.ru, Михаил ТюринPG Day'14 Russia, PostgreSQL в avito.ru, Михаил Тюрин
PG Day'14 Russia, PostgreSQL в avito.ru, Михаил Тюринpgdayrussia
 
Владимир Бородин - PostgreSQL
Владимир Бородин - PostgreSQLВладимир Бородин - PostgreSQL
Владимир Бородин - PostgreSQLYandex
 
Куликовский Дмитрий - Работа системного администратора сегодня
 Куликовский Дмитрий - Работа системного администратора сегодня   Куликовский Дмитрий - Работа системного администратора сегодня
Куликовский Дмитрий - Работа системного администратора сегодня Yandex
 
Адаптивная оптимизация запросов в реляционных СУБД / Олег Иванов (Postgres Pr...
Адаптивная оптимизация запросов в реляционных СУБД / Олег Иванов (Postgres Pr...Адаптивная оптимизация запросов в реляционных СУБД / Олег Иванов (Postgres Pr...
Адаптивная оптимизация запросов в реляционных СУБД / Олег Иванов (Postgres Pr...Ontico
 
Поиск совпадений и дедупликация в потоке / Леонид Юрьев (Positive Technologies)
Поиск совпадений и дедупликация в потоке / Леонид Юрьев (Positive Technologies)Поиск совпадений и дедупликация в потоке / Леонид Юрьев (Positive Technologies)
Поиск совпадений и дедупликация в потоке / Леонид Юрьев (Positive Technologies)Ontico
 
PostgreSQL: практические примеры оптимизации SQL-запросов / Иван Фролков (Po...
PostgreSQL: практические примеры оптимизации SQL-запросов /  Иван Фролков (Po...PostgreSQL: практические примеры оптимизации SQL-запросов /  Иван Фролков (Po...
PostgreSQL: практические примеры оптимизации SQL-запросов / Иван Фролков (Po...Ontico
 
История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)
История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)
История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)Ontico
 
Suturing techniques involved in dental surgery
Suturing techniques involved in dental surgerySuturing techniques involved in dental surgery
Suturing techniques involved in dental surgeryHasanain Alani
 

Andere mochten auch (11)

#RuPostges в Yandex, эпизод 3. Что же нового в PostgreSQL 9.6
#RuPostges в Yandex, эпизод 3. Что же нового в PostgreSQL 9.6#RuPostges в Yandex, эпизод 3. Что же нового в PostgreSQL 9.6
#RuPostges в Yandex, эпизод 3. Что же нового в PostgreSQL 9.6
 
Python & Web: От простого к сложному
Python & Web: От простого к сложномуPython & Web: От простого к сложному
Python & Web: От простого к сложному
 
django-and-postgresql
django-and-postgresqldjango-and-postgresql
django-and-postgresql
 
PG Day'14 Russia, PostgreSQL в avito.ru, Михаил Тюрин
PG Day'14 Russia, PostgreSQL в avito.ru, Михаил ТюринPG Day'14 Russia, PostgreSQL в avito.ru, Михаил Тюрин
PG Day'14 Russia, PostgreSQL в avito.ru, Михаил Тюрин
 
Владимир Бородин - PostgreSQL
Владимир Бородин - PostgreSQLВладимир Бородин - PostgreSQL
Владимир Бородин - PostgreSQL
 
Куликовский Дмитрий - Работа системного администратора сегодня
 Куликовский Дмитрий - Работа системного администратора сегодня   Куликовский Дмитрий - Работа системного администратора сегодня
Куликовский Дмитрий - Работа системного администратора сегодня
 
Адаптивная оптимизация запросов в реляционных СУБД / Олег Иванов (Postgres Pr...
Адаптивная оптимизация запросов в реляционных СУБД / Олег Иванов (Postgres Pr...Адаптивная оптимизация запросов в реляционных СУБД / Олег Иванов (Postgres Pr...
Адаптивная оптимизация запросов в реляционных СУБД / Олег Иванов (Postgres Pr...
 
Поиск совпадений и дедупликация в потоке / Леонид Юрьев (Positive Technologies)
Поиск совпадений и дедупликация в потоке / Леонид Юрьев (Positive Technologies)Поиск совпадений и дедупликация в потоке / Леонид Юрьев (Positive Technologies)
Поиск совпадений и дедупликация в потоке / Леонид Юрьев (Positive Technologies)
 
PostgreSQL: практические примеры оптимизации SQL-запросов / Иван Фролков (Po...
PostgreSQL: практические примеры оптимизации SQL-запросов /  Иван Фролков (Po...PostgreSQL: практические примеры оптимизации SQL-запросов /  Иван Фролков (Po...
PostgreSQL: практические примеры оптимизации SQL-запросов / Иван Фролков (Po...
 
История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)
История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)
История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)
 
Suturing techniques involved in dental surgery
Suturing techniques involved in dental surgerySuturing techniques involved in dental surgery
Suturing techniques involved in dental surgery
 

Ähnlich wie 20070329 Phpconf2007 Training

20080424 Cdb2008 Postgresql News Bartunov
20080424 Cdb2008 Postgresql News Bartunov20080424 Cdb2008 Postgresql News Bartunov
20080424 Cdb2008 Postgresql News BartunovNikolay Samokhvalov
 
тупицын Ec2 Rootconf2009
тупицын Ec2 Rootconf2009тупицын Ec2 Rootconf2009
тупицын Ec2 Rootconf2009Liudmila Li
 
Groovy Vs Perl
Groovy Vs PerlGroovy Vs Perl
Groovy Vs Perlmayperl
 
11 Net Scaler Xa1
11 Net Scaler Xa111 Net Scaler Xa1
11 Net Scaler Xa1Liudmila Li
 
Упаковка и развертывание программ на perl под debian‎
Упаковка и развертывание программ на perl под debian‎Упаковка и развертывание программ на perl под debian‎
Упаковка и развертывание программ на perl под debian‎mayperl
 
query optimization
query optimizationquery optimization
query optimizationDimara Hakim
 
Что такое ASP.NET MVC?
Что такое ASP.NET MVC?Что такое ASP.NET MVC?
Что такое ASP.NET MVC?Dima Pasko
 
Zurich2007 MySQL Query Optimization
Zurich2007 MySQL Query OptimizationZurich2007 MySQL Query Optimization
Zurich2007 MySQL Query OptimizationHiệp Lê Tuấn
 
Zurich2007 MySQL Query Optimization
Zurich2007 MySQL Query OptimizationZurich2007 MySQL Query Optimization
Zurich2007 MySQL Query OptimizationHiệp Lê Tuấn
 
使いこなそうGUC
使いこなそうGUC使いこなそうGUC
使いこなそうGUCAkio Ishida
 
Intro To RDBMS And SQL Server 2005 - Svetlin Nakov
Intro To RDBMS And SQL Server 2005 - Svetlin NakovIntro To RDBMS And SQL Server 2005 - Svetlin Nakov
Intro To RDBMS And SQL Server 2005 - Svetlin NakovSvetlin Nakov
 
Основы работы с Memcached
Основы работы с MemcachedОсновы работы с Memcached
Основы работы с Memcachedrailsclub
 
P2 P Mobile Advertising And Targeting
P2 P Mobile Advertising And TargetingP2 P Mobile Advertising And Targeting
P2 P Mobile Advertising And Targetingguest258f78a
 
колышкин Rootconf 2009 Openvz
колышкин Rootconf 2009 Openvzколышкин Rootconf 2009 Openvz
колышкин Rootconf 2009 OpenvzLiudmila Li
 
Delivery of media content of IIS Media Services
Delivery of media content of  IIS Media ServicesDelivery of media content of  IIS Media Services
Delivery of media content of IIS Media ServicesSQALab
 

Ähnlich wie 20070329 Phpconf2007 Training (20)

20070613 Rit2007 Training
20070613 Rit2007 Training20070613 Rit2007 Training
20070613 Rit2007 Training
 
20080424 Cdb2008 Postgresql News Bartunov
20080424 Cdb2008 Postgresql News Bartunov20080424 Cdb2008 Postgresql News Bartunov
20080424 Cdb2008 Postgresql News Bartunov
 
тупицын Ec2 Rootconf2009
тупицын Ec2 Rootconf2009тупицын Ec2 Rootconf2009
тупицын Ec2 Rootconf2009
 
Postgre Sql 8 4
Postgre Sql 8 4Postgre Sql 8 4
Postgre Sql 8 4
 
Hackday Ml
Hackday MlHackday Ml
Hackday Ml
 
Groovy Vs Perl
Groovy Vs PerlGroovy Vs Perl
Groovy Vs Perl
 
11 Net Scaler Xa1
11 Net Scaler Xa111 Net Scaler Xa1
11 Net Scaler Xa1
 
Упаковка и развертывание программ на perl под debian‎
Упаковка и развертывание программ на perl под debian‎Упаковка и развертывание программ на perl под debian‎
Упаковка и развертывание программ на perl под debian‎
 
query optimization
query optimizationquery optimization
query optimization
 
Что такое ASP.NET MVC?
Что такое ASP.NET MVC?Что такое ASP.NET MVC?
Что такое ASP.NET MVC?
 
Zurich2007 MySQL Query Optimization
Zurich2007 MySQL Query OptimizationZurich2007 MySQL Query Optimization
Zurich2007 MySQL Query Optimization
 
Zurich2007 MySQL Query Optimization
Zurich2007 MySQL Query OptimizationZurich2007 MySQL Query Optimization
Zurich2007 MySQL Query Optimization
 
Hasql in practice (Russian)
Hasql in practice (Russian)Hasql in practice (Russian)
Hasql in practice (Russian)
 
使いこなそうGUC
使いこなそうGUC使いこなそうGUC
使いこなそうGUC
 
Intro To RDBMS And SQL Server 2005 - Svetlin Nakov
Intro To RDBMS And SQL Server 2005 - Svetlin NakovIntro To RDBMS And SQL Server 2005 - Svetlin Nakov
Intro To RDBMS And SQL Server 2005 - Svetlin Nakov
 
OpenSPARC
OpenSPARCOpenSPARC
OpenSPARC
 
Основы работы с Memcached
Основы работы с MemcachedОсновы работы с Memcached
Основы работы с Memcached
 
P2 P Mobile Advertising And Targeting
P2 P Mobile Advertising And TargetingP2 P Mobile Advertising And Targeting
P2 P Mobile Advertising And Targeting
 
колышкин Rootconf 2009 Openvz
колышкин Rootconf 2009 Openvzколышкин Rootconf 2009 Openvz
колышкин Rootconf 2009 Openvz
 
Delivery of media content of IIS Media Services
Delivery of media content of  IIS Media ServicesDelivery of media content of  IIS Media Services
Delivery of media content of IIS Media Services
 

Mehr von Nikolay Samokhvalov

Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва...
 Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва... Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва...
Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва...Nikolay Samokhvalov
 
Промышленный подход к тюнингу PostgreSQL: эксперименты над базами данных
Промышленный подход к тюнингу PostgreSQL: эксперименты над базами данныхПромышленный подход к тюнингу PostgreSQL: эксперименты над базами данных
Промышленный подход к тюнингу PostgreSQL: эксперименты над базами данныхNikolay Samokhvalov
 
The Art of Database Experiments – PostgresConf Silicon Valley 2018 / San Jose
The Art of Database Experiments – PostgresConf Silicon Valley 2018 / San JoseThe Art of Database Experiments – PostgresConf Silicon Valley 2018 / San Jose
The Art of Database Experiments – PostgresConf Silicon Valley 2018 / San JoseNikolay Samokhvalov
 
Nancy CLI. Automated Database Experiments
Nancy CLI. Automated Database ExperimentsNancy CLI. Automated Database Experiments
Nancy CLI. Automated Database ExperimentsNikolay Samokhvalov
 
#RuPostgresLive 4: как писать и читать сложные SQL-запросы
#RuPostgresLive 4: как писать и читать сложные SQL-запросы#RuPostgresLive 4: как писать и читать сложные SQL-запросы
#RuPostgresLive 4: как писать и читать сложные SQL-запросыNikolay Samokhvalov
 
#RuPostgresLive 4: как писать и читать сложные SQL-запросы
#RuPostgresLive 4: как писать и читать сложные SQL-запросы#RuPostgresLive 4: как писать и читать сложные SQL-запросы
#RuPostgresLive 4: как писать и читать сложные SQL-запросыNikolay Samokhvalov
 
Database First! О распространённых ошибках использования РСУБД
Database First! О распространённых ошибках использования РСУБДDatabase First! О распространённых ошибках использования РСУБД
Database First! О распространённых ошибках использования РСУБДNikolay Samokhvalov
 
#noBackend, или Как выжить в эпоху толстеющих клиентов
#noBackend, или Как выжить в эпоху толстеющих клиентов#noBackend, или Как выжить в эпоху толстеющих клиентов
#noBackend, или Как выжить в эпоху толстеющих клиентовNikolay Samokhvalov
 
#PostgreSQLRussia в банке Тинькофф, доклад №1
#PostgreSQLRussia в банке Тинькофф, доклад №1#PostgreSQLRussia в банке Тинькофф, доклад №1
#PostgreSQLRussia в банке Тинькофф, доклад №1Nikolay Samokhvalov
 
SFPUG 2015.11.20 lightning talk "PostgreSQL in Russia"
SFPUG 2015.11.20 lightning talk "PostgreSQL in Russia"SFPUG 2015.11.20 lightning talk "PostgreSQL in Russia"
SFPUG 2015.11.20 lightning talk "PostgreSQL in Russia"Nikolay Samokhvalov
 
Владимир Бородин: Как спать спокойно - 2015.10.14 PostgreSQLRussia.org meetu...
Владимир Бородин: Как спать спокойно - 2015.10.14 PostgreSQLRussia.org meetu...Владимир Бородин: Как спать спокойно - 2015.10.14 PostgreSQLRussia.org meetu...
Владимир Бородин: Как спать спокойно - 2015.10.14 PostgreSQLRussia.org meetu...Nikolay Samokhvalov
 
#PostgreSQLRussia 2015.09.15 - Николай Самохвалов - 5 главных особенностей Po...
#PostgreSQLRussia 2015.09.15 - Николай Самохвалов - 5 главных особенностей Po...#PostgreSQLRussia 2015.09.15 - Николай Самохвалов - 5 главных особенностей Po...
#PostgreSQLRussia 2015.09.15 - Николай Самохвалов - 5 главных особенностей Po...Nikolay Samokhvalov
 
#PostgreSQLRussia 2015.09.15 - Максим Трегубов, CUSTIS - Миграция из Oracle в...
#PostgreSQLRussia 2015.09.15 - Максим Трегубов, CUSTIS - Миграция из Oracle в...#PostgreSQLRussia 2015.09.15 - Максим Трегубов, CUSTIS - Миграция из Oracle в...
#PostgreSQLRussia 2015.09.15 - Максим Трегубов, CUSTIS - Миграция из Oracle в...Nikolay Samokhvalov
 
Три вызова реляционным СУБД и новый PostgreSQL - #PostgreSQLRussia семинар по...
Три вызова реляционным СУБД и новый PostgreSQL - #PostgreSQLRussia семинар по...Три вызова реляционным СУБД и новый PostgreSQL - #PostgreSQLRussia семинар по...
Три вызова реляционным СУБД и новый PostgreSQL - #PostgreSQLRussia семинар по...Nikolay Samokhvalov
 
2014.12.23 Николай Самохвалов, Ещё раз о JSON(b) в PostgreSQL 9.4
2014.12.23 Николай Самохвалов, Ещё раз о JSON(b) в PostgreSQL 9.42014.12.23 Николай Самохвалов, Ещё раз о JSON(b) в PostgreSQL 9.4
2014.12.23 Николай Самохвалов, Ещё раз о JSON(b) в PostgreSQL 9.4Nikolay Samokhvalov
 
2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, ParallelsNikolay Samokhvalov
 
2014.10.15 Сергей Бурладян, Avito.ru
2014.10.15 Сергей Бурладян, Avito.ru2014.10.15 Сергей Бурладян, Avito.ru
2014.10.15 Сергей Бурладян, Avito.ruNikolay Samokhvalov
 
2014.10.15 Мурат Кабилов, Avito.ru #PostgreSQLRussia
2014.10.15 Мурат Кабилов, Avito.ru #PostgreSQLRussia2014.10.15 Мурат Кабилов, Avito.ru #PostgreSQLRussia
2014.10.15 Мурат Кабилов, Avito.ru #PostgreSQLRussiaNikolay Samokhvalov
 
2014.10.15 блиц-доклад PostgreSQL kNN search
2014.10.15 блиц-доклад PostgreSQL kNN search2014.10.15 блиц-доклад PostgreSQL kNN search
2014.10.15 блиц-доклад PostgreSQL kNN searchNikolay Samokhvalov
 

Mehr von Nikolay Samokhvalov (20)

Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва...
 Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва... Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва...
Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва...
 
Промышленный подход к тюнингу PostgreSQL: эксперименты над базами данных
Промышленный подход к тюнингу PostgreSQL: эксперименты над базами данныхПромышленный подход к тюнингу PostgreSQL: эксперименты над базами данных
Промышленный подход к тюнингу PostgreSQL: эксперименты над базами данных
 
The Art of Database Experiments – PostgresConf Silicon Valley 2018 / San Jose
The Art of Database Experiments – PostgresConf Silicon Valley 2018 / San JoseThe Art of Database Experiments – PostgresConf Silicon Valley 2018 / San Jose
The Art of Database Experiments – PostgresConf Silicon Valley 2018 / San Jose
 
Nancy CLI. Automated Database Experiments
Nancy CLI. Automated Database ExperimentsNancy CLI. Automated Database Experiments
Nancy CLI. Automated Database Experiments
 
#RuPostgresLive 4: как писать и читать сложные SQL-запросы
#RuPostgresLive 4: как писать и читать сложные SQL-запросы#RuPostgresLive 4: как писать и читать сложные SQL-запросы
#RuPostgresLive 4: как писать и читать сложные SQL-запросы
 
#RuPostgresLive 4: как писать и читать сложные SQL-запросы
#RuPostgresLive 4: как писать и читать сложные SQL-запросы#RuPostgresLive 4: как писать и читать сложные SQL-запросы
#RuPostgresLive 4: как писать и читать сложные SQL-запросы
 
Database First! О распространённых ошибках использования РСУБД
Database First! О распространённых ошибках использования РСУБДDatabase First! О распространённых ошибках использования РСУБД
Database First! О распространённых ошибках использования РСУБД
 
2016.10.13 PostgreSQL in Russia
2016.10.13 PostgreSQL in Russia2016.10.13 PostgreSQL in Russia
2016.10.13 PostgreSQL in Russia
 
#noBackend, или Как выжить в эпоху толстеющих клиентов
#noBackend, или Как выжить в эпоху толстеющих клиентов#noBackend, или Как выжить в эпоху толстеющих клиентов
#noBackend, или Как выжить в эпоху толстеющих клиентов
 
#PostgreSQLRussia в банке Тинькофф, доклад №1
#PostgreSQLRussia в банке Тинькофф, доклад №1#PostgreSQLRussia в банке Тинькофф, доклад №1
#PostgreSQLRussia в банке Тинькофф, доклад №1
 
SFPUG 2015.11.20 lightning talk "PostgreSQL in Russia"
SFPUG 2015.11.20 lightning talk "PostgreSQL in Russia"SFPUG 2015.11.20 lightning talk "PostgreSQL in Russia"
SFPUG 2015.11.20 lightning talk "PostgreSQL in Russia"
 
Владимир Бородин: Как спать спокойно - 2015.10.14 PostgreSQLRussia.org meetu...
Владимир Бородин: Как спать спокойно - 2015.10.14 PostgreSQLRussia.org meetu...Владимир Бородин: Как спать спокойно - 2015.10.14 PostgreSQLRussia.org meetu...
Владимир Бородин: Как спать спокойно - 2015.10.14 PostgreSQLRussia.org meetu...
 
#PostgreSQLRussia 2015.09.15 - Николай Самохвалов - 5 главных особенностей Po...
#PostgreSQLRussia 2015.09.15 - Николай Самохвалов - 5 главных особенностей Po...#PostgreSQLRussia 2015.09.15 - Николай Самохвалов - 5 главных особенностей Po...
#PostgreSQLRussia 2015.09.15 - Николай Самохвалов - 5 главных особенностей Po...
 
#PostgreSQLRussia 2015.09.15 - Максим Трегубов, CUSTIS - Миграция из Oracle в...
#PostgreSQLRussia 2015.09.15 - Максим Трегубов, CUSTIS - Миграция из Oracle в...#PostgreSQLRussia 2015.09.15 - Максим Трегубов, CUSTIS - Миграция из Oracle в...
#PostgreSQLRussia 2015.09.15 - Максим Трегубов, CUSTIS - Миграция из Oracle в...
 
Три вызова реляционным СУБД и новый PostgreSQL - #PostgreSQLRussia семинар по...
Три вызова реляционным СУБД и новый PostgreSQL - #PostgreSQLRussia семинар по...Три вызова реляционным СУБД и новый PostgreSQL - #PostgreSQLRussia семинар по...
Три вызова реляционным СУБД и новый PostgreSQL - #PostgreSQLRussia семинар по...
 
2014.12.23 Николай Самохвалов, Ещё раз о JSON(b) в PostgreSQL 9.4
2014.12.23 Николай Самохвалов, Ещё раз о JSON(b) в PostgreSQL 9.42014.12.23 Николай Самохвалов, Ещё раз о JSON(b) в PostgreSQL 9.4
2014.12.23 Николай Самохвалов, Ещё раз о JSON(b) в PostgreSQL 9.4
 
2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels
 
2014.10.15 Сергей Бурладян, Avito.ru
2014.10.15 Сергей Бурладян, Avito.ru2014.10.15 Сергей Бурладян, Avito.ru
2014.10.15 Сергей Бурладян, Avito.ru
 
2014.10.15 Мурат Кабилов, Avito.ru #PostgreSQLRussia
2014.10.15 Мурат Кабилов, Avito.ru #PostgreSQLRussia2014.10.15 Мурат Кабилов, Avito.ru #PostgreSQLRussia
2014.10.15 Мурат Кабилов, Avito.ru #PostgreSQLRussia
 
2014.10.15 блиц-доклад PostgreSQL kNN search
2014.10.15 блиц-доклад PostgreSQL kNN search2014.10.15 блиц-доклад PostgreSQL kNN search
2014.10.15 блиц-доклад PostgreSQL kNN search
 

Kürzlich hochgeladen

How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 

Kürzlich hochgeladen (20)

DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 

20070329 Phpconf2007 Training

  • 1. Использование PostgreSQL в веб-приложениях Николай Самохвалов Иван Золотухин компания Postgresmen 29 марта 2007, Москва, PHPCenter
  • 2. План действий 00 11 Первый кофе-брейк 1215 Второй кофе-брейк 1330 Обед 30 15 Третий кофе-брейк 45 16 Четвёртый кофе-брейк 1800 Завершение программы
  • 3. План работ Вводные темы ● ● Установка. Инструментарий ● Устройство PostgreSQL ● Оптимизация ● Программирование ● Полнотекстовый поиск и многое другое
  • 4. Что такое PostgreSQL? PostgreSQL – свободно распространяемая объектно-реляционная система управления базами данных (ORDBMS), наиболее развитая из открытых СУБД в мире и являющаяся реальной альтернативой коммерческим базам данных.
  • 5. Что такое PostgreSQL? PostgreSQL произносится как post-gress-Q-L В разговоре часто употребляется postgres (пост-гресс). Также, употребляется сокращение pgsql (пэ-жэ-эс-ку-эл).
  • 9. PostgreSQL сегодня Текущая версия – 8.2 (8.2.3) Релиз версии 8.3 ожидается в июне 2007
  • 10. PostgreSQL сегодня Надежность ● ACID, MVCC, WAL, PITR, Slony Безопасность данных ● root, SSL, pg_hba.conf, ROLE Производительность ● B-tree, hash, R-tree, GiST, Gin; geqo; partitioning; Slony, pgpool Расширяемость ● pg_catalog, наследование, GiST, Gin, contribs
  • 11. PostgreSQL сегодня ISO/ANSI SQL (SQL:200x) ● схемы, представления, триггеры, rules, 2PC... Типы данных ● varlena, массивы, GIS, композитные, GiST Интерфейсы ● C, C++, C#, python, perl, ruby, php, Lisp и т.д. Процедурные языки ● PL/pgSQL, pl/Tcl, Pl/Perl и pl/Python; PHP, Java, Ruby, R, shell
  • 12. PostgreSQL сегодня Простота ●
  • 13. Кто использует Sony Entertainment (EnterpriseDB) ● ● Skype ● Cisco ● Fujitsu ● NTT ● Apple ● SUN Microsystems (Solaris, 24x7 support)
  • 14. Кто использует SourceForge ● ● LAMP: Linux/Apache/ Middleware(Perl,PHP,Python,Ruby)/ PostgreSQL ● New Zealand's Electoral Enrolment Centre ● .ORG, .INFO domain registry ● Многотерабайтные архивы астрономических данных
  • 15. Кто использует: Россия Рамблер ● ● 1С:Предприятие (наряду с MS SQL) ● Многие крупные проекты Рунета ● Beeline
  • 16. Интерфейсы абстракции (РНР) Good Thing ✔ Примеры: PDO ● ● PEAR::DB ● ADOdb ● Creole ● DbSimple
  • 17. ПО на РНР с поддержкой PostgreSQL Blog: Serendipity, http://s9y.org/ ● ● Wiki: Mediawiki, http://www.mediawiki.org/ ● CMS: Drupal, http://drupal.org/ ● CMF: CakePHP, http://www.cakephp.org/ ● Bug-tracker: Mantis, http://www.mantisbt.org/ ● Forum: FUDforum, http://fudforum.org/
  • 18. Установка в связке с PHP cd postgresql-8.2.3 ● ./configure make make install cd php-5.2.1 ● ./configure –with-pgsql [--with-apxs] make make install
  • 19. Начальная настройка Всего 2 файла: postgresql.conf (основные настройки) ● listen_addresses (сетевые интерфейсы) – shared_buffers (общая память) – work_mem (память для сортировок) – pg_hba.conf (настройки доступа) ● host all all 127.0.0.1/32 md5 –
  • 20. Стартовые скрипты Linux: contrib/start-scripts/linux ● FreeBSD: contrib/start-scripts/freebsd ● Windows: обычная служба ● Любая другая ОС: не изобретайте, все ● придумано до вас. Google it!
  • 21. Терминал psql отличный терминал ● многострочные команды и история (Сергей ● Копосов) n autocompletion Tab ● встроенная помощь h ● i, o, psql -c, echo | psql ● psql < file, etc ●
  • 26. Устройство PostgreSQL ACID-совместимая база данных ● atomicity (атомарность) – consistency (непротиворечивость) – isolation (изоляция) – durability (надежность) –
  • 27. Устройство PostgreSQL MVCC: Multiversion Concurrency Control ● xid – transaction id – каждая запись имеет xid_start и xid_end – каждая транзакция видит версию базы в момент – xid_start записи не удаляются, а просто помечаются – xid_end
  • 28. Устройство PostgreSQL MVCC – накапливаются старые версии ● данных требует пылесоса – VACUUM ● VACUUM: re-use мертвых данных ● VACUUM FULL: физическое удаление ● мертвых данных и дефрагментация базы autovacuum ●
  • 29. Устройство PostgreSQL WAL – Write Ahead Log механизм протоколирования всех ● транзакций позволяет восстановить систему после ● возможных сбоев все изменения данных записываются на ● диск только после их гарантированного журналирования в WAL PITR – Point In Time Recovery ●
  • 31. postgresql.conf shared_buffers ● ~ ¼ RAM, старайтесь положить всю базу в память! work_mem ● свободная RAM / макс. число соединений effective_cache_size ● средний размер дискового кеша checkpoint_timeout ● несколько минут checkpoint_segments ● N * 16MB
  • 32. Производительность PostgreSQL Hardware Диски > RAM > CPU ● Чем больше дисков, тем лучше ● Отделяйте pg_xlog от данных ● RAID 1+0 / 0+1 > RAID 5 ● Не ставьте на сервер другие приложения ●
  • 33. Индексы в PostgreSQL B-tree ● Hash ● R-tree ● GiST (обобщенное поисковое дерево) ● GIN (обратный индекс) ●
  • 34. Обработка запроса в PostgreSQL 1. Parser (синтаксический анализатор) 2. Planner (выбор оптимального пути) 3. Executor (непосредственное выполнение) SQL – декларативный язык. СУБД решает, как именно будет выполняться запрос.
  • 35. Обработка запроса в PostgreSQL 1. Parser (синтаксический анализатор) 2. Planner (выбор оптимального пути) 3. Executor (непосредственное выполнение) SQL – декларативный язык. СУБД решает, как именно будет выполняться запрос.
  • 36. EXPLAIN ANALYZE План запроса – дерево ● Узлы – действия ● соединения (join) – сортировка – просмотр таблицы – Выполнение происходит от листьев к корню ● Оценка количества строк и стоимости ●
  • 37. EXPLAIN ANALYZE Способы просмотра таблицы ● Seq Scan – Index Scan – Способы подготовки данных ● Sort – Hash – Способы соединения (join) ● Nested Loop – Merge Join – Hash Join –
  • 40. Наследование CREATE TABLE obj ( obj_id INTEGER, obj_created TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP ); CREATE TABLE person( obj_id INTEGER PRIMARY KEY, person_name VARCHAR(32) NOT NULL, CHECK(obj_id >= 1000000000 AND obj_id < 2000000000) ) INHERITS(obj); CREATE TABLE car( obj_id INTEGER PRIMARY KEY, obj_type_id INT2 NOT NULL DEFAULT 2, car_model VARCHAR(16) NOT NULL, CHECK(obj_id >= 2000000000 AND obj_id < 3000000000) ) INHERITS(obj);
  • 41. Функции / хранимые процедуры SQL ● PL/pgSQL ● PL/Perl ● PL/Tcl ● PL/Python ● PL/R ● PL/Java ● plPHP ● plRuby ● ...и даже больше! ●
  • 42. Функции: SQL CREATE OR REPLACE FUNCTION hello(text) RETURNS text AS $BODY$ SELECT 'Hello ' || $1 || '!'; $BODY$ LANGUAGE sql IMMUTABLE;
  • 43. Функции: PL/pgSQL CREATE OR REPLACE FUNCTION hello(text) RETURNS text AS $BODY$ BEGIN RETURN 'Hello ' || $1 || '!'; END; $BODY$ LANGUAGE plpgsql IMMUTABLE;
  • 44. Триггеры CREATE OR REPLACE FUNCTION ts2_page_title() RETURNS quot;triggerquot; AS $BODY$ BEGIN IF TG_OP = 'INSERT' THEN NEW.titlevector = to_tsvector('default',NEW.page_title); ELSIF NEW.page_title <> OLD.page_title THEN NEW.titlevector := to_tsvector('default',NEW.page_title); END IF; RETURN NEW; END; $BODY$ LANGUAGE plpgsql VOLATILE; CREATE TRIGGER ts2_page_title BEFORE INSERT OR UPDATE ON page FOR EACH ROW EXECUTE PROCEDURE ts2_page_title();
  • 45. Rules и представления CREATE VIEW myview AS SELECT * FROM mytab; CREATE TABLE myview(...); CREATE RULE quot;_RETURNquot; AS ON SELECT TO myview DO INSTEAD SELECT * FROM mytab;
  • 46. GiST – Generalized Search Tree R-tree ● tsearch2 ● intarray ● pg_trgm ● ltree ● hstore ● pg_sphere ●
  • 47. The End Спасибо за внимание!