проф. М.А. Алексеев

  бакалавр А.А. Климкина

Государственное высшее учебное заведение

 «Национальный горный университет», Украина

ВЫБОР МЕЖДУ MySQL И PostgreSQL ПРИ ИСПОЛЬЗОВАНИИ ИХ В КРИТИЧЕСКИ ВАЖНЫХ СИСТЕМАХ.

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

Постановка проблемы

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

Цель работы

Для сложных критически важных систем самыми важными требованиями являются непрерывная работа и высокая скорость обработки запросов. При этом требуется часто создавать резервную копию, не останавливая систему. Немаловажным фактором также является возможность масштабирования системы. В настоящий момент в таких системах активно используются такие СУБД, как MySQL и PostgreSQL. Однако возникает вопрос, какая из вышеперечисленных баз данных является наиболее производительной и надежной.

В данной статье представлен сравнительный анализ MySQL 5.1 и PostgreSQL 8.3 и описан результат исследований.

Основная часть

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

Рассмотрим проблему хранения данных. MySQL имеет несколько различных механизмов хранения данных. Он изначально использовал ISAM / MyISAM, который не поддерживает ни транзакций, ни внешних ключей. Это сложилось исторически и у такого подхода есть оправдание, если рассматривать работу с БД с точки производительности. Если транзакции и внешние ключи нужны, то использование storage engine InnoDB обязательно. Так же имеются другие механизмы хранения данных, но эта дискуссия сосредоточена в основном на использовании таблиц InnoDB, поскольку они, как правило, имеют самые современные наборы функций и являются типом таблиц по умолчанию в MySQL версии 4.x. При выборе механизмов хранения в MySQL необходимо помнить о некоторых особенностях, например, InnoDB и BDB являются единственными типами таблиц, которые поддерживают транзакции. PostgreSQL, с другой стороны, использует только один механизм хранения данных под названием «Postgres storage system» («система хранения Postgres»), в котором транзакции и вешние ключи полностью функциональны [2, с.85].

И PostgreSQL и MySQL поддерживают индексирование одного столбца, нескольких столбцов, уникальных и первичных ключей. MySQL поддерживает индексирование всего текста поля, и PostgreSQL полнотекстовые индексы с некоторыми изменениями в базе данных, которые включены в исходный код [2, с.45].

Базы данных хранят данные, а все типы данных, которые база данных может хранить называются типами данных. И PostgreSQL и MySQL поддерживают большинство стандартных типов данных. В последние несколько лет поддержка больших объектов становится все более популярной, и базы данных поддерживают их все лучше. PostgreSQL поддерживает пользовательские типы данных, в то время как MySQL нет. MySQL и PostgreSQL поддерживают хранение географических особенностей, известных как ГИС (Географическая Информационная Система). PostgreSQL имеет дополнительно сетевые типы данных, которые распознают IPv4 и IPv6 типы данных. Типы данных и их информационная ёмкость в MySQL и PostgreSQL приведены в таблицах 1 и 2.

Таблица 1

Целые числа и числа с плавающей точкой

Тип данных

MySQL

PostgreSQL

TINYINT

1 байт

 

SMALLINT

2 байта

2 байта

MEDIUMINT

3 байта

 

INTEGER, INT

4 байта

4 байта

BIGINT

8 байт

8 байт

FLOAT, DOUBLE, REAL

4 или 8 байт

4 или 8 байт

DECIMAL, NUMERIC

65 десятичных знаков

Без ограничений

SERIAL, BIGSERIAL

8 байт

4 или 8 байт

BIT

Есть

Есть

Таблица 2

Строки и данные

Тип данных

MySQL

PostgreSQL

BINARY, CHAR

255

10485760

VARCHAR, VARBINARY

65535*

 

TINYBLOB, TINYTEXT

2^8

10485760

BLOB, TEXT, BYTEA

2^16

Не огранчен

MEDIUMBLOB

2^24

 

LONGBLOB

2^32

 

 

Одним из самых важных условий надежности и беспрерывной работы СУБД в критически важных системах является поддержка репликации. И MySql и PostgreSQL, имеют поддержку single-master (Единственный ведущий), multi-slave (множественные ведомые) сценариев репликации. Эти базовые уровни репликации включены в дистрибутив программы, и их исходный код открыт. Так же PostgreSQL предлагает дополнительную поддержку multi-master (Множественные ведущие), multi-slave (множественные ведомые) репликации от внешних разработчиков, а также дополнительные методы репликации [3, с. 7].

Выводы

1.                     MySQL и PostgreSQL — это системы управления базами данных, перед которыми стоят разные задачи и необходимо чётко понимать, в чём их разница.

2.                     MySQL показывает своё преимущество на базах данных с большим количеством простых однотабличных запросов, однако требует более внимательного подхода со стороны разработчика, а также накладывает довольно серьёзные ограничения на хранимые данные и на функционал СУБД.

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

 

Список литературы:

1)             Tim Conrad. PostgreSQL vs. MySQL vs. Commercial Databases: It's All About What You Need  / InstantDoc №9797.– November 2000. – C. 9–17.

2)             Somayeh Dodge. Evaluating different approaches of spatial database management for moving objects / Map Middle East. – 2005. – C. 1– 144

3)             Лебедев  А.А. Удаленная репликация: критерии выбора / Storage News. –  № 2 (27). – 2006. – С. 6 – 9.;

4)             Даниела Флореску, Дональд Коссман. Переосмысление стоимости и производительности систем баз данных, 2009.  С. 4348.