Открыть сервис

NoSQL

NoSQL (от англ. Not Only SQL — «не только SQL») — это широкий класс систем управления базами данных (СУБД), которые принципиально отличаются от традиционных реляционных баз данных (RDBMS), использующих язык структурированных запросов (SQL) и строгую схему таблиц. NoSQL-базы данных предназначены для работы с большими объёмами слабоструктурированных или неструктурированных данных, обеспечивая высокую горизонтальную масштабируемость, производительность и гибкость схемы в распределённых вычислительных средах. Основными отличительными чертами NoSQL являются отказ от обязательного использования SQL, отсутствие или ослабление требований ACID (атомарность, согласованность, изоляция, долговечность) в пользу модели BASE (Basically Available, Soft state, Eventual consistency — базовая доступность, мягкое состояние, согласованность в конечном счёте) и поддержка различных моделей данных.

История и предпосылки возникновения

Термин «NoSQL» был впервые использован в 1998 году Карло Строцци (Carlo Strozzi) для названия его легковесной базы данных, которая не поддерживала SQL. Однако современное понимание NoSQL сформировалось в середине 2000-х годов под влиянием потребностей крупных интернет-компаний, таких как Google, Amazon, Facebook (продукт Meta, признанной экстремистской и запрещённой в РФ) и Twitter. Эти компании столкнулись с проблемами масштабирования реляционных баз данных при обработке огромных массивов данных, генерируемых пользователями.

В 2006 году компания Google опубликовала статью о Bigtable — распределённой системе хранения данных, основанной на модели «ключ-значение» и колоночном хранении. В 2007 году Amazon представила Dynamo — высокодоступную распределённую систему хранения данных, также работающую по принципу «ключ-значение». Эти работы стали катализаторами развития NoSQL-движения. В 2009 году прошла первая конференция, посвящённая NoSQL, а термин приобрёл современное значение — «Not Only SQL», подчёркивающее, что NoSQL не является прямой заменой SQL, а дополняет его.

Классификация NoSQL-баз данных

NoSQL-системы классифицируются по модели данных, которую они используют. Выделяют четыре основных типа:

Документоориентированные базы данных

Хранят данные в виде документов, обычно в формате JSON, BSON или XML. Каждый документ представляет собой самодостаточную единицу, содержащую все необходимые поля, причём структура документов может различаться в пределах одной коллекции. Это обеспечивает высокую гибкость схемы. Примеры: MongoDB, Couchbase, CouchDB, Amazon DocumentDB. Область применения: управление контентом, каталоги товаров, системы аналитики в реальном времени.

Базы данных типа «ключ-значение»

Являются наиболее простым типом NoSQL-СУБД. Данные хранятся в виде пар «ключ-значение», где ключ — уникальный идентификатор, а значение — произвольный набор данных (строка, число, JSON-объект, бинарные данные). Доступ к данным осуществляется исключительно по ключу, что обеспечивает высокую скорость операций чтения и записи. Примеры: Redis, Amazon DynamoDB, Riak, Memcached. Область применения: кэширование, сессии пользователей, очереди сообщений, рейтинги.

Столбцовые базы данных (семейства колонок)

Хранят данные не по строкам, как реляционные базы, а по колонкам. Данные группируются в семейства колонок (column families), которые могут содержать произвольное количество колонок. Каждая строка может иметь свой набор колонок, что обеспечивает гибкость схемы. Такая организация позволяет эффективно выполнять агрегирующие запросы и сканировать большие объёмы данных. Примеры: Apache Cassandra, HBase, Google Bigtable, ScyllaDB. Область применения: системы управления временными рядами, IoT, аналитика больших данных.

Графовые базы данных

Ориентированы на хранение и обработку данных, связанных сложными отношениями. Данные представляются в виде узлов (вершин) и рёбер (связей), каждое из которых может иметь собственные свойства. Графовые базы данных оптимизированы для выполнения запросов, связанных с обходом графов, таких как поиск кратчайшего пути или выявление сообществ. Примеры: Neo4j, Amazon Neptune, ArangoDB, OrientDB. Область применения: социальные сети, системы рекомендаций, анализ мошенничества, управление сетями.

Характеристики и особенности

Горизонтальная масштабируемость

NoSQL-базы данных изначально проектировались для работы в распределённых кластерах на дешёвом оборудовании. Они поддерживают шардинг (сегментирование) — автоматическое распределение данных по множеству серверов, а также репликацию — создание копий данных для обеспечения отказоустойчивости. Добавление новых узлов в кластер обычно не требует остановки системы.

Гибкость схемы

В отличие от реляционных баз, где схема (таблицы, столбцы, типы данных) должна быть определена заранее и изменять её сложно, NoSQL-системы позволяют хранить данные без предопределённой схемы (schemaless). Это особенно полезно при работе с данными, структура которых часто меняется или заранее неизвестна.

Модель согласованности

Большинство NoSQL-систем следуют модели BASE, которая жертвует строгой согласованностью (как в ACID) ради доступности и производительности. В модели BASE данные считаются согласованными в конечном счёте (eventual consistency): после записи изменения распространяются на все реплики с некоторой задержкой. Однако некоторые системы, например, Apache Cassandra, позволяют настраивать уровень согласованности для каждой операции.

Отсутствие или ограниченная поддержка SQL

Хотя многие современные NoSQL-СУБД (например, MongoDB, Cassandra, Couchbase) внедряют поддержку диалектов SQL или аналогичных языков запросов, они не поддерживают сложные операции, такие как JOIN, в полном объёме. Вместо этого используются собственные API и языки запросов (например, MongoDB Query Language, CQL для Cassandra, Cypher для Neo4j).

Применение

NoSQL-базы данных нашли широкое применение в следующих областях:

Критика и ограничения

Несмотря на популярность, NoSQL-системы имеют ряд ограничений:

Влияние на индустрию

Появление NoSQL оказало значительное влияние на развитие информационных технологий. Оно стимулировало эволюцию реляционных баз данных, которые начали внедрять поддержку JSON-типов, гибких схем и распределённых архитектур (например, PostgreSQL, MySQL с плагинами JSON). Кроме того, концепции NoSQL легли в основу многих облачных сервисов, таких как Amazon DynamoDB, Google Firestore и Azure Cosmos DB. В настоящее время NoSQL и реляционные базы данных часто используются совместно в рамках полиглотной персистентности (polyglot persistence), когда для каждой задачи выбирается наиболее подходящий тип СУБД.

Источники

  1. Cattell, R. (2011). Scalable SQL and NoSQL data stores. ACM SIGMOD Record, 39(4), 12–27.
  2. Hecht, R., & Jablonski, S. (2011). NoSQL evaluation: A use case oriented survey. In 2011 International Conference on Cloud and Service Computing (CSC) (pp. 336–341). IEEE.
  3. Moniruzzaman, A. B. M., & Hossain, S. A. (2013). NoSQL database: New era of databases for big data analytics—classification, characteristics and comparison. International Journal of Database Theory and Application, 6(4), 1–14.
  4. Strauch, C., Sites, U. S., & Kriha, W. (2011). NoSQL databases. Lecture Notes, Stuttgart Media University, 20(24), 79.
  5. Stonebraker, M. (2010). SQL databases v. NoSQL databases. Communications of the ACM, 53(4), 10–11.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →