0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<p><strong>Реляционные системы управления данных</strong>применяются уже очень давно. Их популярность выросла благодаря успешным реализациям в системах управления, которые оказались весьма удобными для работы с данными разных типов. В нашей заметке мы поговорим от "<strong>трёх богатырях</strong>" в СУБД: MySQL, SQLite и PostgreSQL. Сравним их, рассмотрим преимущества, недостатки, поддерживаемые типы данных.</p>
1
<p><strong>Реляционные системы управления данных</strong>применяются уже очень давно. Их популярность выросла благодаря успешным реализациям в системах управления, которые оказались весьма удобными для работы с данными разных типов. В нашей заметке мы поговорим от "<strong>трёх богатырях</strong>" в СУБД: MySQL, SQLite и PostgreSQL. Сравним их, рассмотрим преимущества, недостатки, поддерживаемые типы данных.</p>
2
<h2>Пару слов о системах управления базами данных</h2>
2
<h2>Пару слов о системах управления базами данных</h2>
3
<p>База данных - это логически смоделированное хранилище различных типов данных. При этом каждая БД, если она не является бессхемной, следует модели, задающей определённую структуру обработки этих самых данных. Если говорить о системах управления (<strong>СУБД</strong>), то под данными терминами понимают приложения (либо библиотеки), управляющие базами данных разных типов, размеров и форм.</p>
3
<p>База данных - это логически смоделированное хранилище различных типов данных. При этом каждая БД, если она не является бессхемной, следует модели, задающей определённую структуру обработки этих самых данных. Если говорить о системах управления (<strong>СУБД</strong>), то под данными терминами понимают приложения (либо библиотеки), управляющие базами данных разных типов, размеров и форм.</p>
4
<h2>Реляционные СУБД</h2>
4
<h2>Реляционные СУБД</h2>
5
<p>Эти СУБД реализуют реляционную модель обработки данных, определяя все хранимые данные как набор связанных атрибутов и записей в таблице. Каждый столбец (или атрибут) содержит определённый тип информации. Каждая запись в такой базе данных обладает уникальным ключом, передаётся в строку таблицы, плюс её атрибуты отображаются в столбцах данной таблицы.</p>
5
<p>Эти СУБД реализуют реляционную модель обработки данных, определяя все хранимые данные как набор связанных атрибутов и записей в таблице. Каждый столбец (или атрибут) содержит определённый тип информации. Каждая запись в такой базе данных обладает уникальным ключом, передаётся в строку таблицы, плюс её атрибуты отображаются в столбцах данной таблицы.</p>
6
<h2>Отношения и типы данных в СУБД</h2>
6
<h2>Отношения и типы данных в СУБД</h2>
7
<p>Отношения определяются в качестве математических множеств, содержащих наборы атрибутов, отображающих хранящуюся информацию. Любой элемент, формирующий запись, обязан удовлетворять конкретному типу данных (дате, целому числу и т. п.).</p>
7
<p>Отношения определяются в качестве математических множеств, содержащих наборы атрибутов, отображающих хранящуюся информацию. Любой элемент, формирующий запись, обязан удовлетворять конкретному типу данных (дате, целому числу и т. п.).</p>
8
<p>Разные<strong>СУБД</strong>применяют различные типы данных, которые не всегда бывают взаимозаменяемыми. Такого рода ограничения - обычное дело для реляционных баз данных, о которых мы сегодня говорим. По сути, они и формируют суть отношений.</p>
8
<p>Разные<strong>СУБД</strong>применяют различные типы данных, которые не всегда бывают взаимозаменяемыми. Такого рода ограничения - обычное дело для реляционных баз данных, о которых мы сегодня говорим. По сути, они и формируют суть отношений.</p>
9
<h2>Самые популярные СУБД (РСУБД)</h2>
9
<h2>Самые популярные СУБД (РСУБД)</h2>
10
<p>Наиболее популярными реляционными СУБД являются: •<strong>SQLite</strong>- мощная встраиваемая СУБД; •<strong>MySQL</strong>- наиболее часто используемая и популярная СУБД; •<strong>PostgreSQL</strong>- гибкая и более продвинутая СУБД.</p>
10
<p>Наиболее популярными реляционными СУБД являются: •<strong>SQLite</strong>- мощная встраиваемая СУБД; •<strong>MySQL</strong>- наиболее часто используемая и популярная СУБД; •<strong>PostgreSQL</strong>- гибкая и более продвинутая СУБД.</p>
11
<p>Поговорим про каждую из этих СУБД подробнее.</p>
11
<p>Поговорим про каждую из этих СУБД подробнее.</p>
12
<h2>SQLite</h2>
12
<h2>SQLite</h2>
13
<p>Компактная встраиваемая система управления базами данных SQLite представляет собой библиотеку. Будучи файловой базой данных, она имеет прекрасный набор инструментария для более простой, если сравнивать с базами данных для серверов, обработки практически любых видов данных.</p>
13
<p>Компактная встраиваемая система управления базами данных SQLite представляет собой библиотеку. Будучи файловой базой данных, она имеет прекрасный набор инструментария для более простой, если сравнивать с базами данных для серверов, обработки практически любых видов данных.</p>
14
<p>Если приложение использует эту СУБД, связь производится с помощью прямых и функциональных вызовов файлов, содержащих данные, а не какого-либо интерфейса.</p>
14
<p>Если приложение использует эту СУБД, связь производится с помощью прямых и функциональных вызовов файлов, содержащих данные, а не какого-либо интерфейса.</p>
15
<p>Таким образом повышается как скорость, так и производительность операций.</p>
15
<p>Таким образом повышается как скорость, так и производительность операций.</p>
16
<h4>Поддерживаемые типы данных:</h4>
16
<h4>Поддерживаемые типы данных:</h4>
17
<p>- NULL (значение NULL); - INTEGER (целое число со знаком); - REAL (число с плавающей запятой); - TEXT (текстовая строка); - BLOB (тип данных, хранится в том же виде, в каком был получен).</p>
17
<p>- NULL (значение NULL); - INTEGER (целое число со знаком); - REAL (число с плавающей запятой); - TEXT (текстовая строка); - BLOB (тип данных, хранится в том же виде, в каком был получен).</p>
18
<p>Более подробную информацию об обрабатываемых типах данных смотрите по ссылке на официальную<a>документацию</a>.</p>
18
<p>Более подробную информацию об обрабатываемых типах данных смотрите по ссылке на официальную<a>документацию</a>.</p>
19
<h4>Преимущества СУБД SQLite:</h4>
19
<h4>Преимущества СУБД SQLite:</h4>
20
<p>- хранится лишь в одном файле - это облегчает перемещение; - стандартизирована и использует SQL; - прекрасно подходит не только для разработки, но и для тестирования, обладает расширенным функционалом, оставаясь простой в работе.</p>
20
<p>- хранится лишь в одном файле - это облегчает перемещение; - стандартизирована и использует SQL; - прекрасно подходит не только для разработки, но и для тестирования, обладает расширенным функционалом, оставаясь простой в работе.</p>
21
<h4>Минусы:</h4>
21
<h4>Минусы:</h4>
22
<p>- отсутствие пользовательского управления (в продвинутых базах данных можно управлять связями в таблицах по системе привилегий, в СУБД SQLite такая функция отсутствует); - невозможность дополнительной настройки (эту СУБД вы не сделаете производительнее, "поковырявшись" в настройках).</p>
22
<p>- отсутствие пользовательского управления (в продвинутых базах данных можно управлять связями в таблицах по системе привилегий, в СУБД SQLite такая функция отсутствует); - невозможность дополнительной настройки (эту СУБД вы не сделаете производительнее, "поковырявшись" в настройках).</p>
23
<h4>О целесообразности использования:</h4>
23
<h4>О целесообразности использования:</h4>
24
<p>- встроенные приложения (любые портируемые приложения, не предназначенные для масштабирования: игры, мобильные и однопользовательские приложения); - системы доступа к дисковой памяти (программы, часто производящие прямые операции по чтению и записи на диск, при переводе на эту СУБД повышают свою производительность); - тестирование.</p>
24
<p>- встроенные приложения (любые портируемые приложения, не предназначенные для масштабирования: игры, мобильные и однопользовательские приложения); - системы доступа к дисковой памяти (программы, часто производящие прямые операции по чтению и записи на диск, при переводе на эту СУБД повышают свою производительность); - тестирование.</p>
25
<p>В некоторых случаях эту систему управления базами данных<strong>использовать не рекомендуется</strong>: - многопользовательские приложения (для них больше подходит полнофункциональные СУБД, к примеру, MySQL); - программы записи больших объёмов данных (одно из ограничений SQLite - операции записи, то есть допускается единовременное исполнение только одной операции записи).</p>
25
<p>В некоторых случаях эту систему управления базами данных<strong>использовать не рекомендуется</strong>: - многопользовательские приложения (для них больше подходит полнофункциональные СУБД, к примеру, MySQL); - программы записи больших объёмов данных (одно из ограничений SQLite - операции записи, то есть допускается единовременное исполнение только одной операции записи).</p>
26
<h2>MySQL</h2>
26
<h2>MySQL</h2>
27
<p>Популярнейшая база данных. Разобраться в ней довольно просто, плюс полно информации в сети. Да,<strong>СУБД MySQL</strong>не пытается реализовать SQL-стандарты в полной мере, зато предлагает широчайший функционал. При этом приложения взаимодействуют с базой данных посредством процесса-демона.</p>
27
<p>Популярнейшая база данных. Разобраться в ней довольно просто, плюс полно информации в сети. Да,<strong>СУБД MySQL</strong>не пытается реализовать SQL-стандарты в полной мере, зато предлагает широчайший функционал. При этом приложения взаимодействуют с базой данных посредством процесса-демона.</p>
28
<h4>Поддерживаемые типы данных:</h4>
28
<h4>Поддерживаемые типы данных:</h4>
29
<p>- TINYINT: очень маленькое целое; - MEDIUMINT: целое среднего размера; - SMALLINT: маленькое целое; - INT либо INTEGER: целое нормального размера; - FLOAT: число с плавающей запятой (одинарная точность); - BIGINT: большое целое; - DOUBLE, REAL, DOUBLE PRECISION: число с плавающей запятой (2-я точность); - DECIMAL, NUMERIC: число с плавающей запятой; - DATETIME: комбинация времени и даты; - DATE: дата; - TIME: время; - TIMESTAMP: отметка времени; - YEAR: год (формат YY либо YYYY); - CHAR: фиксированная строка, дополняется пробелами справа до максимальной длины; - SET: множества; - ENUM: перечисление; - VARCHAR: строка переменной длины и прочие.</p>
29
<p>- TINYINT: очень маленькое целое; - MEDIUMINT: целое среднего размера; - SMALLINT: маленькое целое; - INT либо INTEGER: целое нормального размера; - FLOAT: число с плавающей запятой (одинарная точность); - BIGINT: большое целое; - DOUBLE, REAL, DOUBLE PRECISION: число с плавающей запятой (2-я точность); - DECIMAL, NUMERIC: число с плавающей запятой; - DATETIME: комбинация времени и даты; - DATE: дата; - TIME: время; - TIMESTAMP: отметка времени; - YEAR: год (формат YY либо YYYY); - CHAR: фиксированная строка, дополняется пробелами справа до максимальной длины; - SET: множества; - ENUM: перечисление; - VARCHAR: строка переменной длины и прочие.</p>
30
<h4>Преимущества:</h4>
30
<h4>Преимущества:</h4>
31
<p>- легкая и простая установка, плюс много сторонних инструментов, облегчающих работу с базами данных; - расширенная функциональность (поддерживается большая часть<strong>SQL-функционала</strong>); - много функций, обеспечивающих безопасность данных; - мощность, масштабируемость (хорошо работает с большими объёмами данных); - скорость (пренебрежение некоторыми стандартами даёт возможность этой СУБД работать производительнее).</p>
31
<p>- легкая и простая установка, плюс много сторонних инструментов, облегчающих работу с базами данных; - расширенная функциональность (поддерживается большая часть<strong>SQL-функционала</strong>); - много функций, обеспечивающих безопасность данных; - мощность, масштабируемость (хорошо работает с большими объёмами данных); - скорость (пренебрежение некоторыми стандартами даёт возможность этой СУБД работать производительнее).</p>
32
<h4>Недостатки:</h4>
32
<h4>Недостатки:</h4>
33
<p>- всё, что угодно, вы всё же не сделаете, так как определённые ограничения функциональности всё же присутствуют; - ряд операций реализован не так надёжно, как в других системах управления базами данных; - застой в разработке (хотя это и open-source-продукт, работа над СУБД и скорость её развития оставляют желать лучшего).</p>
33
<p>- всё, что угодно, вы всё же не сделаете, так как определённые ограничения функциональности всё же присутствуют; - ряд операций реализован не так надёжно, как в других системах управления базами данных; - застой в разработке (хотя это и open-source-продукт, работа над СУБД и скорость её развития оставляют желать лучшего).</p>
34
<h4>Рекомендации по применению:</h4>
34
<h4>Рекомендации по применению:</h4>
35
<p>- распределённые операции (если нужен больший функционал, чем имеется в SQLite, используйте MySQL); - приложения и веб-сайты (СУБД отличается гибкостью, возможна работа с большинством веб-ресурсов); - кастомные решения (если работаете над специфичным продуктом, эта СУБД вам подойдёт за счёт расширенного спектра настроек и режимов работы).</p>
35
<p>- распределённые операции (если нужен больший функционал, чем имеется в SQLite, используйте MySQL); - приложения и веб-сайты (СУБД отличается гибкостью, возможна работа с большинством веб-ресурсов); - кастомные решения (если работаете над специфичным продуктом, эта СУБД вам подойдёт за счёт расширенного спектра настроек и режимов работы).</p>
36
<p>Но если требуется полная SQL-совместимость, эта система управления базами данных не подойдёт, т. к. возможны проблемы в процессе интеграции с другими СУБД. Также проблемы могут вызывать одновременные операции чтения-записи. Если неправильно выбрать движок, может недоставать ряда функций.</p>
36
<p>Но если требуется полная SQL-совместимость, эта система управления базами данных не подойдёт, т. к. возможны проблемы в процессе интеграции с другими СУБД. Также проблемы могут вызывать одновременные операции чтения-записи. Если неправильно выбрать движок, может недоставать ряда функций.</p>
37
<h2>PostgreSQL</h2>
37
<h2>PostgreSQL</h2>
38
<p>Наиболее<strong>продвинутая система</strong>управления базами данных, которая ориентируется на расширяемость и полное соответствие SQL-стандартам ANSI/ISO. Отличается от других систем объектно-ориентированным функционалом и полной поддержкой концепта ACID.</p>
38
<p>Наиболее<strong>продвинутая система</strong>управления базами данных, которая ориентируется на расширяемость и полное соответствие SQL-стандартам ANSI/ISO. Отличается от других систем объектно-ориентированным функционалом и полной поддержкой концепта ACID.</p>
39
<p>Система данных основана на мощной технологии<strong>Postgres</strong>, поэтому она хорошо справляется с обработкой нескольких заданий одновременно. Поддержка конкурентности реализована посредством MVCC, что тоже обеспечивает совместимость с ACID.</p>
39
<p>Система данных основана на мощной технологии<strong>Postgres</strong>, поэтому она хорошо справляется с обработкой нескольких заданий одновременно. Поддержка конкурентности реализована посредством MVCC, что тоже обеспечивает совместимость с ACID.</p>
40
<p>Данная СУБД не настолько популярна, как MySQL. Тем не менее существует множество сторонних библиотек и инструментов, облегчающих работу с этой системой управления базами данных.</p>
40
<p>Данная СУБД не настолько популярна, как MySQL. Тем не менее существует множество сторонних библиотек и инструментов, облегчающих работу с этой системой управления базами данных.</p>
41
<h4>Поддерживаемые типы данных:</h4>
41
<h4>Поддерживаемые типы данных:</h4>
42
<p>- bigint: знаковое 8-байтное целое; - boolean: булевская величина; - bigserial: инкрементируемое (автоматически) 8-битное целое; - box: прямоугольник на плоскости; - bit [(n)]: битовая строка (имеет фиксированную длину); - bit varying [(n)]: тоже битовая строка, но уже переменной длины; - circle: круг на плоскости; - bytea: бинарные данные; - date: календарная дата; - character varying [(n)]: строка символов, имеющая фиксированную длину; - character [(n)]: аналогично, но переменной длины; - integer: знаковое 4-байтное целое; - cidr: сетевой адрес IPv6 либо IPv4; - inet: адрес хоста IPv6 либо IPv4; - macaddr: MAC-адрес; - polygon: многоугольник на плоскости; - line: бесконечная прямая на плоскости; - lseg: отрезок на плоскости; - xml: XML-данные; - path: геометрический путь; - money: денежная величина и прочие типы.</p>
42
<p>- bigint: знаковое 8-байтное целое; - boolean: булевская величина; - bigserial: инкрементируемое (автоматически) 8-битное целое; - box: прямоугольник на плоскости; - bit [(n)]: битовая строка (имеет фиксированную длину); - bit varying [(n)]: тоже битовая строка, но уже переменной длины; - circle: круг на плоскости; - bytea: бинарные данные; - date: календарная дата; - character varying [(n)]: строка символов, имеющая фиксированную длину; - character [(n)]: аналогично, но переменной длины; - integer: знаковое 4-байтное целое; - cidr: сетевой адрес IPv6 либо IPv4; - inet: адрес хоста IPv6 либо IPv4; - macaddr: MAC-адрес; - polygon: многоугольник на плоскости; - line: бесконечная прямая на плоскости; - lseg: отрезок на плоскости; - xml: XML-данные; - path: геометрический путь; - money: денежная величина и прочие типы.</p>
43
<h4>Достоинства:</h4>
43
<h4>Достоинства:</h4>
44
<p>- полная SQL-совместимость; - поддержка опытным профессиональным сообществом; - поддержка сторонними организациями; - расширяемость (систему управления базами данных можно программно расширить, используя хранимые процедуры); - объектная ориентированность (СУБД PostgreSQL является не только реляционной, но и объектно-ориентированной).</p>
44
<p>- полная SQL-совместимость; - поддержка опытным профессиональным сообществом; - поддержка сторонними организациями; - расширяемость (систему управления базами данных можно программно расширить, используя хранимые процедуры); - объектная ориентированность (СУБД PostgreSQL является не только реляционной, но и объектно-ориентированной).</p>
45
<h4>Минусы:</h4>
45
<h4>Минусы:</h4>
46
<p>- в простых операциях чтения эта СУБД иногда уступает конкурентам; - система данных довольна сложна, поэтому не очень популярна; - сложно найти подходящего провайдера.</p>
46
<p>- в простых операциях чтения эта СУБД иногда уступает конкурентам; - система данных довольна сложна, поэтому не очень популярна; - сложно найти подходящего провайдера.</p>
47
<h4>В каких случаях желательно использовать эту СУБД:</h4>
47
<h4>В каких случаях желательно использовать эту СУБД:</h4>
48
<p>- когда в приоритете целостность и надёжность данных; - когда база данных должна выполнять сложные процедуры; - если в будущем планируется перенести базу данных на другой сервер, другое решение.</p>
48
<p>- когда в приоритете целостность и надёжность данных; - когда база данных должна выполнять сложные процедуры; - если в будущем планируется перенести базу данных на другой сервер, другое решение.</p>
49
<p>Есть и "противопоказания" применения<strong>PostgreSQL</strong>: - если всё, что вам нужно - быстрые операции чтения, однозначно не стоит брать эту СУБД; - когда повышенная надёжность, ACID и т. д. вам не требуются, то данная СУБД - это стрельба из пушки по воробьям.</p>
49
<p>Есть и "противопоказания" применения<strong>PostgreSQL</strong>: - если всё, что вам нужно - быстрые операции чтения, однозначно не стоит брать эту СУБД; - когда повышенная надёжность, ACID и т. д. вам не требуются, то данная СУБД - это стрельба из пушки по воробьям.</p>
50
<p>Статья является свободным переводом<a>отсюда</a>, поэтому можете почитать её в оригинале.</p>
50
<p>Статья является свободным переводом<a>отсюда</a>, поэтому можете почитать её в оригинале.</p>
51
51