УПРАВЛЕНИЕ В ИНФОРМАЦИОННЫХ И КИБЕРНЕТИЧЕСКИХ СИСТЕМАХ
УДК 004.652 ББК 32
ОБЗОР NoSQL РЕШЕНИЙ УПРАВЛЕНИЯ ДАННЫМИ
Ю.Р. Мухина, к.п.н., доцент кафедры «Информационные технологии и системы» ЧОУ ВПО «Южно-Уральский институт управления и экономики» e-mail: [email protected]
Аннотация
В статье представлены основные признаки современных NoSQL решений, описаны некоторые типы NoSQL СУБД, осуществлен сравнительный анализ реляционного подхода и подхода, основанного на NoSQL.
Ключевые слова: NoSQL, реляционные базы данных, системы управления базами данных (СУБД).
В 1970 году вышла статья британского ученого Эдгара Франка Кодда «A Relational Model of Data for Large Shared Data Banks». Эта работа положила основу создания реляционной модели данных. Основными преимуществами реляционных систем управления базами данных является1:
1. Минимальность избыточности данных при условии соблюдения правил нормализации. Это обеспечивает целостность информации в базе при ее обновлении.
2. Использование механизма транзакций для обеспечения согласованности данных, в том числе при организации параллельной обработки данных. К транзакционным системам управления базами данных предъявляются ASID свойства, сформулированными Джимом Греем. Это свойства атомарности (atomicity), согласованности (consistency), изолированности (isolation) и надежности (durability).
3. Использование структурного языка запросов SQL, который является стандартным, независимым от конкретной реляционной СУБД и дает возможность программного доступа к базам данных. Это обеспечивает универсальность реляционного представления данных для создания самых разнообразных приложениях и для организации совместной работы нескольких разработчиков.
Таким образом, реляционный подход универсален и ориентирован на решение широкого круга задач управления данными. Несмотря на свои достоинства, такой подход имеет и недостатки:
1. Несоответствие между реляционным способом представления данных и объектно-ориентированными языками программирования, которые используются при разработке приложений.
2. Проблема масштабируемости реляционных баз данных, такие базы данных весьма неэффективно работают в распределенной среде.
В век облачных сервисов и web-приложений, работающих с огромными объемами данных, последняя проблема становится весьма актуальной. Работа по ее решению ведется как в области совершенствования SQL-решений, так и в области создания альтернативных решений.
Эти решения связанны с появлением новых систем управления базами данных, в основе которых лежат подходы отличные от реляционного. Эти подходы объединены единым понятием «NoSQL» (Not Only SQL), который получил широкую известность в 2009 года. Основным признаком NoSQL систем управления базами данных является полный или частичный отказ от реляционного способа представления данных, в частности от правил транзакционной целостности данных (ASID-свойств). Также с этим понятием связаны системы, работающие с большими объемами распределенных данными, поддерживающие горизонтальную масштабируемость и репликацию данных.
Перечислим основные признаки современных NoSQL-решений : неструктурированные данных, представление данных в виде агрегатов, подход Map/Reduce, шардинг и репликация.
Неструктурированные данные (schema-less), то есть отсутствие схемы данных. С одной стороны, это позволяет вносить в базу данных такие данные, которые заранее не были предусмотрены в ее структуре, что делает базу данных более гибкой, подстраиваемой под изменяющуюся бизнес-логику приложения. С другой стороны, это ведет к возникновению ряда проблем. Основная, из которых состоит в следующем: при изменении бизнес-логики приложения, которое ведет за собой изменение структуры базы данных, возникает необходимости дополнительной проверки объектов базы данных - старый это объект (до внесения изменений) или новый, измененный, объект. При за реализацию этой проверки отвечает само приложение.
В некоторых случаях может возникнуть необходимость изменить структуру ранее созданных объектов базы данных. Например, если сначала нам требовалось в заказе хранить только общую стоимость заказа, а после внесения изменений в бизнес-логику приложения, понадобилась еще и информация об общей стоимости с учетом скидки клиента. Тогда при обработке заказов нужно проверять, с каким мы работаем заказом (со старым или новым), чтобы убедится, что у него есть поле «общая стоимость с учетом скидки». Либо при изменении структуры базы данных необходимо изменить все имеющиеся данные о заказе, добавив в них соответствующую информацию.
Во многих NoSQL СУБД данные представляются в виде агрегатов (aggregates). В реляционных базах данных данные распределены по таблицам (согласно требованиям нормализации данных), и в случае необходимости данные из нескольких таблиц собираются с помощью сложных запросов с использованием объединения столбцов из разных таблиц (операция join). В агрегативных системах данные объединяются в единое целое (согласно требованиям бизнес-логики приложения), доступ к которым осуществляется одновременно. Например, пусть в некоторой системе частыми запросами являются запрос на выборку информации только о заказах и запросы на выборку информации о заказах плюс информации о покупателе, его осуществившем. Тогда есть смысл создать два типа агрегатов. Первый содержит только объект «заказ», а второй - два объекта «заказ» и «покупатель».
Еще одной особенностью NoSQL СУБД является использование различных технологий распределенной обработки и хранения данных. В принципе эти подходы не являются специфичными только для NoSQL решений и могут быть использованы и в реляционных СУБД.
Отображение-свертка (Map/Reduce) - это подход организации распределенной обработки данных, который включает в себя две фазы: Map (отображение) -предварительная распределенная обработка входных данных и Reduce (свертка) - обработка данных на главном узле тем или иным способом выборки, полученной на стадии Map.
Преимущества такого подхода очевидны при соблюдении двух условий. Первое -фаза Map реализована так, что её можно запускать параллельно на нескольких узлах. Второе - Reduce позволяет принимать на вход не только результат выполнения Map, но и
3
применения предыдущего Reduce .
Репликация (replication) - это процесс создания копий файлов, между которыми может осуществляться обмен обновляемыми данными или объектами. Это один из основных способов обеспечения надежности и доступности данных в NoSQL-решениях.
Шардинг (sharding) или горизонтальное партиционирование - это такое разделение данных, при котором сгруппированные по некоторым критериям строки одной и той же логической таблицы размещаются и обрабатываются на разных, физических или логических, серверах баз данных. Одним из критериев может быть отношение данным к различным географическим точкам, например, данные о сотрудниках различных городов. Используется шардинг в целях увеличения скорости и пропускной способности.
В NoSQL СУБД репликация и шардинг осуществляется автоматически, приложения освобождены от реализации этих механизмов. Еще раз отметим, что эти функции могут поддерживаться не только в NoSQL решениях, но и в реляционных СУБД.
NoSQL - это не одна конкретная технология, это совокупность решений объединенных одной идеей. Наиболее распространенные типы реализации NoSQL представлены в таблице 1. Наиболее полный список NoSQL проектов представлен на сайте4.
Таблица 1 - Подходы к реализации NoSQL
Тип Суть подхода Область использования Примеры СУБД
Документально-ориентированные Суть подхода в отсутствии какой-либо схемы данных. Сущностями являются документ в форматах XML, JSON и т.п. Хранение независимых документов без поддержания ссылочной целостности между ними. Это могут быть данные форумов, каталогов товаров, систем логирования и сбора статистики MongoDB, CouchDB
Хранилища типа «ключ-значение» Хранят данные в виде пар ключ-значение (хэш-таблица). В качестве значений могут выступать как простые данные, так и массивы, списки, множества и т.п. Промежуточное (или основное) звено для систем логирования и сбора статистики DynamoDB, Redis, Riak
Колоночные (column-family) Данные хранятся в виде последовательности столбцов, а не строк. Таблица представляет собой совокупность колонок, каждая из которых представляет собой таблицу из одного поля. Такие системы гораздо медленнее работают на запись, чем на чтение. Используются в аналитических системах. Cassandra, Hadoop/ HBase
Продолжение таблицы 1
Граф- Данные хранятся в виде графа Моделирование Neo4j,
ориентированные с вершинами (узлами) и социальных графов Infinite
ребрами (связями между (социальные сети) Graph
ними)
Следует отметить, что все перечисленные выше свойства относились в большей степени к первым трем типам МоБОЬ СУБД.
В граф-ориентированных СУБД поддерживается четкая структура данных, представленная в виде графов. Между объектами (узлами) установлены строгие связи (ребра).
В графовые базах данных обход узлов требует очень небольших затрат. В основном это объясняется тем, что графовые базы данных переносят большую часть работы, связанной с навигацией по связям, с момента запроса на момент вставки. Это естественно оправдывает себя в ситуациях, когда производительность запроса важнее скорости вставки5.
Подводя итог, перечислим основные достоинства и недостатки МоБОЬ по сравнению с реляционными базами данных (таблица 2).
Таблица 2 - Сравнение реляционного и NoSQL подходов
Критерии Реляционные СУБД NOSQL СУБД
Масштабируемость преимущественно горизонтальное
вертикальное масштабирование (за счет
масштабирование (за счет добавления новых узлов)
усовершенствования
имеющихся узлов)
Администрирование Высокие потребности в Автоматическое изменение
настройке и схемы данных на стороне
администрировании баз приложения
данных
Экономические Для оперирования большими Используют кластеры из
показатели данными требуют мощные дорогие сервера недорогих массовых серверов
Модели данных Строгие ограничения к Слабые ограничения (или их
структуре базы данных отсутствие) к структуре, что позволяет легко вносить изменения в схему базы данных, но не обеспечивает целостности данных
Модели Хорошо развитый язык БОЬ- Не богатый набор средств для
программирования запросов запросов и оперативного анализа, отсутствие операции join
Поддержка транзакций Одна из основных функций Отсутствие транзакций, а следовательно отказ от поддержки согласованности данных, реализуемой на стороне СУБД
МоБОЬ нельзя назвать заменой реляционного подхода, это инструмент решения определенного круга задач, связанных либо с большими и постоянно возрастающими объемами данных, требующими высокой масштабируемости, либо связанных с хранением
данных сильно отличающихся от реляционной формы представления (документально-ориентированные системы, объектно-ориентированные системы).
Ответом на вопрос какой же подход использовать, многие видят в компромиссе, то есть, создании СУБД с поддержкой как традиционно реляционного подхода, так и альтернативных МоБОЬ-решений. Реляционные модель больше подходят для относительно небольших объемов данных высокой ценности (данных о пользователях системы, билинговая информация), а МоБОЬ решения для больших объемов данных низкой ценности (логирование и сбор статистики, хранение документов).
МоБОЬ - это новый, еще не устоявшийся подход к созданию баз данных. Несомненно, он будет развиваться и совершенствоваться, так как его популярность растет, прежде всего, за счет появления задач связанных с необходимостью обработки огромных объемов информации.
Примечания
1 Дейт, К. Дж. Введение в системы баз данных - 8-е изд.- М.: Вильямс, 2005. - 1328 с.; Когаловский М.Р. Энциклопедия технологий баз данных.-М.: Финансы и статистика, 2002.800 с.; Коннолли, Т. Базы данных. Проектирование, реализация и сопровождение. Теория и практика / Т. Коннолли, К. Бегг.- 3-е изд.- М.: Вильямс, 2003.- 1436 с.
Мартин Фаулер, Прамодкумар Дж. Садаладж. NoSQL: новая методология разработки нереляционных баз данных.- М.: «Вильямс», 2013.- 192 с.; Бодров, И. Сильные и слабые стороны NoSQL // Jet Info / online информационный бюллетень компании "Инфосистемы Джет", 2012 г.- Режим доступа: http://www.jetinfo.ru/stati/silnye-i-slabye-storony-nosql/exadata, свободный.; Григорьев Ю.А. Анализ свойств баз данных / Григорьев Ю.А. // Информатика и системы управления.- 2013г.- № 2 (36) .- С. 3-13.; Давыдов, Д.А. Тенденции развития NoSQL-СУБД / Давыдов Д.А., Манылов П.С. //Научно-технический вестник Поволжья.- 2013г.- № 3.- С. 131-135.
3 Бодров, И. Сильные и слабые стороны NoSQL // Jet Info / online информационный бюллетень компании "Инфосистемы Джет", 2012 г.- Режим доступа: http://www.jetinfo.ru/stati/silnye-i-slabye-storony-nosql/exadata, свободный.
4 Сайт NoSQL.- Режим доступа: http://nosql-database.org/, свободный.
5 Мартин Фаулер, Прамодкумар Дж. Садаладж. NoSQL: новая методология разработки нереляционных баз данных.- М.: «Вильямс», 2013.- 192 с.
NOSQL SOLUTIONS OF DATA MANGEMENT REVIEW
Y.R. Mukhina, Cand. Sc. (Ped.), associate prof., South Ural Institute of Governance and Economiccs E-mail: [email protected]
Annotation
In the article are described main characteristics of modern NOSQL solutions, some types of NOSQL DBMS, represented a comparative analysis of relational approach and approach based on NOSQL.
Keywords: NOSQL, relational database, database management system (DBMS)
References
1. Bodrov, I. Strong and Weak Points of NoSQL [electronic source] // Jet info/online informational bulletin of "Infosystems Jet", 2012.- URL: http://www.jetinfo.ru/stati/silnye-i-slabye-storony-n..
2. Grigoriev, Y.A. Analysis of Database Properties/Grigoriev Y.A.// Informatics and Management Systems. - 2013. -№ 2(36). - p.3-13.
3. Davydov, D.A. Tendencies of NOSQL Development - DBMS/Davydov D.A., Manylov P.S.// Scientific Newsletter of Volga Region. -2013. - №3.- p.131-135
4. Deit, K. J. Introduction to Database System - 8 Edition, -M.: Wiliams, 2005. -1328 p.
5. Koganovsky, M.R. Encyclopedia of Database Technologies. -M.: Finance and Statistics, 2002. - 800 p.
6. Konnolly, T. Database. Designing, Implementation and Accompanying. Theory and Practice/ T. Konnolly, K. Begg. - 3 edition. - M.: "Williams", 2013. -1436 p
7. Martin Fauler, Pramodkumar J Sadaladge. NOSL: New Methods of Developing of Non Relational Database. - M.: "Williams", 2013. -192 p
8. Website NOSQL [electronic source]. - URL: http://nosql-database.org/