Когда начинается разработка масштабного проекта, в котором будут использоваться базы данных, часто начинаются споры о том, какую СУБД выбрать. У каждой есть свои сторонники, поэтому споры могут быть жаркими. В этой статье мы расскажем, какие системы управления базами данных бывают и для каких ситуаций выбрать тот или иной тип.
Какие СУБД существуют и как их выбирать
Систем управления базами данных очень много. Но реально используют перечисленные ниже:
- Реляционные
- Key-value
- Документные
- Графовые
- Колоночные
- Time Series
- Spatial
- Search engines
- Объектные
Детальнее о них расскажем позднее, но сейчас перечислим критерии выбора СУБД, которые должны стать реперными точками при выборе. Итак, какую СУБД можно выбрать для проекта:
- Тип проекта. Для небольшого pet-project может подойти любая встраиваемая или бесплатная СУБД. Коммерческий проект требует от СУБД соблюдения стандартов безопасности, производительности, скорости работы и т. д. Здесь возможностей бесплатных СУБД может не хватить.
- Что будет храниться. Некоторые СУБД лучше работают с текстом, другие заточены под медиаконтент. Если знать, что будет храниться в БД, выбор СУБД станет проще.
- Объём. В технической документации для каждой СУБД указаны лимиты на объём одного файла, таблицы и других объектов. В случае, когда нужно хранить большие массивы данных, заранее проверьте способность системы управления базами данных «переваривать» такие объёмы.
- Нагрузка и масштабируемость. Важно заранее предусмотреть возможный рост нагрузки, который неизбежно возникнет при расширении компании. Бесконечно наращивать оперативную память, процессоры и другие ресурсы не получится, поэтому выбирайте СУБД с прицелом на способность переносить текущие и двукратно увеличенные нагрузки, а также масштабироваться в будущем.
- Файловая или серверная. Ваша база данных может работать по сети и локально. От этого зависит выбор СУБД. Они бывают файловые и серверные.
- Отказоустойчивость и безопасность. Для некоторых проектов отказоустойчивость — критично важный параметр. Что будет, если упадёт БД банка, объяснять не нужно. Поэтому ориентируйтесь на реальные потребности проекта в уровне отказоустойчивости СУБД. Аналогично и с безопасностью — сертификаты, шифрование, дополнительные возможности нужны для крупных проектов. Небольшому достаточно и менее «навороченной» СУБД.
- Стоимость. Существуют бесплатные опенсорсные решения, которые дают много возможностей, но требуют самостоятельной поддержки. Есть платные СУБД с поддержкой от разработчика. Выбор зависит от бюджета проекта.
Далее рассмотрим типы СУБД и их особенности.
Реляционные СУБД
Классическое решение, появившееся в 1979 году благодаря компании Oracle. Реляционные БД построены на отношениях между её объектами и пригодны для обработки небольших транзакций с обилием вставок и минимальным временем отклика. Например, Oracle Database подойдёт для коммерческих проектов, где требуется производительность и есть ресурсы для администрирования этой дорогой и сложной СУБД.
Из бесплатных серверных СУБД выделяется MySQL, которая отлично тянет небольшие и средние проекты. А компактная и встраиваемая файловая SQLite хорошо вписывается в маленькие проекты, поскольку она проста в управлении и обладает достаточной функциональностью.
Также хорошо известны Microsoft SQL, PostgreSQL. Получается, что нельзя ответит на вопрос, какая СУБД лучше, MySQL или PostgreSQL. Они обе хорошо для своих задач.
Документные
Документно-ориентированные СУБД хранят документы — структурированные тексты, имеющие конкретный синтаксис. Это популярная разновидность NoSQL СУБД, которая подходит для проектов, где в таблицах хранят объекты с разной структурой (списки, словари). Нельзя сказать, что это база для систем документооборота, хотя Документные СУБД сохраняют состояние, а не поведение. Зато они поддерживают проверку схему и сейчас активно развиваются. Среди популярных СУБД этого типа — CouchDB, MongoDB, Amazon DocumentDB.
Графовые
Особые СУБД, предназначенные для хранения информации, связанной с графами (узлы, вершины, связи между узлами). Хорошо подходят для социальных сетей, где требуется хранить связи между пользователями по разным критериям. Среди популярных СУБД этого типа можно перечислить Neo4j, Amazon Neptune, InfiniteGraph, InfoGrid.
Колоночные
Колоночные БД отличаются от реляционных тем, что информация в них хранится столбцами, а не построчно. Значение атрибута любого из объектов прочитывается сразу. Используются они в качестве хранилищ данных с большим (от ста миллионов записей) объёмом информации, и при обработке скромных объёмов не способны продемонстрировать свои преимущества.
Колоночные СУБД удобны тем, что позволяют действительно быстро выполнять сложные аналитические запросы на больших объёмах данных. При этом структура таблиц с данными легко меняются, а эффективная компрессия позволяет экономить занимаемый БД объём памяти. Среди популярных СУБД этого типа можно назвать Vertica, ClickHouse, Google BigTable, InfoBright, Cassandra, SAP IQ.
Key-value
СУБД Key-value (также её называют «ключ-значение») — одна из самых из самых простых систем управления базами данных. Фактически она представляет собой таблицу с уникальным ключом и привязанным к нему значением. СУБД Key-value очень быстрые, поэтому их часто используют для кэширования данных и для брокеров сообщений. Некоторые типы таких СУБД позволяют работать полностью в памяти и задавать срок жизни записи, удаляя устаревшие данные. Среди популярных Key-value СУБД — Redis и Memcached.
Time Series
СУБД данного типа заточены под хранение данных временных меток или рядов. Например, данные собранные с датчиков контроля движения, метрик JVM, сетевые данные, ответы API и т. д. Информация хранится с отметками времени. Причём эти отметки индексируются и пишутся так, чтобы сведения можно было запрашивать быстрее, чем при работе с реляционными БД. Среди популярных СУБД этого типа можно вспомнить InfluxDB, Kdb+, Prometheus, TimescaleDB, QuestDB, AWS Timestream, OpenTSDB, GridDB.
Spatial
СУБД данного типа сконфигурированы для хранения геометрически ориентированных объектов: простых (линии, точки, многоугольники) и сложных (линейные сети, 3D-объекты). В них можно проводить с объектами разные операции — создания, трансформации, измерения, вычисления и пр. Такого рода СУБД обладают собственным типизированным SQL/MM языком. Среди популярных СУБД этого типа можно вспомнить Oracle Spatial, Microsoft SQL, PostGIS, SpatialLite.
Search engines
Этот тип СУБД необходим для организации полнотекстового поиска по разным данным (email, RSS-feed, JSON, XML, CSV), позволяет искать данные из других БД, по документам PDF и Microsoft Office. Такие СУБД используют инвертированные индексы, чтобы искать практически в режиме реального времени. Среди популярных СУБД этого типа можно назвать Apache Solr, Elasticsearch, Splunk.
Объектные
Данный тип СУБД предназначен для хранения и работы с объектами, у которых имеются свойства и методы. Основная задача таких СУБД заключается в избавлении разработчиков, использующих ООП, от необходимости трансформировать объекты в таблицы/строки и обратно. В объектных СУБД реализованы инкапсуляция и полиморфизм. Среди популярных СУБД этого типа можно назвать MongoDB Realm, InterSystems Caché, ObjectStore, Actian NoSQL DB, Objectivity/DB.
Какая СУБД лучше? Зависит от проекта. Чтобы вам было проще решить, какую СУБД выбрать, собрали всё в таблицу. А ещё напоминаем, что вы можете воспользоваться облачным решением БД как сервис, чтобы сэкономить издержки и обеспечить бесперебойную работу ИТ-систем. Мы готовы предложить:- MS SQL Web;
- MS SQL Standard;
- PostgreSQL (typical);
- PostgreSQL (high availability);
- MySQL (typical);
- MySQL (high availability).
№ |
Тип СУБД |
Когда выбирать |
Популярные СУБД данного типа |
1 |
Реляционные |
Нужна транзакционность; высокая нормализация; большая доля операций на вставку |
Oracle, MySQL, Microsoft SQL Server, PostgreSQL, IBM DB2, SQLite |
2 |
Ключ-значение |
Задачи кэширования и брокеры сообщений |
Redis, Memcached, etcd |
3 |
Документные |
Для хранения объектов в одной сущности, но с разной структурой; хранение структур на основе JSON |
Couchbase, MongoDB, Amazon DocumentDB |
4 |
Графовые |
Задачи подобные социальным сетям; системы оценок и рекомендаций |
Neo4j, Amazon Neptune, InfiniteGraph, TigerGraph |
5 |
Колоночные |
Хранилища данных; выборки со сложными аналитическими вычислениями; количество строк в таблице превышает сотни миллионов |
Vertica, ClickHouse, Google BigQuery, Sybase \ SAP IQ, InfoBright |
6 |
Time series |
Системы мониторинга, сбора телеметрии, и финансовые системы, с привязкой к временным меткам или временным рядам |
InfluxDB, Kdb+, Prometheus, TimescaleDB, QuestDB, AWS Timestream, OpenTSDB, GridDB |
7 |
Объектные |
Высокопроизводительная обработка данных, имеющих сложную структуру, с использованием языков объектно ориентированного программирования |
MongoDB Realm, InterSystems Caché, ObjectStore, Actian NoSQL DB, Objectivity/DB |
8 |
Search engine |
Системы полнотекстового поиска |
Apache Solr, Elasticsearch, Splunk |
9 |
Spatial |
GIS-решения, работа с геометрическими объектами |
Oracle Spatial, Microsoft SQL, PostGIS, SpatialLite |