Как уже говорилось, модели данных со своими преимуществами и недостатками имеют свои области применения, в которых они будут наиболее эффективны
По статистике реляционные базы данных имеют наибольшую популярность в разработке
Реляционная модель организует данные в виде двухмерных таблиц со строгой структурой. Данные вносятся как строки, колонки которых соответствуют определенным типам данных. Между таблицами, отношениями, можно настроить семантические связи. Реляционные базы данных используют структурированный язык запросов SQL и соответствуют ACID свойствам
Преимущества реляционных баз данных:
Благодаря строгой структуре и ACID свойствами, обеспечивается целостность данных
Использование SQL как стандарта облегчает разработку, миграцию и поддержку
Возможность выполнения сложные агрегирующих запросов
Большое сообщество
Недостатки:
Трудно хранить слабоструктурированные данные
Горизонтальное масштабирование реляционных БД зачастую сложнее реализовать, чем в NoSQL решениях
При большом количестве взаимосвязанных таблиц схемы становятся громоздким, что бьет по производительности
Применения реляционных БД:
OLTP-системы (Online transaction processing, транзакции небольшого размера обрабатываются с минимальным временем отклика)
Системы с высокими требованиям к целостности данных
Данные имеют строгую структуру
Распространенные реализации: PostgreSQL, MySQL, SQLite, MariaDB, Microsoft SQL Server, Oracle DB, YandexDB
В колоночных БД вместо того, чтобы хранить каждую запись целиком, данные организуются по столбцам, то есть значения одного атрибута хранятся последовательно, что позволяет оптимизировать запросы над конкретными наборами данных. Колоночные БД считаются NoSQL
Преимущества:
Оптимизация запросов
Если атрибут имеет маленький домен (например, перечисление), то, храня их последовательно, можно кодировать их более оптимально, что позволяет сэкономить память
Недостатки:
Операции, характерные OLTP, работают менее эффективно
При частых изменениях данных могут возникать проблемы с синхронизацией
Применение:
Big Data
OLAP-системы (Online Analytical Processing)
Бизнес-аналитика (отчеты, дашборды)
Исторические данные
Реализации: Cassandra, ScyllaDB, Google BigQuery, ClickHouse (колоночная реляционная СУБД)
Данные хранятся в виде документов (обычно представляющиеся в формате BSON), а не в виде строк таблицы. Документы объединяются в коллекции (по аналогии с таблицами, но без обязательного соответствия единой схеме). Причисляется к NoSQL
Преимущества:
Возможность изменения структуры документов без необходимости модифицировать общую схему БД
Документы в формате JSON или BSON естественным образом отображаются на объекты в языках программирования
Простота горизонтальной масштабируемости
Недостатки:
Применение:
Хранение логов
OLTP-системы
Разработка MVP
Неструктурированные данные
Обработка больших объемов данных
Реализации: MongoDB, Firebase Realtime Database, Elasticsearch, Amazon DynamoDB, CouchDB
Вместо таблиц и кортежей в графовой БД объектами являются узлы, ребра и их свойства. Графовые БД считаются NoSQL
Преимущества:
Запросы на поиск путей, обход графа, анализ связей выполняются быстро
Нет жесткой структуры
Легко добавлять новые типы связей и узлов без изменения общей схемы
Недостатки:
Применение:
Социальные сети
Системы рекомендаций
Управление цепочками поставок
Фрод-анализ (поиск мошеннических активностей)
Реализации: Neo4j, Dgraph
Данные в “ключ-значение” БД хранятся в виде ключ-значение
Преимущества:
Операции получаения, вставки, удаления работают за O(1)
Быстрые и требуют мало ресурсов
Недостатки:
Сложно агрегировать данные или составлять выборку
Слабая структура
Применение:
Кэширование данных
Хранение сессионных данных
Реализация очередей
Хранение конфигурационных данных
Реализации: Redis, Memcached, Etcd, Kafka
Данные упорядочены по времени (в данном случае ключ - это метка времени)
Преимущества:
Высокая скорость записи
Легко делать агрегацию и интерполяцию
Хранение больших объемов данных
Анализ данных за определенный промежуток времени
Недостатки:
Применение:
Мониторинг и логирование
Финансовые рынки
Интернет вещей
Реализации: InfluxDB, TimescaleDB, Prometheus
Данные хранятся в виде векторов вещественных чисел
Преимущества:
Недостатки:
Применение: кластеры, техническое зрение, машинное обучение
Реализации: Pinecone, Milvus
Данных хранятся в виде файлах (текст, аудио, видео и др.) в файловой системе. Помимо этого каждый файл хранит метаданные. Доступ к файлам осуществляется по их именам и путям в файловой системы
Преимущества:
Интеграция с ОС и стандартными файловыми менеджерами
Возможность выстраивания сложной модели доступа
Возможность сделать CDN (Content Delivery Network)
Недостатки:
Применение: хранение и распространение файлов
Реализации: Amazon S3, MinIO