Что такое NoSQL?
Высокопроизводительные нереляционные базы данных с гибкими моделями данных
Что такое базы данных NoSQL?
Базы данных NoSQL специально созданы для особых моделей данных и обладают гибкими схемами, что позволяет разрабатывать современные приложения. Базы данных NoSQL получили широкое распространение в связи с простотой разработки, функциональностью и производительностью при любых масштабах. В них применяются различные модели данных, в том числе документные, графовые, поисковые, с использованием пар «ключ-значение» и хранением данных в памяти. Ресурсы, представленные на этой странице, помогут разобраться с базами данных NoSQL и начать работу с ними.
В течение десятилетий центральное место в разработке приложений занимала реляционная модель данных, которая использовалась в реляционных базах данных, таких как Oracle, DB2, SQL Server, MySQL и PostgreSQL. Но с середины и до конца 2000-х годов заметное распространение стали получать и другие модели данных. Для обозначения появившихся классов БД и моделей данных был введен термин «NoSQL». Часто «NoSQL» используется в качестве синонима к термину «нереляционный».
Как работает база данных NoSQL (нереляционная БД)?
В базах данных NoSQL для доступа к данным и управления ими применяются различные модели данных, в том числе документная, графовая, поисковая, с использованием пар «ключ-значение» и хранением данных в памяти. Базы данных таких типов оптимизированы для работающих с большим объемом данных приложений, которым требуется низкая задержка и гибкие модели данных. Все это достигается за счет смягчения жестких требований к непротиворечивости данных, характерных для других типов БД.
Рассмотрим пример моделирования схемы для простой базы данных книг.
- В реляционной базе данных запись о книге часто разделяется на несколько частей (или «нормализуется») и хранится в отдельных таблицах, отношения между которыми определяются ограничениями первичных и внешних ключей. В таком примере в таблице Books имеются столбцы ISBN, Book Title и Edition Number, в таблице Authors имеются столбцы AuthorID и Author Name, а в таблице Author-ISBN имеются столбцы AuthorID и ISBN. Реляционная модель создана таким образом, чтобы обеспечить целостность ссылочных данных между таблицами в базе данных, нормализованных для снижения избыточности и в целом оптимизированных для хранения.
- В базе данных NoSQL запись о книге обычно хранится как документ JSON. Для каждой книги, или элемента, значения ISBN, Book Title, Edition Number, Author Name и AuthorID хранятся в качестве атрибутов в едином документе. В такой модели данные оптимизированы для интуитивно понятной разработки и горизонтальной масштабируемости.
Для чего можно использовать базы данных NoSQL?
Базы данных NoSQL хорошо подходят для многих современных приложений, например мобильных, игровых, интернет-приложений, когда требуются гибкие масштабируемые базы данных с высокой производительностью и широкими функциональными возможностями, способные обеспечивать максимальное удобство использования.
- Гибкость. Как правило, базы данных NoSQL предлагают гибкие схемы, что позволяет осуществлять разработку быстрее и обеспечивает возможность поэтапной реализации. За счет использования гибких моделей данных БД NoSQL хорошо подходят для частично структурированных и неструктурированных данных.
- Масштабируемость. Базы данных NoSQL рассчитаны на масштабирование за счет использования распределенных кластеров аппаратного обеспечения, а не за счет добавления дорогих мощных серверов. Некоторые поставщики облачных услуг проводят эти операции в фоновом режиме, обеспечивая полностью управляемый сервис.
- Высокая производительность. Базы данных NoSQL оптимизированы для конкретных моделей данных (например, документной, графовой или с использованием пар «ключ-значение») и шаблонов доступа, что позволяет достичь более высокой производительности по сравнению с реляционными базами данных.
- Широкие функциональные возможности. Базы данных NoSQL предоставляют API и типы данных с повышенной функциональностью, которые специально разработаны для соответствующих моделей данных.
Типы баз данных NoSQL
«Ключ-значение». Базы данных с использованием пар «ключ-значение» поддерживают высокую разделяемость и обеспечивают беспрецедентное горизонтальное масштабирование, недостижимое при использовании других типов БД. Хорошими примерами использования для баз данных типа «ключ-значение» являются игровые, рекламные приложения и приложения IoT. Amazon DynamoDB обеспечивает стабильную работу БД с задержкой не более нескольких миллисекунд при любом масштабе. Такая устойчивая производительность послужила основной причиной переноса Snapchat Stories, возможности Snapchat с самой большой нагрузкой на запись в хранилище, в сервис DynamoDB.
Документные. Некоторым разработчикам не требуется модель данных в виде неорганизованных строк и столбцов. Как правило, на уровне приложения данные представлены в документе JSON, поскольку разработчикам удобнее представлять модель данных в форме документа. Распространенность документных баз данных возросла из-за того, что разработчики могут сохранять данные в БД с помощью той же документной модели, которую они используют в коде приложения. DynamoDB и MongoDB – распространенные документные базы данных, которые предоставляют функциональные и интуитивно понятные API для гибкой разработки.
Графовые. Предназначение графовых баз данных заключается в обеспечении удобства создания и запуска приложений, работающих с наборами сложносвязанных данных. Примеры использования графовых баз данных: социальные сети, сервисы рекомендаций, системы выявления мошенничества и графы знаний. Amazon Neptune – это полностью управляемый сервис графовых баз данных. Neptune поддерживает модель Property Graph и Resource Description Framework (RDF), предоставляя на выбор два графовых API: TinkerPop и RDF/SPARQL. К числу распространенных графовых БД относятся также Neo4j и Giraph.
База данных в памяти. Часто в игровых и рекламных приложениях используются таблицы лидеров, хранение сессий и аналитика в реальном времени. Такие возможности требуют отклика в пределах нескольких микросекунд, при этом резкое возрастание трафика возможно в любой момент. Amazon ElastiCache предлагает Memcached и Redis для обработки высокопроизводительных рабочих нагрузок с низкой задержкой, которые нельзя обработать с помощью дисковых хранилищ данных, – к примеру, таких как в сети McDonald’s. Еще одним примером специально разработанного хранилища данных является Amazon DynamoDB Accelerator (DAX). DAX позволяет DynamoDB считывать данные в несколько раз быстрее.
Поисковые. Многие приложения формируют журналы, чтобы разработчикам было проще выявлять и устранять неполадки. Amazon Elasticsearch Service (Amazon ES) – специально разработанный сервис для предоставления визуализации и аналитики автоматически генерируемых потоков данных в режиме, близком к реальному времени, путем индексирования, агрегации частично структурированных журналов и метрик и поиска по ним. Amazon ES – это также мощная высокопроизводительная поисковая система для полнотекстового поиска. Компания Expedia использует более чем 150 доменов Amazon ES, 30 ТБ данных и 30 миллиардов документов для разнообразных и особо важных примеров использования: от операционного мониторинга и устранения неисправностей до отслеживания стека распределенных приложений и оптимизации затрат.
Сравнение баз данных SQL (реляционных) и NoSQL (нереляционных)
Несмотря на существование множества типов БД NoSQL с различными особенностями, в таблице ниже приведены основные отличия баз данных SQL и NoSQL.
| Реляционные базы данных | Базы данных NoSQL | |
|---|---|---|
Подходящие рабочие нагрузки |
Реляционные БД предназначены для транзакционных и строго непротиворечивых приложений обработки транзакций в реальном времени (OLTP) и хорошо подходят для аналитической обработки в реальном времени (OLAP). | Базы данных NoSQL («ключ-значение», документные, графовые и работающие в памяти) ориентированы на OLTP для целого ряда шаблонов доступа к данным, в том числе для приложений с низкой задержкой. Поисковые БД NoSQL предназначены для аналитики частично структурированных данных. |
| Модель данных | Реляционная модель нормализует данные и преобразует их в таблицы, состоящие из строк и столбцов. Схема жестко задает таблицы, строки, столбцы, индексы, отношения между таблицами и прочие элементы базы данных. Такая БД обеспечивает целостность ссылочных данных в отношениях между таблицами. |
В базах данных NoSQL применяются различные модели данных, в том числе документные, графовые, поисковые, с использованием пар «ключ-значение» и хранением данных в памяти. |
| Свойства ACID | Реляционные базы данных обеспечивают набор свойств ACID: атомарность, непротиворечивость, изолированность, долговечность.
|
Базы данных NoSQL часто предлагают компромиссы за счет смягчения жестких требований свойств ACID для более гибкой модели данных, которая допускает горизонтальное масштабирование. БД NoSQL – отличный выбор для примеров использования с высокой пропускной способностью и низкой задержкой, в которых требуется горизонтальное масштабирование за рамки ограничений одного инстанса. |
| Производительность | Производительность главным образом зависит от дисковой подсистемы. Для обеспечения максимальной производительности часто требуется оптимизация запросов, индексов и структуры таблицы. | Производительность обычно зависит от размера кластера базового аппаратного обеспечения, задержки сети и вызывающего приложения. |
| Масштабирование | Реляционные базы данных обычно масштабируются за счет увеличения вычислительных возможностей аппаратного обеспечения или добавления отдельных копий для рабочих нагрузок чтения. | Базы данных NoSQL обычно поддерживают высокую разделяемость благодаря шаблонам доступа на основе пар «ключ-значение» и могут просто масштабироваться за счет использования распределенной архитектуры. Это повышает пропускную способность и обеспечивает устойчивую производительность почти в неограниченных масштабах. |
| API | Запросы на запись и извлечение данных составляются на языке SQL. Эти запросы анализирует и выполняет реляционная база данных. | Объектно-ориентированные API позволяют разработчикам приложений просто выполнять запись и извлечение структур данных, размещенных в памяти. Ключи секций позволяют приложениям осуществлять поиск по парам «ключ-значение», наборам столбцов или частично структурированным документам, содержащим серийные объекты и атрибуты приложений. |
Сравнение терминологии SQL и NoSQL
В следующей таблице приведено сравнение терминологии некоторых баз данных NoSQL с терминологией баз данных SQL.
| SQL | MongoDB | DynamoDB | Cassandra | Couchbase |
|---|---|---|---|---|
| Таблица | Коллекция | Таблица | Таблица | Корзина данных |
| Ряд | Документ | Элемент | Ряд | Документ |
| Столбец | Поле | Атрибут | Столбец | Поле |
| Первичный ключ | ObjectId | Первичный ключ |
Первичный ключ | ID документа |
| Индекс | Индекс | Вторичный индекс | Индекс | Индекс |
| Вид | Вид | Глобальный вторичный индекс | Материализованный вид | Вид |
| Вложенная таблица или объект | Встроенный документ | Карта | Карта | Карта |
| Массив | Массив | Список | Список | Список |
| Список |
| Список |
| Первичный ключ |
Начать работу с DynamoDB
Начать работу с DynamoDB очень просто. Страница по началу работы с DynamoDB поможет создать первую таблицу за несколько щелчков мышью. Можно загрузить техническое описание AWS, чтобы изучить рекомендации по миграции рабочих нагрузок из реляционной системы управления базой данных (РСУБД) в DynamoDB.

