Все статьи >> Конец реляционных баз данных? Что такое NoSQL? (просмотров: 2096)

Конец реляционных баз данных? Что такое NoSQL?

В последнее время все чаще можно услышать про какие-тоNoSQL базы данных. Что это такое? И зачем они понадобились? Вы могли бы подумать, что термин NoSQLозначает, что SQL более не должен использоваться или, что SQL мертв. Но, нет. В данном случае речь о другом. Просто сегодняSQL-ые базы данных уже не могут решить всех проблем хранения информации. Поэтому NoSQLозначает — “не только SQL”. В дополнение к хорошо зарекомендовавшим себя, классическим базам данных, нам потребовались хранилища информации, построенные на иных принципах.

Реляционные базы не справляются

В чем же причина, что реляционные (SQL) базы данных перестали нас удовлетворять? В последнее время мы можем наблюдать 4 тренда в развитии технологий хранения данных. Первый тренд — увеличение объемов хранимых данных. Сегодня хранилища достигли таких невероятных размеров, что даже трудно себе представить. Только за 2009 и 2010 годы в базах было сохранено больше информации, чем за всю предыдущую историю человечества. Второй тренд — взаимосвязанность данных. Информация перестала быть изолированной. Каждый кусочек знаний как-то связан с данными в других хранилищах информации. Страницы в интернете ссылаются на другие страницы. Тэги связывают помеченную информацию из разных источников. Онтологии устанавливают взаимосвязи между различными терминами, и т.д. и т.п. Третий тренд — использование слабоструктурированной информации. Возьмем простой пример: описание товара в магазине. Если раньше было достаточно 5-6 полей, чтобы описать мужскую сорочку (размер, цвет, материал, фотография товара, ...), то теперь количество параметров может доходить до нескольких десятков. Причем, для разных сорочек будет использован разный набор параметров. В таких условиях становится крайне сложно заранее определить структуру таблицы, в которой хранится описание товара. Четвертый тренд — архитектора. В 80-х годах прошлого века типичная архитектура использовала один большой компьютер (mainframe) и одну базу данных. В 90-х, распространение получила клинт-серверная архитектура. В новом веке активно используются web-сервисы, каждый со своим backend-ом (грубо говоря, со своей базой данных) и другие распределенные решения. Оказалось, что в таких условиях у реляционных баз данных резкопадает производительность. И если для большинства web-сайтов производительности еще хватает, то для таких приложений как современные социальные сети или поисковые сервисы SQL базы данных оказались несостоятельны.

Категории NoSQL баз

Существует четыре категории NoSQL баз данных.

Первая категория — это Key-Value (Ключ-Значение) базы данных. Это очень простые по своей идее хранилища. Фактически это очень большие хэш-таблицы, где каждому ключу поставлено в соответствие значение. Такие базы могут очень быстро оперировать колоссальными объемами информации, но они имеют серьезные ограничения в языке запросов. В качестве примеров Key-Value баз данных можно привести, , , .

Вторая категория — клоны BigTable.  — это база данных разработанная компанией Google для собственных нужд. Эта база представляет собой большую таблицу с тремя измерениями: колонки, строки ивременны'е метки. Такая архитектура позволяет добиться очень высокой производительности, кроме того, она хорошо масштабируется на множество компьютеров. Но это не реляционная база, и она не поддерживает многие возможности реляционных баз. В частности в BigTable нет join-ов, нет сложных запросов и т.д. Компания Google не распространяет BigTable, поэтому на рынке появилось несколько независимо разработанных клонов этой базы. В частности это такие проекты как: ,  и .

Следующая категория баз — это документо-ориентированные базы данных. Такие базы немного напоминают Key-Value базы, но в данном случае, база данных знает, что из себя представляют значения. Обычно, значением является некоторый документ или объект, к структуре которого можно делать запросы. Примерами таких баз являются  и .

Четвертая категория — это базы данных построенные на графах. Такие базы ориентированы на поддержку сложных взаимосвязей между объектами, и основываются на теории графов. Структура данных в таких базах представляет собой набор узлов, связанных между собой ссылками. При этом и узлы и ссылки могут обладать некоторым количеством атрибутов. В качестве примера можно привести такие базы данных как: , , .

Также существует еще и пятая категория, но ее обычно не относят к NoSQL. Речь идет об объектно-ориентированных базах. Такие базы предназначены прежде всего для поддержки объектно-ориентированной парадигмы программирования. Их очень просто использовать в языках программирования, в которых поддерживается эта парадигма.

Как запрашивать информацию у NoSQL баз данных?

Существует несколько механизмов для доступа к данным в NoSQL БД.

1. Это RESTful интерфейсы. Коротко говоря, это интерфейс похожий на основной протокол интернета — HTTP. В рамках данного подхода предполагается, что каждый объект, которым мы можем манипулировать имеет свой уникальный адрес. Обращаясь по этому адресу мы можем запрвшивать, создавать, редактировать или удалять указанный объект. При этом на сервере не сохраняется никакого состояния, тоесть каждый запрос обрабатывается независимо от других запросов.

2. Языки запросов отличные от SQL.

  • GQL — SQL-подобный язык для Google BigTable
  • SPARQL — язык запросов Семантического Веба
  • Gremlin — язык обхода графов
  • Sones Graph Query Language — язык запросов к Sones Graph

3. API запросов.

  • Google BigTable DataStore API
  • Neo4j Traversal API

Почему базы данных используют RESTful API? Потому что гиперссылки легко позволяют ссылаться на данные расположенные на других серверах. RESTful в данном случае наиболее подходящее решение.

Как обеспечивается манипулирование данными?

Опять таки RESTful API позволяет выполнять операции создания, редактирования и удаления данных. Другой подход предполагает использование специального API для манипулирования данными. Например, Google BigTable использует DataStore API, а Neo4j — GraphDatabase API. Кроме того, NoSQL базы данных поддерживают сериализацию данных в разные форматы, такие как:

  • JSON — javascript object notation
  • Thrift
  • ProtoBuffers
  • RDF

NoSQL для корпоративных приложений

NoSQL могут предложить высокий уровень эксплуатационной готовности, корректности и производительности. Пожалуй главным преимуществом NoSQL баз данных является производительность. Все NoSQL базы данных превосходят реляционные базы данных в своей нише. Если еще недавно, существовал только один вид баз данных для все случаев — реляционные базы, то сегодня ситуация изменилась. Для каждой конкретной ситуации необходимо подбирать свое хранилище данных. Иногда, приходится иметь одновременно несколько баз данных, у каждой из которых используются ее наиболее сильные стороны. Например, в web-приложенияхMongoDB применяется как основное хранилище данных, а с помощью Redis организуется кеширование запросов пользователя. В результате мы получаем систему с очень высокой производительностью и с весьма удобными интерфейсами для разработчиков. Еще одно важное достоинство NoSQL баз данныхзаключается в том, что многие представители этого семейства хранилищ данных реализованы как Open Sourceпроекты. Это очень удобно, с точки зрения разработчиков.

Конец монополии

На текущий момент безусловное лидерство реляционных баз данных в области хранения информациизакончилось. Сегодня программист должен быть знаком с иными подходами и должен уметь выбратьправильный инструмент в зависимости от той задачи, которую он решает. Мир NoSQL баз данных очень интересен, здесь можно найти много оригинальных решений и инновационных идей. Если вы еще не сталкивались с такими базами данных, обратите на них свое внимание.


Автор: programming-workshop.ru
 
 
Email:
не зарегистрированы?
Пароль:
забыли?
 
Астраханские магазины