Рейтинг баз данных для программирования. Обзор систем управления базами данных. Реляционные системы управления базами данных

Мало кто будет спорить, что IT будущего неразрывно связано с использованием огромных баз данных. Уже сейчас мир придумывает новые языки, новые алгоритмы, лишь бы упростить и ускорить использование огромных потоков информации. Даже привычный многим современным пользователям реляционный подход медленно, но верно уходит в прошлое. Почему и что будет дальше? Впрочем, давайте обо всём по порядку.

От прошлого к настоящему

Нет смысла охватывать историю баз данных, цепляясь за любое сходство, поэтому моментом появления баз данных будет не античное время, а 60-е годы 20 века. Именно тогда компьютеры стали эффективным инструментом для коммерческих компаний, а организация COBASYL (COnference on DAta SYstems Language), создавшая в 1959 году язык COBOL и впоследствии наделив его возможностями для управления БД, помогла им управлять резко возросшими потоками информации.

К концу 60-х появилась первая сетевая модель данных, возникло понятие СУБД, а в 1974 году компания IBM стала работать над языком для System R . Так на свет появился SEQUEL (Structured English QUEry Language). Однако позже, когда стало известно, что такое название используется британской авиастроительной компанией, было решено немного сократить до привычного SQL.

С увеличением доступности компьютеров стали появляться ориентированные на простых пользователей БД (Paradox, RBASE 5000, RIM, Dbase III), API (ODBC, Excel, Access) и средства разработки (VB, Oracle Developer, PowerBuilder). Само-собой, тенденция охватила и интернет, на сегодняшний день эффективное взаимодействие с БД - негласное требование к любому ресурсу с более-менее динамической информацией.

Если говорить о компаниях, то на рынке установилось троевластие: практически вся власть в области баз данных распределена между IBM, Microsoft и Oracle.

Настоящее и будущее

До старта нового тысячелетия в IT доминировал реляционный подход к базам данных, однако необходимость повышать быстродействие неизбежно привела к развитию идеи NoSQL (not only SQL). Если вы с трудом представляете, что это и в чём разница, то перейдя по ссылке вы получите исчерпывающие ответы на все свои вопросы.

Если упрощённо, то реляционный подход описывает данные в формате таблиц, то есть вся информация неразрывно связана отношениями и структурой (вспомните Excel со столбцами и строками, где каждый новый объект записывается по тому же шаблону). Это неизбежно приводит к ограничениям по производительности и масштабированию, но с точки зрения создания и управления - это просто и удобно.

NoSQL подход позволяет избежать этих проблем за счёт отсутствия строгих информационных связей. Но тут возникает другая проблема - организация доступа. Решается она 4 основными способами: с помощью документной ориентации, расширяемых записей (разреженных матриц), ключей доступа и теории графов. Естественно, что подход NoSQL требует от разработчика больше знаний и умений, но результаты куда эффективнее. Именно поэтому считается, что SQL уже сейчас уходит в историю, а NoSQL - будущее всех БД.

Впрочем, данное предсказание упирается в тот факт, что использование реляционного подхода для небольших баз куда эффективнее. Поэтому вместо бессмысленного спора поговорим о более практических вещах, а именно непосредственно о наиболее популярных БД.

Рейтинг

  1. Oracle;
  2. MySQL;
  3. Microsoft SQL Server;
  4. PostgreSQL;
  5. MongoDB;
  6. Cassandra;
  7. Microsoft Access;
  8. Redis;
  9. SQLite.

Итого, 7 из 10 представителей рейтинга - реляционные базы данных, а также по одному экземпляру документоориентированной БД (MongoDB), с распределёнными значениями (Cassandra) и использующей подход «ключ-значение» (Redis). Таким образом, на сегодняшний день доминирование реляционных баз данных неоспоримо, но что будет завтра?

Для ответа на этот вопрос обратимся на этом же ресурсе к разделу тренды . Если брать отметки времени в более чем в 2 или 4 года, то наибольший рост демонстрирует подход с использованием теории графов. В то же время за последний год максимальный рост популярности продемонстрировали БД на основе временных данных . Это относительно новый подход, он также считается NoSQL, преимущество сводится к созданию структуры на основе дат или временных диапазонов. На данный момент наиболее популярным представителем Time Series БД является InfluxDB.

А какие базы данных используете вы? И какая на ваш взгляд наиболее перспективная NoSQL БД?

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

Чтобы лучше разобраться в СУБД, ознакомьтесь с .

Реляционные системы управления базами данных

Реляционные системы реализуют реляционную модель работы с данными, которая определяет всю хранимую информацию как набор связанных записей и атрибутов в таблице.

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

Отношения и типы данных

Отношения можно определить как математические множества, содержащие наборы атрибутов, отображающие хранящуюся информацию.

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

Такого рода ограничения обычны для реляционных баз данных. Фактически, они и формируют суть отношений.

Популярные РСУБД

В этой статье мы расскажем о 3 наиболее популярных РСУБД:

  • SQLite: очень мощная встраиваемая РСУБД.
  • MySQL: самая популярная и часто используемая РСУБД.
  • PostgreSQL: самая продвинутая и гибкая РСУБД.

SQLite

SQLite - это изумительная библиотека, встраиваемая в приложение, которое её использует. Будучи файловой БД, она предоставляет отличный набор инструментов для более простой (в сравнении с серверными БД) обработки любых видов данных.

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

Поддерживаемые типы данных

  • NULL: NULL-значение.
  • INTEGER: целое со знаком, хранящееся в 1, 2, 3, 4, 6, или 8 байтах.
  • REAL: число с плавающей запятой, хранящееся в 8-байтовом формате IEEE.
  • TEXT: текстовая строка с кодировкойUTF-8, UTF-16BE или UTF-16LE.
  • BLOB: тип данных, хранящийся точно в таком же виде, в каком и был получен.

Note: для получения более подробной информации ознакомьтесь с документацией .

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

  • Файловая: вся база данных хранится в одном файле, что облегчает перемещение.
  • Стандартизированная: SQLite использует SQL; некоторые функции опущены (RIGHT OUTER JOIN или FOR EACH STATEMENT), однако, есть и некоторые новые.
  • Отлично подходит для разработки и даже тестирования: во время этапа разработки большинству требуется масштабируемое решение. SQLite, со своим богатым набором функций, может предоставить более чем достаточный функционал, при этом будучи достаточно простой для работы с одним файлом и связанной сишной библиотекой.

Недостатки

  • Отсутствие пользовательского управления: продвинутые БД предоставляют пользователям возможность управлять связями в таблицах в соответствии с привилегиями, но у SQLite такой функции нет.
  • Невозможность дополнительной настройки: опять-таки, SQLite нельзя сделать более производительной, поковырявшись в настройках - так уж она устроена.

Когда стоит использовать SQLite

  • Встроенные приложения: все портируемые не предназначенные для масштабирования приложения - например, локальные однопользовательские приложения, мобильные приложения или игры.
  • Система доступа к дисковой памяти: в большинстве случаев приложения, часто производящие прямые операции чтения/записи на диск, можно перевести на SQLite для повышения производительности.
  • Тестирование: отлично подойдёт для большинства приложений, частью функционала которых является тестирование бизнес-логики.

Когда не стоит использовать SQLite

  • Многопользовательские приложения: если вы работаете над приложением, доступом к БД в котором будут одновременно пользоваться несколько человек, лучше выбрать полнофункциональную РСУБД - например, MySQL.
  • Приложения, записывающие большие объёмы данных: одним из ограничений SQLite являются операции записи. Эта РСУБД допускает единовременное исполнение лишь одной операции записи.

MySQL

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

Поддерживаемые типы данных

  • TINYINT: очень маленькое целое.
  • SMALLINT: маленькое целое.
  • MEDIUMINT: целое среднего размера.
  • INT или INTEGER: целое нормального размера.
  • BIGINT: большое целое.
  • FLOAT: знаковое число с плавающей запятой одинарной точности.
  • DOUBLE, DOUBLE PRECISION, REAL: знаковое число с плавающей запятой двойной точности.
  • DECIMAL, NUMERIC: знаковое число с плавающей запятой.
  • DATE: дата.
  • DATETIME: комбинация даты и времени.
  • TIMESTAMP: отметка времени.
  • TIME: время.
  • YEAR: год в формате YY или YYYY.
  • CHAR: строка фиксированного размера, дополняемая справа пробелами до максимальной длины.
  • VARCHAR: строка переменной длины.
  • TINYBLOB, TINYTEXT: BLOB- или TEXT-столбец длиной максимум 255 (2^8 – 1) символов.
  • BLOB, TEXT: BLOB- или TEXT-столбец длиной максимум 65535 (2^16 – 1) символов.
  • MEDIUMBLOB, MEDIUMTEXT: BLOB- или TEXT-столбец длиной максимум 16777215 (2^24 – 1) символов.
  • LONGBLOB, LONGTEXT: BLOB- или TEXT-столбец длиной максимум 4294967295 (2^32 – 1) символов.
  • ENUM: перечисление.
  • SET: множества.

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

  • Простота: MySQL легко устанавливается. Существует много сторонних инструментов, включая визуальные, облегчающих начало работы с БД.
  • Много функций: MySQL поддерживает большую часть функционала SQL.
  • Безопасность: в MySQL встроено много функций безопасности.
  • Мощность и масштабируемость: MySQL может работать с действительно большими объёмами данных, и неплохо походит для масштабируемых приложений.
  • Скорость: пренебрежение некоторыми стандартами позволяет MySQL работать производительнее, местами срезая на поворотах.

Недостатки

  • Известные ограничения: по определению, MySQL не может сделать всё, что угодно, и в ней присутствуют определённые ограничения функциональности.
  • Вопросы надёжности: некоторые операции реализованы менее надёжно, чем в других РСУБД.
  • Застой в разработке: хотя MySQL и является open-source продуктом, работа над ней сильно заторможена. Тем не менее, существует несколько БД, полностью основанных на MySQL (например, MariaDB). Кстати, подробнее о родстве MariaDB и MySQL можно из нашего с создателем обеих РСУБД - Джеймсом Боттомли.

Когда стоит использовать MySQL

  • Распределённые операции: когда вам нужен функционал бо́льший, чем может предоставить SQLite, стоит использовать MySQL.
  • Высокая безопасность: функции безопасности MySQL предоставляют надёжную защиту доступа и использования данных.
  • Веб-сайты и приложения: большая часть веб-ресурсов вполне может работать с MySQL, несмотря на ограничения. Этот инструмент весьма гибок и прост в обращении, что только на руку в длительной перспективе.
  • Кастомные решения: если вы работаете над очень специфичным продуктом, MySQL подстроится под ваши потребности благодаря широкому спектру настроек и режимов работы.

Когда не стоит использовать MySQL

  • SQL-совместимость: поскольку MySQL не пытается полностью реализовать стандарты SQL, она не является полностью совместимой с SQL. Из-за этого могут возникнуть проблемы при интеграции с другими РСУБД.
  • Конкурентность: хотя MySQL неплохо справляется с операциями чтения, одновременные операции чтения-записи могут вызвать проблемы.
  • Недостаток функций: в зависимости от выбора движка MySQL может недоставать некоторых функций.

PostgreSQL

PostgreSQL - это самая продвинутая РСУБД, ориентирующаяся в первую очередь на полное соответствие стандартам и расширяемость. PostgreSQL, или Postgres, пытается полностью соответствовать SQL-стандартам ANSI/ISO.

PostgreSQL отличается от других РСУБД тем, что обладает объектно-ориентированным функционалом, в том числе полной поддержкой концепта ACID (Atomicity, Consistency, Isolation, Durability).

Будучи основанным на мощной технологии Postgres отлично справляется с одновременной обработкой нескольких заданий. Поддержка конкурентности реализована с использованием MVCC (Multiversion Concurrency Control), что также обеспечивает совместимость с ACID.

Хотя эта РСУБД не так популярна, как MySQL, существует много сторонних инструментов и библиотек для облегчения работы с PostgreSQL.

Поддерживаемые типы данных

  • bigint: знаковое 8-байтное целое.
  • bigserial: автоматически инкрементируемое 8-битное целое.
  • bit [(n)]: битовая строка фиксированной длины.
  • bit varying [(n)]: битовая строка переменной длины.
  • boolean: булевская величина.
  • box: прямоугольник на плоскости.
  • bytea: бинарные данные.
  • character varying [(n)]: строка символов фиксированной длины.
  • character [(n)]:
  • cidr: сетевой адрес IPv4 или IPv6.
  • circle: круг на плоскости.
  • date: календарная дата.
  • double precision: число с плавающей запятой двойной точности.
  • inet: адрес хоста IPv4 или IPv6.
  • integer: знаковое 4-байтное целое.
  • interval [(p)]: временной промежуток.
  • line: бесконечная прямая на плоскости.
  • lseg: отрезок на плоскости.
  • macaddr: MAC-адрес.
  • money: денежная величина.
  • path: геометрический путь на плоскости.
  • point: геометрическая точка на плоскости.
  • polygon: многоугольник на плоскости.
  • real: число с плавающей запятой одинарной точности.
  • smallint: знаковое 2-байтное целое.
  • serial: автоматически инкрементируемое 4-битное целое.
  • text: строка символов переменной длины.
  • time [(p)] : время суток (без часового пояса).
  • time [(p)] with time zone: время суток (с часовым поясом).
  • timestamp [(p)] : дата ивремя (без часового пояса).
  • timestamp [(p)] with time zone: дата и время (с часовым поясом).
  • tsquery: запрос текстового поиска.
  • tsvector: документ текстового поиска.
  • txid_snapshot: снэпшот ID пользовательской транзакции.
  • uuid: уникальный идентификатор.
  • xml: XML-данные.

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

  • Полная SQL-совместимость .
  • Сообщество: PostgreSQL поддерживается опытным сообществом 24/7.
  • Поддержка сторонними организациями: несмотря на очень продвинутые функции, PostgreSQL используется в многих инструментах, связанных с РСУБД.
  • Расширяемость: PostgreSQL можно программно расширить за счёт хранимых процедур.
  • Объектно-ориентированность: PostgreSQL - не только реляционная, но и объектно-ориентированная СУБД.

Недостатки

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

Когда стоит использовать PostgreSQL

  • Целостность данных: если приоритет стоит на надёжность и целостность данных, PostgreSQL - лучший выбор.
  • Сложные процедуры: если ваша БД должна выполнять сложные процедуры, стоит выбрать PostgreSQL в силу её расширяемости.
  • Интеграция: если в будущем вам предстоит перемещать всю базу на другое решение, меньше всего проблем возникнет с PostgreSQL.

Когда не стоит использовать PostgreSQL

  • Скорость: если всё, что нужно - это быстрые операции чтения, не стоит использовать PostgreSQL.
  • Простые ситуации: если вам не требуется повышенная надёжность, поддержка ACID и всё такое, использование PostgreSQL - это стрельба из пушки по мухам.

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

Наиболее распространенными промышленными СУБД до сих пор являются системы американской компании Oracle, производителя первой коммерческой промышленной СУБД. Эти системы отличает высокая надежность, возможность тонкой настройки под решаемые задачи, гибкое управление оперативной памятью, высокое быстродействие, мультиплатформенность – т.е. возможность работать под управлением как ЭВМ различной архитектуры, так и различных операционных систем. Наряду с многопользовательской версией СУБД Oracle, существует ее «облегченный» вариант – Personal Oracle или Oracle Lite. Данная версия используется обычно в небольших АИС с ограниченным кругом пользователей (как правило, не более 5 – 10 человек).

Промышленная СУБД компании Microsoft, имеющая название SQL Server, обладает не меньшими возможностями, чем СУБД компании Oracle. Однако ее недостатком является то, что она может функционировать только под управлением операционных систем самой компании Microsoft, что делает невозможным ее использование на серверах, работающих под управлением таки популярных операционных систем, как Unix, Linux, Solaris и других. Другой популярной СУБД компании Microsoft является MS Access, входящая в пакет программ Microsoft Office. Данная СУБД является однопользовательской и предназначена для ведения небольших баз данных.

Популярными и достаточно распространенными СУБД являются также DB2 компании IBM, СУБД Sybase, Informix, PostgreSQL («Пост-Грес-Кью-Эл», «постгрес») , Interbase и некоторые другие. Отдельно стоит упомянуть свободно распространяемые СУБД, многие из которых подходят для решения достаточно сложных задач. Не обладая, в полной мере, функциональностью, присущей коммерческим СУБД, они, в то же время, имеют существенно достоинство – нулевую стоимость. Как правило, такие СУБД поддерживаются независимыми группами разработчиков и распространяются в виде исходных текстов программных модулей. Наиболее популярными из таких СУБД в нашей стране являются MySQL и так называемые «клоны» коммерческой СУБД Interbase – FireBird и Yaffil.

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

Понятие базы данных настолько прочно вошло в нашу жизнь, что стало восприниматься как нечто само собой разумеющееся и не заслуживающее отдельного внимания. Об ИТ-стартапах, алгоритмах , хакерских атаках, криптовалюте, (да что там говорить, и об облаках тоже) в профильных СМИ написано куда больше статей, чем о «рядовых», но таких важных и нужных базах данных и системах управления ими. Вот и мы, неоднократно проводя свои мини-исследования разных сфер мира ИТ, еще ни разу не обращались к этой теме. Что же, немедленно исправляемся и делимся с вами интересными новостями и свежей статистикой.

И среди СУБД есть свои фавориты

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

Обычно СУБД включает в себя три основных компонента: сами данные, «движок» базы данных и схему, определяющую логическую структуру данных. Именно эти три составляющие помогают обеспечить безопасное управление и защиту баз данных, целостность хранящейся в ней информации и унифицированные процедуры администрирования - управление изменениями, контроль конфигураций и производительности, резервное копирование, аварийное восстановление и т. д.

Безусловно, самих систем управления базами данных невероятно много, но тех, что у всех на слуху, едва ли наберется с десяток. Чтобы определить, какая из существующих СУБД по праву попадает в список самых популярных, в DB-Engines составили своеобразный рейтинг фаворитов. Для этого специалисты проанализировали ряд факторов: количество упоминаний систем на веб-сайтах (использовались поисковики Google, Yandex и Bing), общий интерес пользователей в Google Trends, упоминания в дискуссиях на специализированных сайтах Stack Overflow и DBA Stack Exchange, на сайтах-агрегаторах вакансий Indeed и Simply Hired, в профессиональных профилях специалистов в Linkedin и Upwork, и, наконец, количество релевантных твитов. Однако отметим, что общее число установок СУБД не считалось, поэтому этот топ получился хоть и интересным, но все-таки относительным. Согласно DB-Engines, первая тройка популярных систем управления выглядит так: Oracle, MySQL, Microsoft SQL Server.

Интересно, что в среде программистов самыми востребованными оказались навыки работы с такими СУБД как MySQL, MongoDB и PostgreSQL, причем Oracle разработчики вообще поставили на последнее место, так как эту систему отметило лишь 12% респондентов (источник: Stack Exchange (Stack Overflow Talent)).

Таким образом, по результатам двух исследований видим, что пока пользователи больше всего интересуются системой MySQL. Возможно, не последнюю роль здесь играет тот факт, что это продукт с открытым исходным кодом. К слову, именно по этой причине в 2016 году в MySQL было устранено самое большое количество уязвимостей - 133. И этот факт совсем не означает, что сама система плохо защищена, а наоборот свидетельствует о том, что ее работоспособность проверяло большее число специалистов, что увеличило шансы на определение ее «слабых мест» в информационной безопасности.

Распространенные угрозы безопасности

Примечательно, что именно количество патчей позволяет косвенно определить степень защиты информации в системах управления базами данных и выявить наиболее распространенные уязвимости. Так, исследование Trustwave показало, что в 2016 году пользователи СУБД чаще всего сталкивались с такими категориями киберугроз, как:

  • Несанкционированное расширение привилегий. Эти уязвимости позволяли неуполномоченным лицам использовать права администратора, получая доступ к таблицам и конфигурациям БД.
  • Переполнение буфера. Это приводило к поломке сервера, что подрывало аппаратную защиту базы данных, а также вызывало отказ в обслуживании и могло привести к запуску исполнения чужого вредоносного кода.
  • Полномочия, настроенные по умолчанию. Учетные записи администратора, оставленные с паролем, заданным по умолчанию, могли дать дополнительный простор для мошеннических действий киберпреступников.

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

Реляционные базы данных уже давно используются в программировании. В своё время они обрели популярность благодаря простоте и удобству реляционной модели работы с данными.

Данная статья анализирует различия между наиболее популярными реляционными системами управления базами данных (СУБД): SQLite, MySQL и PostgreSQL.

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

Базы данных – это логически смоделированные хранилища различной информации (данных) всех видов. Каждая база данных SQL основана модели, которая предоставляет структуру для хранящихся в ней данных. Системы управления базами данных — это приложения (или библиотеки), которые управляют базами данных различных форм, размеров и видов.

Реляционные системы управления базами данных

Реляционные СУБД для работы с данными используют реляционную модель. Эта модель хранит любую информацию в таблицах в виде связанных записей с атрибутами.

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

Отношения и типы данных

Отношения можно рассматривать как математические наборы, содержащие ряд атрибутов, которые в совокупности представляют собой базы данных и хранимую в ней информацию.

Добавляя запись в таблицу, нужно распределить все её компоненты (атрибуты) по типам данных. Разные реляционные СУБД используют разные типы данных, и они не всегда взаимозаменяемы.

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

Примечание : Базы данных NoSQL не имеют таких строгих ограничений, поскольку они не выстраивают таких отношений между данными. Чтобы узнать больше о NoSQL, читайте .

Популярные реляционные базы данных

В данной статье мы рассмотрим три наиболее важные и популярные СУБД с открытым исходным кодом.

  • SQLite: встроенная мощная система управления базами данных.
  • MySQL: самая популярная и широко распространённая БД.
  • PostgreSQL: продвинутая SQL-совместимая объектная СУБД с открытым исходным кодом.

Примечание : Приложения с открытым исходным кодом почти всегда дают пользователям право на свободное использование и изменение кода. Ответвляя код, вы можете создать совершенно новое приложение. Одним из ответвлений MySQL, например, является MariaDB .

SQLite

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

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

Типы данных SQLite

  • NULL: пустое значение.
  • INTEGER: целочисленное значение (зависимо от объёма значение хранится в 1, 2, 3, 4, 6 или 8 байтах).
  • REAL: число с плавающей точкой, хранится в виде 8-байтного IEEE.
  • TEXT: текстовая строка, хранится в зашифрованном виде (UTF-8, UTF-16BE или UTF-16LE).
  • BLOB: бинарные данные, хранятся в том виде, в котором были введены.

Преимущества SQLite

  • Простое строение на основе файлов: вся база данных состоит всего из одного файла, что увеличивает её портативность.
  • Стандарты: несмотря на простоту, система SQLite основана на SQL. Некоторые функции опущены (RIGHT OUTER JOIN или FOR EACH STATEMENT), однако вместо них добавлены другие.
  • SQLite отлично подходит для разработки или тестирования. На этих этапах почти всегда необходимо простое, но масштабируемое решение.

Недостатки SQLite

  • Нет управления пользователями. Более сложные СУБД поддерживают управление пользователями (их взаимосвязями, привилегиями и т.п.). Простая СУБД SQLite такой функции не предоставляет.
  • Невозможно повысить производительность. Библиотека SQLite проста в настройке и в использовании. Однако она разработана таким образом, что не позволяет путём тонкой настройки получить дополнительную производительность. То есть сделать SQLite более производительной технически невозможно.

Когда лучше использовать SQLite

  • Простые встроенные приложения, которым нужна портативность, например, однопользовательские локальные приложения, мобильные приложения, игры.
  • Замена диска. Обычно приложения, которым необходимо читать или записывать файлы на диск, могут использовать SQLite для получения дополнительных функций.
  • Тестирование.

Когда лучше не использовать SQLite

  • Многопользовательские приложения. Если приложение построено таким образом, что большое количество клиентов одновременно использует одну БД, то в такое приложение лучше внедрить полнофункциональную реляционную СУБД (например, MySQL).
  • Приложения, записывающие большое количество данных. операция записи является одним из ограничений SQLite. Эта СУБД позволяет выполнять только одну операцию записи за один момент времени, следовательно, она ограничивает пропускную способность.

MySQL

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

Примечание : Учитывая популярность MySQL, для этой системы было разработано большое количество сторонних приложений, инструментов и библиотек.

MySQL не реализует полный стандарт SQL. Несмотря на это, MySQL предлагает множество функциональных возможностей для пользователей: автономный сервер баз данных, взаимодействие с приложениями и сайтами и т.п.

Типы данных MySQL

  • TINYINT: целое число в диапазоне от -128 до 127 (1 байт).
  • SMALLINT: целое число от -32768 до 32767 (2 байта).
  • MEDIUMINT: число от -8388608 до 8388608 (3 байта).
  • INT или INTEGER: число в диапазоне от -2147683648 до 2147683648 (4 байта).
  • BIGINT: число от -2 63 до 2 63 -1 (8 байт).
  • FLOAT: число с плавающей точкой (4 байта).
  • DOUBLE, DOUBLE PRECISION, REAL: число с двойной точностью и плавающей точкой.
  • DECIMAL, NUMERIC: величины повышенной точности.
  • DATE: дата.
  • DATETIME: дата и время.
  • TIMESTAMP: временная метка.
  • TIME: время в формате hh:mm:ss.
  • YEAR: год (по умолчанию хранится в виде 4 цифр, но можно настроить и 2).
  • CHAR: строка фиксированной длины.
  • VARCHAR: строки переменных.
  • TINYBLOB, TINYTEXT: Тип TEXT позволяет хранить текст, а BLOB — изображения, звук, электронные документы и т.п. Максимальная длина – 225 символов.
  • BLOB, TEXT: большие объемы текста, максимум 65535 символов.
  • MEDIUMBLOB, MEDIUMTEXT: аналогично предыдущему, но максимум до 16777215 символов.
  • LONGBLOB, LONGTEXT: аналогично предыдущему, но максимум до 4294967295 символов.
  • ENUM: принимает только одно из значений заданного множества.
  • SET: принимает любой или все элементы из значений заданного множества.

Преимущества MySQL

  • Простота в работе: MySQL очень просто установить и настроить. Сторонние инструменты, в том числе визуализаторы (интерфейсы) значительно упрощают работу с данными.
  • Функциональность: MySQL поддерживает огромное количество функций SQL.
  • Безопасность: MySQL предоставляет много встроенных продвинутых функций для защиты данных.
  • Масштабируемость и производительность: MySQL может работать с большими объёмами данных.

Недостатки MySQL

  • Ограничения: структура MySQL накладывает некоторые ограничения, из-за которых не смогут работать продвинутые приложения.
  • Уязвимости: метод обработки данных, применяемый в MySQL, делает эту СУБД немного менее надёжной по сравнению с другими СУБД.
  • Медленное развитие: хотя MySQL является продуктом с открытым исходным кодом, он очень медленно развивается. Однако тут следует заметить, что на MySQL основано несколько полноценных баз данных (например, MariaDB).

Когда использовать MySQL

  • Распределенные операции: автономный сервер баз данных MySQL поддерживает множество операций и предоставляет несколько дополнительных функций.
  • Высокая безопасность данных: MySQL предлагает высокую защиту данных.
  • Веб-сайты и веб-приложения: несмотря на ограничения MySQL может поддерживать работу почти любого сайта и веб-приложения. Этот гибкий и масштабируемый инструмент прост в использовании.
  • Пользовательские решения: MySQL можно подогнать под строгие требования сайта или приложения.

Когда лучше не использовать MySQL

  • Конфликты с SQL: поскольку MySQL всё же полностью не реализует стандартов SQL, он не полностью совместим с SQL. Потому MySQL не всегда можно интегрировать с другой СУБД.
  • Слабая поддержка параллелизма: несмотря на то, что MySQL хорошо выполняет операции чтения, одновременные операции чтения и записи могут вызвать проблемы.
  • Отсутствие некоторых функций (например, полнотекстового поиска).

PostgreSQL

PostgreSQL – это продвинутая открытая объектно-ориентированная СУБД. PostgreSQL реализует SQL-стандарты ANSI/ISO.

В отличие от других СУБД, PostgreSQL поддерживает очень важные объектно-ориентированные и реляционные функции баз данных: надежные транзакции ACID (атомарность, согласованность, изолированность, долговечность) и т.п.

Основанная на надёжной технологии СУБД PostgreSQL может одновременно обрабатывать большое количество задач. Поддержка согласованности достигается без блокирования операций чтения благодаря MVCC.

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

Типы данных PostgreSQL

  • bigint: знаковое восьмибайтное целое число.
  • bigserial: восьмибайтное целое число с автоинкрементом.
  • bit [(n)]: битовая строка фиксированной длины.
  • bit varying [(n)]: битовая строка с переменной длиной.
  • boolean: логическое значение (true/false).
  • box: четырёхугольник на плоскости.
  • bytea: бинарные данные.
  • character varying [(n)]: строка символов с переменной длиной.
  • character [(n)]: строка символов с фиксированной длиной
  • cidr: адрес сети IPv4 или IPv6.
  • circle: круг на плоскости.
  • date: дата (год, месяц, день).
  • double precision: число с плавающей точкой двойной точности (8 байт).
  • inet: адрес хоста IPv4 или IPv6.
  • integer: знаковое четырёхбайтовое целое число.
  • interval [(p)]: промежуток времени.
  • line: бесконечная линия на плоскости.
  • lseg: сегмент линии на плоскости.
  • macaddr: MAC (Media Access Control) адрес.
  • money: валюта.
  • numeric [(p, s)]: точное числовое значение с выбранной точностью.
  • path: геометрический путь на плоскости.
  • point: геометрическая точка на плоскости.
  • polygon: закрытый геометрический путь на плоскости (полигон)
  • real: число с плавающей точкой одинарной точности (4 байта).
  • smallint: знаковое двухбайтное целое число.
  • serial: четырёхбайтное целое число с автоинкрементом.
  • text: строка символов с переменной длиной.
  • time [(p)] : время дня (без часового пояса).
  • time [(p)] with time zone: время дня и часовой пояс.
  • timestamp [(p)] : временная метка (дата и время) без часового пояса.
  • timestamp [(p)] with time zone: временная метка с часовым поясом.
  • tsquery: запрос текстового поиска.
  • tsvector: документ текстового поиска.
  • txid_snapshot: снапшот ID-транзакции уровня пользователя.
  • uuid: универсальный уникальный идентификатор.
  • xml: данные XML.

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

  • Система управления базами данных PostgreSQL открытая, SQL-совместимая, свободная.
  • Активное сообщество PostgreSQL поможет найти решение любой проблемы, связанной с СУБД, в любое время суток.
  • Поддержка сторонних инструментов: помимо встроенных продвинутых функций, PostgreSQL поддерживает множество открытых сторонних инструментов для проектирования, управления данными и т.п.
  • Масштабируемость и расширяемость.
  • Объектно-ориентированность.

Недостатки PostgreSQL

  • Производительность: в некоторых ситуациях производительность PostgreSQL ниже, чем у MySQL.
  • Невысокая популярность.
  • В связи с вышеперечисленными недостатками не все хостинг-провайдеры поддерживают PostgreSQL.

Когда использовать PostgreSQL

  • Если приложению необходима целостность данных.
  • Для выполнения сложных пользовательских задач.
  • Если в будущем приложению понадобится более надёжная платная БД, с PostgreSQL легче будет перейти.
  • Для поддержки приложений со сложной структурой PostgreSQL предлагает специальный набор функций.

Когда лучше не использовать PostgreSQL

  • Если приложению нужны быстрые операции чтения.
  • Если приложению не нужна абсолютная целостность данных, ACID или сложная структура, PostgreSQL может стать слишком сложным решением.
  • Репликация данных сложнее, чем в MySQL, потому в кластерах PostgreSQL лучше не использовать.
Tags: