Продолжая тему баз данных, не можем не затронуть хоть и реже встречающийся новичкам, но не менее интересный NoSQL, о котором также важно знать.
NoSQL — это подход к реализации масштабируемого хранилища информации с гибкой моделью данных, отличающийся от классических реляционных СУБД. NoSQL базы оптимизированы для приложений, которые должны быстро, с низкой временной задержкой (low latency) обрабатывать большие объемы данных с различными структурами.
Все NoSQL решения принято делить на несколько типов:
Ключ-значение (Key-value) (Redis):
Документо-ориентированное хранилище (MongoDB):
Колоночное хранилище (ClickHouse):
Графовое хранилище (Neo4j):
Хранилища временных рядов (InfluxDB):
NoSQL подход дает преимущества по сравнению с классическими РБД, но и также содержит недостатки, именно поэтому каждой из технологий нашлось свое место применения. Интереснее всего рассматривать их отличия в контексте CAP-теоремы, однако это уже тема отдельного поста.
NoSQL — это подход к реализации масштабируемого хранилища информации с гибкой моделью данных, отличающийся от классических реляционных СУБД. NoSQL базы оптимизированы для приложений, которые должны быстро, с низкой временной задержкой (low latency) обрабатывать большие объемы данных с различными структурами.
Все NoSQL решения принято делить на несколько типов:
- Ключ-значение (Key-value)
- Документо-ориентированное хранилище
- Колоночное хранилище
- Графовое хранилище
- Хранилища временных рядов
Ключ-значение (Key-value) (Redis):
- хранилища обеспечивают быстрый и малозатратный доступ;
- часто хранят данные конфигураций и информацию о состоянии данных, представленных словарями или хэшем;
- нет жёсткой схемы отношения между данными, поэтому в таких БД часто хранят одновременно различные типы данных;
- разработчик отвечает за определение схемы именования ключей и за то, чтобы значение имело соответствующий тип/формат.
Документо-ориентированное хранилище (MongoDB):
- база данных не предписывает определенный формат или схему;
- каждый документ может иметь свою внутреннюю структуру;
- документные БД являются хорошим выбором для быстрой разработки;
- в любой момент можно менять свойства данных, не изменяя структуру или сами данные.
Колоночное хранилище (ClickHouse):
- хранилище обеспечивает быстрое чтение и запись;
- предназначена для OLAP-сценариев;
- позволяет хранить петабайты данных;
- удобно сжимать данные.
Графовое хранилище (Neo4j):
- разновидность баз данных с реализацией сетевой модели в виде графа и его обобщений;
- свойствами OLTP и OLAP систем;
- поддержка транзакции ACID;
- подходит для построения интеллектуальных приложений;
- допуск произвольных пар ключ/значение;
- возможность связывать произвольные записи друг с другом;
- оптимизирована для хранения, картографирования, анализа.
Хранилища временных рядов (InfluxDB):
- ориентированы на запись;
- предназначены для обработки постоянного потока входных данных;
- производительность зависит от количества отслеживаемых элементов, интервала опроса между записью новых значений и фактической полезной нагрузки данных.
NoSQL подход дает преимущества по сравнению с классическими РБД, но и также содержит недостатки, именно поэтому каждой из технологий нашлось свое место применения. Интереснее всего рассматривать их отличия в контексте CAP-теоремы, однако это уже тема отдельного поста.