Реляционные базы данных и 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.

Узнать больше →

Cтатьи по теме:

Масштабирование баз данных — партиционирование, репликация и шардинг
СУБД — это очень часто «узкое место» в производительности веб-приложений. В момент, когда сервер баз данных не может справится с нагрузками, производится масштабирование. Рассмотрим основные способы увеличения производительности СУБД.
Быстрый поиск на сайте, используя ElasticSearch или Sphinx
Sphinx и ElasticSearch — это поисковые «движки», которые обеспечивают более быстрый поиск и фильтрацию по сравнению с реляционными базами данных, а также обеспечивают возможность использования многих полезных функций поиска, например, учитывают морфологию языка, осуществляют фасеточный поиск, работают со стоп-словами, обеспечивают выборочную индексацию и позволяют производить настройку формулы определения релевантности документов.
Ускоряем работу сайта при помощи кеширования на базе Memcached
Memcached — это хранилище «ключ => значение», использование которого очень эффективно для ускорения работы сайта или веб-приложения.
MongoDB — документо-ориентированная база данных (NoSQL)
MongoDB — это NoSQL хранилище данных, крайне удобное для хранения информации, которая не может быть нормально структурирована в рамках реляционных баз данных.
MySQL — система управления базами данных
MySQL — это реляционная система управления базами данных с открытым исходным кодом. В настоящее время эта СУБД одна из наиболее популярных в веб-приложениях — подавляющее большинство CMS использует именно MySQL (часто только её, без альтернатив), а почти все веб-фреймворки поддерживают MySQL уже на уровне базовой конфигурации (без дополнительных модулей).
MariaDB — система управления реляционными базами данных
MariaDB — ответвление реляционной СУБД MySQL, разрабатываемое сообществом под лицензией GPL. MariaDB полностью совместима с приложениями, использующими MySQL, а переход на эту СУБД оправдан тем, что MySQL уже не так активно развивается.
PostgreSQL — свободная объектно-реляционная система управления базами данных
PostgreSQL — это популярная свободная объектно-реляционная система управления базами данных. PostgreSQL отличается высокой надёжность, базируется на языке SQL и имеет широкие возможности.

Тематические технологии:

Поисковая система ElasticSearch
Колоночная СУБД Cassandra
CEPH — распределенная система хранения
Реляционная СУБД MySQL
Хранилище Memcached
MongoDB
Веб-сервер NGINX
Kubernetes