Postgresql

Перейти к: навигация, поиск
Icon-expand.png Эта статья является незавершенной!
Эта статья нуждается в доработке. Если Вы можете помочь, сделайте это в соответствии с руководством по оформлению.

О программе

PostgreSQL это мощная объектно-реляционная система управления базами данных с открытыми исходными текстами. Она разрабатывается на протяжении более 15 лет и улучшает архитектуру, чем завоевала репутацию надежной, ингерированной и масштабируемой СУБД. Она запускается на всех основных платформах, включая Linux, UNIX (AIX, BSD, HP-UX, SGI IRIX, Mac OS X, Solaris, Tru64), и Windows. Она полностью соответствует ACID, имеет полную поддержку ключей, объединений, представлений, триггеров, и хранимых процедур (на разных языках). Она включает большинство типов данных SQL92 и SQL99, включая INTEGER, NUMERIC, BOOLEAN, CHAR, VARCHAR, DATE, INTERVAL, и TIMESTAMP. Она также поддерживает хранение больших двоичных объектов (BLOB's), включая картинки, звук, или видео. Она имеет API для C/C++, Java, Perl, Python, Ruby, Tcl, ODBC, и многие другие, и exceptional documentation, неполная русская документация.

Являясь СУБД класса предприятия, PostgreSQL предоставляет такие особенности как Multi-Version Concurrency Control (MVCC), восстановление по точке во времени, табличное пространство, асинхронная репликация, вложенные транзакции (точки сохранения), горячее резервирование, планировщик/оптимизатор запросов, и упреждающее журналирование на случай поломки. Он поддерживает международные кодировки, в том числе и многобайтовые, при использование различных кодировок можно использовать сортировку и полнотекстовый поиск, различать регистр. Большое количество подконтрольных данных и большое число одновременно работающих пользователей, тем не менее, не сильно влияет на масштабируемость системы. Есть действующие PostgreSQL системы, которые управляют более чем 4 терабайтами данных. Некоторые общие ограничения PostgreSQL представлены ниже в таблице.

Ограничение Значение
Максимальный размер базы данных Не ограничено
Максимальный размер таблицы 32 TB
Максимальный размер строки 1.6 TB
Максимальный размер поля 1 GB
Максимальное кол-во строк в таблице Не ограничено
Максимальное кол-во столбцов в таблице 250 - 1600 в зависимости от типа столбцов
Максимальное кол-во индексов в таблице Не ограничено

PostgreSQL выиграл приз своих пользователей и признание производства, включая Linux New Media Award, в наилучших системах управления базами данных и три раза завоёвывал The Linux Journal Editors' Choice Award как лучшая DBMS.

Особенности и Соответствие стандартам

Команда разработчиков PostgreSQL ориентируется на соответствие стандартам. Его реализация SQL полностью соответствует ANSI-SQL 92/99 стандартам. Он имеет полную поддержку вложенных запросов (включая выбор из FROM), уровень чтения только зафиксированных данных и сериализуемые транзакции. И так как PostgreSQL имеет полностью реляционный системный каталог, поддерживающий множество схем баз данных, его каталог также доступен посредством информационной схемы в соответствии со стандартом SQL.

Средства обеспечения целостности данных включают составные первичные ключи, внешние ключи с поддержкой запрета и каскадирования изменений/удалений, проверку ограничений (constraints), ограничения уникальности и ограничения на непустые значения.

PostgreSQL также включает набор расширений и улучшений. Среди удобств присутствуют автоинкрементные поля на основе последовательностей, и конструкции LIMIT/OFFSET, позволяющие возвращать результирующий набор только частично. PostgreSQL поддерживает составные, уникальные и функциональные индексы, для построения (хранения) которых могут использоваться методы B-дерева, R-дерева, перемешивания, или GiST.

Индексирование GiST (Generalized Search Tree) представляет собой систему, объединяющую большой набор различных алгоритмов сортировки и поиска, включая B-деревья, B+-деревья, R-деревья, деревья частичных сумм, ранжированные B+-деревья, и другие. Она также обеспечивает интерфейс, обеспечивающий как создание пользовательских типов данных, так и расширенные методы запросов, позволяющие выполнять поиск по ним. Т.е. GiST дает возможность определить, что вы храните, как вы это храните, и каким образом вы будете выполнять поиск. Эти возможности существенно превышают средства, даваемые стандартными алгоритмами типа B-дерева или R-дерева.

GiST служит основанием для многих открытых проектов, которые используют PostgreSQL, таких как OpenFTS и PostGIS. OpenFTS (Open Source Full Text Search engine) обеспечивает онлайновое индексирование данных и ранжирование по важности в поиске по базе данных. PostGIS это проект, добавляющий к PostgreSQL поддержку географических объектов, и позволяющий использовать его в географических информационных системах (GIS), аналогичных ESRI SDE или Oracle's Spatial extension.

Другие улучшения включают в себя табличное наследование, систему правил, и события базы данных. Табличное наследование придает созданию таблиц объектно-ориентированный уклон, позволяющий при создании базы данных наследовать новые таблицы от старых, рассматривая из как базовые классы. Более того, PostgeSQL поддерживает как одиночное, так и множественное наследование.

Система правил, также называемая системой перезаписи запросов, позволяет при разработке базы данных создавать правила, которые задают определенные операции над заданными таблицами или представлениями, и динамически преобразовывать их в другие операции в процессе выполнения.

События базы данных - это система взаимодействия между процессами, в которой сообщения и события могут передаваться между клиентами посредством использования команд LISTEN и NOTIFY. Это позволяет строить как простые схемы взаимодействия типа "точка-точка", так и более сложные схемы обработки событий. Извещения могут быть инициированы триггерами или хранимыми процедурами, и клиенты PostgreSQL могут отслеживать события базы данных, такие как изменения, удаления и внесения данных в таблицы, по мере их наступления.

Высокая гибкость

PostgreSQL может выполнять хранимые процедуры, написанные на различных языках программирования, включая Java, Perl, Python, Ruby, Tcl, C/C++, и собственном PL/pgSQL, аналогичном Oracle's PL/SQL. В стандартную библиотеку функций включены сотни встроенных функций - от базовых математических и строковых операций до криптографических функций и функций, обеспечивающих совместимость с Oracle. Триггеры и хранимые процедуры могут быть написаны на Cи и загружены в базу данных в качестве библиотеки, позволяя тем самым расширять ее возможности. Также PostgreSQL включает средства разработки, позволяющие создавать пользовательские типы данных вместе с функциями и операторами, описывающими их поведение. Как результат, созданы и могут быть добавлены к системе различные типы данных - от геометрических и пространственных примитивов до типов данных, определенных в ISBN/ISSN (International Standard Book Number/International Standard Serial Number).

Наряду со множеством языков, которые могут использоваться для написания хранимых процедур, существует и множество интерфейсных библиотек, позволяющих как интерпретируемым, так и компилируемым языкам взаимодействовать с PostgreSQL. Это интерфейсы для Java (JDBC), ODBC, Perl, Python, Ruby, C, C++, PHP, Lisp, Scheme, Qt и др.

Кроме того, исходный код PostgreSQL доступен под наиболее либеральной из открытых лицензий - лицензией BSD. Эта лицензия дает вам право свободно использовать, модифицировать и распространять PostgreSQL в любой форме, которая вам нравится, с открытым или закрытым исходным кодом. Вы можете поступать со сделанными вами модификациями так, как вам будет угодно. Таким образом, PostgreSQL это не только мощная система управления базами данных, позволяющая обеспечить деятельность организации, но и платформа разработки для построения приложений, требующих использования реляционной СУБД.

Copyright © 1996 – 2006 PostgreSQL Global Development Group, used with permission of Joshua D. Drake, PostgreSQL Liason