Перейти к основному содержимому

3.06. Основы NoSQL

Разработчику Аналитику Тестировщику
Архитектору Инженеру

Основы NoSQL

Мы уже рассматривали основы баз данных. Сейчас придётся углубиться.

Представим себе библиотеку, где книги распределены по полочкам, упорядочены по алфавиту, с указателями, номерами, сгруппированы по авторам, жанрам и году изданию. Это порядок - SQL.

А теперь представим, что кто-то принёс старую тетрадь с заметками, огромный плейлист с музыкой из Spotify, коллекцию фотографий с телефона и попросил всё это хранить аккуратно. Но как это всё хранить, если нет какой-то единой структуры? Ведь это всё не поместить по полочкам, в строчки и таблицы - вот тут и нужна нереляционная модель хранения данных. Эта тема появилась, когда стандартных возможностей стало недостаточно, и XXI век стал эпохой больших данных, с кучей социальных сетей, мессенджеров, онлайн-магазинов и устройств. Информация очень туго подстравивалась под табличную модель либо не подстраивалась вовсе. Тогда и изобрели гибкие NoSQL-системы, которые не требуют строгих схем, умеют масштабироваться, работают быстро и хранят любые форматы, чтобы хранить данные «как есть».

Поскольку NoSQL появился позже SQL, поначалу может быть не совсем понятно, как эта технология работает, но я уверен, что мы справимся.

NoSQL (Not Only SQL) – базы данных, которые не используют таблицы (как SQL), а хранят данные в других форматах:

  • Документы (MongoDB);
  • Ключ-значение (Redis);
  • Колоночные (Cassandra);
  • Графовые (Neo4j).

Какие возможности предоставляет NoSQL?

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

В зависимости от необходимости решения конкретных задач, подбирается соответствующая NoSQL-технология. Давайте разбёрем их.