5 лучших материалов по PostgreSQL


Оглавление (нажмите, чтобы открыть):

MySQL против PostgreSQL

Вот – сравнение баз данных MySQL и PostgreSQL, предлагаемое не ради высказывания моего мнения, а ради того, чтобы помочь другим принять собственное решение. Обеим системам есть что предложить в вопросах стабильности, гибкости и производительности. MySQL имеет особенности, в которых PostgreSQL испытывает недостаток, и наоборот.

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

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

Список особенностей и возможностей

В таблице А приведено сравнение наиболее употребимых особенностей и возможностей баз данных MySQL и PostgreSQL.
Таблица А – это не исчерпывающий список особенностей, типов данных или проблем производительности, касающийся этих двух систем баз данных – она лишь дает некоторое представление о том, что каждая из них может предложить.

Из таблицы мы видим, что PostgreSQL предлагает полные особенности и возможности традиционных приложений баз данных, в то время как MySQL сосредотачивается на более быстром выполнении (работе) для веб приложений. Развитие индустрии «открытых исходников» принесет большее количество особенностей и возможностей в последующих версиях обеих баз данных.

Таблица A: сравнение MySQL и PostgreSQL

Особенности PostgreSQL MySQL
ANSI SQL совместимость Близка к стандарту ANSI SQL Следует некоторым стандартам ANSI SQL
Скорость работы Медленнее Быстрее
Вложенные селекты Да Нет
Транзакации Да Да, однако должен использоваться тип таблицы InnoDB
Ответ базы данных Да Да
Поддержка внешних ключей Да Нет
Представления Да Нет
Хранимые процедуры Да Нет
Триггеры Да Нет
Unions Да Нет
Полные Joins Да Нет
Ограничители целостности Да Нет
Поддержка Windows Да Да
Вакуум (очистка) Да Нет
ODBC Да Да
JDBC Да Да
Различные типы таблиц Нет Да

Когда использовать MySQL

Почему бы вы предпочли MySQL, нежели PostgreSQL? Сначала, мы должны рассмотреть потребности приложений в терминах требований базы данных. Если я хочу создать веб приложение, и главное для меня это производительность и скорость – MySQL будет лучшим выбором, потому что она быстра и разработана для того, чтобы хорошо работать с веб серверами.

Однако, если я хочу создать другое приложение, которое требует выполнения транзакаций и наличия внешних ключей, лучшим выбором станет PostgreSQL. Даже при том, что MySQL не полностью совместима с ANSI SQL стандартом, я должен упомянуть, что, в то время как PostgreSQL ближе к ANSI SQL стандарту, MySQL ближе к ODBC стандарту.

Позвольте мне описать некоторые плюсы использования MySQL:

  • MySQL относительно быстрее PostgreSQL.
  • Дизайн и планирование базы данных несколько проще.
  • Можно создать простой веб сайт с использованием базы.
  • Ответы на запросы MySQL были хорошо протестированны.
  • Нет нужды использовать методы очистки (вакуум).

Когда использовать PostgreSQL

Не много веб-разработчиков используют в своей работе PostgreSQL, так как считают, что дополнительные особенности и возможности снижают производительность и скорость работы. Однако, PostgreSQL имеет много преимуществ над MySQL. Например, некоторые из особенностей, которые часто используются – внешние ключи, триггеры и представления. Они позволяют скрывать сложность базы данных от приложения, таким образом избегая создания сложных команд SQL.

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

Несколько причин использовать PostgreSQL:

  • Сложный дизайн базы данных.
  • Переезд с Oracle, Sybase или MSSQL.
  • Сложные наборы правил.
  • Использование процедурных языков на сервере.
  • Транзакации
  • Использование хранимых процедур.
  • Использование географичеких данных.
  • R-Trees (например, использование индексов).

Заключение

Вы должны будете выбрать, взвесив все плюсы и минусы, какая база данных является «совершенной» для вашего приложения или сайта. А может быть и такое, что вы захотите использовать обе базы (бывают и такие случаи). Мое заключение – одна база не обязательно лучше другой, и каждая из них занимает свою определеную нишу в мире баз данных с открытым исходным кодом.

Обзор и установка PostgreSQL 9.5 на Windows 7

Сейчас мы с Вами рассмотрим процесс установки новой версии СУБД PostgreSQL 9.5 на операционную систему Windows 7, а также узнаем, что нового появилось в этой версии и где ее можно скачать.

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

Что такое PostgreSQL?

PostgreSQL — это бесплатная и популярная во всем мире объектно-реляционная система управления базами данных (СУБД). PostgreSQL реализована для многих операционных систем, например, таких как: Linux, Solaris, Windows. В ней используется процедурное расширение языка SQL PL/pgSQL.

Что нового в PostgreSQL 9.5?

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

  • INSERT, ON CONFLICT UPDATE (UPSERT) – данная возможность позволяет обработать ситуацию, когда осуществить добавления данных через INSERT нельзя, например, из-за нарушения уникальности или недопустимости значения в одном из полей. Другими словами, вместо того чтобы выдавать ошибку можно просто пропустить выполнение оператора, т.е. ничего не делать или изменить связанные с ключевым полем данные, т.е. в случае, когда запись уже существует, вместо INSERT выполнить UPDATE;
  • ROLLUP, CUBE и GROUPING SETS – эти операторы расширяют возможности GROUP BY, а именно позволяют формировать отчеты, т.е. писать запросы, в которых можно добавлять строки с промежуточным и общим итогом, а также объединять результаты нескольких группировок в один набор данных. В Microsoft SQL Server аналогичные операторы существуют уже достаточно давно, и мы с Вами их подробно рассматривали вот в этом материале;
  • Row-Level Security (RLS) – это так называемая «Политика безопасности на уровне строк» т.е. теперь можно ограничивать доступ к данным в таблице;
  • BRIN-индексы – это новый тип индексов, который предназначен для обработки очень больших таблиц, в которых определенные столбцы естественным образом отсортированы;
  • Ускоренная сортировка – в PostgreSQL 9.5 при сортировке теперь используется так называемый алгоритм «сокращенных ключей», который позволяет в несколько раз быстрей сортировать текстовые данные и данные типа NUMERIC.

Более подробно обо всех нововведениях в PostgreSQL 9.5 можете посмотреть на странице в «PostgreSQL Wiki» вот она What’s new in PostgreSQL 9.5.

Где скачать PostgreSQL 9.5 для Windows 7?

Скачать PostgreSQL 9.5 можно со страницы загрузки официального сайта вот здесь — http://www.postgresql.org/download/windows/

После того как Вы перешли на страницу необходимо нажать «Download»

Затем Вас перенаправят на страницу выбора версии PostgreSQL, в нашем случае мы в разделе «Version 9.5.0» выбираем «Win x86-32» для 32 разрядной Windows или «Win x86-64» для 64 разрядной. У меня 32 разрядная Windows 7, поэтому я и щелкаю по кнопке «Win x86-32».

В итоге загрузится файл postgresql-9.5.0-1-windows.exe, который мы и будем использовать для установки PostgreSQL.

Установка PostgreSQL 9.5 на Windows 7

Итак, давайте перейдем к установке PostgreSQL 9.5, мы, кстати, с Вами ранее уже рассматривали установку PostgreSQL, например, для начинающих я показывал, как можно установить PostgreSQL на Linux OpenSUSE 13.2, а в материале «Установка PostgreSQL 9.4 на CentOS 7.1» мы разбирали, как можно реализовать так называемый сервер СУБД с использованием PostgreSQL и операционной системы Linux на примере дистрибутива CentOS 7.1. Установку PostgreSQL на операционную систему Windows мы не рассматривали, поэтому сегодня мы и будем устанавливать PostgreSQL 9.5 на Windows 7.

Шаг 1

Запускаем скаченный файл (postgresql-9.5.0-1-windows.exe). В итоге запустится программа установки и первое окно это окно «Приветствия», жмем «Next».

Шаг 2

В следующем окне мы указываем каталог, в который необходимо установить PostgreSQL, я оставлю по умолчанию (т.е. на диск C), жмем «Next».

Шаг 3

Далее указываем каталог, в котором по умолчанию будут располагаться файлы баз данных. Другими словами здесь при установке Вы можете изменить директорию для хранения файлов баз данных, это может потребоваться в тех случаях, когда количество баз данных будет большое или их размер, т.е. объем будет значительным, как Вы понимаете в этих случаях лучше указать отдельный диск достаточного объема. В моем случае это тестовая установка, поэтому я оставлю по умолчанию, жмем «Next».

Шаг 4

Затем придумываем, вводим и запоминаем пароль для пользователя postgres (необходимо вводить один и тот же пароль в два поля, для подтверждения), именно этот пользователь является своего рода «Суперпользователем» т.е. главным администратором, жмем «Next».

Шаг 5

Далее указываем порт, на котором будет работать наш экземпляр PostgreSQL, я снова оставлю по умолчанию, т.е. 5432, жмем «Next».

Шаг 6

Потом указываем Locale (данный параметр определяет кодировку данных в базе), если оставить по умолчанию, то кодировка данных в базах данных будет UTF-8, но если Вам необходимо чтобы кодировка была другая допустим Windows-1251, то необходимо выбрать «Russia, Russia», я оставлю по умолчанию, т.е. «Default locale», жмем «Next».

Шаг 7

Все готово для установки, жмем «Next».

Установка началась, процесс будет длиться буквально пару минут.


Шаг 8

Установка будет завершена и на последнем окне нам предложат запустить инструмент (Stack Builder) для установки дополнительных компонентов PostgreSQL, если Вы не хотите ничего дополнительного устанавливать, необходимо снять соответствующую галочку, жмем «Finish».

Запускаем pgAdmin и проверяем работу PostgreSQL 9.5

В состав инсталлятора PostgreSQL 9.5 включен pgAdmin 1.22.0, т.е. дополнительно, отдельно устанавливать pgAdmin на компьютер, на который Вы устанавливаете PostgreSQL 9.5, не нужно.

Если кто не знает pgAdmin это специальная графическая среда программирования и администрирования для СУБД PostgreSQL.

Для того чтобы запустить pgAdmin нажимаем «Пуск ->Все программы ->PostgreSQL 9.5 ->pgAdmin III»

У нас уже будет отображен локальный сервер мы к нему и должны подключиться, щелкаем двойным кликом по «PostgreSQL 9.5 (localhost:5432)».

Затем необходимо ввести пароль, который мы придумали, когда устанавливали PostgreSQL 9.5 (чтобы не вводить пароль каждый раз можете поставить галочку «Сохранять пароль»). Жмем «ОК».

Если галочку «Сохранять пароль» Вы поставили, то далее появится окно с предупреждением того, что сохранение паролей небезопасно, так как пароль будет храниться в виде простого текста в файле pgpass.conf который расположен в директории профиля пользователя Windows. Жмем «ОК».

И если установка прошла успешно, то далее у Вас произойдет подключение к серверу PostgreSQL.

Чтобы посмотреть на версию PostgreSQL, давайте напишем простой SQL запрос в базе данных, которая создается по умолчанию, т.е. в postgres.

Россияне в два раза ускорили СУБД PostgreSQL

Новый релиз Postgres Pro Enterprise

Российская компания Postgres Professional («Постгрес профессиональный») объявила о выпуске новой версии промышленной системы управления базами данных (СУБД) Postgres Pro Enterprise, предназначенной для высоконагруженных систем.

СУБД Postgres Pro Enterprise 11, по заявлению представителей компании, способна выдержать нагрузку до 10 тыс. одновременно работающих пользователей и 1 млн транзакций в секунду при размере базы данных до 150 ТБ, при этом максимальная задержка при восстановлении работоспособности кластера составит около 5 секунд.

Postgres Pro Enterprise, базирующаяся на свободной СУБД PostgreSQL, входит в Единый реестр отечественного ПО Минкомсвязи. Продукт нашел применение в информационных системах ФНС, Минфина, «Газпромнефти». В марте 2020 г. CNews рассказывал о планах Федеральной таможенной службы отказаться от СУБД Oracle в пользу продукта Postgres Professional.

Ключевые изменения

В новую версию Postgres Pro Enterprise 11 добавлен экспериментальный встроенный пулер соединений, позволяющий, как утверждают разработчики, на порядок увеличить число одновременно работающих с базой данных пользователей. Ускорено создание индексов и индексный поиск по JSON, добавлены покрывающие индексы. Кроме того, ряд улучшений коснулся оптимизации SQL-запросов, секционирования таблиц и параллельного исполнения запросов.

Кроме того, расширены возможности оконных функций до полного покрытия стандарта SQL:2011. Добавлена поддержка управления транзакциями во встроенных процедурных языках.

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

Postgres Pro Enterprise 11 включает поддержку расширенного управления доступом, в том числе на уровне отдельных записей. Также добавлена поддержка семейства криптографических функций SHA2 (sha224, sha256, sha384 и sha512) с целью повышения надежности хранения хешей паролей.

Краткая история Postgres Pro и PostgreSQL

Postgres Pro Enterprise – это российская коммерческая система управления базами данных для крупных клиентов, базирующаяся на свободной СУБД PostgreSQL. Возможности СУБД расширены за счет доработки ядра и включают компрессию данных на уровне блоков, 64-битный счетчик транзакций и прочие функции.

СУБД сертифицирована ФСТЭК, поэтому может применяться для защиты информации, в ГИС и АСУ до первого класса защищенности, а также обеспечения до первого уровня защищенности персональных данных в ИС, для которых к актуальным отнесены угрозы первого, второго или третьего типа.

Российский продукт разработан компанией Postgres Professional, созданной в начале 2015 г. Учредителями выступили ведущие на тот момент разработчики PostgreSQL Олег Бартунов, Федор Сигаев, Александр Коротков, разработчик Иван Панченко, а также инвестор проекта Антон Сушкевич, основатель интегратора «Энвижн груп».

Основа отечественной Postgres Pro Enterprise – PostgreSQL — реляционная СУБД, написанная одноименным сообществом разработчиков. Разработка PostgreSQL восходит к проекту POSTGRES, который стартовал в Калифорнийском университете в Беркли, США, в 1986 г. Проект спонсировали американские госведомства, в том числе Министерство обороны США. Разработкой руководил Майкл Стоунбрейкер (Michael Stonebraker), создатель таких СУБД как Ingres, Informix и VoltDB. Первая рабочая версия POSTGRES была выпущена в 1989 г.

POSTGRES использовалась в области анализа финансовых данных и работы с реактивными двигателями. На нем работали базы данных наблюдений за астероидами и медицинской информации, а также ряд геоинформационных систем. В 1993 г. разработку системы прекратили, последней версией стала 4.2.

В 1994 г. Эндрю Ю (Andrew Yu) и Джолли Чен (Jolly Chen) модифицировали POSTGRES, добавив в него интерпретатор языка SQL. Система получила название Postgres95 и стала распространяться с открытым кодом.

В 1996 г. проект был переименован в PostgreSQL. В этот же период была восстановлена нумерация версий, восходящая к POSTGRES. Если Postgres95 фокусировался на поиске проблем в серверном коде, то PostgreSQL — на расширении функциональности.

Шпаргалка по PostgreSQL

PostgreSQL это кроссплатформенная полнофункциональная объектно-реляционная база данных. Эта небольшая заметка написана с целью собрать в одном месте небольшой туториал по установке и настройке этой СУБД. Действие происходит в ОС Ubuntu 16.04.

Установка PostgreSQL

По умолчанию PostgreSQL входит в пакет Ubuntu. Систему можно установить следующей командой:

Мастер Йода рекомендует:  Инструменты для разработки web сайтов

Для установки самой последней версии СУБД, необходимо выполнить следующие шаги:

  1. Создаём файл /etc/apt/sources.list.d/pgdg.list
  2. Добавляем в него следующее содержимое:
  3. Импортируем новый ключ для подписи, выполнив
  4. Устанавливаем последнюю версию:

Настройка

После успешной установки самоё время заняться базовой настройкой СУБД PostgreSQL.

По умолчанию доступ к СУБД имеет пользователь postgres. Заходим под ним:

Для того, чтобы создать новую базу данных выполняем следующую команду внутри psql:

Создаём отдельного пользователя с логином myuser и паролем password:

Чтобы дать полные привилегии над нашей новой базой данных mydatabase пользователю myuser выполняем:

Чтобы сделать нового пользователя администратором нашей СУБД, выполняем:

Чтобы лишить его ранее предоставленных полномочий, выполним:

Если пользователю нужно дать лишь права на создание новой БД (например, при запуске тестов в Django, фреймворк создаёт отдельную БД с префиксом test_):

Для того, чтобы авторизоваться в PostgreSQL под новым пользователем, запускаем:

Для выхода из сеанса, необходимо выполнить команду \q

Фишки при работе с PostgreSQL

Чтобы не запоминать массу команд, существуют GUI утилиты для работы с PostgreSQL. Наиболее популярной считается pgadmin3.

Для тех, кто всё же предпочитает оставаться в терминале, есть интересный скрипт, написанный на Python: pgcli. Его особенностью является автодополнение и подсветка синтаксиса SQL команд.

Просто и удобно.

Снятие дампа БД PostgreSQL можно сделать вот так:

Импорт в PostgreSQL делается следующим образом:

PostgreSQL масштабная и сложная СУБД, и для её настройки потребуется немало времени, если вы столкнулись с ней в работе впервые. Эта заметка лишь начало интересного пути. Постараюсь делиться опытом и знаниями по мере возможности и сил 🙂

8 примеров установки PostgreSQL, создание базы данных и таблиц, создание и выбор записей


Главное меню » Базы данных » 8 примеров установки PostgreSQL, создание базы данных и таблиц, создание и выбор записей

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

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

Если вы новичок в PostgreSQL, этот учебник даст вам отличный рывок.

Рассматриваются в данном руководстве следующим образом:

  1. Как установить PostgreSQL
  2. Инициализировать БД с помощью initdb
  3. Создание новой базы данных Postgres
  4. Создание новой таблицы
  5. Все объекты (включая таблицы)
  6. Обзор деталей таблицы (Описание таблиц PostgreSQL)
  7. Вставка записи в таблицу
  8. Просмотр записей таблицы (выборка из таблицы)

1. Установка PostgreSQL

Есть два способа, с помощью которых можно установить базу данных PostgreSQL:

  • Установка из yum repository
  • Установка из исходного кода

Для того, чтобы установить его с помощью yum, используйте следующую команду:

Для того, чтобы установить его из исходного кода, выполните следующие действия: 9 шагов по установке и настройке PostgreSQL из исходных кодов на Linux.

2. Инициализировать базу данных с помощью initdb

Далее, вы должны инициализировать базу данных PostgreSQL с помощью initdb и запустить сервер PostgreSQL.

Если вы находитесь на CentOS 6 (или RedHat), используйте следующее:

Если вы находитесь на CentOS 7 (или RHEL 7), Fedora 23+ выполните следующие действия:

При инициализации базы данных с помощью команды itdb, это создаст новый кластер PostgreSQL db. Кластер в этом контексте не что иное, как куча баз данных PostgreSQL, управляемых на одном узле одним сервером PostgreSQL.

Initdb будет делать следующее:

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

3. Создайте новую базу данных Postgres

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

Ниже команда создаст новую пользовательскую базу данных PostgreSQL под названием “andreyex”.

Если команда createdb нет в вашей системе, или что-то пошло не так во время установки. Вы могли бы быть иметь в своей среде PATH.

При установке с помощью yum, эта команда будет в /usr/pgsql-X.Y/bin/createdb (где, XY это номер версии), с соответствующей ссылкой на /usr/bin. Таким образом, вы не будете иметь проблему здесь.

Но, если вы установили из исходных текстов, то вы можете убедиться, что каталог /usr/local/pgsql/bin/ находиться в вашей переменной PATH.

Кроме того, убедитесь, что вы создаете базу данных от пользователя, обладающего правами на создание базы данных. Если вы новичок в понятиях пользователей/роли в PostgreSQL, на данный момент, идти вперед и войдите в систему с правами администратора (при условии, что вы установили POSTGRESQL как root), и выполните команду createdb оттуда.

В следующем примере, мы создадим базу данных из Linux пользователя под названием “Maxim”, который не имеет соответствующего привилегию, чтобы создать новую базу данных.

И, наконец, когда вы создаете новую базу данных, и если ваш сервер PostgreSQL не запущен, то вы получите следующее сообщение об ошибке “could not connect to database template1”.

Примечание: Если вы создали базу данных по ошибке, вы можете удалить базу данных с помощью команды “dropdb”, как показано ниже.

4. Создание новой таблицы

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

Во-первых, вы должны подключиться к вновь созданной базе данных “andreyex”, используя команду psql, как показано ниже.

Для этого примера, давайте создадим таблицу сотрудников со следующими 4 колонками:

При выполнении указанной выше команды в строке POSTGRESQL, вы увидите следующее. Если таблица успешно создана, она будет отображать “CREATE TABLE” в качестве сообщения, как показано ниже.

Несколько вещей, которые нужно иметь в виду:

  • Двойное тире (- а затем что-то -) означает запись комментария. Все, что следует за двойное тире является комментарием, как вы видите из приведенной выше команды.
  • Varchar для строковых полей, указать максимальную длину поля строки внутри скобок. Так, VARCHAR (20) для поля имени указывает, что имя сотрудника может быть не более 20 символов.
  • int поле для чисел
  • SERIAL тип данных указывается для удостоверения личности. Мы могли бы также указать здесь Int. Но SERIAL делает то, когда вы не указываете идентификатор сотрудника во время вашей команды вставки, она будет создавать один и автоматически увеличивать его соответствующим образом из автоматического созданных последовательности.

Ниже приведены некоторые другие данные, которые поддерживается базой данных PostgreSQL:

5. Просмотреть все объекты (включая таблицы)

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

Для этого используйте опцию \d, как показано ниже.

d” в этом контексте является дисплей. Это будет список доступных всех таблиц, представлений и последовательностей.

Как видно из следующего вывода, мы видим вновь созданную таблицу сотрудников.

Помимо таблицы сотрудников, мы также видим последовательность, которую мы не создавали. Это происходит потому, что мы определили, как тип данных SERIAL для идентификатора поля Postgres автоматически создал эту employee_id_seq, что он будет в свою очередь, использовать его, когда вы не укажете значение во время вставки в поле номер сотрудника.

Кроме того, используйте команду “\d+“, которая будет отображать несколько дополнительных столбцов об объектах; размер и описание, как показано ниже.

Размер нашей таблицы сотрудников составляет “0 байт“, так как мы еще не вставили новые записи.

6. Просмотр деталей таблицы (Описание таблицы PostgreSQL)

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

В PostgreSQL эквивалент команды “desc” является “\d“, а затем имя таблицы.

d” в этом контексте является “описание”.

Как вы видите ниже, это описывает детали таблицы сотрудников.

При использовании “\d+“, как показано ниже, это будет отображать дополнительную информацию о столбцах таблицы; хранилище, статистика цель и описание.

7. Вставка записи в таблицу


Следующий шаг должен вставить некоторые записи сотрудников в таблицу сотрудников.

Синтаксис точно такое же, как и любой стандартный синтаксис SQL вставки.

Далее будет вставить 5 записей в таблицу сотрудников с заданными значениями для всех полей.

Порядок значений должен соответствовать порядку имен столбцов, которые вы видите в выводе команды “\d employee”, то есть в том же порядке, как вы создали таблицу.

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

В следующем примере мы вставим новую запись сотрудника только со значениями имен и столбцов.

Если команда вставки выполнена успешно, то появится сообщение “INSERT 0 1”, как показано выше.

8. Просмотр записей таблицы (выборка из таблицы)

Так же, как и любая команда SELECT в sql, серверу позволяют только просматривать конкретные столбцы таблицы, указав имена столбцов, как показано ниже.

SELECT * будет отображать все столбцы из указанной таблицы, как показано ниже.

В приведенном выше выводе значение столбца id на 6-й записи равна 1.

Это происходит потому, что там не указано значение идентификатора, и она автоматически приняла значение 1, из своей собственной последовательности. В следующий раз, вы создаете запись со значением идентификатора, он будет использовать 2 в качестве идентификатора.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Postgres Pro — российская СУБД на основе PostgreSQL

Уважаемые партнеры!

«1С:Дистрибьюция» объявляет о старте продаж российской системы управления базами данных Postgres Pro.

СУБД Postgres Pro выпускается компанией «Постгрес Профессиональный», входит в Реестр российского ПО (Единый реестр российских программ для электронных вычислительных машин и баз данных, https://reestr.minsvyaz.ru/reestr/65273/) и сертифицирована ФСТЭК для обработки конфиденциальной информации и персональных данных (http://fstec.ru/tekhnicheskaya-zashchita-informatsii/dokumenty-po-sertifikatsii/153-sistema-sertifikatsii/591-gosudarstvennyj-reestr-sertifitsirovannykh-sredstv-zashchity-informatsii-n-ross-ru-0001-01bi00). Это делает ее удачным выбором для заказчиков, стремящихся к использованию отечественных продуктов.

Примеры использования новой СУБД:

  • Заказчик — государственная структура, обязанная приобретать программное обеспечение, включенное в Реестр российского ПО. В этом случае есть возможность предложить ему решение на платформе 1С:Предприятие с СУБД Postgres Pro. Если же решение на платформе 1С:Предприятие уже внедрено, можно предложить переход на новую СУБД.
  • Заказчик, внедряющий систему на платформе 1С:Предприятие. Вы можете предложить ему решение с использованием СУБД Postgres Pro, как альтернативу зарубежным продуктам, обеспечивающую высокое качество работы с российской поддержкой.

Существует несколько версий СУБД Postgres Pro:

Postgres Pro Standard — наиболее актуальная версия PostgreSQL c добавленными дополнительными изменениями и добавленными расширениями. Также в дистрибутив включены некоторые расширения и изменения, разработанные в Postgres Professional.

В настоящее время Postgres Pro Standard имеет следующие отличия от PostgreSQL:

  • Улучшение производительности на многоядерных системах (оптимизация буфер-менеджера и блокировок).
  • Усовершенствования полнотекстового поиска: поиск фраз, морфология hunspell, некоторые морфологические словари включены в дистрибутив и могут быть подключены одним оператором SQL, модуль shared_ispell позволяет хранить словари в разделяемой памяти.
  • Покрывающие индексы.
  • Поддержка libicu на всех платформах, что обеспечивает независимые от платформы результаты сортировки.
  • Модуль pg_trgm поддерживает нечёткое сравнение строк и поиск подстрок.
  • Улучшенный модуль pageinspect обеспечивает доступ к внутренним структурам хранения данных.
  • Модуль sr_plan позволяет сохранять и восстанавливать планы запросов.
  • Модуль dump_stat позволяет сохранять статистику данных при резервном копировании и восстановлении.
  • Модуль jsquery реализует специальный язык запросов для эффективного, с использованием индексов, поиска в структурированных данных JSONB.
  • Модуль pg_variables содержит функции для работы с переменными различных типов.
  • Модуль pg_pathman предоставляет оптимизированный механизм секционирования, а также функции для создания и управления секциями.
  • Модуль pg_query_state даёт возможность узнавать текущее состояние выполнения запросов в работающем обслуживающем процессе.
  • pg_probackup — менеджер резервного копирования и восстановления.
  • Модуль mchar предоставляет дополнительный тип данных для совместимости с Microsoft SQL Server.
  • Модуль fulleq предоставляет дополнительный оператор равенства для совместимости с Microsoft SQL Server.
  • Модуль fasttrun предоставляет транзакционно-небезопасную функцию для усечения временных таблиц, предотвращающую разрастание каталога pg_class.
  • Модуль online_analyze предоставляет набор функций, которые немедленно обновляют статистику в целевых таблицах после операций INSERT, UPDATE, DELETE и SELECT INTO в них.
  • Модуль plantuner добавляет поддержку указаний для планировщика, позволяющих отключать или подключать определённые индексы при выполнении запроса.

Выпуски Postgres Pro следуют за выпусками PostgreSQL, хотя иногда могут выпускаться чаще.

Схема версионирования Postgres Pro основана на схеме версионирования PostgreSQL и включает дополнительную цифру.

Postgres Pro Enterprise — наиболее актуальная версия PostgreSQL c добавленными дополнительными изменениями и добавленными расширениями. Также в дистрибутив включены некоторые расширения и изменения, разработанные в Postgres Professional.

В настоящее время Postgres Pro Enterprise имеет следующие отличия от Postgres Pro Standard:

  • Добавлен алгоритм поиска k ближайших соседей (KNN) для SP-GiST и B-дерева (см. Главу 60).
  • В качестве отдельного модуля добавлена реализация индексов RUM, основанная на GIN.
  • Операция CREATE INDEX с индексами GiST, GIN, SP-GiST более компактный WAL.
  • Добавлен таймаут для простаивающих сеансов на стороне сервера (см. idle_session_timeout).
  • Добавлена поддержка алгоритма SHA-2 для шифрования паролей (см. Подраздел 19.3.2).
  • Добавлено сжатие на уровне страниц (CFS) (см. Главу 31).
  • Добавлена поддержка автономных транзакций (см. Главу 16).
  • Добавлен новый дополнительный рабочий процесс для планирования задач по правилам (см.pgpro_scheduler).
  • Добавлена поддержка перемещаемых таблиц (см. pg_transfer).
  • Добавлено расширение pg_hint_plan.
  • Для идентификаторов транзакций на 64-битных платформах используется 64-битный тип данных.
  • «Отложенное» размещение временных таблиц на диске.
  • Согласованное чтение на ведомом сервере (ожидание применения WAL, см. WAITLSN).
  • Добавлена утилита pg_repack.
  • Добавлено расширение multimaster.
  • Добавлен алгоритм смены серверов для подключений libpq.
  • Добавлено расширение aqo для адаптивной оптимизации запросов.
  • Реализован декларативный синтаксис секционирования (см. Подраздел F.38.2.4).
  • Добавлена служба мониторинга mamonsu, исполненная в виде агента Zabbix (см. mamonsu).
  • Добавлено расширение pg_wait_sampling, осуществляющее периодический сбор статистики по событиям ожидания. Воспользовавшись этим расширением, вы сможете понять характер активности сервера, в том числе увидеть текущие события ожидания по всем обычным и фоновым рабочим процессам.

Postgres Pro Enterprise для 1C, предназначенная для работы только с 1С:Предприятие.

Специализированные версии.

Лицензирование:

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

Существует 2 типа лицензий:

  • постоянные лицензии — предоставляются на срок действия исключительного права (бессрочно);
  • с ограниченным сроком действия — предоставляются на 1, 2, 3 или 5 лет. Такая лицензия включает поддержку на срок действия лицензии.

Основные пользователи продукта Postgres Pro:

  • Государственные компании.
  • Заказчики с требованиями по сертификации ФСТЭК.
  • Коммерческие организации, желающие получить качественное решение за приемлемую сумму.
  • Пользователи других версий PostgreSQL.

Цена продукта Postgres Pro:

Розничная цена в рублях, НДС не облагается

Партнерская цена в рублях, НДС не облагается

Для франчайзи и постоянных партнеров в рублях, НДС не облагается

Postgres Pro Enterprise

Лицензия СУБД Postgres Pro Enterprise на 1 ядро х86

Лицензия СУБД Postgres Pro Enterprise на 1 ядро RISC

Postgres Pro для работы с платформой «1С:Предприятие»

Лицензия СУБД Postgres Pro для 1C на 1 ядро х86

Годовая лицензия СУБД Postgres Pro для 1C на 1 ядро х86

Лицензия на 2 года СУБД Postgres Pro для 1C на 1 ядро х86

Лицензия на 3 года СУБД Postgres Pro для 1C на 1 ядро х86

Лицензия на 5 лет СУБД Postgres Pro для 1C на 1 ядро х86

Postgres Pro Certified


Лицензия СУБД Postgres Pro Certified на 1 ядро х86

Postgres Pro Standard

Лицензия СУБД Postgres Pro Standard на 1 ядро х86

Годовая лицензия СУБД Postgres Pro Standard на 1 ядро х86

Лицензия на 2 года СУБД Postgres Pro Standard на 1 ядро х86

Лицензия на 3 года СУБД Postgres Pro Standard на 1 ядро х86

Лицензия на 5 лет СУБД Postgres Pro Standard на 1 ядро х86

Лицензия СУБД Postgres Pro Standard на 1 ядро RISC

Годовая лицензия СУБД Postgres Pro Standard на 1 ядро RISC

Лицензия на 2 года СУБД Postgres Pro Standard на 1 ядро RISC

Лицензия на 3 года СУБД Postgres Pro Standard на 1 ядро RISC

Лицензия на 5 лет СУБД Postgres Pro Standard на 1 ядро RISC

Техническая поддержка:

Первая линия поддержки обеспечивается партнерами и линией консультаций фирмы «1С». email: V8@1c.ru, тел. 8(495) 737-92-57 Дальнейшая поддержка осуществляется специалистами компании «Постгрес Профессиональный». email: support@postgrespro.ru, тел. 8 (495) 150-06-91.

По вопросам приобретения продуктов Postgres Pro обращайтесь:

Фирма «1С»
Направление «1С:Дистрибьюция»
e-mail: dist@1c.ru
сайт: http://dist.1c.ru
тел. (495) 258-44-08, (495) 737-92-57

Другие новости

Обновлен прайс-лист на продукты Postgres Pro

С 3 ноября 2020 г. вступает в силу новый прайс-лист на продукты Postgres Pro.

Обновлен прайс-лист на продукты PostgresPro

С 09.10.2020 вступает в силу новый прайс-лист на продукты PostgresPro.

Postgres Professional выпустила учебник по SQL для СУБД PostgreSQL

Первый учебник по основам SQL применительно к свободно распространяемой системе управления базами данных (СУБД) PostgreSQL вышел в свет 19 июня при поддержке компании Postgres Professional. Учебник бесплатен, он доступен по свободной лицензии.

Мастер Йода рекомендует:  TOP-10 open source проектов на Python в сентябре 2020

Автор пособия – Евгений Моргунов, кандидат технических наук, доцент кафедры информатики и вычислительной техники Сибирского государственного университета науки и технологий имени академика М. Ф. Решетнёва. Моргунов применяет СУБД PostgreSQL в преподавании дисциплины «Технология программирования» в течение 17 лет. SQL (Structured Query Language, произносится «эс-кью-эль», реже «сиквел»; второй вариант произношения остался со времён предыдущего названия языка, «SEQUEL») – широко распространённый формальный язык описания запросов к базам данных.

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

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

Учебник представляет собой первую, базовую часть учебного курса по языку SQL применительно к СУБД PostgreSQL. В пособии рассматриваются все основные возможности языка SQL, включая команды создания объектов БД, манипулирования данными и управления транзакциями, а также специальные типы данных, специфика индексной поддержки PostgreSQL и настройки запросов. Много внимания уделяется развитию практических навыков обучаемых. В конце каждой главы приведены упражнения. Для практических заданий используется демонстрационная база данных. В методических целях предложена разбивка материала на учебный семестр из расчета 36 или 54 часов.

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

В электронном виде учебник доступен здесь.

На СУБД PostgreSQL в последнее время переходят различные российские госорганизации и компании, среди которых правительство Москвы, «Яндекс.Почта», госучреждения Московской области, МИА «Россия сегодня» и др.

Справка

Компания Postgres Professional создана в 2015 году российскими разработчиками PostgreSQL с целью продвижения и расширения возможностей данной СУБД с открытым кодом и свободной лицензией, развиваемой международным сообществом более 20 лет. Postgres Professional является российским вендором PostgreSQL и осуществляет поддержку полного цикла, включая IT-аудит, консалтинг, разработку, администрирование, техподдержку, обучение. В компании на данный момент работает более 50 человек.

В 2020 году Postgres Professional выпустила СУБД Postgres Pro — собственную версию PostgreSQL. СУБД Postgres Pro включена в реестр отечественного программного обеспечения, а версия СУБД Postgres Pro 9.5.2.1 сертифицирована ФСТЭК (номер 3637 в реестре).

Консорциум во главе с Postgres Professional занял первое место в конкурсе IT-проектов Минкомсвязи в номинации «Системы управления базами данных».

Postgres Pro — российская СУБД на основе PostgreSQL

Уважаемые партнеры!

«1С:Дистрибьюция» объявляет о старте продаж российской системы управления базами данных Postgres Pro.

СУБД Postgres Pro выпускается компанией «Постгрес Профессиональный», входит в Реестр российского ПО (Единый реестр российских программ для электронных вычислительных машин и баз данных, https://reestr.minsvyaz.ru/reestr/65273/) и сертифицирована ФСТЭК для обработки конфиденциальной информации и персональных данных (http://fstec.ru/tekhnicheskaya-zashchita-informatsii/dokumenty-po-sertifikatsii/153-sistema-sertifikatsii/591-gosudarstvennyj-reestr-sertifitsirovannykh-sredstv-zashchity-informatsii-n-ross-ru-0001-01bi00). Это делает ее удачным выбором для заказчиков, стремящихся к использованию отечественных продуктов.

Примеры использования новой СУБД:

  • Заказчик — государственная структура, обязанная приобретать программное обеспечение, включенное в Реестр российского ПО. В этом случае есть возможность предложить ему решение на платформе 1С:Предприятие с СУБД Postgres Pro. Если же решение на платформе 1С:Предприятие уже внедрено, можно предложить переход на новую СУБД.
  • Заказчик, внедряющий систему на платформе 1С:Предприятие. Вы можете предложить ему решение с использованием СУБД Postgres Pro, как альтернативу зарубежным продуктам, обеспечивающую высокое качество работы с российской поддержкой.

Существует несколько версий СУБД Postgres Pro:

Postgres Pro Standard — наиболее актуальная версия PostgreSQL c добавленными дополнительными изменениями и добавленными расширениями. Также в дистрибутив включены некоторые расширения и изменения, разработанные в Postgres Professional.

В настоящее время Postgres Pro Standard имеет следующие отличия от PostgreSQL:

  • Улучшение производительности на многоядерных системах (оптимизация буфер-менеджера и блокировок).
  • Усовершенствования полнотекстового поиска: поиск фраз, морфология hunspell, некоторые морфологические словари включены в дистрибутив и могут быть подключены одним оператором SQL, модуль shared_ispell позволяет хранить словари в разделяемой памяти.
  • Покрывающие индексы.
  • Поддержка libicu на всех платформах, что обеспечивает независимые от платформы результаты сортировки.
  • Модуль pg_trgm поддерживает нечёткое сравнение строк и поиск подстрок.
  • Улучшенный модуль pageinspect обеспечивает доступ к внутренним структурам хранения данных.
  • Модуль sr_plan позволяет сохранять и восстанавливать планы запросов.
  • Модуль dump_stat позволяет сохранять статистику данных при резервном копировании и восстановлении.
  • Модуль jsquery реализует специальный язык запросов для эффективного, с использованием индексов, поиска в структурированных данных JSONB.
  • Модуль pg_variables содержит функции для работы с переменными различных типов.
  • Модуль pg_pathman предоставляет оптимизированный механизм секционирования, а также функции для создания и управления секциями.
  • Модуль pg_query_state даёт возможность узнавать текущее состояние выполнения запросов в работающем обслуживающем процессе.
  • pg_probackup — менеджер резервного копирования и восстановления.
  • Модуль mchar предоставляет дополнительный тип данных для совместимости с Microsoft SQL Server.
  • Модуль fulleq предоставляет дополнительный оператор равенства для совместимости с Microsoft SQL Server.
  • Модуль fasttrun предоставляет транзакционно-небезопасную функцию для усечения временных таблиц, предотвращающую разрастание каталога pg_class.
  • Модуль online_analyze предоставляет набор функций, которые немедленно обновляют статистику в целевых таблицах после операций INSERT, UPDATE, DELETE и SELECT INTO в них.
  • Модуль plantuner добавляет поддержку указаний для планировщика, позволяющих отключать или подключать определённые индексы при выполнении запроса.

Выпуски Postgres Pro следуют за выпусками PostgreSQL, хотя иногда могут выпускаться чаще.

Схема версионирования Postgres Pro основана на схеме версионирования PostgreSQL и включает дополнительную цифру.

Postgres Pro Enterprise — наиболее актуальная версия PostgreSQL c добавленными дополнительными изменениями и добавленными расширениями. Также в дистрибутив включены некоторые расширения и изменения, разработанные в Postgres Professional.

В настоящее время Postgres Pro Enterprise имеет следующие отличия от Postgres Pro Standard:

  • Добавлен алгоритм поиска k ближайших соседей (KNN) для SP-GiST и B-дерева (см. Главу 60).
  • В качестве отдельного модуля добавлена реализация индексов RUM, основанная на GIN.
  • Операция CREATE INDEX с индексами GiST, GIN, SP-GiST более компактный WAL.
  • Добавлен таймаут для простаивающих сеансов на стороне сервера (см. idle_session_timeout).
  • Добавлена поддержка алгоритма SHA-2 для шифрования паролей (см. Подраздел 19.3.2).
  • Добавлено сжатие на уровне страниц (CFS) (см. Главу 31).
  • Добавлена поддержка автономных транзакций (см. Главу 16).
  • Добавлен новый дополнительный рабочий процесс для планирования задач по правилам (см.pgpro_scheduler).
  • Добавлена поддержка перемещаемых таблиц (см. pg_transfer).
  • Добавлено расширение pg_hint_plan.
  • Для идентификаторов транзакций на 64-битных платформах используется 64-битный тип данных.
  • «Отложенное» размещение временных таблиц на диске.
  • Согласованное чтение на ведомом сервере (ожидание применения WAL, см. WAITLSN).
  • Добавлена утилита pg_repack.
  • Добавлено расширение multimaster.
  • Добавлен алгоритм смены серверов для подключений libpq.
  • Добавлено расширение aqo для адаптивной оптимизации запросов.
  • Реализован декларативный синтаксис секционирования (см. Подраздел F.38.2.4).
  • Добавлена служба мониторинга mamonsu, исполненная в виде агента Zabbix (см. mamonsu).
  • Добавлено расширение pg_wait_sampling, осуществляющее периодический сбор статистики по событиям ожидания. Воспользовавшись этим расширением, вы сможете понять характер активности сервера, в том числе увидеть текущие события ожидания по всем обычным и фоновым рабочим процессам.

Postgres Pro Enterprise для 1C, предназначенная для работы только с 1С:Предприятие.

Специализированные версии.


Лицензирование:

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

Существует 2 типа лицензий:

  • постоянные лицензии — предоставляются на срок действия исключительного права (бессрочно);
  • с ограниченным сроком действия — предоставляются на 1, 2, 3 или 5 лет. Такая лицензия включает поддержку на срок действия лицензии.

Основные пользователи продукта Postgres Pro:

  • Государственные компании.
  • Заказчики с требованиями по сертификации ФСТЭК.
  • Коммерческие организации, желающие получить качественное решение за приемлемую сумму.
  • Пользователи других версий PostgreSQL.

Цена продукта Postgres Pro:

Розничная цена в рублях, НДС не облагается

Партнерская цена в рублях, НДС не облагается

Для франчайзи и постоянных партнеров в рублях, НДС не облагается

Postgres Pro Enterprise

Лицензия СУБД Postgres Pro Enterprise на 1 ядро х86

Лицензия СУБД Postgres Pro Enterprise на 1 ядро RISC

Postgres Pro для работы с платформой «1С:Предприятие»

Лицензия СУБД Postgres Pro для 1C на 1 ядро х86

Годовая лицензия СУБД Postgres Pro для 1C на 1 ядро х86

Лицензия на 2 года СУБД Postgres Pro для 1C на 1 ядро х86

Лицензия на 3 года СУБД Postgres Pro для 1C на 1 ядро х86

Лицензия на 5 лет СУБД Postgres Pro для 1C на 1 ядро х86

Postgres Pro Certified

Лицензия СУБД Postgres Pro Certified на 1 ядро х86

Postgres Pro Standard

Лицензия СУБД Postgres Pro Standard на 1 ядро х86

Годовая лицензия СУБД Postgres Pro Standard на 1 ядро х86

Лицензия на 2 года СУБД Postgres Pro Standard на 1 ядро х86

Лицензия на 3 года СУБД Postgres Pro Standard на 1 ядро х86

Лицензия на 5 лет СУБД Postgres Pro Standard на 1 ядро х86

Лицензия СУБД Postgres Pro Standard на 1 ядро RISC

Годовая лицензия СУБД Postgres Pro Standard на 1 ядро RISC

Лицензия на 2 года СУБД Postgres Pro Standard на 1 ядро RISC

Лицензия на 3 года СУБД Postgres Pro Standard на 1 ядро RISC

Лицензия на 5 лет СУБД Postgres Pro Standard на 1 ядро RISC

Техническая поддержка:

Первая линия поддержки обеспечивается партнерами и линией консультаций фирмы «1С». email: V8@1c.ru, тел. 8(495) 737-92-57 Дальнейшая поддержка осуществляется специалистами компании «Постгрес Профессиональный». email: support@postgrespro.ru, тел. 8 (495) 150-06-91.

По вопросам приобретения продуктов Postgres Pro обращайтесь:

Фирма «1С»
Направление «1С:Дистрибьюция»
e-mail: dist@1c.ru
сайт: http://dist.1c.ru
тел. (495) 258-44-08, (495) 737-92-57

Другие новости

Обновлен прайс-лист на продукты Postgres Pro

С 3 ноября 2020 г. вступает в силу новый прайс-лист на продукты Postgres Pro.

Обновлен прайс-лист на продукты PostgresPro

С 09.10.2020 вступает в силу новый прайс-лист на продукты PostgresPro.

Oracle отговаривает россиян мигрировать на СУБД PostgreSQL

На фоне проявленного интереса отечественных органов власти к системе управления базами данных PostgreSQL корпорация Oracle предостерегла чиновников и сообщество разработчиков от поспешных решений по переходу на свободные СУБД.

«Безопасность государства важна, и ее надо обеспечивать, но тот способ, который выбран, лично мне не очень нравится», — заявил на конференции разработчиков свободной СУБД PostgreSQL начальник отдела технического консалтинга по серверным технологиям российского представительства Oracle Марк Ривкин.

Иллюстрируя идею массового внедрения СПО как альтернативы решениям американских разработчиков, Ривкин привел метафору: «Котлован можно копать импортным бульдозером, а можно отечественной лопатой. Кардинально неправильный подход — не дожидаясь поломки бульдозеров начать вооружать всех лопатами».

Конечно, «на всякий несчастный случай» нужно иметь «План Б», говорит представитель Oracle. Но все же лучше до последнего момента использовать тот инструмент, который дает максимальную производительность, считает он.

Сейчас, говорит Ривкин, «людей заставляют заменять системы, которые обеспечивают высокую надежность и безопасность, на системы открытого кода». Где-то это оправдано, есть масса систем, в которых открытый код более предпочтителен, но есть ниши, системы с десятками тысяч пользователей, с сотнями терабайтов данных, «куда тоже пытаются запихнуть этот открытый код», и это неправильно, уверен он.

В понимании Марка Ривкина, «План Б» должен состоять в том, чтобы создавать приложения, работающие под разными базами данных: «Хотите — под Oracle, хотите — под Postgres, хотите — под DB2. Если что-то нехорошее случится, вы продолжите жить и работать».

Марк Ривкин из Oracle просит не спешить с миграцией на PostgreSQL. Слева направо: Владимир Захаров («Ланит»), Владимир Рубанов («НТЦ ИТ РОСА»), Марк Ривкин, Александр Жижкин («Иновентика технолоджес») и Олег Бартунов (Postgres Professional)

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

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

«Возьмем самый простой вариант — производительность. В мире СУБД вот уже несколько лет происходит революция производительности систем. Я обычно говорю, что есть прошлое — года два назад, есть наше настоящее, и есть будущее, которое наступит уже в 2015 г.», — рассказывает он.

В «прошлом СУБД», говорит Ривкин, появились специализированные программно-аппаратные комплексы, машины баз данных, специализированное оборудование, на котором СУБД работают быстрее. Они увеличивают производительность на порядок.


«Сегодня» для роста производительности СУБД в Oracle используются технологии поколоночного хранения, процедуры векторных процессоров, преимущества большой памяти (обработка данных in-memory), что дает еще порядок роста производительности. «Завтра» появятся процессоры, «у которых в силикон зашиты команды СУБД. Они тестируются уже сейчас».

«Однако, послушав разработчиков PostgreSQL, я понял, что существует «позапрошлое», когда люди рассказывают, что они «тут немного код подтюнили, там функцию ускорили». Увеличение производительности [только] за счет резервов кода — это позавчерашний день разработки СУБД», — заявил представитель Oracle.

Олег Бартунов из Postgres Professional отвечает Марку Ривкину. Слева направо: Марк Ривкин (Oracle), Александр Жижкин («Иновентика технолоджес») и Олег Бартунов

Конечно, у Oracle есть чему поучиться, отвечает Ривкину гендиректор компании Postgres Professional Олег Бартунов. Postgres разрабатывают много людей с Oracle-бэкграундом, и сам Postgres всегда позиционировался как наиболее близкая к Oracle СУБД, нацеленная на надежность и целостность хранения данных, говорит он.

Однако, напоминает Бартунов, то, что в Postgres разрабатывается сейчас, у Oracle еще не появилось — например, возможности обработки неструктурированных данных.

«Не зря EnterpriseDB (американского вендора и разработчика Postgres — прим. CNews) в 2014 г. включили в магический квадрат Gartner вместе с Oracle, а 64 компании из Fortune-500 и 111 компаний из Forbes являются пользователями Postgres», — добавляет он.

В то же время, по приведенным Олегом Бартуновым данным, Oracle сейчас занимает до 70% российского рынка СУБД.

Что же касается машин для баз данных, то «железные эплайнсы» под Postgres у Fujitsu появились еще раньше, чем у Oracle, уточняет гендиректор Postgres Professional.

Базы данных, построенные на СУБД PostgreSQL, способны демонстрировать высокую производительность, говорит Бартунов: «Не думаю, что у японских компаний, например, NHK, или у фонда пенсионного обеспечения Франции, которые работают на Postgres, маленькие нагрузки».

Владимир Захаров, руководитель направления «Электронное правительство» в «Ланите», рассказывает, что в его компании уже есть решения, которые работают как на Postgres, так и на Oracle. «Для ряда задач не нужен Oracle, нет необходимости оплачивать эти безумные лицензии», — говорит он.

Явный интерес российских властей к открытой СУБД PostgreSQL как альтернативе Oracle был публично продемонстрирован на этой же конференции главой Минкомсвязи Николаем Никифоровым, который заявил, что PostgreSQL является «важнейшим инструментом в нынешней политике импортозамещения».

Немного ранее стало известно, что основатель и бывший гендиректор интегратора «Энвижн Груп» Антон Сушкевич инвестировал несколько миллионов долларов в компанию Postgres Professional, созданную командой живущих в России ведущих разработчиков (Major Contributor) PostgreSQL.

5 лучших материалов по PostgreSQL

В данной статье я расскажу о базовых операциях PostgreSQL 10: основные команды в оболочке psql, создание и удаление базы данных, работа с табличными пространствами, создание и удаление ролей, создание простых таблиц, работа со схемами и т.д.

Исходные данные: Debian 9.3 (Stretch), PostgreSQL 10.2
Задача: Научиться базовым навыкам работы с PostgreSQL

Давайте зайдем под пользователем postgres, запустим оболочку psql и попробуем поработать:

Перед нами открылась оболочка с приглашением ввести команды:

Вывод postgres=# указывает нам, что мы подключились к базе postgres.

Первым делом давайте посмотрим информацию о версии PostgreSQL:

Давайте пройдемся по списку наиболее нужных команд:

1. Список баз данных.

Список БД можно посмотреть 3-мя способами:
Ключ -l командной строки приложения psql, метакоманда \l или select запрос к системному каталогу pg_database, например

2. Создание баз данных.

Базу данных можно создать 2-мя способами: Через утилиту createdb или с помощью команды CREATE DATABASE имя;
Утилита createdb не делает ничего волшебного, она просто подключается к базе данных postgres и выполняет SQL-команду CREATE DATABASE.

Пример этих команд и вывод списка БД:

Так же следует упомянуть про шаблоны баз данных, при инициализации основной БД создаются так же 2 базы-шаблоны — это template0 и template1.
По факту команда CREATE DATABASE выполняет копирование существующей базы данных. По умолчанию копируется стандартная системная база template1. Таким образом, template1 это шаблон, на основе которого создаются новые базы. Если добавить объекты в template1, то впоследствии они будут копироваться в новые базы данных.
В системную базу template0 не желательно вносить какие либо изменения.
В таблице pg_database есть два полезных флага для каждой базы данных: datistemplate и datallowconn.
datistemplate — Если true, базу данных сможет клонировать любой пользователь с правами CREATEDB, то есть использовать в качестве шаблона, в противном случае, клонировать эту базу смогут только суперпользователи и её владелец.
datallowconn — Если false, никто не сможет подключаться к этой базе данных. Это позволяет защитить базу данных template0 от модификаций.
Для создания базы данных на основе template0 нужно выполнить из среды SQL:

Мастер Йода рекомендует:  6 книг по тестированию ПО

или из командной оболочки под пользователем postgres:

Просмотр флагов datistemplate и datallowconn:

3. Удаление баз данных.

Тут так же как и при создании, есть 2 подхода: Через утилиту dropdb или с помощью команды DROP DATABASE имя;

Пример:
Пример этих команд и вывод списка БД:

4. Работа с табличными пространствами.

Табличные пространства в PostgreSQL позволяют администраторам организовать логику размещения файлов объектов базы данных в файловой системе. К однажды созданному табличному пространству можно обращаться по имени на этапе создания объектов.
Табличные пространства позволяют администратору управлять дисковым пространством для инсталляции PostgreSQL. Это полезно минимум по двум причинам. Во-первых, это нехватка места в разделе, на котором был инициализирован экземпляр Pg или кластера Pg и невозможность его расширения. Табличное пространство можно создать в другом разделе и использовать его до тех пор, пока не появится возможность переконфигурирования системы. Во-вторых, табличные пространства позволяют администраторам оптимизировать производительность согласно бизнес-процессам, связанным с объектами базы данных. Например, часто используемый индекс можно разместить на очень быстром и надёжном, но дорогом SSD-диске. В то же время таблица с архивными данными, которые редко используются и скорость к доступа к ним не важна, может быть размещена в более дешёвом и медленном хранилище.

Для создания табличного пространства используется команда CREATE TABLESPACE.
Каталог нового табличного пространства должен существовать, быть пустым и принадлежать пользователю ОС, под которым запущен PostgreSQL.

Создаем каталог и выставляем права:

Подключаемся к Pg и создаем новое табличное пространство:

Посмотреть список табличных пространств можно 2-мя способами: метакоманда \db или \db+ или select запрос к системному каталогу pg_tablespace;

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

Например, далее создаётся база данных в табличном пространстве fast:

В колонке Tablespace мы видим что база test2 находится в новом табличном пространстве fast.

Табличное пространство, связанное с базой данных, также используется для хранения её системных каталогов. Более того, это табличное пространство используется по умолчанию для таблиц, индексов и временных файлов, создаваемых в базе данных, если не указано иное в выражении
TABLESPACE, или переменной default_tablespace, или temp_tablespaces (соответственно). Если база данных создана без указания конкретного табличного пространства, то используется пространство, к которому принадлежит копируемый шаблон.

При инициализации экземпляра Pg или кластера Pg автоматически создаются два табличных пространства. Табличное пространство pg_global используется для общих системных каталогов. Табличное пространство pg_default используется по умолчанию для баз данных template1 и template0 (в свою очередь, также является пространством по умолчанию для других баз данных, пока не будет явно указано
иное в выражении TABLESPACE команды CREATE DATABASE).

5. Работа с ролями.

В PostgreSQL используется концепция ролей (roles) для управления разрешениями на доступ к базе данных. Роль можно рассматривать как пользователя базы данных или как группу пользователей, в зависимости от того, как роль настроена. Роли могут владеть объектами базы данных (например, таблицами и функциями) и выдавать другим ролям разрешения на доступ к этим объектам, управляя тем, кто имеет доступ и к каким объектам. Кроме того, можно предоставить одной роли членство в другой роли, таким образом одна роль может использовать привилегии других ролей.

Концепция ролей включает в себя концепцию пользователей (user) и групп (groups). До версии 8.1 в PostgreSQL пользователи и группы были отдельными сущностями, но теперь есть только роли. Любая роль может использоваться в качестве пользователя, группы, и того и другого.

Роли базы данных концептуально полностью отличаются от пользователей операционной системы.На практике поддержание соответствия между ними может быть удобным, но не является обязательным. Роли базы данных являются глобальными для всего инстана Pg или кластера Pg базы данных (не
для отдельной базы данных). Для создания роли используется SQL-команда CREATE ROLE, а для удаления DROP ROLE.

5.1 Создание ролей.

Роль можно создать/удалить 2-мя путями: через консольную утилиту createuser или dropuser и через psql с помощью CREATE ROLE или DROP ROLE.

Давайте попробуем обя способа создания роли:

Для просмотра списка ролей можно использовать метакоманду \du или сделать select запрос к системному каталогу pg_roles.

Но между этими 2-мя способами создания роли есть отличия. Вы наверно заметили, что у роли utest2 созданной SQL-командой «CREATE ROLE» в колонке «Attributes» стоит «Cannot login», для более детального понимания сделаем такой запрос к каталогу pg_roles:

Для роли utest2 в столбце rolcanlogin стоит false — это значит, что роль не может подключаться к серверу. То есть эта роль не может быть указана в качестве начального идентификатора авторизации сеанса.
У роли utest созданной с помощью утилиты createuser в колонке rolcanlogin стоит true — значит роль может подключаться к серверу и может быть указана в качестве начального идентификатора авторизации сеанса.
По сути использование консольной утилиты createuser эквивалентно SQL-команде «CREATE USER» т.к. ставит атрибут LOGIN. В этом и есть отличия 2-х методов создания ролей.

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

Доступны следующие атрибуты (в скобках указаны столбцы из каталогу pg_roles):


1) Право подключения (rolcanlogin):
Только роли с атрибутом LOGIN могут использоваться для начального подключения к базе данных. Роль с атрибутом LOGIN можно рассматривать как пользователя базы данных. Для создания роли такой роли можно использовать любой из вариантов:
CREATE ROLE имя LOGIN;
или
CREATE USER имя;
или использование консольной утилиты createuser.
Как мы уже сказали выше, команда CREATE USER эквивалентна CREATE ROLE за исключением того, что CREATE USER по умолчанию предполагает атрибут LOGIN, в то время как CREATE ROLE нет.)

2) Статус суперпользователя (rolsuper):
Суперпользователь базы данных обходит все проверки прав доступа, за исключением права на вход в систему. Это опасная привилегия и она не должна использоваться небрежно. Лучше всего выполнять большую часть работы не как суперпользователь. Для создания нового супер пользователя используется CREATE ROLE имя SUPERUSER. Это нужно выполнить из под роли, которая также является суперпользователем.

3) Создание базы данных (rolcreatedb):
Роль должна явно иметь разрешение на создание базы данных (за исключением суперпользователей, которые пропускают все проверки). Для создания такой роли используется CREATE ROLE имя CREATEDB.

4) Создание роли (rolcreaterole):
Роль должна явно иметь разрешение на создание других ролей (за исключением суперпользователей, которые пропускают все проверки). Для создания такой роли используется CREATE ROLE имя CREATEROLE. Роль с привилегией CREATEROLE может также изменять и удалять другие
роли, а также выдавать и отзывать членство в ролях. Однако, для создания, изменения, удаления суперпользовательских ролей, а также изменения в них членства, требуется иметь статус суперпользователя, привилегии CREATEROLE в таких случаях недостаточно.

5) Запуск репликации (rolreplication):
Роль должна иметь явное разрешение на запуск потоковой репликации (за исключением суперпользователей, которые пропускают все проверки). Роль, используемая для потоковой репликации, также должна иметь атрибут LOGIN. Для создания такой роли используется CREATE ROLE имя REPLICATION LOGIN.

6) Пароль (rolpassword):
Пароль имеет значение, если метод аутентификации клиентов требует, чтобы пользователи предоставляли пароль при подключении к базе данных. Методы аутентификации password и md5 используют пароли. База данных и операционная система используют раздельные пароли. Пароль указывается при создании роли: CREATE ROLE имя PASSWORD ‘строка’.

7) Игнорировать систему защиты строк (rolbypassrls):
В дополнение к стандартной системе прав SQL, управляемой командой GRANT, на уровне таблиц можно определить политики защиты строк, ограничивающие для пользователей наборы строк, которые могут быть возвращены обычными запросами или добавлены, изменены и удалены командами, изменяющими данные. Это называется также защитой на уровне строк (RLS, Row-Level Security). Суперпользователи и роли с атрибутом BYPASSRLS всегда обращаются к таблице, минуя систему защиты строк. Более детально о RLS читайте в официальной документации или в переводе на русский.

Атрибуты ролей могут быть изменены после создания командой ALTER ROLE. Для получения более детальной информации Вам следует обратиться к справке по командам CREATE ROLE и ALTER ROLE.

Давайте добавим право LOGIN и CREATEDB для нашей роли utest2:

А теперь отберем у роли utest2 право CREATEDB и добавим CREATEROLE и REPLICATION:

Отдельно нужно упомянуть про такую вещь как членство в роли.
Часто бывает удобным сгруппировать пользователей для упрощения администрирования привилегий: привилегии выдаются или отзываются на всю группу. В PostgreSQL для этого создаётся роль, которая представляет группу, а затем членство (membership) в этой группе выдаётся ролям
индивидуальных пользователей.

Сделаем групповую роль, добавим членов и создадим новую БД в табличном пространстве fast и укажем эту групповую роль владельцем БД:

В столбце «Member of» мы видим, что utest2 является членом роли group_role1. Более подробно об этом функционале читайте в русском переводе документации.

Так же стоит отметить, что PostgreSQL имеется набор предопределённых ролей, которые дают доступ к некоторым часто востребованным, но не общедоступным функциям и данным. Администраторы могут назначать (GRANT) эти роли пользователям и/или ролям в своей среде, таким образом открывая этим пользователям доступ к указанной функциональности и информации. Более подробно об этом функционале читайте в русском переводе документации.

Теперь давайте установим для нашей роли (пользователя) пароль, для этого воспользуемся командой ALTER USER:

Теперь мы можем попробовать подключиться к базе group_db под пользователем utest2 из консоли:

После ввода пароля mysecretpwd нас пустят в базу group_db. База пока у нас пустая, чуть ниже мы попробуем создать там простую таблицу.

Так же хочу обратить внимание на такую вещь как владелец табличного пространства, чуть выше когда мы создавали табличное пространство fast, мы его создали под пользователем postgres и его владельцем стал он, см. столбец Owner при выводе информации метакомандой \db
Поменять владельца табличного пространства можно командой ALTER TABLESPACE OWNER TO ;
Например:

5.2 Удаление ролей.

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

Если сейчас мы попытаемся удалить нашу групповую роль group_role1, то получим такую ошибку:
ERROR: role «group_role1» cannot be dropped because some objects depend on it
DETAIL: owner of database group_db

То есть наша роль является владельцем базы group_db. Чтобы решить эти проблемы нужно поменять владельца БД и только после этого удалить роль:

Как мы видим и вывода \l+ у нашей БД group_db поменялся владелец и роль group_role1 была удалена (вывод \du).

6. Работа с таблицами.

PostgreSQL — это реляционная система управления базами данных (РСУБД). Это означает, что это система управления данными, представленными в виде отношений (relation). Отношение — это математически точное обозначение таблицы.
Далее я не буду цитировать официальную документацию, что такое таблица, вы и сами можете это прочитать здесь.

Для создания таблицы в PostgreSQL как и в MySQL используется команда CREATE TABLE. В этой команде Вы должны указать как минимум имя новой таблицы и имена и типы данных каждого столбца.

Для начала мы должны подключиться в нужной нам базе, сделать это можно 2-мя способами:
1. Из консоли с помощью команды: psql -d
2. Если вы уже запустили psql и находитесь в системной БД postgres, то с помощью метакоманды ‘\c ‘ можно подключиться к другой БД

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

Для того чтобы подключиться к БД под другим пользователем нужно воспользоваться одним из способов:
1. Из консоли с помощью команды: psql -h 127.0.0.1 -U -d -W
2. Если Вы уже запустили psql и находитесь в системной БД postgres, то с помощью метакоманды ‘\c 127.0.0.1′

Для чего мы написали подключение к 127.0.0.1 через TCP? А для того, что для всех пользователей кроме системного postgres разрешено подключаться только по TCP и только с указанием пароля. Эти ограничения устанавливаются в файле /etc/postgresql/10/main/pg_hba.conf, но о них мы поговорим в следующий раз.

Далее мы подключимся к базу group_db вначале под пользователем postgres, а потом под utest и создадим простую табличку my_first_table:

Посмотрим список таблиц в БД с помощью метакоманды \dt

Теперь удалим табличку my_first_table с помощью DROP TABLE
Попытка удаления несуществующей таблицы считается ошибкой, поэтому рекомендуется использовать конструкцию DROP TABLE IF EXISTS

После удаления вывод \dt скажет нам, что в БД нет таблиц.

7. Работа со схемами.

Схема — это способ объединения таблиц, функций, операторов, типов данных и других объектов в БД.
Одно и то же имя объекта можно свободно использовать в разных схемах, например и schema1, и myschema могут содержать таблицы с именем mytable. В отличие от баз данных, схемы не ограничивают доступ к данным: пользователи могут обращаться к объектам в любой схеме текущей базы данных, если им назначены соответствующие права.

Для создания схемы используется команда CREATE SCHEMA ;

Чтобы создать объекты в схеме или обратиться к ним, указывайте полное имя, состоящее из имён схемы и объекта, разделённых точкой:

Этот синтаксис работает везде, где ожидается имя таблицы, включая команды модификации таблицы и команды обработки данных, обсуждаемые в следующих главах. (Для краткости мы будем говорить только о таблицах, но всё это распространяется и на другие типы именованных объектов, например, типы и функции.)

Есть ещё более общий синтаксис

При создании схемы так же как и при создании таблиц её владельцем становится текущий пользователь, об этом не стоит забывать!

Создадим схему и таблицу в ней:

Посмотрим список схем (метакоманда \dn):

Чтобы найти нашу таблицу мы должны будем обращаться к ней по полному пути, но вывод списка таблиц через метакоманду \dt не выведет нашу новую таблицу из схемы sc_test, чтобы он вывел таблицу мы должны добавить путь поиска схемы, это делается командой:

Чтобы не вводить SET search_path TO каждый раз мы можем задать search_path для конкретного пользователя на постоянной основе командой:

После этого мы сможем вывести список наших таблиц из схемы public и новой sc_test:

А что же за схема public? А дело вот в чем, до этого мы создавали таблицы, не указывая никакие имена схем, думаю Вы помните. По умолчанию такие таблицы (и другие объекты) автоматически помещаются в схему ‘public’. Она содержится во всех создаваемых базах данных. Таким образом, до того как мы указали путь поиска нашей новой схемы, команда:

Указав путь поиска схемы мы можем выполнить DROP TABLE my_first_table; без указания схемы, но тут есть нюанс:
ВНИМАНИЕ! Т.к. мы можем создавать одинаковые по именам объекты в разных схемах, то порядок поиска схем в путь будет иметь значение при разных операциях (создание, модификацию, удаления и др.) над объектами, вывести список путей поиска схем можно командой:

Таким образом DROP TABLE my_first_table; первым делом удалит таблицу из схемы sc_test если она там есть, а повторный вызов DROP TABLE my_first_table; уже удалит таблицу из схемы public, при её наличии там.
Вот поэтому если Вы используете схемы, то и все операции над объектами должны выполнятся с указанием полного имени объекта.

Для удаления схемы нужно воспользоваться командой DROP SCHEMA ;
Попытка удаления несуществующей схемы считается ошибкой, поэтому рекомендуется использовать конструкцию DROP SCHEMA IF EXISTS ;

Если в схеме есть объекты, то при попытке её удаление будет выведена ошибка, пример:

В таком случае нужно воспользоваться доп. опцией CASCADE, например:

Как мы видим, схема sc_test и таблица my_first_table были удалены.

На этом все, до скорых встреч.

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

Добавить комментарий