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