Главная страница
Навигация по странице:

  • Надежность и устойчивость

  • Поддержка транзакционности

  • Для разработчиков приложений

  • Масштабируемость и производительность

  • Возможности индексирования

  • Установка и начало работы

  • Как установить Postgresql на Linux и Windows с. 16


    Скачать 1.38 Mb.
    Название Как установить Postgresql на Linux и Windows с. 16
    Дата10.07.2022
    Размер1.38 Mb.
    Формат файлаpdf
    Имя файлаpotgresql.pdf
    ТипДокументы
    #628132
    страница1 из 8
      1   2   3   4   5   6   7   8

    Предисловие
    Эту небольшую книгу мы написали для тех, кто только начинает знакомиться с PostgreSQL. Из нее вы узнаете:
    • Что вообще такое, этот PostgreSQL . . . . . . . . . . . . . . . . . . .с.2
    • Как установить PostgreSQL на Linux и Windows . . .с.16
    • Как подключиться к серверу, начать писать
    SQL-запросы и применять транзакции . . . . . . . . . . . . . с.29
    • Как продолжить самостоятельное изучение
    SQL с помощью демобазы . . . . . . . . . . . . . . . . . . . . . . . . . . . с.59
    • Про возможности полнотекстового поиска . . . . . . . . с.88
    • Про работу с данными в формате JSON . . . . . . . . . . . . с.96
    • Как использовать PostgreSQL в качестве базы данных для вашего приложения . . . . . . . . . . . . . с.106
    • Про полезную программу pgAdmin . . . . . . . . . . . . . . . с.120
    • Где найти документацию и пройти обучение . . . . с.128
    • Как быть в курсе происходящего . . . . . . . . . . . . . . . . . . с.139
    • И немного про компанию Postgres Professional . с.143
    Мы надеемся, что наша книга сделает ваш первый опыт работы с PostgreSQL приятным и поможет влиться в со- общество пользователей этой СУБД.
    Электронная версия книги доступна по адресу:
    postgrespro.ru/education/introbook
    Желаем удачи!
    1

    О PostgreSQL
    PostgreSQL — наиболее полнофункциональная, свобод- но распространяемая СУБД с открытым кодом. Разра- ботанная в академической среде, за долгую историю сплотившая вокруг себя широкое сообщество разработ- чиков, эта СУБД обладает всеми возможностями, необ- ходимыми большинству заказчиков. PostgreSQL активно применяется по всему миру для создания критичных бизнес-систем, работающих под большой нагрузкой.
    Немного истории
    Современный PostgreSQL ведет происхождение от про- екта POSTGRES, который разрабатывался под руковод- ством Майкла Стоунбрейкера (Michael Stonebraker), про- фессора Калифорнийского университета в Беркли. До этого Майкл Стоунбрейкер уже возглавлял разработ- ку INGRES — одной из первых реляционных СУБД, —
    и POSTGRES возник как результат осмысления преды- дущей работы и желания преодолеть ограниченность жесткой системы типов.
    Работа над проектом началась в 1985 году, и до 1988
    года был опубликован ряд научных статей, описыва-
    2
    ющих модель данных, язык запросов POSTQUEL (в то время SQL еще не был общепризнанным стандартом)
    и устройство хранилища данных.
    POSTGRES иногда еще относят к так называемым по- стреляционным СУБД. Ограниченность реляционной мо- дели всегда была предметом критики, хотя и являлась обратной стороной ее простоты и строгости. Однако проникновение компьютерных технологий во все сферы жизни требовало новых приложений, а от баз данных —
    поддержки новых типов данных и таких возможностей,
    как наследование, создание сложных объектов и управ- ление ими.
    Первая версия СУБД была выпущена в 1989 году. База данных совершенствовалась на протяжении несколь- ких лет, а в 1993 году, когда вышла версия 4.2, проект был закрыт. Но, несмотря на официальное прекращение,
    открытый код и BSD-лицензия позволили выпускникам
    Беркли Эндрю Ю и Джоли Чену в 1994 году взяться за его дальнейшее развитие. Они заменили язык запросов
    POSTQUEL на ставший к тому времени общепринятым
    SQL, а проект нарекли Postgres95.
    К 1996 году стало ясно, что название Postgres95 не вы- держит испытание временем, и было выбрано новое имя — PostgreSQL, которое отражает связь и с ориги- нальным проектом POSTGRES, и с переходом на SQL.
    Именно поэтому PostgreSQL произносится «постгрес-ку- эль» или просто «постгрес», но только не «постгре».
    Новая версия стартовала как 6.0, продолжая исходную нумерацию. Проект вырос, и управление им взяла на
    3
    себя поначалу небольшая группа инициативных поль- зователей и разработчиков, которая получила название
    Глобальной группы разработки PostgreSQL (PostgreSQL
    Global Development Group).
    Развитие
    Все основные решения о планах развития и выпусках новых версий принимаются Управляющим комитетом
    (Core team) проекта. В настоящий момент он состоит из пяти человек.
    Помимо обычных разработчиков, вносящих посильную лепту в развитие системы, выделяется группа основных разработчиков (major contributors), сделавших суще- ственный вклад в развитие PostgreSQL, а также группа разработчиков, имеющих право записи в репозиторий исходного кода (committers). Состав группы разработ- чиков со временем меняется, появляются новые члены,
    кто-то отходит от проекта. Актуальный список разра- ботчиков поддерживается на официальном сайте Post- greSQL www.postgresql.org.
    Вклад российских разработчиков в PostgreSQL весьма значителен. Это, пожалуй, самый крупный глобальный проект с открытым исходным кодом с таким широким российским представительством.
    Большую роль в становлении и развитии PostgreSQL
    сыграл программист из Красноярска Вадим Михеев,
    4
    входивший в Управляющий комитет. Он является авто- ром таких важнейших частей системы, как многоверси- онное управление одновременным доступом (MVCC),
    система очистки (vacuum), журнал транзакций (WAL),
    вложенные запросы, триггеры. Сейчас Вадим уже не за- нимается проектом.
    В настоящий момент в число основных разработчиков входят трое представителей России — Олег Бартунов,
    Федор Сигаев и Александр Коротков, — основавших в 2015 году компанию Postgres Professional. Среди круп- ных направлений выполненных ими работ можно выде- лить локализацию PostgreSQL (поддержка национальных кодировок и Unicode), систему полнотекстового поис- ка, работу с массивами и слабо-структурированными данными (hstore, json, jsonb), новые методы индексации
    (GiST, SP-GiST, GIN и RUM, Bloom). Они являются автора- ми большого числа популярных расширений.
    Цикл работы над очередной версией PostgreSQL обычно занимает около года. За это время от всех желающих принимаются на рассмотрение патчи с исправления- ми, изменениями и новым функционалом. Для обсужде- ния патчей по традиции используется список рассылки pgsql-hackers. Если сообщество признает идею полез- ной, ее реализацию — правильной, а код проходит обя- зательную проверку другими разработчиками, то патч включается в новый релиз.
    В некоторый момент объявляется этап стабилизации ко- да — новый функционал откладывается до следующей версии, а продолжают приниматься только исправле- ния или улучшения уже включенных в релиз патчей.
    5

    Несколько раз в течение релизного цикла выпускаются бета-версии, ближе к концу цикла появляется релиз- кандидат, а вскоре выходит и новая основная версия
    (major version) PostgreSQL.
    Раньше номер основной версии состоял из двух чисел,
    но, начиная с 2017 года, было решено оставить только одно. Таким образом, за 9.6 последовала 10 — она и яв- ляется последней актуальной версией PostgreSQL. Сле- дующая версия, запланированная на осень 2018 года,
    будет иметь номер 11.
    В процессе работы над новой версией находятся и ис- правляются ошибки. Наиболее критические из них ис- правляются не только в текущей, но и в предыдущих версиях. По мере накопления таких исправлений при- нимается решение о выпуске дополнительных версий
    (minor version), совместимых со старыми. Например,
    версия 9.6.6 содержит только исправления ошибок, най- денных в 9.6, а 10.2 будет содержать исправления для версии 10.
    Поддержка
    Глобальная группа разработки PostgreSQL выполняет поддержку основных версий системы в течение пяти лет с момента выпуска. Эта поддержка, как и координа- ция разработки, осуществляется через списки рассылки.
    Корректно оформленное сообщение об ошибке имеет все шансы на скорейшее решение: нередки случаи, ко- гда исправления ошибок выпускаются в течение суток.
    6

    Помимо поддержки сообществом разработчиков, ряд компаний по всему миру осуществляет коммерческую поддержку PostgreSQL. В России такой компанией явля- ется Postgres Professional (www.postgrespro.ru), предо- ставляя услуги по поддержке в режиме 24x7.
    Современное состояние
    PostgreSQL является одной из самых популярных баз данных. За более чем 20-летнюю историю развития на прочном фундаменте, заложенном академической разработкой, PostgreSQL выросла в полноценную СУБД
    уровня предприятия и составляет реальную альтерна- тиву коммерческим базам данных. Чтобы убедиться в этом, достаточно посмотреть на важнейшие харак- теристики новейшей на сегодняшний день версии Post- greSQL 10.
    Надежность и устойчивость
    Вопросы обеспечения надежности особенно важны в приложениях уровня предприятия для работы с кри- тически важными данными. С этой целью PostgreSQL
    позволяет настраивать горячее резервирование, вос- становление на заданный момент времени в прошлом,
    различные виды репликации (синхронную, асинхрон- ную, каскадную).
    7

    Безопасность
    PostgreSQL позволяет работать по защищенному SSL- соединению и предоставляет большое количество ме- тодов аутентификации, включая аутентификацию по па- ролю, клиентским сертификатам, а также с помощью внешних сервисов (LDAP, RADIUS, PAM, Kerberos).
    При управлении пользователями и доступом к объектам
    БД предоставляются следующие возможности:
    • Создание и управление пользователями и групповы- ми ролями;
    • Разграничение доступа к объектам БД на уровне как отдельных пользователей, так и групп;
    • Детальное управление доступом на уровне отдель- ных столбцов и строк;
    • Поддержка SELinux через встроенную функциональ- ность SE-PostgreSQL (мандатное управление досту- пом).
    Специальная версия PostgreSQL, выпущенная компанией
    Postgres Professional, сертифицирована ФСТЭК для ис- пользования в системах обработки конфиденциальной информации и персональных данных.
    Соответствие стандартам
    По мере развития стандарта ANSI SQL его поддерж- ка постоянно добавлялась в PostgreSQL. Это относится
    8
    ко всем версиям стандарта: SQL-92, SQL:1999, SQL:2003,
    SQL:2008, SQL:2011. Поддержку стандартизованной в не- давней версии SQL:2016 работы с JSON планируется до- бавить в PostgreSQL 11. В целом PostgreSQL обеспечи- вает высокий уровень соответствия стандарту и поддер- живает 160 из 179 обязательных возможностей, а также большое количество необязательных.
    Поддержка транзакционности
    PostgreSQL обеспечивает полную поддержку свойств
    ACID и обеспечивает эффективную изоляцию транзак- ций. Для этого в PostgreSQL используется механизм многоверсионного управления одновременным досту- пом (MVCC). Он позволяет обходиться без блокировок во всех случаях, кроме одновременного изменения од- ной и той же строки данных в нескольких процессах.
    При этом читающие транзакции никогда не блокиру- ют пишущие транзакции, а пишущие — читающих. Это справедливо и для самого строгого уровня изоляции serializable, который, используя инновационную систему
    Serializable Snapshot Isolation, обеспечивает полное от- сутствие аномалий сериализации и гарантирует, что при одновременном выполнении транзакций результат бу- дет таким же, как и при последовательном выполнении.
    Для разработчиков приложений
    Разработчики приложений получают в свое распоряже- ние богатый инструментарий, позволяющий реализовать
    9
    приложения любого типа:
    • Возможность использования различных языков для серверного программирования: встроенного PL/pgSQL
    (удобного тесной интеграцией с SQL), C для критич- ных по производительности задач, Perl, Python, Tcl,
    а также JavaScript, Java и других;
    • Программные интерфейсы для обращения к СУБД из приложений на любом языке, включая стандартные интерфейсы ODBC и JDBC;
    • Набор объектов баз данных, позволяющий эффектив- но реализовать логику любой сложности на стороне сервера: таблицы и индексы, ограничения целостно- сти, представления и материализованные представ- ления, последовательности, секционирование, под- запросы и with-запросы (в том числе рекурсивные),
    агрегатные и оконные функции, хранимые функции,
    триггеры и т. д.;
    • Встроенная гибкая система полнотекстового поиска с поддержкой русского и всех европейских языков,
    дополненная эффективным индексным доступом;
    • Поддержка слабоструктурированных данных в духе
    NoSQL: хранилище пар «ключ-значение» hstore, xml,
    json (как в текстовом, так и в эффективном двоичном представлении jsonb);
    • Подключение источников данных, включая все ос- новные СУБД, в качестве внешних таблиц по стан- дарту SQL/MED с возможностью их полноценного ис- пользования, в том числе для записи и распределен- ного выполнения запросов (Foreign Data Wrappers).
    10

    Масштабируемость и производительность
    PostgreSQL эффективно использует современную архи- тектуру многоядерных процессоров — его производи- тельность растет практически линейно с увеличением количества ядер.
    Начиная с версии 9.6 PostgreSQL умеет работать с дан- ными в параллельном режиме, что на сегодняшний день включает параллельное чтение (включая индексное сканирование), соединение и агрегации. Это еще боль- ше повышает возможности использования аппаратных средств для ускорения операций.
    Планировщик запросов
    В PostgreSQL используется планировщик запросов, осно- ванный на стоимости. Используя собираемую статистику и учитывая в своих математических моделях как дис- ковые операции, так и время работы процессора, пла- нировщик позволяет оптимизировать самые сложные запросы. В его распоряжении находятся все методы доступа к данным и способы выполнения соединений,
    характерные для передовых коммерческих СУБД.
    Возможности индексирования
    В PostgreSQL реализованы различные методы индек- сирования. Помимо традиционных B-деревьев, также доступны:
    11

    • GiST — обобщенное сбалансированное дерево поис- ка, которое может применяться для данных, не до- пускающих упорядочения. Примерами могут служить
    R-деревья для индексирования точек на плоскости с возможностью поиска ближайших соседей (k-NN
    search) и индексирование операции пересечения ин- тервалов;
    • SP-GiST — обобщенное несбалансированное дерево поиска, основанное на разбиении области значений на непересекающиеся вложенные области. Примера- ми могут служить дерево квадрантов и префиксное дерево;
    • GIN — обобщенный инвертированный индекс. Основ- ной областью применения является полнотекстовый поиск, где требуется находить документы, в которых встречается указанные в поисковом запросе слова.
    Другим примером использования является поиск значений в массивах данных;
    • RUM — дальнейшее развитие метода GIN для пол- нотекстового поиска. Этот индекс, доступный в виде расширения, позволяет ускорить фразовый поиск и сразу выдавать результаты упорядоченными по реле- вантности;
    • BRIN — индекс небольшого размера, позволяющий найти компромисс между размером индекса и скоро- стью поиска. Эффективен на больших кластеризован- ных таблицах;
    • Bloom — индекс, основанный на фильтре Блума (по- явился в версии 9.6). Такой индекс, имея очень ком-
    12
    пактное представление, позволяет быстро отсечь за- ведомо ненужные строки, однако требует перепро- верки оставшихся.
    За счет расширяемости набор доступных методов ин- дексного доступа постоянно увеличивается.
    Многие типы индексов могут создаваться как по одно- му, так и по нескольким столбцам таблицы. Независимо от типа, можно строить индексы не только по столбцам,
    но и по произвольным выражениям, а также создавать частичные индексы только для определенных строк. По- крывающие индексы позволяют ускорить запросы за счет того, что все необходимые данные извлекаются из самого индекса без обращения к таблице.
    Несколько индексов могут автоматически объединяться с помощью битовой карты для ускорения доступа.
    Кроссплатформенность
    PostgreSQL работает на операционных системах се- мейства Unix, включая серверные и клиентские раз- новидности Linux, FreeBSD, Solaris, macOS, а также на
    Windows.
    За счет открытого и переносимого кода на языке C Post- greSQL можно собрать на самых разных платформах,
    даже если для них отсутствует поддерживаемая сооб- ществом сборка.
    13

    Расширяемость
    Расширяемость — одно из фундаментальных преиму- ществ системы, лежащее в основе архитектуры Post- greSQL. Пользователи могут самостоятельно, не меняя базовый код системы, добавлять:
    • Типы данных;
    • Функции и операторы для работы с новыми типами;
    • Индексные методы доступа;
    • Языки серверного программирования;
    • Подключения к внешним источникам данных (Foreign
    Data Wrappers);
    • Загружаемые расширения.
    Полноценная поддержка расширений позволяет реа- лизовать функционал любой сложности, не внося изме- нений в ядро PostgreSQL и допуская подключение по мере необходимости. Например, именно в виде расши- рений построены такие сложные системы, как:
    • CitusDB — возможность распределения данных по разным экземплярам PostgreSQL (шардинг) и массив- но-параллельного выполнения запросов;
    • PostGIS — система обработки геоинформационных данных.
    Только стандартный комплект, входящий в сборку Post- greSQL 10, содержит около полусотни расширений, до- казавших свою надежность и полезность.
    14

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

    Установка
    и начало работы
    Что нужно для начала работы с PostgreSQL? В этой гла- ве мы объясним, как установить службу PostgreSQL и управлять ей, а потом создадим простую базу данных и покажем, как создать в ней таблицы. Мы расскажем и про основы языка SQL, на котором формулируются за- просы. Будет неплохо, если вы сразу начнете пробовать команды по мере чтения.
    Мы будем использовать дистрибутив Postgres Pro Stan- dard 10, разработанный в нашей компании Postgres
    Professional. Этот дистрибутив полностью совместим с обычной СУБД PostgreSQL и дополнительно включа- ет в себя некоторые разработки, выполненные в нашей компании, а также ряд возможностей, которые будут до- ступны только в следующей версии PostgreSQL.
    Итак, приступим. Установка и запуск сервера PostgreSQL
    зависит от того, какую операционную систему вы ис- пользуете. Если у вас Windows, читайте дальше; если
    Linux семейства Debian или Ubuntu — переходите сразу к с. 24.
    16

    Инструкцию по установке для других операционных си- стем вы найдете на сайте нашей компании:
    postgrespro.ru/products/download.
    Если нужной вам версии там не оказалось — восполь- зуйтесь обычным дистрибутивом PostgreSQL: инструкции находятся по адресу www.postgresql.org/download.
      1   2   3   4   5   6   7   8


    написать администратору сайта