Введение в Postgre

PostgreSQL - крутая СУБД, потому что..

  1. Она не принадлежит какой-либо компании, как например Oracle или mysql и распространяется по BSD-лицензии
  2. Имеет поддержку продвинутых фишек - PL/pgSQL, триггеров. Теоретически это очень полезно при создании очень масштабной системы.
  3. Транзакции по принципам ACID придают скорости - несколько запросов в одной транзакции выполняются как одна атомарная операция. А мультиверсионность помогает избежать блокировки таблиц.
  4. Объектность. Таблица выступает фактически в виде класса, а ряды - в виде объектов, так же как классы могут наследоваться, так и таблицы могут наследоваться.
  5. Система привилегий операций с таблицами, схожа с системой по принципу с Oracle.
  6. Репликации, т.е. использование нескольких серверов даёт масштабируемость.

Переход на PostgreSQL как правило связан с обработкой больших объемов данных - когда число рядов переваливает миллион, то mysql начинает испытывать трудности, а Natural Join нескольких таких таблиц может привести вообще к падению сервера. Да и тесты на параллельность поддерживают Postgre. Энтузиастам может быть интересна же не столь масштабируемость, сколько объектность, позволяющая большую свободу, или если хотите - сложность, по сравнению с mysql.

При переходе из mysql, следует отметить различия, которые естественно следует предусмотреть:

  • Различные типы данных. Нет datetime, зато есть возможность создать тучу своих типов.
  • Отсутсвие autoincrement. Такая функция заменена наличием sequence, и в упрощённом виде может использоваться так:
    CREATE TABLE mynewtable (
    id SERIAL
    }
  • pgAdmin III очень удобная консольная программа, а в качестве замены phpMyAdmin есть phpPgAdmin
  • Аналогом DATE_FORMAT является to_char
  • Заглавные буквы в названиях таблиц и полей по умолчанию переводятся в нижний регистр, это можно обойти используя двойные кавычки
  • Форматом для LIMIT конструкции стал также поддерживаемый с mysql 4LIMIT # OFFSET #
  • Просмотр запущенных процессов реализуется аналогом
    --show processlisеSELECT * from pg_stat_activity ;

Читайте также:

RSS

Комментарии

  • Валера
    avatar
    "...когда число рядов переваливает миллион, то mysql начинает испытывать трудности..." — не соглашусь. Миллион — это не много даже для MySQL. Просто в MySQL очень важно до мелочей правильно писать запросы и тестировать их производительность. Важно правильно выбрать типы данных, engine для таблиц. Большая проблема MySQL в том, что она на несколько порядков хуже работает, когда запросы не оптимизированы. Под нагрузкой разница во времени выполенния оптимизирвоанного сложного запроса может достигать 100 раз, и даже больше. Так вот, правильно составленные запросы работают в MySQL практически не хуже, чем в Postgres.

    Но это не отменяет других преимуществ PostgreSQL :) Так что в целом, эта СУБД, пожалуй, пока качественнее, чем MySQL.