Рубрика:
Разработка /
Веб-технологии
|
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|
АЛЕКСАНДР КАЛЕНДАРЕВ, программист в РБК-Медиа, akalend@mail.ru
NoSQL как он есть
В последнее время стал часто упоминаться термин NoSQL. В статье сделан краткий обзор NoSQL-хранилищ данных
Синонимом NoSQL стали также сверхбольшие объемы данных, линейная масштабируемость, кластеры, отказоустойчивость, нереляционность. Попытаемся разобраться во всем этом многообразии
Не SQL – так что же?
Терминология NoSQL была озвучена Carlo Strozzi в журнале «Unix-обозрение» в марте 1991 года как альтернативное хранилище данных, использующее нереляционный подход между структурами данных, где в качестве языка запросов предлагался язык 4GL как замена привычного нам SQL. В настоящее время так называется одноименное хранилище данных, разработанное Карло Строззи (Carlo Strozzi). В копирайте на его персональном сайте указано: «NoSQL RDBMS, Copyright (C) 1998,2010 Carlo Strozzi. Part of NoSQL code comes from RDB».
Эрик Эванс (Eric Evans), разработчик из Rackspace, вновь употребил термин NoSQL в начале 2009 года, на конференции разработчиков Open Source, организованной Джоханом Оскарссоном (Johan Oskarsson). Этот термин был применен к новым многочисленно появляющимся нереляционным распределенным хранилищам данных, которые не обеспечивали принцип ACID (атомарность, целостность, изоляция, долговечность), являющийся ключевым в классической реляционной системе управления данными.
В Wikipedia термин NoSQL определен так: NoSQL (англ. not only SQL, не только SQL) в информатике – термин, обозначающий ряд подходов, проектов, направленных на реализацию моделей баз данных, имеющих существенные отличия от используемых в традиционных реляционных СУБД с доступом к данным средствами языка SQL.
В настоящее время ни один высоконагрузочный проект не обходится без использования NoSQL-хранилищ данных: Google, Facebook, Reddit, Twitter, Digg, Mozilla, Amazon. В Рунете это такие гиганты, как Yandex, BКонтакте, Одноклассники, Mail.ru, и еще множество средних и мелких проектов.
Нереляционные хранилища данных в отличие от традиционных СУБД имеют либо более быструю скорость доступа к данным, либо распределенную архитектуру, которая позволяет хранить неограниченное количество данных, либо позволяют хранить неструктурированные объекты данных. Последние не вписываются в рамки Языка Структурированных Запросов – SQL. Более быстрая скорость извлечения данных из хранилища достигается более простым Протоколом. Нереляционные хранилища данных бывают следующих типов, которые мы и рассмотрим далее в статье:
- Документо-ориентированные.
- Key-value.
- Поколоночные.
- Граф-ориентированные.
- Прочие (Geo-ориентированные, Объектно-ориентированные).
Документо-ориентированные БД
В Wikipedia документно-ориентированные БД определены так: это СУБД для работы с документо-ориентированными приложениями. В документо-ориентированных СУБД главным объектом является некий документ, который представляет собой набор пар «ключ-значение», объединенных между собой. Этот документ представляется в виде JSON, XML и других документов-объектов.
Традиционные СУБД опираются на принцип фиксированной схемы данных: сначала описывают схему базы данных и только затем уже наполняют ее ими.
В отличие от реляционных СУБД, в которых данные представлены как строки таблиц, которые могут быть взаимосвязаны реляционными отношениями, в документо-ориентированных NoSQL-хранилищах информация хранится в ненормализованной форме (см. рис. 1). В качестве представления слабоструктурированных данных используются, как правило, документы в форматах JSON или XML.
Рисунок 1. Документо-ориентированные БД
К полуструктурированным данным относят данные, в которых можно выделить некоторую типовую структуру, не являющуюся для этих данных достаточно строгой, для их дальнейшего хранения в традиционных системах РСУБД. В некоторых случаях при работе со слабоструктурированными и полуструктурированными данными целесообразно применять обратный подход: сначала заполнять базу данных, а затем уже определять структуру, т.е. при заполнении базы уже вырисовывается ее схема. Использование такого подхода дает большую гибкость при формировании базы и предоставляет возможность свободно изменять ее структуру.
Ни для кого уже не секрет, что поиск информации даже сравнительно небольших объемов данных в XML-документах довольно-таки затруднителен. Поэтому сами данные внутри хранилища находятся в бинарном представлении, а XML является лишь входной формой документа.
Статью целиком читайте в журнале «Системный администратор», №11 за 2013 г. на страницах 51-55.
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|