PostgreSQL & IBM DB2
PostgreSQL — свободная объектно-реляционная система управления базами данных (СУБД).
Ключевые возможности системы
Полное соответствие принципам ACID — атомарность, непротиворечивость, изолированность, сохранность данных.
Многоверсионность (Multiversion Concurrency Control, MVCC) используется для поддержания согласованности данных в конкурентных условиях, в то время как в традиционных базах данных используются блокировки. MVCC означает, что каждая транзакция видит копию данных (версию базы данных) на время начала транзакции, несмотря на то что состояние базы могло уже измениться. Это защищает транзакцию от несогласованных изменений данных, которые могли быть вызваны конкурентной транзакцией, и обеспечивает изоляцию транзакций.
Основной выигрыш от использования MVCC по сравнению с блокировкой заключается в том, что блокировка, которую ставит MVCC для чтения, не конфликтует с блокировкой на запись. Поэтому чтение никогда не блокирует запись и наоборот. Конкурентные операции записи «мешают» друг другу только при работе с одной и той же записью.
Наличие Write Ahead Logging (WAL) - механизм протоколирования всех транзакций, позволяющий восстановить систему после возможных сбоев. Основная идея WAL в том, что все изменения должны записываться в файлы на диск только после того, как и записи журнала, описывающие эти изменения будут гарантировано записаны на диск. Это позволяет не сбрасывать страницы данных на диск после фиксации каждой транзакции, так как мы знаем и уверены, что сможем всегда восстановить базу данных используя журнал транзакций.
Point in Time Recovery (PITR) - возможность восстановления базы данных на любой момент в прошлом. Это позволяет осуществлять непрерывное резервное копирование кластера PostgreSQL.
Репликация также повышает надежность PostgreSQL. Существует несколько систем репликации, например, Slony. Slony является самым используемым свободным решением и поддерживает master-slaves репликацию. Ожидается, что Slony-II будет поддерживать multi-master режим.
Целостность данных — сердце PostgreSQL. Помимо MVCC, PostgreSQL поддерживает целостность данных на уровне схемы — это внешние ключи (foreign keys), ограничения (constraints).
Модель развития PostgreSQL абсолютно прозрачна, так как все планы, проблемы и приоритеты открыто обсуждаются. Пользователи и разработчики находятся в постоянном диалоге через mailing листы. Все предложенные патчи проходят тщательное тестирование до принятия их в программное дерево. Большое количество бета-тестеров способствует тестированию версии до релиза
и устранению мелких ошибок.
Открытость кодов PostgreSQL означает их абсолютную доступность для любого,
а либеральная BSD лицензия не накладывает никаких ограничений на использование кода.
DB2 — семейство систем управления реляционными базами данных, выпускаемых корпорацией IBM.
Диалект языка SQL, используемый в DB2, за редкими исключениями строго декларативен. Система снабжена многофазным оптимизатором, строящим по этим декларативным конструкциям план выполнения запроса
Язык SQL DB2 является вычислительно полным, то есть потенциально позволяет в декларативной форме определять любые вычислимые соответствия между исходными данными и результатом. Это достигается в том числе за счет использования табличных выражений, рекурсии и других развитых механизмов манипулирования данными.
Традиционно для написания хранимых процедур используются обычные языки программирования высокого уровня (Си, Java, PL/I, Кобол и т. д.). Это позволяет программисту легко оформлять один и тот же код либо как часть приложения, либо как хранимую процедуру, — в зависимости от того, на клиенте или на сервере его целесообразнее выполнять.
В DB2 также реализовано процедурное расширение SQL для хранимых процедур в соответствии со стандартом ANSI SQL/PSM. Оптимизатор DB2 широко использует статистику распределения данных в таблицах, если процесс ее сбора был выполнен администратором базы данных. Поэтому один и тот же запрос на языке SQL может быть транслирован в совершенно разные планы выполнения в зависимости от статистических характеристик данных, которые он обрабатывает. В плане повышения уровня интеграции средств безопасности в компьютерной системе DB2 не имеет собственных средств аутентификации пользователей, интегрируясь со средствами операционной системы или специализированными серверами безопасности. В рамках DB2 осуществляется только авторизация пользователей, аутентифицированных системой.
DB2 является единственной реляционной СУБД общего назначения, имеющей реализации на аппаратно-программном уровне: система IBM i. В оборудовании мэйнфреймов IBM System z также реализуются средства поддержки DB2.
Современные версии DB2 обеспечивают расширенную поддержку использования данных в формате XML, в том числе операции с отдельными элементами документов XML.