Тематические статьи →

PostgreSQL — система управления базами данных

PostgreSQL — это попу­ляр­ная сво­бод­ная объ­ектно-реля­ци­он­ная система управ­ле­ния базами дан­ных. PostgreSQL бази­ру­ется на языке SQL и под­дер­жи­вает мно­го­чис­лен­ные возможности.

Преимущества PostgreSQL:

  • под­держка БД неогра­ни­чен­ного раз­ме­ра;
  • мощ­ные и надёж­ные меха­низмы тран­зак­ций и репли­ка­ции;
  • рас­ши­ря­е­мая система встро­ен­ных язы­ков программирования и под­держка загрузки C-сов­ме­сти­мых моду­лей;
  • насле­до­ва­ние;
  • лег­кая рас­ши­ря­е­мо­сть.

Теку­щие ограничения PostgreSQL:

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

Особенности PostgreSQL:

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

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

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

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

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

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

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

Исполь­зо­ва­ние в веб-про­ек­тах

В раз­ра­ботке сай­тов и веб-при­ло­же­ний PostgreSQL исполь­зу­ется несколько реже, чем MySQL, но всё же эта пара с замет­ным отры­вом опе­ре­жает по частоте исполь­зо­ва­ния остальные системы управ­ле­ния базами дан­ных. Большинство фреймворков (напри­мер, Ruby on Rails, Yii, Symfony, Django) под­дер­жи­вают исполь­зо­ва­ние PostgreSQL.

Поделитесь с друзьями:


Информация о публикации:

Материал опубликован в 2014 году. Эта статья о веб-разработке и о веб-технологиях. При пере­пуб­ли­ка­ции обя­за­тельно ука­за­ние пер­во­ис­точ­ника в виде гипер­тек­сто­вой ссылки на сайт web-creator.ru

Воспользуйтесь нашими
знаниями и опытом

Отправьте нам сообщение при помощи формы. Или напишите на e-mail s@web-creator.ru

Мы максимально оперативно ответим Вам по электронной почте или перезвоним.

При отправке сообщения через форму, укажите пожалуйста предпочтительный способ связи с Вами: телефон или адрес электронной почты. Мы сможем ответить Вам подробнее, если Вы напишете что-то о запланированном проекте или предполагаемых задачах.

Либо просто позвоните нам по номеру: +7 495 215-1501

Мы работаем по будним дням с 10 до 19 часов.

Комплексные услуги

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