Статьи

Пара слов о NoSQL

Продолжая тему баз данных, не#nbsp;можем не#nbsp;затронуть хоть и#nbsp;реже встречающийся новичкам, но#nbsp;не#nbsp;менее интересный NoSQL, о#nbsp;котором также важно знать.

NoSQL#nbsp;— это подход к#nbsp;реализации масштабируемого хранилища информации с#nbsp;гибкой моделью данных, отличающийся от#nbsp;классических реляционных СУБД. NoSQL базы оптимизированы для приложений, которые должны быстро, с#nbsp;низкой временной задержкой (low latency) обрабатывать большие объемы данных с#nbsp;различными структурами.

Все NoSQL решения принято делить на#nbsp;несколько типов:

  • Ключ-значение (Key-value)
  • Документо-ориентированное хранилище
  • Колоночное хранилище
  • Графовое хранилище
  • Хранилища временных рядов

Ключ-значение (Key-value) (Redis):

  • хранилища обеспечивают быстрый и#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-теоремы, однако это уже тема отдельного поста.
2024-01-10 12:30 Основы программирования Старт в IT и фишки