Базы данных классифицируются по нескольким признакам, основные виды:
-
Реляционные (SQL-oriented):
- Данные хранятся в таблицах со строками и столбцами.
- Отношения между таблицами определяются первичными и внешними ключами.
- Используется язык SQL для запросов.
- Примеры: PostgreSQL, MySQL, Oracle, SQL Server.
-
Нереляционные (NoSQL):
- Отличаются от реляционных гибкими схемами и горизонтальным масштабированием.
- Существуют разные модели данных:
- Ключ-значение: Redis, Memcached.
- Документно-ориентированные: MongoDB, Couchbase.
- Ширококолоночные: Cassandra, HBase.
- Графовые: Neo4j, ArangoDB.
-
In-Memory (в оперативной памяти):
- Данные хранятся непосредственно в ОЗУ для быстрого доступа.
- Могут быть как реляционными, так и NoSQL.
- Примеры: Redis, Memcached, SAP HANA.
-
Временные ряды (Time Series):
- Оптимизированы для хранения и анализа данных, поступающих в хронологическом порядке.
- Примеры: InfluxDB, TimescaleDB.
-
Многомодельные (Multi-model):
- Поддерживают несколько моделей данных одновременно (например, документную и графовую).
- Примеры: ArangoDB, OrientDB.
-
Геопространственные (Spatial):
- Оптимизированы для хранения и запросов данных с географическими координатами.
- Часто являются расширениями реляционных или NoSQL СУБД (например, PostGIS для PostgreSQL).
-
Ведущий-ведомый (Master-Slave):
- Архитектурный паттерн для репликации данных. Один узел (ведущий) обрабатывает записи, другие (ведомые) — только чтение и синхронизируются с ведущим. Применяется для масштабирования чтения и обеспечения отказоустойчивости.
-
Шардированные (Sharded):
- Данные распределены по нескольким независимым узлам (шардам). Применяется для горизонтального масштабирования и обработки больших объемов данных.
Таблица сравнения реляционных и нереляционных БД (основные отличия):
| Характеристика | Реляционные (SQL) | Нереляционные (NoSQL) |
|---|
| Схема | Жесткая, предопределенная | Гибкая, динамическая |
| Масштабирование | Вертикальное (сложнее горизонтальное) | Горизонтальное (проще) |
| Целостность данных | ACID (обычно) | BASE (чаще) |
| Модель данных | Таблицы | Ключ-значение, документ, граф, т.д. |
| Язык запросов | SQL | Разнообразные (API, специфичные) |