Базы данных – это упорядоченный набор структурированной информации или данных, которые чаще всего хранятся в электронном виде на компьютере. Управляются они при помощи специальных систем управления – СУБД.
Существуют разнообразные информационные базы. Одним из вариантов выступает NoSQL. Далее предстоит изучить их более подробно. Представленная ниже информация рассчитана на широкий круг лиц. Она подойдет как IT-специалистам различных направлений, так и обычным пользователям.
Причины появления NoSQL
NoSQL – это семейство нереляционных баз данных. Они используют разнообразные модели представления информации, отдаленные от табличной интерпретации.
Реляционные БД получили широкое распространение в 80-е годы, когда в базах хранились преимущественно текстовые документы и разнообразные изображения. По мере развития информационных технологий и роста объема обрабатываемых данных реляционные СУБД перестали справляться со всеми задачами одинаково эффективно.
Термин NoSQL впервые был озвучен в 1998 году – его применил Карло Строцци (итальянский ученый) при описании собственной open-source СУБД. В процессе разработки он отошел от применения SQL и основного принципа реляционных баз данных – ACID (atomicity, consistency, isolation, durability).
В начале 21 века NoSQL-БД стали пользоваться огромным спросом как среди обычных пользователей, так и среди организаций. Основными причинами появления NoSQL служат следующие моменты:
- Возникновение потребности в распределенных СУБД. Образование IT-корпораций, а также глобальных приложений и социальных сетей потребовало масштабирования баз данных. Вертикальное масштабирование «железа» – это очень дорого, а шардирование к реляционным БД применяется плохо: чем больше в системе серверов, тем больше усилий придется приложить для поддержки согласованности данных в узлах.
- Необходимость более быстрой обработки данных. SQL, в отличие от нереляционных баз данных запрашивает информацию из нескольких таблиц. По мере роста объема данных, таблиц и связей скорость получения ответа на запрос значительно снижается.
- Стремление к избавлению от ограниченности реляционных схем. Реляционная модель является жесткой. Она подходит не для всех областей деятельности. Иногда такие БД являются слишком сложными, часто требующими корректировки данных.
NoSQL базы данных сегодня используются для строго определенных целей. Несмотря на это, реляционные БД остаются более распространенными, особенно при работе с небольшими информационными объемами, таблицами и в процессе обучения.
Основные черты
Традиционные СУБД ориентируются на требования ACID к транзакционной системе:
- атомарность;
- согласованность;
- изолированность;
- долговечность.
В NoSQL базах данных может рассматриваться набор свойств BASE:
- базовая доступность (basic availability) – каждая запрос гарантированно будет завершен (безуспешно или успешно);
- гибкое состояние (soft state) – состояние системы может измениться со временем, даже без ввода новой информации, для достижения согласования данных;
- согласованность в конечном счете (eventual consistency) – данные могут быть некоторое время рассогласованы, но они приходят к согласованию через некоторое время.
Системы, опирающиеся на BASE-основу не могут быть использованы в любых программах. В некоторых приложениях BASE выступает необходимостью.
К характерным чертам NoSQL баз данных можно отнести применение различных типов хранилищ, а также возможность разработки БД без предварительного создания схемы. Соответствующие модели также поддерживают линейную масштабируемость – когда добавление процессоров увеличивает производительность.
Типы систем
Схемы данных при использовании NoSQL СУБД могут быть описаны при помощи самых разных структурных единиц: деревьев, хеш-таблиц и других. В зависимости от выбранной модели и подходов к распределенности и репликации выделяются четыре ключевые типа систем:
- ключ-значение;
- семейство столбцов;
- графовые;
- документно-ориентированные.
Далее каждый тип будет рассмотрен более подробно. Эта информация поможет лучше понять, что собой представляют NoSQL БД.
Ключ-значение
Модель «ключ-значение» – это простейший вариант, использующий ключ для доступа к имеющемуся значению. Подобные системы используются для хранения изображений, а также создания специализированных файловых систем. Они применяются в виде кэшей для объектов, встречаются в системах, ориентированных на масштабируемость. Примерами таких хранилищ можно считать Redis, а также Amazon DynamoDB.
Семейство столбцов
Второй тип систем – это «семейство столбцов». Его прародителем выступает система Google BigTable. В них данные будут храниться в виде разреженных матриц, строки и столбцы которых выступают в виде ключей. Пример применения этого типа СУБД – веб-индексирование.
«Семейство столбцов», а также документно-ориентированные системы обладают похожими сценариями использования: системы управления содержимым, блоги, регистрация событий. Использование временных меток дает возможность пользоваться соответствующим видом систем для организации счетчиков, регистрации и обработки разнообразных данных, связанных со временем.
Документно–ориентированные и графовые СУБД
Документо-ориентированные СУБД используются для хранения иерархических структур данных. Они находят применение в системах управления содержимым, а также издательстве и документальном поиске.
Графовые СУБД используются для задач, в которых просматривается огромное количество связей. Примером могут послужить социальные сети.
Ребра графов материализованы. Они выступают хранимыми, за счет чего обход графа не требует дополнительных вычислений. Для нахождения начальной вершины обхода требуется наличие индексов. Графовые СУБД поддерживают ACID и поддерживают специализированные языки запросов: GraphQL, SPARQL, Gremlin, Cypher.
Преимущества и недостатки
Нереляционные базы имеют как преимущества, так и недостатки. В сравнении с SQL БД у NoSQL можно выделить следующие «сильные стороны»:
- Линейная масштабируемость. За счет добавления новых узлов в кластер удается увеличить общую производительность системы.
- Гибкость. Она дает возможность оперировать полуструктурированными данными.
- Возможность работать с различными представлениями информации даже без задания схемы данных.
- Высокий уровень доступности. Он достигается за счет информационной репликации, а также других механизмов отказоустойчивости.
- Производительность. Она достигается за счет оптимизации для конкретных видов моделей данных, а также шаблонов доступа.
- Широкий спектр функциональных возможностей.
Недостатки у NoSQL баз данных тоже есть. К ним относят:
- Ограниченную емкость встроенного языка запросов. Пример – HBase предоставляет всего 4 функции работы с информацией: Delete, Scan, Put, Get, в Cassandra отсутствуют операции Insert и Join. Избавиться от этого недочета можно при помощи сторонних средств трансляции классических SQL-выражений в исполнительный код для конкретной нереляционной базы.
- Сложности в поддержке всех ACID-требований к транзакциям.
- Сильную привязку приложений к конкретным СУБД. Это связано со спецификой внутреннего языка запросов, а также гибкостью модели данных, ориентированной на определенный случай.
- Недостаток специалистов по NoSQL базам. Их мало, если сравнивать с теми, кто умеет работать с реляционными аналогами.
Нереляционные базы встречаются не так часто, как реляционные. Обычно они используются для конкретных задач.
Области применения
Нереляционные базы активно используются в веб-программах реального времени, а также в больших данных. Это связано с тем, что основными их преимуществами выступают высокая масштабируемость и высокий уровень доступности.
Нереляционные базы предпочитают разработчики из-за того, что они естественным образом вписываются в парадигму гибкой разработки и быстро адаптируются к изменяющимся требованиям. При помощи NoSQL баз данных можно хранить информацию более интуитивно понятным и простым способом.
Когда выбирать NoSQL вместо SQL
Нереляционные базы лучше всего подходят для обработки неопределенных, несвязанных или быстро изменяющихся данных. Они интуитивно понятны разработчикам, когда программа диктует схему БД. Нереляционные базы могут быть использованы в приложениях, где:
- требуются гибкие схемы, обеспечивающие более быструю и итеративную разработку;
- необходимо сделать упор на производительность, а не на высокую согласованность данных и сохранение связей между таблицами;
- нужно организовать горизонтальное масштабирование за счет сегментирования между серверами;
- осуществляется поддержка частично структурированных или неструктурированных данных.
Не всегда требуется выбирать между реляционными и нереляционными базами. Некоторые приложения допускают их совместное использование. Такой гибридный подход является достаточно распространенным. Он обеспечивает сопоставление каждой рабочей нагрузки с нужной базой информации для оптимального соотношения «цена/качество».
Разница между SQL и NoSQL
NoSQL БД появились намного позже SQL. SQL БД моделируют отношения между данными в виде таблиц. Каждая строка в такой таблице – это набор связанных значений, относящихся к одному объекту или сущности. Столбцы в таблицах – это атрибуты данных, а в полях (ячейках) хранятся фактические значения атрибутов. Системы управления реляционными базами данных используются для доступа к информации различными способами без реорганизации самих таблиц баз данных.
Вот таблица, которая поможет быстрее понять разницу между NoSQL базами данных и SQL БД:
SQL-базы | NoSQL | |
Рабочие нагрузки | Предназначаются для транзакционных и строго непротиворечивых приложений онлайн-обработки транзакций (OLTP). Они также хорошо подходят для аналитической обработки онлайн (OLAP). | Используются для работы с огромным рядом шаблонов доступа к данным, включая приложения с низкой задержкой. Поисковые NoSQL БД подойдут для аналитики частично структурированной информации. |
Информационная модель | Модель нормализует данные и преобразовывает их в таблицы, состоящие из строк и столбцов. Схема четко задает таблицы, индексы, строки, столбцы, а также отношения между таблицами и прочие компоненты БД. Такая база обеспечивает целостность ссылочных данных в табличных отношениях. | Предоставляют разнообразные информационные модели. |
Производительность | Зависит от дисковой подсистемы. Максимальный ее уровень часто требует оптимизации запросов, индексов, а также структур таблиц. | Зависит от размера кластера базового аппаратного обеспечения, сетевой задержки и вызывающего приложения. |
Масштабирование | Осуществляется чаще всего при помощи увеличения вычислительных возможностей аппаратного обеспечения или добавления отдельных копий для рабочих нагрузок чтения. | NoSQL БД чаще всего разделяемы. Такой результат достигается благодаря шаблонам доступа с возможностью масштабирования на основе распределенной архитектуры. За счет этого удается повысить пропускную способность, а также обеспечить устойчивую производительность почти в неограниченных масштабах. |
API | Запросы на хранение и извлечение данных формируются при помощи SQL-языка. Реляционная БД анализирует и выполняет их. | Объектно-ориентированные API дают возможность разработчикам приложений без труда хранить и извлекать структуры данных. За счет использования ключей секций приложения могут осуществлять поиск по парам «ключ-значение», наборам столбцов или частично структурированным документам, включающим в свой состав атрибуты программ и серийные объекты. |
Теперь понятно, что собой представляют нереляционные базы данных, а также чем они отличаются от реляционных. Изучить их лучше помогут специализированные компьютерные курсы. На них в срок от нескольких месяцев до года можно разобраться с принципами работы информационных баз, а также научиться управлять различными СУБД. Все обучение организовано через Интернет. В конце курса каждый получит электронный сертификат установленного образца.
Прокачать навыки работы с базами данных можно на курсах Otus.