Статьи

Пара слов о NoSQL

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

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

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

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

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

  • хранилища обеспечивают быстрый и малозатратный доступ;
  • часто хранят данные конфигураций и информацию о состоянии данных, представленных словарями или хэшем;
  • нет жёсткой схемы отношения между данными, поэтому в таких БД часто хранят одновременно различные типы данных;
  • разработчик отвечает за определение схемы именования ключей и за то, чтобы значение имело соответствующий тип/формат.

Документо-ориентированное хранилище (MongoDB):

  • база данных не предписывает определенный формат или схему;
  • каждый документ может иметь свою внутреннюю структуру;
  • документные БД являются хорошим выбором для быстрой разработки;
  • в любой момент можно менять свойства данных, не изменяя структуру или сами данные.

Колоночное хранилище (ClickHouse):

  • хранилище обеспечивает быстрое чтение и запись;
  • предназначена для OLAP-сценариев;
  • позволяет хранить петабайты данных;
  • удобно сжимать данные.

Графовое хранилище (Neo4j):

  • разновидность баз данных с реализацией сетевой модели в виде графа и его обобщений;
  • свойствами OLTP и OLAP систем;
  • поддержка транзакции ACID;
  • подходит для построения интеллектуальных приложений;
  • допуск произвольных пар ключ/значение;
  • возможность связывать произвольные записи друг с другом;
  • оптимизирована для хранения, картографирования, анализа.

Хранилища временных рядов (InfluxDB):

  • ориентированы на запись;
  • предназначены для обработки постоянного потока входных данных;
  • производительность зависит от количества отслеживаемых элементов, интервала опроса между записью новых значений и фактической полезной нагрузки данных.

NoSQL подход дает преимущества по сравнению с классическими РБД, но и также содержит недостатки, именно поэтому каждой из технологий нашлось свое место применения. Интереснее всего рассматривать их отличия в контексте CAP-теоремы, однако это уже тема отдельного поста.
Основы программирования Старт в IT и фишки