Реляционные базы данных и NoSQL-хранилища
Базы данных нужны для хранения данных и их обработки. Бывают реляционные (SQL) и NoSQL системы управления базами данных.
Реляционные базы данных (SQL)
Наиболее распространенными базами данных являются реляционные или SQL — данные в них хранятся во взаимосвязаанных таблицах. Типичные представители SQL СУБД: MySQL / MariaDB, PostgreSQL, MSSQL и Oracle. Первые две — бесплатны и для сайтов используются чаще всего. Вторые две — платные и реже используются в веб-проектах (чаще они применяются в корпоративных приложениях). По сути, для обычных проектов в техническом плане нет существенной разницы какую базу использовать, но в экономическом плане выгоднее использовать самую распространенную MySQL или чуть менее распространенную в простых проектах PostgreSQL — больше разработчиков, ниже стоимость поддержки и разработки.
Базы данных и хранилища NoSQL
Есть еще так называемые NoSQL базы данных и хранилища — MongoDB, CouchDB, Redis, Memcached, Cassandra, Scylla, которые значительно моложе реляционных баз данных, а также существенно отличаются от них по структуре хранения и механикам работы с данными. NoSQL СУБД применяются чаще не для хранения всех данных приложения, а лишь для решения специфических задач (журналирование, кэширование, очереди заданий, распределённое хранение данных) и поэтому менее распространены в простых проектах.
Рекомендации
В качестве основного хранилища предпочтительнее использовать реляционную СУБД. Для обычных проектов проще использовать MySQL или PostgreSQL, так как на простых операциях не очень заметна разница между различными реляционными базами данных. Хотя обычно мы склоняемся к использованию PostgreSQL. Однако, если проект предусматривает сложную логику обработки данных, то выбор базы стоит производить исходя из технических характеристик.
Как правило, выбор системы управления сайтом, фреймворка или даже языка программирования уже в какой-то мере обуславливает выбор базы данных для проекта. Например, системы управления сайтами на PHP обычно полноценно поддерживает в качестве БД только MySQL, а продукты от Microsoft, как правило, используют в одной связке (например, .NET + MSSQL).
Нереляционные СУБД лучше применять там, где их использование позволит увеличить скорость работы приложения, но нет необходимости в обеспечении сверхнадёжного хранения данных.
В большинстве случаев хранение данных целесообразно реализвывать на основе реляционных баз данных, а при помощи NoSQL СУБД решать специфические задачи.
PostgreSQL — свободная объектно-реляционная система управления базами данных, основанная на языке SQL.
СУБД отличается высокой надёжностью и хорошей производительностью. PostgreSQL поддерживает транзакции (ACID), репликация реализована встроенными механизмами. При этом система расширяемая — можно создавать свои типы данных и индексов, а также расширять поведение при помощи языков программирования.
MariaDB — система управления реляционными базами данных.
Является преемницей СУБД MySQL и практически полностью совместима с ней. Используется как основная СУБД практически во всех коробочных CMS на PHP.
Redis (remote dictionary server) — NoSQL СУБД, работающая со структурами данных типа «ключ-значение».
Redis в первую очередь ориентирован на быстрое выполнение атомарных операций. Данные хранятся в оперативной памяти, что обеспечивает очень быстрый доступ к ним. Наиболее активное применение он находит в кэшировании и в реализации брокеров сообщений и очередей.
Scylla — распределённая отказоустойчивая колоночная СУБД с открытым исходным кодом.
ScyllaDB была создана на основе архитектуры Apache Cassandra с целью достижения более высокой производительности: повышения пропускной способности и снижения задержек. Как и Cassandra, Scylla поддерживает язык запросов CQL и формат файлов SSTable.