PostgreSQL - что это за программа? Свободная объектно-реляционная система управления базами данных (СУБД) PostgreSQL
В отличие от других транзакционных баз данных, Postgres определяет приоритетность ANSI SQL, содержащую всеобъемлющую библиотеку SQL и функциональность, которая может использоваться для поддержки расширенных аналитических рабочих нагрузок. Открытый исходный код означает, что это PostgreSQL можно загрузить и развернуть на товарном оборудовании бесплатно или его можно запустить в облаке через поставщиков. Хотя Postgres является многофункциональным и адаптированным для рабочих нагрузок OLAP, производительность в Postgres имеет тенденцию к ограничению, поскольку объемы данных превышают несколько терабайт.
Краткая история создания
PostgreSQL, первоначально называемый Postgres, был создан в UCB профессором по информатике Майклом Стоунбрейкером. Он начал работу в 1986 году в Postgres в качестве обновленного проекта своего предшественника Ingres и теперь принадлежит Computer Associates.
Основные периоды:
- 1977-1985 гг. - период, в котором был разработан проект под названием Ingres, а также найдено доказательство концепции для реляционных БД. В 1980 году была основана компания Ingres, которая в 1994 году была приобретена Computer Associates.
- 1986-1994 гг. - период, в котором была принята кодовая база POSTGRES. Хотя первоначальный вариант был в том, что это PostgreSQL не использовала кодовую базу в качестве своей основы. Кроме того, была разработана концепция в Ingres с акцентом на ориентацию объектов и язык запросов – Quel и коммерциализирован как Illustra.
- 1994-1995 гг. - в этот период была добавлена поддержка SQL. Выпущен Postgres 95, который позже, в 1996 году, был переиздан как PostgreSQL 6.0. Была создана глобальная команда разработчиков PostgreSQL с бесплатной системой постреляционной БД с открытым исходным кодом. Она применяется сегодня во всех операционных системах.
25-летняя история совершенствования PostgreSQL предоставляет огромный набор возможностей для разработчиков и администраторов баз данных, поставляемых на надежном сервере программного обеспечения, используемом во всем мире. PostgreSQL оценивается в 5 лучших базах данных DBEngine.
Особенности новейшей разработки
Это PostgreSQL, что использует новейшие методики для разработки новых приложений с миллионами развертываний во встроенных системах, крупных провайдерах, облачных вычислениях и крупных локальных установках. Преимущества и отличия от других систем:
- Невосприимчивость к чрезмерному развертыванию.
- Перераспределение - это то, что некоторые патентованные поставщики баз данных считают своей проблемой № 1 из-за соответствия лицензии. С PostgreSQL никто не может подать в суд на пользователя за нарушение лицензии. Так как нет никаких связанных лицензионных затрат на ПО.
- Лучшая поддержка при создании базы данных PostgreSQL, чем у патентообладателей.
- Яркое сообщество профессиональных энтузиастов PostgreSQL.
- Значительная экономия на штатных расходах.
- Низкие требования к обслуживанию и настройке, чем ведущие запатентованные базы данных, но при этом сохраняют все функции, стабильность и производительность.
- Учебные программы продукта обычно рассматриваются как гораздо более дорогостоящие, эффективные, управляемые и практичные в реальном мире, чем у ведущих поставщиков собственных баз данных.
- Легендарная надежность и стабильность.
- Исходный код доступен бесплатно.
- Если пользователю необходимо каким-либо образом настроить или расширить PostgreSQL, тогда он сможет сделать это с минимальными усилиями и без каких-либо затрат.
Важно, что это PostgreSQL объединяет сообщество энтузиастов по всему миру, которые ежедневно активно расширяют ПО. Многие пользователи используют стратегию хранения данных с несколькими строками, называемую MVCC, чтобы сделать PostgreSQL чрезвычайно отзывчивым в средах с большими объемами.
Реестр российского ПО
18 марта 2016 года Экспертный совет по ПО в России одобрил 155 программ для внесения в Росреестр. Среди российских лидеров ABBYY и "Касперского" были PostgreSQL. Включили в список "ЛИНТЕР" и Postgres. Выданная лицензия PostgreSQL дает право собственникам на разработку и коммерческую передачу полученных от нее программ. Это справедливая оценка 20-летней работы команды Postgres Professional над проектом. А что в настоящее время? Postgres Professional издала обновленный релиз свободной версии СУБД Postgres Pro 9.6.2.1. Функциональные возможности СУБД:
- мультимастерный кластер;
- адаптивные запросы;
- секционирование таблиц;
- блочная компрессия данных;
- счетчик для транзакций 64-битных версий.
Принцип ПО СУБД PostgreSQL базируется на машинном обучении, в связи с чем оно может осуществить оптимизацию планирования запросов. Нововведения резко (в 10 раз) освобождают занятую данными память и создают скачок производительности. Для решения проблем с переполнением систем PostgreSQL Professional применен 64-битный счетчик транзакций с поддержкой 100 млн транзакций/сутки. Расширение pg_pathman позволяет секционировать таблицы и повысить масштабируемость через адаптированность алгоритмов планирования.
Установка в Linux/Unix
Для пользования PostgreSQL Ubuntu необходимо выполнить инструкции по установке на компьютере Linux. Перед тем как приступить к установке, убеждаются, что вошли в систему как пользователь root:
- Выбрать нужный номер версии PostgreSQL и, насколько это возможно, платформу от EnterpriseDB. Например, загружают postgresql-9.2.4-1-linux-x64.run для 64-битного процессора CentOS-6.
- После запуска установщика PostgreSQL Ubuntu отвечают на несколько основных вопросов, таких как местоположение установки, пароль пользователя, который будет использовать базу данных, и номер порта.
- Сохраняют их по умолчанию, кроме пароля, который можно предоставить по выбору.
- Установка PostgreSQL на компьютере Linux завершена.
Команды и полезные ссылки SQL
Используя psql, можно сгенерировать полный список команд с помощью команды \ help.
Для синтаксиса конкретной команды используют следующую: postgres-# \help.
Оператор SQL реестра российского ПО состоит из токенов, в которых каждый может представлять ключевое слово, котируемый идентификатор, константу либо специальный символ. В приведенной ниже таблице используется простой оператор SELECT для иллюстрации базового, но полного оператора SQL и его компонентов.
Следующие ресурсы содержат дополнительную информацию о PostgreSQL. Полезные ссылки:
- Домашняя страница - официальный сайт PostgreSQL, в котором представлена последняя версия установки, новости и полная информация, разъясняющая что это за программа PostgreSQL.
- PHP PostgreSQL - предоставляет полную информацию о поддержке PHP для баз данных PostgreSQL.
- Драйвер PostgreSQL JDBC - это библиотека для доступа и создания файлов базы данных PostgreSQL на Java.
- DBD-Pg-2.19.3, который будет использоваться вместе с модулем Perl DBI.
- DBI-1.625 - модуль для предоставления общего интерфейса для любой базы данных, включая PostgreSQL.
- PostgreSQL Python - является самым популярным адаптером базы данных PostgreSQL для языка программирования Python. Он предоставляет интерфейс SQL, соответствующий спецификации DB-API 2.0.
Общие параметры настройки Permalink
Конфигурирование базы данных PostgreSQL может быть сложным процессом. Ниже приведены некоторые основные параметры конфигурации, рекомендуемые при использовании PostgreSQL в Linode. Все эти параметры более подробно описаны в руководстве по настройке PostgreSQL.
Директива | Задача |
listen_addresses = 'localhost' | По умолчанию Postgres прослушивает только localhost. Однако, редактируя этот раздел и заменяя localhostIP, можно заставить Postgres прослушивать другой IP-адрес. Используйте '*' для прослушивания всех IP-адресов. |
max_connections = 50 | Устанавливает точное максимальное количество подключений клиентов. Чем выше значение, тем больше ресурсов потребует Postgres. Необходимо отрегулировать это значение в зависимости от размера Linode и трафика, который ожидается от базы данных. |
shared_buffers = 128 МБ | Как указано в официальной документации, эта директива изначально устанавливается на низкое значение. На платформе Linode это может быть 1/4 ОЗУ. |
wal_level | При настройке экземпляра Postgres важно учитывать запись в журнале записи (WAL). WAL может сохранять базу данных в чрезвычайной ситуации, одновременно записывая и регистрируя. Поэтому изменения записываются, даже если машина теряет мощность. Перед настройкой рекомендуется прочитать руководство DSHL по пониманию WAL и официальную главу о надежности WAL . |
synchronous_commit = off | При использовании Linode можно включить настоящую Директиву off. |
archive_mode = on | Включение режима архивирования - это жизнеспособная стратегия увеличения избыточности ваших резервных копий. |
Тип данных при создании таблиц
Работая с PostgreSQL при создании таблицы, для каждого столбца указывают тип данных, которые будут храниться в полях таблицы. Числовые типы представлены ниже.
Это дает несколько преимуществ:
- Согласованность. Операции против столбцов одного и того же типа данных дают согласованные результаты и, как правило, самые быстрые.
- Валидация. Правильное использование типов данных подразумевает проверку их формата и отказ от данных за пределами объема данных.
- Компактность. Поскольку столбец может содержать один тип значения, он хранится компактным образом.
- Производительность. Правильное использование типов данных обеспечивает наиболее эффективное хранение данных. Сохраненные значения могут быть быстро обработаны, что повышает производительность.
Рассмотрим денежные типы.
Размещение платформы в Windows
Для размещения PostgreSQL Windows на ПК следуют приведенным далее инструкциям по установке.
Перед установкой необходимо убедится, что отключен антивирус сторонних разработчиков, и далее:
- Выбрать номер версии PostgreSQL. Например, postgresql-9.2.4-1-windows.exe для ПК с ОС Windows, работающего в 32-разрядном режиме, в качестве администратора для установки PostgreSQL.
- Выбрать место, где нужно его установить. По умолчанию он устанавливается в папке Program Files.
- Следующим шагом процесса установки будет выбор каталога, в котором будут храниться данные. По умолчанию он находится в каталоге data.
- Затем установка PostgreSQL Windows запрашивает пароль, поэтому можно использовать любой пароль.
- Следующий шаг - указать порт по умолчанию.
- На следующем шаге, когда спрашивают Locale, выбирают язык.
- Снять флажок и нажать кнопку «Готово».
- По завершении процесса установки можно получить доступ к оболочке pgAdmin III, StackBuilder и PostgreSQL из меню программы.
Среда программирования на Mac
Прежде чем приступать к установке на компьютере Mac, пользователь должен убедиться, что вошел в систему как администратор, и далее выполнить:
- Выбрать номер версии PostgreSQL для Mac OS, доступный в EnterpriseDB, например postgresql-9.2.4-1-osx.dmg для Mac OS, работающей с OS X версии 10.8.3.
- Открыть изображение dmg в finder, просто дважды щелкнуть его, что запустит установщик PostgreSQL в следующем окне.
- Затем нажать значок postgres-9.2.4-1-osx, который выдает предупреждающее сообщение.
- Принять предупреждение и приступить к дальнейшей установке. Он попросит пароль администратора.
- Ввести пароль, приступить к установке и после этого перезапустить компьютер Mac. Если не запустится начальный экран программы, запустить установку еще раз.
- После запуска установщика он задает несколько основных вопросов, таких как местоположение установки, пароль пользователя, который будет использовать базу данных, номер порта.
- Сохранить все их значения по умолчанию, кроме пароля.
Теперь можно запустить любую из программ.
Получение командной строки
В отличие от SQL Server, PostgreSQL обычно не используется через графический интерфейс. Сервер и клиентские инструменты обычно получают доступ из командной строки. Чтобы получить командную оболочку, созданную для запуска этих инструментов на лабораторных машинах, загружают и запускают сценарий запуска оболочки PostgreSQL.
Лучше запустить этот сценарий только с компьютера Windows. Чтобы проверить, что сценарий правильно настроил пути к инструментам, нужно ввести psql -? в командной строке и нажать Enter.
После этого пользователь должен увидеть сообщение об использовании, подобное приведенному ниже:
This is psql 8.3.7, the PostgreSQL interactive terminal.
Usage: psql [OPTIONS]... [DBNAME [USERNAME]]
[[Continues...]]
После чего выполняют настройку PostgreSQL.
Создание папок данных
PostgreSQL хранит базы данных в обычных файлах в файловой системе. Когда используется это ПО, пользователь создает папку с данными только для себя. Чтобы создать файлы данных, выполняют следующие действия:
- Создать папку, в которую нужно поместить файлы данных. Рекомендуется размещать эту папку на локальном компьютере - C или D:диске для быстрого доступа или где-нибудь, чтобы было доступно для всех компьютеров. Скажем, домашние папки Windows или Unix, во избежание необходимости резервного копирования папки данных при каждом выходе из системы. Например, Z:\pgsql_data папка, находящаяся в домашней папке Windows (Z:\).
- Открыть оболочку PostgreSQL, используя вышеприведенный сценарий среды.
- Запустите initdb команду для создания файлов данных: > initdb -DZ: \ pgsql_data.
Когда файлы базы данных будут подготовлены, появятся сообщения журнала, похожие на следующие.
Что будет означать: файлы, принадлежащие этой системе БД, принадлежат michaelr, и он должен иметь серверный процесс.
Запуск и остановка программы
Чтобы запустить PostgreSQL, запускают pg_ctl start команду, выбрав «Пуск-> Выполнить», указав имя ранее созданной папки данных:
> "C: \ Program Files \ PostgreSQL \ 8.3 \ bin \ pg_ctl.exe" start -DZ: \ pgsql_data.
Появится окно оболочки, которое будет отображаться как server starting среди других сообщений. Когда это будет сделано, можно остановить PostgreSQL, нажав Ctrl-C в окне оболочки или с помощью pg_ctl stop команды:
> "C: \ Program Files \ PostgreSQL \ 8.3 \ bin \ pg_ctl.exe" stop -DZ: \ pgsql_data.
Пользователям рекомендуется обратить внимание на следующее:
- Vista не показывает приглашение Start-> Run, нужно просто ввести команду непосредственно в панель поиска, которая появляется при нажатии кнопки «Пуск».
- Если пользователь не хочет, чтобы сообщения журнала PostgreSQL загромождали окно оболочки, можно перенаправить сообщения в файл, используя -l(нижний регистр L) вариант pg_ctl start: > "C: \ Program Files \ PostgreSQL \ 8.3 \ bin \ pg_ctl.exe" start -DZ: \ pgsql_data -l Z: \ pgsqllog.txt.
Создание базы данных PostgreSQL
Пользовательские таблицы должны быть помещены в базу данных, которую предварительно должны создать. Чтобы создать базу данных с именем my_database, выполняют следующие действия:
- Убеждаются, что PostgreSQL запущен, и открывают оболочку PostgreSQL функции.
- Используют createdb команду для создания базы данных: > createdb my_database.
Пользователь должен обратить внимание на то, что PostgreSQL учитывает регистр при поиске имен баз данных и таблиц. Однако он автоматически уменьшает все имена, указанные в SQL-коде, поэтому чувствительность к регистру влияет только на код, отличный от SQL, который должен знать имя базы данных, включая Createdb команду. В таком коде всегда указывают имя базы данных точно так же, как при создании, соблюдая регистр.
Выполнение запросов с помощью psql
Для запуска SQL-запросов используют SQL Server Management Studio, также называемую SSMS или SqlWb. Если пользователь предпочитает интерфейс GUI для выполнения запросов, нужно попробовать pgAdmin III, расположенный в меню «Пуск-> Программы» в разделе PostgreSQL 8.3 на машинах Windows. После запуска PostgreSQL можно запустить psql, открыв оболочку PostgreSQL и набрав > psql my_database, где my_database имя базы данных.
Если опускается имя базы данных, psql по умолчанию, то получают доступ к базе данных с тем же именем, что и имя пользователя CSE. Когда psql откроется, появится сообщение следующего вида.
Строка michaelr=# представляет собой приглашение для операторов SQL, которые отправляются на сервер базы данных, или команды, отличные от SQL, интерпретируемые psql. Здесь michaelr - это имя базы данных, оно может отличаться в системе. Как следует из сообщения, пользователь выходит из psql, набрав \q и нажав Enter, при этом нужно обратить внимание на отсутствие точки с запятой, это необходимо, потому что \q - это не оператор SQL.
Сообщение об ошибке
Пользователи иногда получают сообщение об ошибке Postgresql:
ERROR: must be owner of relation [your_table_here].
Но не стоить беспокоиться, это сообщение означает, что пользователь не владеет таблицей, которую пытается изменить. Например, у него возникла проблема с запуском некоторых ALTER TABLE операторов. И оказалось, что пользователь не зарегистрировал свое имя, поэтому не имеет права исправлять таблицы.
Для исправления этого сбоя нужно просто отправить электронное письмо администратору базы данных, рассказать ему, в чем проблема, и он исправит разрешение. После этого все ALTER TABLE команды будут работать отлично. Можно также посмотреть таблицы в базе данных, выполнив эту команду из командной строки: \ d. Данная команда Postgresql покажет что-то вроде этого (см. фото).
Присоединение пользователей системы
Оно осуществляется к пользователям базы данных с помощью pg_ident.conf. Иногда, особенно при подключении с удаленных хостов, пользовательское имя Linux может не соответствовать имени пользователя базы данных PostgreSQL. В этих случаях можно указать отображение в /etc/postgresql/9.5/main/pg_ident.conf.
Записи в этом файле принимают форму:
- MAPNAME - может быть произвольным.
- SYSTEM-USERNAME - это имя пользователя Linux.
- PG-USERNAME - является пользователем соответствующей базы данных.
В следующем примере exampleuser можно войти в postgres в качестве пользователя базы данных db_user:
- examplemap;
- exampleuser;
- db_user.
Если пользователь укажет сопоставление в этом файле, он должен добавить map=map-name после метода аутентификации в соответствующую запись pg_hba.conf. Чтобы позволить юзеру из pg_hba.conf примера войти в систему db_user, полная запись будет выглядеть так:
/etc/postgresql/9.5/main/pg_hba.conf
1 | host example exampleuser 192.0.2.0 password map=examplemap |
Как видно, Postgres уделяет приоритетное внимание соблюдению и расширению SQL. Организации, которые хотят иметь высокий уровень настройки данных, обычно выбирают Postgres. Это связано с поддержкой транзакций ACID и пользовательских процедур.