Физическая архитектура баз данных PostgreSQL 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Физическая архитектура баз данных PostgreSQL



Цель работы

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

Теоретические сведения

PostgreSQL — свободная объектно-реляционная система управления базами данных (СУБД).

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

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

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

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

· высокопроизводительные и надёжные механизмы транзакций и репликации;

· расширяемая система встроенных языков программирования: в стандартной поставке поддерживаются PL/pgSQL, PL/Perl, PL/Python и PL/Tcl; дополнительно можно использовать PL/Java, PL/PHP, PL/Py, PL/R, PL/Ruby, PL/Scheme, PL/sh и PL/V8, а также имеется поддержка загрузки C-совместимых модулей;

· наследование;

· легкая расширяемость.

 

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

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

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

 

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

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

- простота расширения. В PostgreSQL поддерживаются пользовательские операторы, функции, методы доступа и типы данных;

- полноценная поддержка SQL. PostgreSQL соответствует базовой спецификации SQL:2011;

- гибкость API. Гибкость API PostgreSQL позволяет легко создавать интерфейсы к РСУБД PostgreSQL. В настоящее время существуют программные интерфейсы для Object Pascal, Python, Perl, PHP, ODBC, Java/JDBC, Ruby, TCL, C/ C+ и Pike;

- процедурные языки. В PostgreSQL предусмотрена поддержка внутренних процедурных языков, в том числе специализированного языка PL/pgSQL, являющегося аналогом PL/SQL, процедурного языка Oracle. Одним из преимуществ PostgreSQL является возможность использования Perl, Python и TCL в качестве внутренних процедурных языков;

- технология МVСС. MVCC (Multiversion Concurrency Control) используется в PostgreSQL для управления конкурентным доступом к данным на многовариантной основе. Эта технология позволяет предотвращать лишние блокировки (locking) операций чтения операциями, производящими обновление записей. PostgreSQL отслеживает все транзакции, выполняемые пользователями базы данных, что позволяет работать с записями без ожидания их освобождения. На практике это означает, что при запросе к БД каждая транзакция видит как бы снимок данных (версию) на момент этого снимка, а не текущее состояние данных. Таким образом, транзакции защищаются от просмотра незафиксированных данных, которые в данный момент могут только формироваться конкурентными транзакциями в тех же самых строках таблицы. Основное преимущество MMVC состоит в том, что чтение данных никогда не блокирует запись, а запись никогда не блокирует чтение.

MMVC позволяет избегать явного блокирования на уровне таблиц и отдельных записей, которое используется в традиционных СУБД, и, таким образом, минимизирует блокирование данных и увеличивает производительность в многопользовательских системах БД. Также реализовано отслеживание взаимных блокировок (deadlocks);

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

- полнотекстовый поиск. Начиная с версии 8.3 в ядро PostgreSQL включена функция полнотекстового поиска (раньше реализовалась в виде отдельного модуля-расширения). Полнотекстовый поиск позволяет создавать такие запросы к текстовым документам, которые могут гибко настраиваться в завимости от конкретных потребностей;

- сохраняющая регистрация WAL. WAL ( Write-Ahead Logging) является стандартным методом для обеспечения целостности данных. Сохраняющая регистрация - метод регистрации (журналирования) транзакций, при котором запись в журнале делается до записи данных. Используется также в MS SQL Server. Суть WAL заключается в том, что изменения в файлах данных (таблицы и индексы) должны быть внесены только после записи в журнал (log), в котором фиксируются эти изменения. Эта процедура позволяет не переписывать страницы данных на диске при каждой транзакции, так как в случае аварии мы сможем восстановить базу данных с помощью журнала. Механизм WAL обеспечивает следующие преимущества:

- повышение производительности работы СУБД за счет того, что записываются только внесенные изменения без переписывания всех данных в таблицах;

- повышение надежности храпения данных за счет предыдущего сохранения буферизованных данных в WAL;

- возможность отката состояния БД на любой момент времени, путем применения WAL к существующей резервной копии;

- репликация и технология Hot Standby. Начиная с версии 9.0, на основе WAL введена репликация по технологии Hot Standby. Технология позволяет получить на сервере вторую базу данных, которая является актуальной копией оригинальной базы данных, доступной лишь для чтения. Технология может быть использована также и на отдаленном сервере, который подключается к primary- или master-серверу и загружает из него WAL-логи, предоставляя онлайновую репликацию базы данных и поддерживая копию базы данных на отдаленном сервере в актуальном состоянии, а также делая эту копию доступной для запросов на чтение;

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

- гибкая настройка сервера. Основной конфигурационный файл postgresql.conf включает более 150 настраиваемых параметров по разделам: файлы и пути к ним, авторизация и безопасность, выделение ресурсов и т.д. Дополнительный конфигурационный файл pg_hba.conf включает в себя настройку доступа к отдельным БД, такие как указание конкретных IP-адресов и (или) сетей, из которых разрешен доступ, а также метод авторизации для доступа в БД и возможность включения безопасных (зашифрованных) соединений.

Схемы

PostgreQL поддерживает схемы. Схемы являются как бы дополнительными областями видимости внутри базы данных. Также схему можно сравнить c дополнительным путем (название схемы должно отмечаться перед названием таблицы) и с каталогом, внутри которого можно разместить таблицы. В любой базе данных по умолчанию существует схема public, в которой создаются все таблицы и которую не нужно указывать специально. Администратор БД может создавать другие схемы (и разграничивать доступ к ним), что обеспечивает еще один уровень распределения прав доступа для пользователей, позволяет выделить каждому пользователю как бы персональный раздел внутри БД с теми же названиями таблиц, что и у других пользователей.

Индексы

PostgreSQL предлагает 4 типа индексов: B-tree, Hash, GiST(Generalized Search Tree) и GIN(Generalized Inverted Index). Каждый тип индекса имеет свой алгоритм реализации, что позволяет существенно увеличить быстродействие, если для определенного вида данных выбирать определенный тип индекса.

PostgreSQL позволяет также создавать индексы с использованием выражений и частичные (partial) индексы (с использованием служебного слова WHERE).

Роли и привилегии

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

Правила

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

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

Функции

Функции являются блоками кода, выполняемыми на сервере, а не на стороне клиента БД. Иногда функции отождествляются с хранимыми процедурами, однако между этими понятиями есть разница. Хотя они могут создаваться на чистом 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 допускает использование функций, которые возвращают набор записей, который дальше можно использовать так же, как и результат выполнения обычного запроса (курсор). Функции могут выполняться как с правами их создателя, так и с правами текущего пользователя.

Начиная с 9.0, можно создавать функции без объявления имени (анонимные блоки) для выполнения блока операторов на любом встроенном языке, который поддерживает PostgreSQL, прямо в командной строке.

Типы данных

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

- численные типы;

- целые;

- с фиксированной точкой;

- с плавающей точкой;

- денежный (отличается специальным форматом вывода, а в остальном аналогичен числам с фиксированной точкой и двумя знаками после запятой);

- символьные типы произвольной длины;

- двоичные типы (включая большой двоичный объект BLOB - Binary Large Object);

- типы «дата/время» (полностью поддерживают разные форматы, точность, форматы вывода, включая последние изменения в часовых поясах);

- логический тип;

- перечислимый тип;

- геометрические примитивы;

- сетевые типы;

- IP і IPv6 –адреса;

- CIDR –формат. CIDR (Classless Inter-Domain Routing) - бесклассовая адресация - метод IP-адресации, позволяющий гибко управлять пространством IP-адресов, не используя жёстких рамок IP-адресации на основе классов сетей;

- МАС –адреса. Уникальный идентификатор, присваиваемый каждой единице сетевого оборудования;

- UUID тип. UUID (Universally Unique Identifier) – это стандарт идентификации, используемый при создании программного обеспечения. Наиболее распространённым использованием данного стандарта является Globally Unique Identifier (GUID) фирмы Microsoft;

- XML тип. XML (Xtensible Markup Language) - текстовый формат, предназначенный для хранения структурированных данных (взамен существующих файлов баз данных), для обмена информацией между программами, а также для создания на его основе более специализированных языков разметки;

- массивы;

- OID –типы. OID (Object identifiers) представляют идентификаторы различных объектов и используются обычно в PostgreSQL как первичные ключи для различных системных таблиц. Эти типы представляются как 4-байтовое целые числа без знака, т.е. имеют достаточно ограниченный диапазон значений, поэтому не могут использоваться в больших базах данных;

- композитные типы (composite type) представляет структуру ряда или записи, т.е. по существу список имен полей и их типов данных;

- псевдотипы (pseudo-types) не могут использоваться в качестве типа данных столбца таблицы или представления, но могут использоваться для объявления аргументов функции или типа результата.

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

Хотя большинство типов данных PostgreSQL взято непосредственно из стандартов SQL, существуют и другие, нестандартные типы данных (например, геометрические и сетевые типы). В таблице 1 перечислены основные базовые типы данных PostgreSQL, а также их синонимы (альтернативные имена).

Таблица 1 Типы данных PostgreSQL

Тип данных Описание Стандарт
Логические и двоичные типы данных
boolean, bool Отдельная логическая величина (true или false) SQL99
bit(n) Битовая последовательность фиксированной длины (n бит) SQL92
bit varying(n),varbit(n) Битовая последовательность переменной длины (до n бит) SQL92
Символьные типы
character(n), char(n) Символьная строка фиксированной длины (ровно n символов) SQL89
character varying(n), varchar(n) Символьная строка переменной длины (до n символов) SQL92
text Символьная строка переменной или неограниченной длины PostgreSQL
Числовые типы
smallint, int2 2-байтовое целое со знаком SQL89
integer, int, int4 4-байтовое целое со знаком SQL92
bigint, int8 8-байтовое целое со знаком, до 18 цифр PostgreSQL
real, float4 4-байтовое вещественное число SQL89
double precision, floats, float 8-байтовое вещественное число SQL89
numeric(p.s), decimal(p.s) Число из р цифр, содержащее s цифр в дробной части SQL99
money Фиксированная точность, представление денежных величин PostgreSQL, считается устаревшим
serial 4-байтовое целое с автоматическим приращением PostgreSQL
Время и дата
date Календарная дата (день, месяц и год) SQL92
time Время суток SQL92
time with time zone Время суток с информацией о часовом поясе SQL92
timestamp Дата и время SQL92
interval Произвольный интервал времени SQL92
Геометрические типы
box Прямоугольник на плоскости PostgreSQL
line Бесконечная линия на плоскости PostgreSQL
Iseg Отрезок на плоскости PostgreSQL
circle Круг с заданным центром и радиусом PostgreSQL
path Замкнутая или разомкнутая геометрическая фигура на плоскости PostgreSQL
point Точка на плоскости PostgreSQL
polygon Замкнутый многоугольник на плоскости PostgreSQL
Сетевые типы
cidr Спецификация сети IP PostgreSQL
inet Сетевой IP-адрес с необязательными битами подсети PostgreSQL
macaddr МАС-адрес (например, аппаратный адрес адаптера Ethernet) PostgreSQL
Системные типы
oid Идентификатор объекта (записи) PostgreSQL
xid Идентификатор транзакции PostgreSQL

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

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

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

- типы данных и их преобразования;

- домены;

- функции (включая агрегатные);

- индексы;

- операторы (включая переопределение уже существующих);

- процедурные языки.

Как и в SQL Server, данные в базе данных PostgreSQL организованы в нескольких разных объектах:

- домены (domains);

- конфигурация полнотекстового поиска (FTS configuration);

- словари полнотекстового поиска (FTS dictionaries);

- синтаксические анализаторы полнотекстового поиска (FTS parsers);

- шаблоны полнотекстового поиска (FTS templates);

- функции (functions);

- последовательности (sequences);

- таблицы (tables);

- триггеры (trigger functions);

- представления (views).

 

Выводы

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

Мне удалось установить последнюю на данный момент версию 9.5.1

 

Контрольные вопросы

1. Для чего предназначена и в чем суть технологии MVCC?

технология МVСС. MVCC (Multiversion Concurrency Control) используется в PostgreSQL для управления конкурентным доступом к данным на многовариантной основе. Эта технология позволяет предотвращать лишние блокировки (locking) операций чтения операциями, производящими обновление записей. PostgreSQL отслеживает все транзакции, выполняемые пользователями базы данных, что позволяет работать с записями без ожидания их освобождения. На практике это означает, что при запросе к БД каждая транзакция видит как бы снимок данных (версию) на момент этого снимка, а не текущее состояние данных. Таким образом, транзакции защищаются от просмотра незафиксированных данных, которые в данный момент могут только формироваться конкурентными транзакциями в тех же самых строках таблицы. Основное преимущество MMVC состоит в том, что чтение данных никогда не блокирует запись, а запись никогда не блокирует чтение.

MMVC позволяет избегать явного блокирования на уровне таблиц и отдельных записей, которое используется в традиционных СУБД, и, таким образом, минимизирует блокирование данных и увеличивает производительность в многопользовательских системах БД. Также реализовано отслеживание взаимных блокировок (deadlocks);

 

 

2. Что такое WAL?

сохраняющая регистрация WAL. WAL ( Write-Ahead Logging) является стандартным методом для обеспечения целостности данных. Сохраняющая регистрация - метод регистрации (журналирования) транзакций, при котором запись в журнале делается до записи данных. Используется также в MS SQL Server. Суть WAL заключается в том, что изменения в файлах данных (таблицы и индексы) должны быть внесены только после записи в журнал (log), в котором фиксируются эти изменения. Эта процедура позволяет не переписывать страницы данных на диске при каждой транзакции, так как в случае аварии мы сможем восстановить базу данных с помощью журнала. Механизм WAL обеспечивает следующие преимущества:

- повышение производительности работы СУБД за счет того, что записываются только внесенные изменения без переписывания всех данных в таблицах;

- повышение надежности храпения данных за счет предыдущего сохранения буферизованных данных в WAL;

возможность отката состояния БД на любой момент времени, путем применения WAL к существующей резервной копии;

 

1. Что представляет собой технология TOAST? В чем особенности ее реализации.

Цель работы

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

Теоретические сведения

PostgreSQL — свободная объектно-реляционная система управления базами данных (СУБД).

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

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

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

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

· высокопроизводительные и надёжные механизмы транзакций и репликации;

· расширяемая система встроенных языков программирования: в стандартной поставке поддерживаются PL/pgSQL, PL/Perl, PL/Python и PL/Tcl; дополнительно можно использовать PL/Java, PL/PHP, PL/Py, PL/R, PL/Ruby, PL/Scheme, PL/sh и PL/V8, а также имеется поддержка загрузки C-совместимых модулей;

· наследование;

· легкая расширяемость.

 

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

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

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

 

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

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

- простота расширения. В PostgreSQL поддерживаются пользовательские операторы, функции, методы доступа и типы данных;

- полноценная поддержка SQL. PostgreSQL соответствует базовой спецификации SQL:2011;

- гибкость API. Гибкость API PostgreSQL позволяет легко создавать интерфейсы к РСУБД PostgreSQL. В настоящее время существуют программные интерфейсы для Object Pascal, Python, Perl, PHP, ODBC, Java/JDBC, Ruby, TCL, C/ C+ и Pike;

- процедурные языки. В PostgreSQL предусмотрена поддержка внутренних процедурных языков, в том числе специализированного языка PL/pgSQL, являющегося аналогом PL/SQL, процедурного языка Oracle. Одним из преимуществ PostgreSQL является возможность использования Perl, Python и TCL в качестве внутренних процедурных языков;

- технология МVСС. MVCC (Multiversion Concurrency Control) используется в PostgreSQL для управления конкурентным доступом к данным на многовариантной основе. Эта технология позволяет предотвращать лишние блокировки (locking) операций чтения операциями, производящими обновление записей. PostgreSQL отслеживает все транзакции, выполняемые пользователями базы данных, что позволяет работать с записями без ожидания их освобождения. На практике это означает, что при запросе к БД каждая транзакция видит как бы снимок данных (версию) на момент этого снимка, а не текущее состояние данных. Таким образом, транзакции защищаются от просмотра незафиксированных данных, которые в данный момент могут только формироваться конкурентными транзакциями в тех же самых строках таблицы. Основное преимущество MMVC состоит в том, что чтение данных никогда не блокирует запись, а запись никогда не блокирует чтение.

MMVC позволяет избегать явного блокирования на уровне таблиц и отдельных записей, которое используется в традиционных СУБД, и, таким образом, минимизирует блокирование данных и увеличивает производительность в многопользовательских системах БД. Также реализовано отслеживание взаимных блокировок (deadlocks);

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

- полнотекстовый поиск. Начиная с версии 8.3 в ядро PostgreSQL включена функция полнотекстового поиска (раньше реализовалась в виде отдельного модуля-расширения). Полнотекстовый поиск позволяет создавать такие запросы к текстовым документам, которые могут гибко настраиваться в завимости от конкретных потребностей;

- сохраняющая регистрация WAL. WAL ( Write-Ahead Logging) является стандартным методом для обеспечения целостности данных. Сохраняющая регистрация - метод регистрации (журналирования) транзакций, при котором запись в журнале делается до записи данных. Используется также в MS SQL Server. Суть WAL заключается в том, что изменения в файлах данных (таблицы и индексы) должны быть внесены только после записи в журнал (log), в котором фиксируются эти изменения. Эта процедура позволяет не переписывать страницы данных на диске при каждой транзакции, так как в случае аварии мы сможем восстановить базу данных с помощью журнала. Механизм WAL обеспечивает следующие преимущества:

- повышение производительности работы СУБД за счет того, что записываются только внесенные изменения без переписывания всех данных в таблицах;

- повышение надежности храпения данных за счет предыдущего сохранения буферизованных данных в WAL;

- возможность отката состояния БД на любой момент времени, путем применения WAL к существующей резервной копии;

- репликация и технология Hot Standby. Начиная с версии 9.0, на основе WAL введена репликация по технологии Hot Standby. Технология позволяет получить на сервере вторую базу данных, которая является актуальной копией оригинальной базы данных, доступной лишь для чтения. Технология может быть использована также и на отдаленном сервере, который подключается к primary- или master-серверу и загружает из него WAL-логи, предоставляя онлайновую репликацию базы данных и поддерживая копию базы данных на отдаленном сервере в актуальном состоянии, а также делая эту копию доступной для запросов на чтение;

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

- гибкая настройка сервера. Основной конфигурационный файл postgresql.conf включает более 150 настраиваемых параметров по разделам: файлы и пути к ним, авторизация и безопасность, выделение ресурсов и т.д. Дополнительный конфигурационный файл pg_hba.conf включает в себя настройку доступа к отдельным БД, такие как указание конкретных IP-адресов и (или) сетей, из которых разрешен доступ, а также метод авторизации для доступа в БД и возможность включения безопасных (зашифрованных) соединений.

Физическая архитектура баз данных PostgreSQL



Поделиться:


Последнее изменение этой страницы: 2017-01-25; просмотров: 1358; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.141.24.134 (0.077 с.)