При создании комплексного проекта с базой данных непременно возникнет вопрос: какую СУБД выбрать? А ведь запутаться в них несложно. В этом материале расскажем, как выбрать систему управления базами данных и на что обратить внимание. А в конце него вы найдете сравнительную таблицу СУБД, которая поможет сделать выбор.
Под типом проекта подразумевается сфера, в которой этот проект будет применяться: персональная или коммерческая. Тип проекта определяет критерии для сравнения СУБД.
Персональный проект — это некий pet-project. В этом случае речь не идёт о широком применении. Цель этого проекта — развлекательная (для души) или учебная. Если нет особых требований к производительности, то подойдут встраиваемые СУБД. В ином случае бесплатные СУБД.
Когда речь заходит о коммерческих, то в игру вступают большие ресурсы (бюджет, команда для администрирования) и большое количество требований: безопасность, надежность, скорость работы, производительность.
В разных системах используются разные движки. Одни лучше работают с текстом, а другие с медиаконтентом. Поэтому желательно заранее знать, какой контент будет храниться в БД.
У каждой системы управления базами данных есть документация, в которой отражены ограничения на объем одного файла, таблицы и т.д. Если планируете хранить большие объемы, то не все решения подойдут.
От того, как должна работать ваша БД (по сети или локально), зависит выбор СУБД. По этому принципу их разделяют на два типа: серверные и файловые. Если вам нужно, чтобы БД «перемещалась» вместе с приложением без установки дополнительного ПО, то стоит выбрать файловую систему, например SQLite.
Желательно заранее представлять, какое количество людей или компьютеров будет обращаться к БД в один момент.
Этот критерий немного связан с предыдущим, потому что при постоянном увеличении нагрузки (например, бизнес процветает) возникнет вопрос о расширении. Не факт, что при увеличении вычислительных ресурсов в два раза производительность системы тоже увеличится в два раза. Также, рано или поздно будет достигнут потолок, когда больше не получится добавлять оперативную память, процессоры и т.п.
Если проекту необходима хорошая безопасность, например в случае с персональными данными, то нужно учитывать, какие методы обеспечения безопасности поддерживает СУБД: сертификаты, шифрование, дополнительные возможности и т.п.
В некоторых проектах отказоустойчивость — первостепенный критерий при выборе. Отказоустойчивость системы определяется её способностью сохранить информацию и работоспособность в случае сбоя: отключения электричества, человеческая или программная ошибка. Если проект — это небольшой блог и при сбое будет потеряна статья, то это неприятно, но всё же некритично. А вот в случае банковской системы потеря информации скорее всего приведет к потере денежных средств.
Этот критерий упирается в бюджет проекта. Если он ограничен, то выбор делается в пользу open-source решений. Open-source СУБД надежны, но придется заниматься поддержкой самостоятельно или платить за аутсорс. С платными СУБД пользователь получает поддержку от разработчика.
Стоит выбирать те продукты, которые развиваются и дорабатываются.
Некоторые системы, например Oracle, требуют квалификации для их администрирования. Если это излишне или бюджет не потянет отдельного человека для администрирования, то стоит выбирать «простые» в пользовании системы управления базами данных.
Реляционная СУБД — это классическое решение, которое используется практически повсеместно (первая реализация появилась в 1979 году от Oracle). Такие БД реализуют реляционную модель. Она построена на отношениях между её объектами.
Реляционные БД лучше обрабатывают небольшие транзакции с большой долей вставок и минимальным откликом. К тому же в реляционных базах достигается высокая нормализация, необходимая в проектах со сложной структурой.
Главный игрок на рынке реляционных (и не только) СУБД — это Oracle Database. У неё дорогая лицензия и её сложно администрировать, но при должном подходе она будет работать лучше, чем какая-либо другая СУБД. Oracle Database подойдет для больших коммерческих проектов, где нужна производительность и есть возможность поддерживать эту СУБД.
Если нужна бесплатная и производительная серверная СУБД, то предпочтение можно отдать MySQL. MySQL подойдет для малых и средних проектов. Её легко администрировать и она обладает достойной производительностью. Если вы выберете эту СУБД, вам пригодится наша статья «Основы MySQL».
В случае необходимости в компактной и встраиваемой СУБД, то стоит выбрать файловую SQLite. Это несложная для освоения система управления базами данных, функционала которой хватит для маленьких проектов. О работе с SQLite мы писали в статье «Краткое руководство по работе с SQLite».
Базы данных «ключ-значение» представляют собой некую таблицу, в которой ключу соответствует некоторое значение. Такие СУБД стоит использовать в проектах с минимальной архитектурой, где нужно возвращать по ключу одно значение. Например, key-value БД отлично подходят для реализации кэширования.
Популярной key-value СУБД является Redis. О ее особенностях и сценариях применения можно почитать в нашей статье «Использование облачных баз данных Redis».
В документных базах данных хранят объекты, как ни странно, документы — структурированные тексты с определенным синтаксисом. Документные СУБД стоит использовать в проектах, где нужно хранить в рамках одной таблицы объекты с разной структурой, например списки, словари, в особенности если они близки к формату JSON.
Лучшие СУБД для хранения документов — это MongoDB и Couchbase.
Графовые БД — специфичный вид, в котором хранится информация, связанные с графами: узлы, вершины, связи и т.п. Соответственно, графовые БД необходимо использовать в системах с графами. Например, в социальных сетях.
Распространенная графовая СУБД — Neo4j.
Колоночные БД похожи на реляционные, однако в них информация хранится не построчно, а по столбцам.
Для получения значения атрибута одного из объектов в таблице в реляционных базах придется прочитать всю строку до нужной колонки. В колоночных БД будет прочитан сразу необходимый атрибут. На практике это позволяет ускорить чтение при больших (сто миллионов записей и больше) объемах.
Колоночные БД используются в качестве хранилищ данных с большим объемом информации. При обработке маленьких объемов преимущество чтения не будет заметно.
Самая популярная колоночная СУБД — Cassandra.
Вот сравнение современных СУБД:
Тип БД |
Область применения |
СУБД |
Лицензия |
Где стоит использовать |
Реляционная |
Большое количество небольших транзакций; нормализация; сложная структура; |
Oracle Database |
Проприетарная |
Проекты с большим бюджетом, где нужна производительность; |
MySQL |
GNU GPL 2 и проприетарная |
Средние и малые проекты со средним бюджетом; |
||
SQLite |
Свободное ПО |
Там, где нужна встраиваемая БД в небольшом приложении; |
||
Ключ-значение |
Минимальная архитектура; несложные запросы к БД; |
Redis |
BSD |
Нужен контроль над данными; сами данные большого объема; |
Модифицированная BSD |
Кэширование небольших и статичных данных |
|||
Документная |
Хранение документированных объектов; |
MongoDB |
SSPL |
Нужна гибкая в отношении документов СУБД |
Couchbase |
Apache License |
Нужна производительность, масштабируемость и SQL |
||
Графовая |
Проекты с графами; |
Neo4j |
GNU GPL 3 |
В социальных сетях, системах оценки и т.п. |
Колоночная |
Хранилище данных |
Cassandra |
Apache License 2.0 |
В системах хранения с большим количеством записей. |
Какая СУБД лучше? Всё зависит от проекта. Мы рассмотрели подходы при выборе СУБД, но всё-таки для многих задач подойдет любой бесплатный вариант. Также вы можете создать базу данных в облаке Timeweb Cloud.
Кстати, в официальном канале Timeweb Cloud собрали комьюнити из специалистов, которые говорят про IT-тренды, делятся полезными инструкциями и даже приглашают к себе работать.