Postgresql - что это за программа? свободная объектно-реляционная система управления базами данных (субд) postgresql. Начало работы с PostgreSQL

Электроника 15.06.2019
Электроника

В профессиональной среде коротко называется «постгрес») - свободная объектно-реляционная система управления базами данных (СУБД).

Сильными сторонами PostgreSQL считаются:

Исторический очерк

PostgreSQL ведет свою «родословную» от некоммерческой СУБД Postgres, разработанной, как и многие проекты, в Калифорнийском университете в Беркли . К разработке Postgres, начавшейся в 1986 году, имел непосредственное отношение Майкл Стоунбрейкер , руководитель более раннего проекта Ingres , на тот момент уже приобретённого компанией Computer Associates. Само название «Postgres » расшифровывалось как «Post Ingres », соответственно, при создании Postgres были применены многие уже ранее сделанные наработки.

Стоунбрейкер и его студенты разрабатывали новую СУБД в течение восьми лет, с по 1994 год . За этот период в синтаксис были введены процедуры, правила, пользовательские типы и многие другие компоненты. Работа не прошла даром - в 1995 году разработка снова разделилась: Стоунбрейкер использовал полученный опыт в создании коммерческой СУБД Illustra, продвигаемой его собственной одноимённой компанией (приобретённой впоследствии компанией Informix), а его студенты разработали новую версию Postgres - Postgres95, в которой язык запросов POSTQUEL - наследие Ingres - был заменен на SQL.

В этот момент разработка Postgres95 была выведена за пределы университета и передана команде энтузиастов. С этого момента СУБД получила имя, под которым она известна и развивается в текущий момент - PostgreSQL.

Основные возможности

Функции

Функции являются блоками кода, исполняемыми на сервере, а не на клиенте БД. Хотя они могут писаться на чистом SQL, реализация дополнительной логики, например, условных переходов и циклов , выходит за рамки собственно SQL и требует использования некоторых языковых расширений. Функции могут писаться с использованием одного из следующих языков:

  • Встроенный процедурный язык PL/pgSQL , во многом аналогичный языку PL/SQL , используемому в СУБД Oracle;
  • Скриптовые языки - PL/Lua, PL/LOLCODE, PL/Perl , plPHP, PL/Python , PL/Ruby, PL/sh, PL/Tcl и PL/Scheme;
  • Классические языки - , C++ , Java (через модуль PL/Java);
  • Статистический язык (через модуль PL/R).

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

Функции могут выполняться как с правами их создателя, так и с правами текущего пользователя.

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

Триггеры

Пользовательские объекты

PostgreSQL может быть расширен пользователем для собственных нужд практически в любом аспекте. Есть возможность добавлять собственные:

  • Преобразования типов
  • Типы данных
  • Домены (пользовательские типы с изначально наложенными ограничениями)
  • Функции (включая агрегатные)
  • Индексы
  • Операторы (включая переопределение уже существующих)
  • Процедурные языки

Наследование

Таблицы могут наследовать характеристики и наборы полей от других таблиц (родительских). При этом данные, добавленные в порождённую таблицу, автоматически будут участвовать (если это не указано отдельно) в запросах к родительской таблице.

Данная функциональность в текущее время не является полностью завершённой. Однако она достаточна для практического использования.

Прочие возможности

  • Соблюдение принципов ACID .
  • Соответствие стандартам ANSI SQL-92 и SQL-99.
  • Поддержка запросов с OUTER JOIN , UNION , UNION ALL , EXCEPT , INTERSECT и подзапросов.
  • Последовательности.
  • Поддержка Юникода (UTF-8).
  • Поддержка регулярных выражений в стиле Perl .
  • Встроенная поддержка SSL ,SELinux и Kerberos .
  • Протокол разделяемых блокировок.
  • Подгружаемые расширения, поддерживающие SHA1 , MD5 , XML ,

расширения для написания сложных выборок, отчётов и другую функциональность (API открыт).

  • Средства для генерации совместимого с другими системами SQL-кода и импорта из других систем.
  • Автономные блоки на доступных языках, а не только SQL

Надёжность

Согласно результатам автоматизированного исследования различного ПО на предмет ошибок, в исходном коде PostgreSQL было найдено 20 проблемных мест на 775 000 строк исходного кода (в среднем, одна ошибка на 39 000 строк кода) . Для сравнения: MySQL - 97 проблем, одна ошибка на 4 000 строк кода; FreeBSD (целиком) - 306 проблем, одна ошибка на 4 000 строк кода; Linux (только ядро) - 950 проблем, одна ошибка на 10 000 строк кода.

Коммерческие расширения

На базе PostgreSQL компанией EnterpriseDB созданы более мощные варианты этой СУБД, являющиеся платными для коммерческого использования - Postgres Plus (состоит целиком только из продуктов с открытыми исходными кодами; плата требуется только при необходимости приобретения коммерческой поддержки продукта) и Postgres Plus Advanced Server (расширение PostgreSQL специальными возможностями для обеспечения совместимости с Oracle Database) . В комплекте поставки данных продуктов содержится большой набор ПО для разработчиков и DBA:

  • Postgres Studio - более мощный аналог pgAdmin;
  • Postgres Plus Debugger - отладчик для кода на PL/pgSQL, интегрированный с предыдущим пакетом;
  • Migration Studio - инструмент для автоматического преобразования баз данных из MySQL/Oracle в PostgreSQL

История развития

Основные возможности СУБД по мере выхода новых версий

8.3

  • Интегрированный полнотекстовый поиск
  • Базовая поддержка для XML
  • Новый тип - перечисление
  • Массивы составных типов(структур в понимании С)
  • Новый тип - UUID(уникальный глобальный идентификатор)

8.4

  • Аналитические функции
  • Общие табличные выражения и рекурсивные запросы
  • Сопоставление локали(COLLATION) отдельно для каждой базы данных
  • Права доступа на колонку

9.0

  • Автономные блоки(использование любых разрешённых процедурных языков без создания самих процедур)
  • Асинхронная встроенная репликация с «тёплым резервом» посредством журнала транзакций
  • Поддержка 64 разрядных версий ОС WINDOWS
  • Облегчено администрирование прав на множества объектов
  • Триггеры могут быть ориентированы на отдельные столбцы и их комбинации
  • Отложенные до конца транзакции проверки уникальности
  • Ограничения типа Exclusion
  • Сверх-быстрый механизм извещений между сессиями(LISTEN/NOTIFY)

9.1

  • Синхронная репликация
  • Очень быстрые нежурналируемые таблицы
  • Сопоставление локали(COLLATION) вплоть до каждого столбца таблицы отдельно
  • Расширение возможностей общетабличных выражений для INSERT/UPDATE/DELETE
  • Доступ на чтение ко внешним источникам данных как к таблицам
  • Введён механизм пакетов расширений(extension)
  • Введён каноничный уровень изоляции serializable
  • Расширение функционала SELinux

9.2

  • Введён механизм index-only scan для планировщика
  • Новый тип данных - диапазоны(range data types)
  • Новый тип данных - JSON
  • Многоуровневая потоковая репликация

Дальнейшие планы

Дальнейшие планы по развитию СУБД находятся по адресу http://wiki.postgresql.org/wiki/Todo

Примечания

Ссылки

  • Официальный сайт PostgreSQL (англ.)
  • Search PostgreSQL sites (англ.) . Специализированный поиск по ресурсам PostgreSQL
  • PostgreSQL . Серия из шести статей, опубликованных в журнале Linux Format (2006-2007)

В отличие от других транзакционных баз данных, 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. Невосприимчивость к чрезмерному развертыванию.
  2. Перераспределение - это то, что некоторые патентованные поставщики баз данных считают своей проблемой № 1 из-за соответствия лицензии. С PostgreSQL никто не может подать в суд на пользователя за нарушение лицензии. Так как нет никаких связанных лицензионных затрат на ПО.
  3. Лучшая поддержка при создании базы данных PostgreSQL, чем у патентообладателей.
  4. Яркое сообщество профессиональных энтузиастов PostgreSQL.
  5. Значительная экономия на штатных расходах.
  6. Низкие требования к обслуживанию и настройке, чем ведущие запатентованные базы данных, но при этом сохраняют все функции, стабильность и производительность.
  7. Учебные программы продукта обычно рассматриваются как гораздо более дорогостоящие, эффективные, управляемые и практичные в реальном мире, чем у ведущих поставщиков собственных баз данных.
  8. Легендарная надежность и стабильность.
  9. Исходный код доступен бесплатно.
  10. Если пользователю необходимо каким-либо образом настроить или расширить 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 позволяет секционировать таблицы и повысить масштабируемость через адаптированность алгоритмов планирования.

Для пользования PostgreSQL Ubuntu необходимо выполнить инструкции по установке на компьютере Linux. Перед тем как приступить к установке, убеждаются, что вошли в систему как пользователь root:

  1. Выбрать нужный номер версии PostgreSQL и, насколько это возможно, платформу от EnterpriseDB. Например, загружают postgresql-9.2.4-1-linux-x64.run для 64-битного процессора CentOS-6.
  2. После запуска установщика PostgreSQL Ubuntu отвечают на несколько основных вопросов, таких как местоположение установки, пароль пользователя, который будет использовать базу данных, и номер порта.
  3. Сохраняют их по умолчанию, кроме пароля, который можно предоставить по выбору.
  4. Установка PostgreSQL на компьютере Linux завершена.

Используя psql, можно сгенерировать полный список команд с помощью команды \ help.

Для синтаксиса конкретной команды используют следующую: postgres-# \help.

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

Следующие ресурсы содержат дополнительную информацию о PostgreSQL. Полезные ссылки:

  1. Домашняя страница - официальный сайт PostgreSQL, в котором представлена последняя версия установки, новости и полная информация, разъясняющая что это за программа PostgreSQL.
  2. PHP PostgreSQL - предоставляет полную информацию о поддержке PHP для баз данных PostgreSQL.
  3. Драйвер PostgreSQL JDBC - это библиотека для доступа и создания файлов базы данных PostgreSQL на Java.
  4. DBD-Pg-2.19.3, который будет использоваться вместе с модулем Perl DBI.
  5. DBI-1.625 - модуль для предоставления общего интерфейса для любой базы данных, включая PostgreSQL.
  6. PostgreSQL Python - является самым популярным адаптером базы данных PostgreSQL для языка программирования Python. Он предоставляет интерфейс SQL, соответствующий 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 ОЗУ.

При настройке экземпляра Postgres важно учитывать запись в журнале записи (WAL). WAL может сохранять базу данных в чрезвычайной ситуации, одновременно записывая и регистрируя. Поэтому изменения записываются, даже если машина теряет мощность. Перед настройкой рекомендуется прочитать руководство DSHL по пониманию WAL и официальную главу о надежности WAL .

synchronous_commit = off

При использовании Linode можно включить настоящую Директиву off.

archive_mode = on

Включение режима архивирования - это жизнеспособная стратегия увеличения избыточности ваших резервных копий.

Работая с PostgreSQL при создании таблицы, для каждого столбца указывают тип данных, которые будут храниться в полях таблицы. Числовые типы представлены ниже.

Это дает несколько преимуществ:

  1. Согласованность. Операции против столбцов одного и того же типа данных дают согласованные результаты и, как правило, самые быстрые.
  2. Валидация. Правильное использование типов данных подразумевает проверку их формата и отказ от данных за пределами объема данных.
  3. Компактность. Поскольку столбец может содержать один тип значения, он хранится компактным образом.
  4. Производительность. Правильное использование типов данных обеспечивает наиболее эффективное хранение данных. Сохраненные значения могут быть быстро обработаны, что повышает производительность.

Рассмотрим денежные типы.

Для размещения PostgreSQL Windows на ПК следуют приведенным далее инструкциям по установке.

Перед установкой необходимо убедится, что отключен антивирус сторонних разработчиков, и далее:

  1. Выбрать номер версии PostgreSQL. Например, postgresql-9.2.4-1-windows.exe для ПК с ОС Windows, работающего в 32-разрядном режиме, в качестве администратора для установки PostgreSQL.
  2. Выбрать место, где нужно его установить. По умолчанию он устанавливается в папке Program Files.
  3. Следующим шагом процесса установки будет выбор каталога, в котором будут храниться данные. По умолчанию он находится в каталоге data.
  4. Затем установка PostgreSQL Windows запрашивает пароль, поэтому можно использовать любой пароль.
  5. Следующий шаг - указать порт по умолчанию.
  6. На следующем шаге, когда спрашивают Locale, выбирают язык.
  7. Снять флажок и нажать кнопку «Готово».
  8. По завершении процесса установки можно получить доступ к оболочке pgAdmin III, StackBuilder и PostgreSQL из меню программы.

Среда программирования на Mac

Прежде чем приступать к установке на компьютере Mac, пользователь должен убедиться, что вошел в систему как администратор, и далее выполнить:

  1. Выбрать номер версии PostgreSQL для Mac OS, доступный в EnterpriseDB, например postgresql-9.2.4-1-osx.dmg для Mac OS, работающей с OS X версии 10.8.3.
  2. Открыть изображение dmg в finder, просто дважды щелкнуть его, что запустит установщик PostgreSQL в следующем окне.
  3. Затем нажать значок postgres-9.2.4-1-osx, который выдает предупреждающее сообщение.
  4. Принять предупреждение и приступить к дальнейшей установке. Он попросит пароль администратора.
  5. Ввести пароль, приступить к установке и после этого перезапустить компьютер Mac. Если не запустится начальный экран программы, запустить установку еще раз.
  6. После запуска установщика он задает несколько основных вопросов, таких как местоположение установки, пароль пользователя, который будет использовать базу данных, номер порта.
  7. Сохранить все их значения по умолчанию, кроме пароля.

Теперь можно запустить любую из программ.

В отличие от SQL Server, PostgreSQL обычно не используется через графический интерфейс. Сервер и клиентские инструменты обычно получают доступ из командной строки. Чтобы получить командную оболочку, созданную для запуска этих инструментов на лабораторных машинах, загружают и запускают сценарий запуска оболочки PostgreSQL.

Лучше запустить этот сценарий только с компьютера Windows. Чтобы проверить, что сценарий правильно настроил пути к инструментам, нужно ввести psql -? в командной строке и нажать Enter.

После этого пользователь должен увидеть сообщение об использовании, подобное приведенному ниже:

This is psql 8.3.7, the PostgreSQL interactive terminal.

Usage: psql ... ]

После чего выполняют настройку PostgreSQL.

PostgreSQL хранит базы данных в обычных файлах в файловой системе. Когда используется это ПО, пользователь создает папку с данными только для себя. Чтобы создать файлы данных, выполняют следующие действия:

  1. Создать папку, в которую нужно поместить файлы данных. Рекомендуется размещать эту папку на локальном компьютере - C или D:диске для быстрого доступа или где-нибудь, чтобы было доступно для всех компьютеров. Скажем, домашние папки Windows или Unix, во избежание необходимости резервного копирования папки данных при каждом выходе из системы. Например, Z:\pgsql_data папка, находящаяся в домашней папке Windows (Z:\).
  2. Открыть оболочку PostgreSQL, используя вышеприведенный сценарий среды.
  3. Запустите 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.

  1. Vista не показывает приглашение Start-> Run, нужно просто ввести команду непосредственно в панель поиска, которая появляется при нажатии кнопки «Пуск».
  2. Если пользователь не хочет, чтобы сообщения журнала 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, выполняют следующие действия:

  1. Убеждаются, что PostgreSQL запущен, и открывают оболочку PostgreSQL функции.
  2. Используют createdb команду для создания базы данных: > createdb my_database.

Пользователь должен обратить внимание на то, что PostgreSQL учитывает регистр при поиске имен баз данных и таблиц. Однако он автоматически уменьшает все имена, указанные в SQL-коде, поэтому чувствительность к регистру влияет только на код, отличный от SQL, который должен знать имя базы данных, включая Createdb команду. В таком коде всегда указывают имя базы данных точно так же, как при создании, соблюдая регистр.

Для запуска 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 .

Но не стоить беспокоиться, это сообщение означает, что пользователь не владеет таблицей, которую пытается изменить. Например, у него возникла проблема с запуском некоторых 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

host example exampleuser 192.0.2.0 password map=examplemap

Как видно, Postgres уделяет приоритетное внимание соблюдению и расширению SQL. Организации, которые хотят иметь высокий уровень настройки данных, обычно выбирают Postgres. Это связано с поддержкой транзакций ACID и пользовательских процедур.

Я достаточно долго думал над вопросом, какую систему управления базами данных (СУБД) выбрать для своих статей и решил остановиться на PostgreSQL.
Выбор обусловлен несколькими причинам:

  1. Бесплатная СУБД
  2. Простота установки.
  3. Поддержка основных операционных систем
  4. Удобная програма pgAdmin для работы с базами
  5. Это современная СУБД с хорошими возможностями

В принципе в JDK есть встроенная база данных — Derby. Но пользоваться ей, на мой взгляд, очень неудобно. MySQL в общем тоже неплохо, но в нем достаточно неудобная утилита для ввода команд. Остальные базы либо платные, либо малоизвестные. Само собой, после прочтения моих статей вам никто не мешает попробовать поработать с этими базами данных самостоятельно.

Загрузить нужную версию PostgreSQL можно с этой страницы: Download PostgreSQL .
На данный момент я использовал версию 9.5.2. Какая версия будет на момент чтения статьи вами — не знаю. Но надеюсь, что в ближайшие годы что-то кардинально не поменяется.
Будьте внимательны — загружайте версию для вашей операционной системы. Дальше запускаете установку. По экранам она выглядит вот так.

На втором экране вам надо выбрать директорию для установки. Я не рекомендую устанавливать в каталог “Program Files” по умолчанию, т.к. на Windows серверных платформ это бывает чревато. На домашних системах скорее всего проблем не будет, но как говорится, “обэегшись на молоке, дуешь на воду”. Посему я обычно ставлю директорию “C:\PostgreSQL\”

На следующем экране вам надо ввести парль для пользователя “postgres”. Для разработки я выбираю такой же пароль: “postgres”.

На следующем экране запрашивается порт, на котором будет “висеть” PostgreSQL. Если у вас не установлен PostgreSQL, то можно оставить по умолчанию “5432”.

Локализацию можно оставить как есть. Кому интересно, может выбрать что-нибудь конкретное. Я в принципе проблем не имел при выборе по-умолчанию.

Запускаем установку …

и ждем, пока она закончится.

По окончанию вам предложат установить дополнительную утилиты Stack Builder — я ее обычно не ставлю, так что “галочку” можно снять и нажать “Finish”.

В общем установка закончилась. Теперь в списке сервисов Windows можно увидеть PostgreSQL

Я нередко устанавливаю ручной запуск сервиса, но это уже как вам будет удобно.

Осталось только узнать, что в комплекте PostgreSQL устанавливается весьма удобная и легко понятная программа для управления СУБД — pgAdmin III. Ее можно найти в стартовом меню Windows (если вы работаете под другой ОС — поищите, наверняка найдете).
Запускайте и дальше все достаточно просто.

Кликаем дважды на PostgreSQL 9.5 слева — вас могу попросить ввести пароль.
Дальше вы увидите слева струткуру вашей СУБД.

Открываем слева раздел “Базы данных” и видим уже заранее созданную базу “postgres”.
Щелкните правой кнопкой мыши на пункте “Базы данных” и в выпадающем меню выберите “Новая база данных…”. Появится форма для ввода — для начала достаточно ввести имя базы данных — я назвал ее “contactdb”

Выделите мышкой вновь созданную базу данных и получите возможность делать с ней, что хотите.

Для запуска команд вам надо открыть SQL-редактор. Проще всего — нажать кнопку на верхней панели.

В открытом окне можно набирать команды SQL.

В общем все готово. Мы можем запускать SQL-скрипт, который создаст нужную нам таблицу для контактов и вставит туда тестовые данные.
Для создания необходимых нам данных SQL-скрипт выглядит вот так:

DROP TABLE IF EXISTS JC_CONTACT; CREATE TABLE JC_CONTACT (CONTACT_ID SERIAL, FIRST_NAME VARCHAR(50) NOT NULL, LAST_NAME VARCHAR(50) NOT NULL, PHONE VARCHAR(50) NOT NULL, EMAIL VARCHAR(50) NOT NULL, PRIMARY KEY (CONTACT_ID)); INSERT INTO JC_CONTACT (FIRST_NAME, LAST_NAME, PHONE, EMAIL) VALUES ("Peter","Belgy","+79112345678","[email protected]"); INSERT INTO JC_CONTACT (FIRST_NAME, LAST_NAME, PHONE, EMAIL) VALUES ("Helga","Forte","+79118765432","[email protected]"); SELECT * from JC_CONTACT;

DROP TABLE IF EXISTS JC_CONTACT ;

CREATE TABLE JC_CONTACT

CONTACT_ID SERIAL ,

FIRST_NAME VARCHAR (50 ) NOT NULL ,

LAST_NAME VARCHAR (50 ) NOT NULL ,

PHONE VARCHAR (50 ) NOT NULL ,

EMAIL VARCHAR (50 ) NOT NULL ,

PRIMARY KEY (CONTACT_ID )

INSERT INTO JC_CONTACT (FIRST_NAME , LAST_NAME , PHONE , EMAIL ) VALUES ("Peter" , "Belgy" , "+79112345678" , "[email protected]" ) ;

INSERT INTO JC_CONTACT (FIRST_NAME , LAST_NAME , PHONE , EMAIL ) VALUES ("Helga" , "Forte" , "+79118765432" , "[email protected]" ) ;

SELECT * from JC_CONTACT ;

  • Перевод

Сегодня давайте поговорим о преимуществах Postgres перед другими системами с открытым кодом. Эту тему мы обязательно раскроем более подробно на PG Day"16 Russia, до которой осталось всего два месяца.

Возможно, вы спрашиваете себя: «Почему PostgreSQL?» Ведь есть и другие варианты реляционных баз данных с открытым исходным кодом (в рамках этой статьи мы рассматривали MySQL, MariaDB и Firebird), так что же Постгрес может предложить такого, чего нет у них? В слогане PostgreSQL заявляется, что это «Самая продвинутая база данных с открытым исходным кодом в мире». Мы приведем несколько причин, почему Постгрес делает такие заявления.

В первой части этой серии мы поговорим о хранении данных - модели, структуре, типах и ограничениях размера. А во второй части больше сфокусируемся на выборке и манипуляциях с данными.

Модель данных

PostgreSQL не просто реляционная, а объектно-реляционная СУБД. Это даёт ему некоторые преимущества над другими SQL базами данных с открытым исходным кодом, такими как MySQL, MariaDB и Firebird.

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

Структуры и типы данных

Существует обширный список типов данных, которые поддерживает Постгрес. Кроме числовых, с плавающей точкой, текстовых, булевых и других ожидаемых типов данных (а также множества их вариаций), PostgreSQL может похвастаться поддержкой uuid, денежного, перечисляемого, геометрического, бинарного типов, сетевых адресов, битовых строк, текстового поиска, xml, json, массивов, композитных типов и диапазонов, а также некоторых внутренних типов для идентификации объектов и местоположения логов. Справедливости ради стоит сказать, что MySQL, MariaDB и Firebird тоже имеют некоторые из этих типов данных, но только Постгрес поддерживает их все.

Давайте рассмотрим подробнее некоторые из них:

Сетевые адреса
PostgreSQL обеспечивает хранение разных типов сетевых адресов. Тип данных CIDR (бесклассовая маршрутизация интернет домена, Classless Internet Domain Routing) следует соглашению для сетевых адресов IPv4 и IPv6. Вот несколько примеров:
  • 192.168.100.128/25
  • 10.1.2.3/32
  • 2001:4f8:3:ba:2e0:81ff:fe22:d1f1/128
  • ::ffff:1.2.3.0/128
Также для хранения сетевых адресов доступен тип данных INET, используемый для IPv4 и IPv6 хостов, где подсети являются необязательными. Тип данных MACADDR может использоваться для хранения MAC-адресов для идентификации оборудования, таких как 08-00-2b-01-02-03.

У MySQL и MariaDB тоже есть INET функции для конвертации сетевых адресов, но они не предоставляют типы данных для внутреннего хранения сетевых адресов. У Firebird тоже нет типов для хранения сетевых адресов.

Многомерные массивы
Поскольку Постгрес - это объектно-реляционная база данных, массивы значений могут храниться для большинства существующих типов данных. Сделать это можно путём добавления квадратных скобок к спецификации типа данных для столбца или с помощью выражения ARRAY. Размер массива может быть задан, но это необязательно. Давайте рассмотрим меню праздничного пикника для демонстрации использования массивов:

Создаем таблицу, у которой значения являются массивами CREATE TABLE holiday_picnic (holiday varchar(50) -- строковое значение sandwich text, -- массив side text , -- многомерный массив dessert text ARRAY, -- массив beverage text ARRAY -- массив из 4-х элементов); -- вставляем значения массивов в таблицу INSERT INTO holiday_picnic VALUES ("Labor Day", "{"roast beef","veggie","turkey"}", "{ {"potato salad","green salad","macaroni salad"}, {"chips","crackers"} }", "{"fruit cocktail","berry pie","ice cream"}", "{"soda","juice","beer","water"}");
MySQL, MariaDB, и Firebird так не умеют. Чтобы хранить такие массивы значений в традиционных реляционных базах данных, придется использовать обходной путь и создавать отдельную таблицу со строками для каждого из значений массива.

Геометрические данные
Геоданные быстро становятся основным требованием для многих приложений. PostgreSQL уже давно поддерживает множество геометрических типов данных, таких как точки, линии, круги и многоугольники. Один из этих типов – PATH, он состоит из множества последовательно расположенных точек и может быть открытым (начальная и конечная точки не связаны) или закрытым (начальная и конечная точки связаны). Давайте рассмотрим в качестве примера туристическую тропу. В данном случае туристическая тропа - это петля, поэтому начальная и конечная точки связаны, и, значит, мой путь является закрытым. Круглые скобки вокруг набора координат указывают на закрытый путь, а квадратные - на открытый.

Создаем таблицу для хранения троп CREATE TABLE trails (trail_name varchar(250), trail_path path); -- вставляем тропу в таблицу, -- для которой маршрут определяется координатами в формате широта-долгота INSERT INTO trails VALUES ("Dool Trail - Creeping Forest Trail Loop", ((37.172,-122.22261666667), (37.171616666667,-122.22385), (37.1735,-122.2236), (37.175416666667,-122.223), (37.1758,-122.22378333333), (37.179466666667,-122.22866666667), (37.18395,-122.22675), (37.180783333333,-122.22466666667), (37.176116666667,-122.2222), (37.1753,-122.22293333333), (37.173116666667,-122.22281666667)));
Расширение PostGIS для PostgreSQL дополняет существующие свойства геометрических данных вспомогательными пространственными типами, функциями, операторами и индексами. Оно обеспечивает поддержку местоположения и поддерживает как растровые, так и векторные данные. Оно также обеспечивает совместимость с множеством сторонних геопространственных инструментов (защищённых авторским правом и с открытым исходным кодом) для отображения, отрисовки и работы с данными.

Заметьте, что в MySQL 5.7.8 и в MariaDB, начиная с версии 5.3.3, были добавлены расширения типов данных для поддержки стандарта географической информации OpenGIS. Эта версия MySQL и последующие версии MariaDB предлагают хранение типов данных, аналогичное штатным геоданным Постгреса. Тем не менее, в MySQL и MariaDB значения данных сначала должны быть сконвертированы в геометрический формат простыми командами перед тем, как будут вставлены в таблицу. Firebird на данный момент не поддерживает геометрические типы данных.

Поддержка JSON
Поддержка JSON в PostgreSQL позволяет вам перейти к хранению schema-less данных в SQL базе данных. Это может быть полезно, когда структура данных требует определённой гибкости: например, если в процессе разработки структура всё ещё меняется или неизвестно, какие поля будет содержать объект данных.

Тип данных JSON обеспечивает проверку корректности JSON, который позволяет использовать специализированные JSON операторы и функции, встроенные в Постгрес для выполнения запросов и манипулирования данными. Также доступен тип JSONB - двоичная разновидность формата JSON, у которой пробелы удаляются, сортировка объектов не сохраняется, вместо этого они хранятся наиболее оптимальным образом, и сохраняется только последнее значение для ключей-дубликатов. JSONB обычно является предпочтительным форматом, поскольку требует меньше места для объектов, может быть проиндексирован и обрабатывается быстрее, так как не требует повторного синтаксического анализа.

В MySQL 5.7.8 и MariaDB 10.0.1 была добавлена поддержка встроенных объектов JSON. Но, хотя существует множество функций и операторов для JSON, которые теперь доступны в этих базах данных, они не индексируются так, как JSONB в PostgreSQL. Firebird пока что не присоединился к тренду и поддерживает объекты JSON только в виде текста.

Создание нового типа
Если вдруг так случится, что обширного списка типов данных Постгреса вам окажется недостаточно, вы можете использовать команду CREATE TYPE, чтобы создать новые типы данных, такие как составной, перечисляемый, диапазон и базовый. Рассмотрим пример создания и отправки запросов нового составного типа:

Создаем новый составной тип "wine" CREATE TYPE wine AS (wine_vineyard varchar(50), wine_type varchar(50), wine_year int); -- создаем таблицу, которая использует составной тип "wine" CREATE TABLE pairings (menu_entree varchar(50), wine_pairing wine); -- вставляем данные в таблицу при помощи выражения ROW INSERT INTO pairings VALUES ("Lobster Tail",ROW("Stag""s Leap","Chardonnay", 2012)), ("Elk Medallions",ROW("Rombauer","Cabernet Sauvignon",2012)); /* выборка из таблицы с использованием имени колонки (используйте скобки, отделяемые точкой от имени поля в составном типе) */ SELECT (wine_pairing).wine_vineyard, (wine_pairing).wine_type FROM pairings WHERE menu_entree = "Elk Medallions";
Поскольку они не являются объектно-реляционными, MySQL, MariaDB и Firebird не предоставляют такую мощную функциональность.

Размеры данных

PostgreSQL может обрабатывать много данных. Текущие опубликованные ограничения перечислены ниже:

В Compose [прим. пер.: организация, в которой трудится автор оригинальной статьи] мы автоматически масштабируем вашу инсталляцию, чтобы вам не приходилось волноваться о росте количества данных. Но, как известно любому администратору баз данных, стоит с опаской относиться к слишком большим и неограниченным возможностям. Мы советуем руководствоваться здравым смыслом при создании таблиц и добавлении индексов.

Для сравнения, MySQL и MariaDB печально известны ограничением размера строк в 65 535 байт. Firebird также предлагает всего лишь 64Кб в качестве максимального размера строки. Обычно объём данных ограничивается максимальным размером файлов операционной системы. Поскольку PostgreSQL умеет хранить табличные данные в множестве файлов меньшего размера, он может обойти это ограничение. Но стоит отметить, что слишком большое количество файлов может негативно сказаться на производительности. MySQL и MariaDB поддерживают большее количество столбцов в таблице (до 4,096 в зависимости от типа данных) и большие индивидуальные размеры таблицы, чем PostgreSQL, но необходимость превысить существующие ограничения Постгреса возникает лишь в крайне редких случаях.

Целостность данных

Постгрес стремится соответствовать стандарту ANSI-SQL:2008, отвечает требованиям ACID (атомарность, согласованность, изолированность и надежность) и известен своей ссылочной и транзакционной целостностью. Первичные ключи, ограничивающие и каскадные внешние ключи, уникальные ограничения, ограничения NOT NULL, проверочные ограничения и другие функции обеспечения целостности данных дают уверенность, что только корректные данные будут сохранены.

MySQL и MariaDB больше работают на то, чтобы соответствовать стандарту SQL с движками таблиц InnoDB/XtraDB. Теперь они предлагают опцию STRICT с использованием режимов SQL, которая устанавливает проверки корректности используемых данных. Несмотря на это, в зависимости от того, какой режим вы используете, недостоверные и даже урезанные без вашего ведома данные могут быть вставлены или созданы при обновлении. Ни одна из этих баз данных сейчас не поддерживает CHECK ограничения. Кроме того, у них существует множество особенностей в отношении ограничений ссылочной целостности по внешним ключам. В дополнение к вышесказанному, целостность данных может существенно пострадать в зависимости от выбранного движка хранения. MySQL (и fork MariaDB) не делают секрета из того, что променяли целостность и соответствие стандартам на скорость и эффективность.

Подводя итоги

У Постгреса множество возможностей. Созданный с использованием объектно-реляционной модели, он поддерживает сложные структуры и широкий спектр встроенных и определяемых пользователем типов данных. Он обеспечивает расширенную ёмкость данных и заслужил доверие бережным отношением к целостности данных. Возможно, вам не понадобятся все те продвинутые функции хранения данных, которые мы исследовали в этой статье, но, поскольку потребности могут быстро возрасти, есть несомненное преимущество в том, чтобы иметь всё это под рукой.

Если вам кажется, что PostgreSQL не соответствует вашим потребностям, или вы предпочитаете “стрелять от бедра”, тогда вам стоит обратить внимание на NoSQL базы данных, которые мы предлагаем в Compose, или подумать о других SQL базах данных, которые мы упоминали. У каждой из них есть свои преимущества. Compose твёрдо уверен, что очень важно выбрать правильную базу данных для конкретной задачи… иногда это означает, что нужно выбрать несколько баз данных!

Хотите больше Постгреса?

Postgres Pro - Российская СУБД, разработанная компанией Postgres Professional на основе свободно-распространяемой СУБД PostgreSQL. Postgres Pro входит в реестр российского ПО (см https://reestr.minsvyaz.ru/reestr/65273/)

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

Сравнение версий Postgres Pro

СУБД Postgres Pro
Enterprise
Postgres Pro
Standard
PostgreSQL
Коммерческая СУБД, разработанная Postgres Professional для ответственных приложений и высоких нагрузок. Российская СУБД с открытым кодом, разработанная компанией Postgres Professional на основе свободно-распространяемой СУБД PostgreSQL Свободно-распространяемая СУБД, разработанная международным сообществом.
Единый Реестр российского ПО
64-разрядный счетчик транзакций
Инкрементальный бэкап на уровне блоков
Сертификат ФСТЭК СВТ 5, НДВ 4
Автономные транзакции
Секционирование таблиц
Компрессия данных
Мультимастер
Поддержка 1С
Переносимые таблицы
Хинты планировщика


Версии Postgres Pro

Номер версии Postgres Pro строится из номера версии PostgreSQL с дополнением одного разряда, обозначающего номер текущего выпуска. При выходе новой минорной версии PostgreSQL (обычно это происходит при появлении патчей, связанных с безопасностью и исправлением серьезных ошибок), нумерация Postgres Pro сбрасывается на единицу. Например, при выходе PostgreSQL 9.5.1 выходит PostgresPro 9.5.1.1, затем до появления PostgreSQL 9.5.2 может выйти Postgres Pro 9.5.1.2, 9.5.1.3 и т.д. При выходе PostgreSQL 9.5.2 Postgres Pro обновится до версии 9.5.2.1 и т.д.

Одновременно с выпуском исходного кода Postgres Pro мы публикуем наши сборки в виде пакетов под различные платформы. Это следующие операционные системы и их версии:

  1. Linux
    • CentOS 6/7,
    • Debian 7/8,
    • Ubuntu 12.04/14.04/16.04/16.10,
    • Oracle Linux,
    • Rosa Enterprise Linux server,
    • ROSA SX Cobalt Server,
    • ROSA DX Cobalt Server,
    • ROSA Marathon LTS 2012,
    • Alt Linux Centaur 8,
    • Alt Linux СПТ 6,
    • Alt Linux СПТ 7,
    • SUSE Linux Enterprise Server,
  2. Microsoft ® Windows ® 2012 или 2016 .

Базы данных Postgres Pro 9.5.*.* совместимы с PostgreSQL 9.5.* При переходе с 9.5 dump/restore не требуется. При переходе с более ранних версий PostgreSQL необходимо использование dump/restore или pg_upgrade.

Текущая версия Postgres Pro Standard - 11.2.1 . Дата выпуска - 28 марта 2019. .

Отличия Postgres Pro Standard от PostgreSQL

В Postgres Pro Standard по сравнению с актуальной версией PostgreSQL на текущий момент вошли следующие изменения:

  1. Улучшения производительности на многоядерных системах:
    • оптимизации выделения хэш-таблиц в shared memory, исключающая lock contention при большом количестве процессов.
    • оптимизации Resource Owner. Улучшает производительность сложных запросов и запросом к таблицам с большим количеством партиций.
    • Оптимизации buffer manager
    • Оптимизация LWLock для архитектуры Power8
    • Оптимизации двухфазного коммита
  2. Усовершенствования полнотекстового поиска:
    • поддержка поиска фраз
    • поддержка словарей hunspell для работы со словоформами
    • некоторые словари, в том числе русский и английский, включены в состав дистрибутива и их подключение требует одной команды SQL
    • модуль shared_ispell , оптимизирующий производительность полнотекстового поиска, путем загрузки словарей в память при старте сервера, а не при начале сессии.
  3. Покрывающие индексы. Поддержка конструкции INCLUDING в CREATE INDEX.
  4. Переносимость: поддержка библиотеки libicu на всех платформах, что обеспечивает однозначную обработку порядка сортировки и прочих операций с юникодными символами. На ряде платформ эта библиотека улучшает производительность сортировки, и, что немаловажно, позволяет в Postgres Pro пользоваться abbreviated keys, которые были отключены в основной версии PostgreSQL.
  5. Модуль pg_trgm поддерживает не только нечеткое сравнение строк, но и нечеткий поиск подстроки.
  6. Модуль pageinspect поддерживает доступ не только к метаинформации, но и к внутреннему представлению данных таблиц.
  7. Добавлен новый модуль sr_plan , позволяющий сохранять планы выполнения запросов и использовать сохраненные планы вместо того, чтобы формировать план запроса заново, при каждом выполнении.
  8. Добавлен модуль dump_stat , позволяющий при дампе базы данных сохранять информацию о статистике и восстанавливать её. Это позволяет ускорить процедуру восстановления, избавляя от необходимости вычисления статистики командой VACUUM ANALYZE после восстановления.
  9. Добавлен модуль JSQuery , позволяющий на специальном языке формулировать запросы к полям типа JSONB с поддержкой GIN-индексов.
  10. Модуль предоставляет дополнительный тип данных для совместимости с Microsoft SQL Server.
  11. Модуль предоставляет дополнительный оператор равенства для совместимости с Microsoft SQL Server.
  12. Модуль предоставляет транзакционно-небезопасную функцию для усечения временных таблиц, предотвращающую разрастание каталога pg_class.
  13. Модуль предоставляет набор функций, которые немедленно обновляют статистику в целевых таблицах после операций INSERT, UPDATE, DELETE и SELECT INTO в них.
  14. Модуль добавляет поддержку указаний для планировщика, позволяющих отключать или подключать определённые индексы при выполнении запроса.

Более подробно с различиями PostgreSQL и Postgres Pro можно познакомиться в Таблице сопоставления продуктов.

Лицензия Postgres Pro Standard

Postgres Pro Standard распространяется по лицензии PostgreSQL с дополнениями Postgres Professional:

Portions Copyright (c) 2015-2019, Postgres Professional
Portions Copyright (c) 1996-2019, PostgreSQL Global Development Group
Portions Copyright (c) 1994 Regents of the University of California

Предоставляются права на использование, копирование, изменение и распространение данного программного обеспечения и его документации для целей тестирования, разработки ПО, ознакомления с функциональностью СУБД, использования в образовательном процессе бесплатно и без подписания какого-либо соглашения, при условии что для каждой копии будут предоставлены данное выше замечание об авторских правах, текущий абзац и четыре следующих абзаца. Использование в других целях, встраивание в другие продукты, тиражирование и прочие действия требуют приобретения отдельной лицензии.

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

Калифорнийский университет специально отказывается предоставлять любые гарантии, включая, но не ограничиваясь только этими гарантиями: неявные гарантии пригодности товара или пригодности для отдельной цели. Данное программное обеспечение предоставляется на основе принципа "как есть" и Калифорнийский университет не обязан предоставлять сопровождение, поддержку, обновления, расширения или изменения.

Общество с ограниченной ответственностью "Постгрес Профессиональный" (Postgres Professional) не несет никакой ответственности за любые повреждения, включая потерю дохода, нанесенные прямым или непрямым, специальным или случайным использованием данного программного обеспечения или его документации, даже если общество с ограниченной ответственностью "Постгрес Профессиональный" было извещено о возможности таких повреждений.

Общество с ограниченной ответственностью "Постгрес Профессиональный" (Postgres Professional) специально отказывается предоставлять любые гарантии, включая, но не ограничиваясь только этими гарантиями: неявные гарантии пригодности товара или пригодности для отдельной цели. Данное программное обеспечение предоставляется на основе принципа "как есть" и общество с ограниченной ответственностью "Постгрес Профессиональный" не обязано предоставлять сопровождение, поддержку, обновления, расширения или изменения.



Рекомендуем почитать

Наверх