Вам бонус- начислено 1 монета за дневную активность. Сейчас у вас 1 монета

PostgreSQL - обзор базы данных , основы кратко

Лекция



Привет, Вы узнаете о том , что такое postgresql, Разберем основные их виды и особенности использования. Еще будет много подробных примеров и описаний. Для того чтобы лучше понимать что такое postgresql , настоятельно рекомендую прочитать все из категории Базы данных, знаний и хранилища данных. Big data, СУБД и SQL и noSQL.

Поддержка стандартов, возможности, особенности

PostgreSQL базируется на языке SQL и поддерживает многие из возможностей стандарта SQL:2011.

На данный момент PostgreSQL имеются следующие ограничения:

  • Максимальный размер базы данных: нет ограничений
  • Максимальный размер таблицы: 32 Тбайт
  • Максимальный размер записи: 1,6 Тбайт
  • Максимальный размер поля: 1 Гбайт
  • Максимум записей в таблице: нет ограничений
  • Максимум полей в записи: 250 - 1600, в зависимости от типов полей
  • Максимум индексов в таблице: нет ограничений

Важнейшие ТТХ PostgreSQL

  • Надежность и устойчивость. Надежность PostgreSQL является известным фактом, доказанным на примере многих проектов, в которых PostgreSQL работает без сбоев под высокими нагрузками на протяжении нескольких лет.
  • Превосходная поддержка. Сообщество PostgreSQL предоставляет квалифицированную и быструю помощь. Коммерческие компании предлагают свои услуги по всему миру.
  • Конкурентная работа при большой нагрузке. PostgreSQL использует многоверсионность (MVCC) для обеспечения надежной и быстрой работы в конкурентных условиях под высокой нагрузкой.
  • Масштабируемость. PostgreSQL отлично использует современную архитектуру многоядерных процессоров – его производительность растет линейно вплоть до 64-х ядер. Кластерные решения на основе Postgres-XC, Postgres-XL помогают с горизонтальной масштабируемостью.
  • Кроссплатформенность. PostgreSQL работает под всеми видами UNIX-подобных систем, включая Linux, FreeBSD, Solaris, HP/UX, Mac OS X, а также под MS Windows.
  • Расширяемость. Доступны исходные коды PostgreSQL, что делает возможным добавление новой функциональности для вашего проекта без дополнительных проблем. Расширяемость PostgreSQL позволяет создавать новые типы данных и методы доступа.
  • Доступность. PostgreSQL распространяется под лицензией, близкой к BSD, которая не накладывает никаких ограничений на коммерческое использование и не требует лицензионных выплат.

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

  • Высокий уровень соответствия ANSI SQL 92, ANSI SQL 99 и ANSI SQL 2003, 2011.
  • Интерфейсы для Tcl, Perl, C, C++, PHP, JSON, ODBC, JDBC, Embedded SQL in C, Python, Ruby, Java и других.
  • Интеграция защиты данных с операционной системой (SE-Linux).
  • Представления, последовательности, наследование, outer joins, подзапросы, ссылочная целостность, оконные функции, CTE (рекурсивные запросы).
  • Пользовательские функции, хранимые процедуры, триггеры.
  • Процедурные языки PL/PgSQL, PL/Perl, PL/Python, PL/Java и другие.
  • Расширяемый набор типов данных с поддержкой индексов (GiST, GIN, SP-GiST).
  • Встроенная система полнотекстового поиска с поддержкой всех европейских языков.
  • Встроенная поддержка слабоструктурированных данных (xml, json, jsonb) с поддержкой индексов.
  • Горячее резервирование и репликация (синхронная, асинхронная, каскадная), PITR, двунаправленная (BDR).
  • Полная поддержка ACID, уровни изоляции, эффективная сериализация транзакций.
  • Функциональные и частичные индексы.
  • Интернационализация, поддержка Unicode и locale.
  • Загружаемые расширения, например, PostGIS, hstore.
  • Поддержка SSL и Kerberos-аутентификации.
  • Foreign Data Wrappers (writable), поддержка всех основных баз данных.

Функции

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

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

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

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

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

Триггеры

Триггеры определяются как функции, инициируемые DML-операциями. Например, операция INSERT может запускать триггер, проверяющий добавленную запись на соответствия определенным условиям. При написании функций для триггеров могут использоваться различные языки программирования.

Триггеры ассоциируются с таблицами. Множественные триггеры выполняются в алфавитном порядке.

Правила и представления

Механизм правил (rules) представляет собой механизм создания пользовательских обработчиков не только DML-операций, но и операции выборки. Основное отличие от механизма триггеров заключается в том, что правила срабатывают на этапе разбора запроса, до выбора оптимального плана выполнения и самого процесса выполнения. Правила позволяют переопределять поведение системы при выполнении SQL-операции к таблице.

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

Индексы

В PostgreSQL имеется поддержка индексов следующих типов: B-дерево, хэш, R-дерево, GiST, GIN. При необходимости можно создавать новые типы индексов, хотя это далеко не тривиальный процесс.

Индексы в PostgreSQL обладают следующими свойствами:

  • возможен просмотр индекса не только в прямом, но и в обратном порядке – создание отдельного индекса для работы конструкции ORDER BY ... DESC не нужно;
  • возможно создание индекса над несколькими столбцами таблицы, в том числе над столбцами различных типов данных;
  • индексы могут быть функциональными, т.е. Об этом говорит сайт https://intellect.icu . строиться не на базе набора значений некоего столбца(ов), а на базе набора значений функции от набора значений;
  • индексы могут быть частичными, то есть строиться только по части таблицы (по некоторой ее проекции); в некоторых случаях это помогает создавать намного более компактные индексы или достигать улучшения производительности за счет использования разных типов индексов для разных (например, с точки зрения частоты обновления) частей таблицы;
  • планировщик запросов может использовать несколько индексов одновременно для выполнения сложных запросов.

Многоверсионность (MVCC)

PostgreSQL поддерживает одновременную модификацию БД несколькими пользователями с помощью механизма Multiversion Concurrency Control (MVCC). Благодаря этому соблюдаются требования ACID, и практически отпадает нужда в блокировках чтения.

Типы данных

PostgreSQL поддерживает большой набор встроенных типов данных:

  • Численные типы
    • Целые
    • С фиксированной точкой
    • С плавающей точкой
    • Денежный тип (отличается специальным форматом вывода, а в остальном аналогичен числам с фиксированной точкой с двумя знаками после запятой)
  • Символьные типы произвольной длины
  • Двоичные типы (включая BLOB)
  • Типы «дата/время» (полностью поддерживающие различные форматы, точность, форматы вывода, включая последние изменения в часовых поясах)
  • Булев тип
  • Перечисление
  • Геометрические примитивы
  • Сетевые типы
    • IP и IPv6-адреса
    • CIDR-формат
    • MAC-адрес
  • UUID-идентификатор
  • XML-данные
  • Массивы
  • JSON
  • Идентификаторы объектов БД
  • Псевдотипы
  • Типы для текстового поиска
  • Диапазонные типы

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

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

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

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

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

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

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

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

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

Заключение

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

Обычно PostgreSQL сравнивают с MySQL. Но на данный момент PostgreSQL далеко обходит по возможностям MySQL. И, благодаря своим возможностям по аналитике данных и манипулированию ими, зачастую может конкурировать с признанными лидерами рынка enterprise-СУБД: Oracle и MS SQL.

А благодаря своим возможностям в области хранения нереляционных данных (JSON, text search types, HStore) PostgreSQL напрямую конкурирует с NoSQL-решениями (например, MongoDB).

Сводная таблица основных реляционных баз данных

Название ASE DB2 FireBird InterBase MS SQL MySQL Oracle PostgreSQL
ACID Yes Yes Yes Yes Yes Depends1 Yes Yes
Referential integrity Yes Yes Yes Yes Yes Depends1 Yes Yes
Transaction Yes Yes Yes Yes Yes Depends1 Yes Yes
Unicode Yes Yes Yes Yes Yes Yes Yes Yes
Schema Yes Yes Yes Yes Yes No Yes Yes
Temporary table No Yes No Yes Yes Yes Yes Yes
View Yes Yes Yes Yes Yes No Yes Yes
Materialized view No Yes No No No No Yes No3
Expression index No No No No No No Yes Yes
Partial index No No No No No No No Yes
Inverted index No No No No No Yes No No
Bitmap index No Yes No No No No Yes No
Domain No No Yes Yes No No Yes Yes
Cursor Yes Yes Yes Yes Yes No Yes Yes
User Defined Functions Yes Yes Yes Yes Yes No4 Yes Yes
Trigger Yes Yes Yes Yes Yes No4 Yes Yes
Stored procedure Yes Yes Yes Yes Yes No4 Yes Yes
Tablespace Yes Yes No ? Yes No1 Yes Yes
Название ASE DB2 FireBird InterBase MS SQL MySQL Oracle PostgreSQ

Вау!! 😲 Ты еще не читал? Это зря!

Прочтение данной статьи про postgresql позволяет сделать вывод о значимости данной информации для обеспечения качества и оптимальности процессов. Надеюсь, что теперь ты понял что такое postgresql и для чего все это нужно, а если не понял, или есть замечания, то не стесняйся, пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории Базы данных, знаний и хранилища данных. Big data, СУБД и SQL и noSQL

создано: 2017-03-23
обновлено: 2021-04-01
285



Рейтиг 9 of 10. count vote: 2
Вы довольны ?:


Поделиться:

Найди готовое или заработай

С нашими удобными сервисами без комиссии*

Как это работает? | Узнать цену?

Найти исполнителя
$0 / весь год.
  • У вас есть задание, но нет времени его делать
  • Вы хотите найти профессионала для выплнения задания
  • Возможно примерение функции гаранта на сделку
  • Приорететная поддержка
  • идеально подходит для студентов, у которых нет времени для решения заданий
Готовое решение
$0 / весь год.
  • Вы можите продать(исполнителем) или купить(заказчиком) готовое решение
  • Вам предоставят готовое решение
  • Будет предоставлено в минимальные сроки т.к. задание уже готовое
  • Вы получите базовую гарантию 8 дней
  • Вы можете заработать на материалах
  • подходит как для студентов так и для преподавателей
Я исполнитель
$0 / весь год.
  • Вы профессионал своего дела
  • У вас есть опыт и желание зарабатывать
  • Вы хотите помочь в решении задач или написании работ
  • Возможно примерение функции гаранта на сделку
  • подходит для опытных студентов так и для преподавателей

Комментарии


Оставить комментарий
Если у вас есть какое-либо предложение, идея, благодарность или комментарий, не стесняйтесь писать. Мы очень ценим отзывы и рады услышать ваше мнение.
To reply

Базы данных, знаний и хранилища данных. Big data, СУБД и SQL и noSQL

Термины: Базы данных, знаний и хранилища данных. Big data, СУБД и SQL и noSQL