Skip to content

Столбцы, допускающие и не допускающие значения NULL, и добавление Not Null без ступора в PostgreSQL

Пересказ статьи rohind. Nullable vs Non-Nullable Columns and Adding Not Null Without Downtime in PostgreSQL


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

Начнем с определений. Термины Nullable и non-nullable для столбцов используются для описания возможности для столбца таблицы базы данных допускать или не допускать значения NULL. NULL означает неизвестные или отсутствующие данные. Это не то же самое, что пустая строка или число нуль. Например, вам требуется вставить адрес электронной почты контакта в таблицу. Если вы не знаете, имеет ли контакт электронную почту, вы можете вставить NULL в столбец электронного адреса. В этом случае NULL означает, что электронный адрес неизвестен. NULL ничему не равен, даже самому себе. Выражение 'NULL == NULL' возвращает 'NULL', поскольку два неизвестных значения не должны быть равными. Для проверки наличия значения 'NULL' вы используете логический оператор 'IS NULL'. Оператор ниже вернет true для значения NULL или false в противном случае.
Continue reading "Столбцы, допускающие и не допускающие значения NULL, и добавление Not Null без ступора в PostgreSQL"

Типы индексов в PostgreSQL: изучаем PostgreSQL вместе с Grant Fritchey

Пересказ статьи Grant Fritchey. Index Types in PostgreSQL: Learning PostgreSQL with Grant


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

В этой статье я собираюсь пройтись по индексам различных типов и поведению некоторых индексов. Мы узнаем, что такое индексы, как они работают и как наилучшим образом применять их в ваших базах данных. Я надеюсь, что вы разовьете понимание того, какие индексы будут работать лучше в той или иной ситуации.
Continue reading "Типы индексов в PostgreSQL: изучаем PostgreSQL вместе с Grant Fritchey"

Основы PostgreSQL: роли и привилегии

Пересказ статьи Ryan Booz. PostgreSQL Basics: Roles and Privileges


Информационная безопасность, касается ли это баз данных, приложений или больших ИТ-систем, основана на принципах аутентификации (Authentication) и авторизации (Authorization), которые часто именуют как AuthN и AuthZ соответственно.

Безопасность в PostgreSQL также включает создание ролей, которые разрешают доступ к ресурсам сервера (AuthN) с последующим предоставлением соответствующих привилегий на объекты базы данных (AuthZ). Понимание того, как каждый из этих компонентов работает совместно с другими, является существенным для эффективного управления безопасностью на кластере PostgreSQL. Continue reading "Основы PostgreSQL: роли и привилегии"

Функции пользователя в PostgreSQL

Пересказ статьи Shivayan Mukherjee. PostgreSQL User Defined Functions


Здесь мы узнаем об определяемых пользователем функциях в PostgreSQL, а именно, что такое пользовательская функция, как ее создать и использовать в запросах и PgAdmin GUI, об их преимуществах. Будут рассмотрены некоторые примеры. Continue reading "Функции пользователя в PostgreSQL"

Триггеры в PostgreSQL: часть 2

Пересказ статьи Shivayan Mukherjee. PostgreSQL Triggers Part 2


Обзор статьи


В этой статье мы узнаем, как удалять, изменять, включать и выключать триггер в PostgreSQL. В первой части этой серии был сделан общий обзор триггеров базы данных, специфики триггеров в PostgreSQL, типов триггеров PostgreSQL и того, как создать триггер в базовом синтаксисе на примерах. Если вы пропустили эту статью, вот ссылка на нее. Continue reading "Триггеры в PostgreSQL: часть 2"

Триггеры в PostgreSQL: часть 1

Пересказ статьи Shivayan Mukherjee. PostgreSQL Triggers Part 1


Содержание статьи


В этой статье рассматриваются следующие темы:

  • Концепция триггера базы данных

  • Типы триггеров

  • Ключевые отличия триггера в PostgreSQL от триггера в SQL Server

  • Обзор операций триггера в PostgreSQL

  • Доступ к триггеру посредством pgAdmin и psql

Continue reading "Триггеры в PostgreSQL: часть 1"

Введение в управление параллелизмом в PostgreSQL

Пересказ статьи Paul S.Randal. An Introduction to PostgreSQL Concurrency Control


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

PostgreSQL использует оптимистическую систему изоляции, известную как Многоверсионный Контроль Параллелизма (MVCC). MVCC гарантирует, что транзакции, записывающие данные в базу, не блокируют параллельные транзакции, которым требуется читать модифицируемые данные. Это работает посредством магии версионности строк - PostgreSQL создает версии строк в таблицах базы данных для минимизации блокировок при параллельном доступе. По мере того, как все больше версий создается, для обеспечения надлежащего обслуживания таблиц должен использоваться механизм управления сборкой мусора, называемый VACUUM. В настоящей статье я объясню, как все это работает на ряде примеров. Continue reading "Введение в управление параллелизмом в PostgreSQL"

Введение в B-Tree и хэш-индексы в PostgreSQL

Пересказ статьи Paul S. Randal. An Introduction to B-Tree and Hash Indexes in PostgreSQL


В этой статье изучаются реализация B-Tree (B означает сбалансированное) и структуры данных хэш-индекса в PostgreSQL. По мере роста популярности PostgreSQL в качестве системы баз данных с открытыми кодами для разработчиков и как цель для переноса рабочей нагрузки Oracle, понимание работы индексов в PostgreSQL исключительно важно для разработчиков и администраторов баз данных. PostgreSQL имеет несколько других типов индексов, таких как индексы GIN, индексы GiST и индексы BRIN. В этой статье я не буду их рассматривать, поскольку они специфичны для поиска в тексте, географических и других сложных типов данных. И, хотя использование индекса B-Tree покрывает примерно 90% случаев использования, хэш-индексы и их концепция также важны для понимания.
Continue reading "Введение в B-Tree и хэш-индексы в PostgreSQL"

Типы данных в PostgreSQL: изучаем PostgreSQL с Grant Fritchey

Пересказ статьи Grant Fritchey. Data Types in PostgreSQL: Learning PostgreSQL with Grant


Когда я решил, что следующая статья должна быть посвящена типам данных, я мало представлял себе, во что ввязываюсь. Согласно официальной документации PostgreSQL, имеется двадцать категорий типов данных. В SQL Server есть всего 35 типов данных. Я думал о том, как изучить эти типы данных и написать об этом статью. Я решил, что статья будет посвящена только категориям типов данных, а затем каким-либо интересным моментам в этих категориях. Поэтому я не собираюсь сейчас углубляться в конкретные типы данных. Это просто слишком обширная тема. Continue reading "Типы данных в PostgreSQL: изучаем PostgreSQL с Grant Fritchey"

Создание резервных копий и восстановление в PostgreSQL: Изучение PostgreSQL с Grant Fritchey

Пересказ статьи Grant Fritchey. How to back up and restore in PostgreSQL: Learning PostgreSQL with Grant


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

Вместо того, чтобы сразу говорить о создании резервных копий, давайте поговорим о восстановлении. Continue reading "Создание резервных копий и восстановление в PostgreSQL: Изучение PostgreSQL с Grant Fritchey"

Создание базы данных и таблиц в PostgreSQL: Изучение PostgreSQL с Grant Fritchey

Пересказ статьи Grant Fritchey. Creating a Database and Tables in PostgreSQL: Learning PostgreSQL with Grant


У вас есть локально работающий экземпляр PostgreSQL. Что дальше? Создание резервных копий. Но прежде мне нужно создать базу данных и пару таблиц, чтобы было что архивировать.

Как и в любой системе управления данными, имеется много способов это сделать. Вы можете делать все в командной строке или же использовать графический интерфейс пользователя (GUI), который позволяет вам работать с PostgreSQL. Команды SQL доступны сразу, как только вы подключились к PostgreSQL. Здесь я, в первую очередь, буду работать с Azure Data Studio (ADS). Это обусловлено тем, что:

  1. Мне нравится Azure Data Studio. С ней легко работать. Она быстрая. Она чистая. Она имеет плагины для выполнения различных вещей.

  2. Например, она очень хорошо подключается к GitHub, поэтому вы можете легко держать разрабатываемые коды на GitHub.

  3. Мне просто более комфортно работать над кодом с выделенным инструментом, а не просто выполняя его из командной строки.

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


Итак, начнем. Continue reading "Создание базы данных и таблиц в PostgreSQL: Изучение PostgreSQL с Grant Fritchey"

Обзор соединений в PostgreSQL

Пересказ статьи Everett Berry. Inspecting Joins in PostgreSQL


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

Введение


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

PostgreSQL использует много алгоритмов соединения таблиц. В этой статье мы рассмотрим, как соединения работают за сценой с точки зрения планировщика, и поймем, как их оптимизировать. Continue reading "Обзор соединений в PostgreSQL"

Типы данных varchar в SQL Server, Oracle и PostgreSQL

Пересказ статьи Andrea Gnemmi. Varchar Data Types in SQL Server, Oracle and PostgreSQL


Здесь мы рассмотрим как сохранить максимальное число символов в столбце переменной длины и различия между тремя системами баз данных. В частности, будут рассмотрены различные процедуры, используемые для хранения больших строк в столбце с целью обработки большого текста или структурированных данных типа JSON (будет отдельная статья). Continue reading "Типы данных varchar в SQL Server, Oracle и PostgreSQL"

Пропуски в столбце SQL Identity и пересчет в SQL Server, Oracle и PostgreSQL

Пересказ статьи Andrea Gnemmi. SQL Identity Column Gaps and Conversion in SQL Server, Oracle and PostgreSQL


В первой части этой серии статей мы узнали, что представляет собой столбец identity, а также различные способы его установки и модификации в SQL Server, Oracle и PostgreSQL. Теперь мы глубже заглянем в столбцы identity и рассмотрим такие вопросы, как кэширование значений identity и как преобразовать существующий столбец (содержащий данные) в столбец identity. Continue reading "Пропуски в столбце SQL Identity и пересчет в SQL Server, Oracle и PostgreSQL"

Конфигурирование связанного сервера между SQL Server и PostgreSQL при использовании ODBC-драйверов

Пересказ статьи Nisarg Upadhyay. Configure a Linked Server between SQL Server and PostgreSQL using ODBC drivers


В этой статье рассматривается конфигурирование связанного сервера между SQL Server 2019 и PostgreSQL. Моя предыдущая статья под названием Configure ODBC drivers for PostgreSQL являлась введением в драйвер ODBC для PostgreSQL. Мы рассмотрели как загрузить, установить и сконфигурировать драйвер. Теперь мы узнаем как использовать драйвер ODBC для доступа к данным в PostgreSQL из SQL Server 2019.
Continue reading "Конфигурирование связанного сервера между SQL Server и PostgreSQL при использовании ODBC-драйверов"