Содержание
Аббревиатура NoSQL была придумана в 1998 году. Многие считают, что NoSQL — это уничижительный термин, созданный для того, чтобы тыкать в SQL. На самом деле термин означает не только SQL. Идея состоит в том, что обе технологии могут сосуществовать, и у каждой есть свое место. В последние несколько лет движение NoSQL было в новостях, так как многие лидеры Web 2.0 приняли технологию NoSQL. Такие компании, как Facebook, Twitter, Digg, Amazon, LinkedIn и Google, так или иначе используют NoSQL. Давайте разберемся с NoSQL, чтобы вы могли объяснить это своему ИТ-директору или даже вашим коллегам.
NoSQL возник из потребности
Хранилище данных: Цифровые данные, хранящиеся в мире, измеряются в эксабайтах. Размер эксабайта равен одному миллиарду гигабайт (ГБ) данных. По данным Internet.com, объем хранимых данных, добавленных в 2006 году, составил 161 эксабайт. Всего через 4 года в 2010 году объем хранимых данных составит почти 1000 ExaBytes, что на 500% больше. Другими словами, в мире хранится много данных, и они будут продолжать расти.
Взаимосвязанные данные: Данные продолжают становиться более связанными. Создание веб-сайтов, созданных с помощью гиперссылок, ведет к появлению пингбэков в блогах, и в каждой крупной социальной сети есть теги, которые связывают вещи. Основные системы построены так, чтобы быть взаимосвязанными.
Сложная структура данных: NoSQL может легко обрабатывать иерархические вложенные структуры данных. Чтобы выполнить то же самое в SQL, вам понадобится несколько реляционных таблиц со всеми видами ключей. Кроме того, существует взаимосвязь между производительностью и сложностью данных. Производительность может ухудшиться в традиционных СУБД, поскольку мы храним огромные объемы данных, необходимые для приложений социальных сетей и семантической сети.
Что такое NoSQL?
Я предполагаю, что один из способов определить NoSQL — это рассмотреть, чем он не является. Это не SQL и не реляционный. Как следует из названия, это не замена СУБД, а комплимент. NoSQL предназначен для распределенных хранилищ данных для очень больших потребностей данных. Подумайте о Facebook с 500 000 000 пользователей или Twitter, который накапливает терабиты данных каждый день.
В базе данных NoSQL нет фиксированной схемы и нет соединений. СУБД «масштабируется», получая все более быстрое оборудование и добавляя память. NoSQL, с другой стороны, может воспользоваться преимуществами «масштабирования». Масштабирование относится к распределению нагрузки по многим товарным системам. Это компонент NoSQL, который делает его недорогим решением для больших наборов данных.
Категории NoSQL
Текущий мир NoSQL вписывается в 4 основных категории.
- Магазины ключевых ценностей основаны главным образом на Amazon Dynamo Paper, которая была написана в 2007 году. Основная идея заключается в существовании хеш-таблицы, в которой есть уникальный ключ и указатель на определенный элемент данных. Эти сопоставления обычно сопровождаются механизмами кэширования для максимизации производительности.
- Семейные магазины Column были созданы для хранения и обработки очень больших объемов данных, распределенных по многим машинам. Есть еще ключи, но они указывают на несколько столбцов. В случае BigTable (модель NoSQL семейства столбцов Google) строки идентифицируются по ключу строки, а данные сортируются и сохраняются по этому ключу. Столбцы расположены по семейству столбцов.
- База данных документовОни были вдохновлены Lotus Notes и похожи на магазины с ключевыми ценностями. Модель в основном является версионными документами, которые являются коллекциями других коллекций ключ-значение. Полуструктурированные документы хранятся в таких форматах, как JSON.
- База данных графиковs построены с узлами, отношениями между примечаниями и свойствами узлов. Вместо таблиц строк и столбцов и жесткой структуры SQL используется гибкая графовая модель, которая может масштабироваться на многих машинах.
Основные игроки NoSQL
Основные игроки в NoSQL появились главным образом благодаря организациям, которые их приняли. Некоторые из крупнейших технологий NoSQL включают в себя:
- Динамо: Dynamo был создан Amazon.com и является самой известной базой данных Key-Value NoSQL. Amazon нуждалась в хорошо масштабируемой распределенной платформе для своих предприятий электронной коммерции, поэтому они разработали Dynamo. Amazon S3 использует Dynamo в качестве механизма хранения.
- Cassandra: Cassandra была открыта из Facebook и является базой данных NoSQL, ориентированной на столбцы.
- Большой стол: BigTable — это собственная, ориентированная на столбцы, база данных Google. Google разрешает использовать BigTable, но только для Google App Engine.
- SimpleDB: SimpleDB — это еще одна база данных Amazon. Используется для Amazon EC2 и S3, это часть Amazon Web Services, которая взимает плату в зависимости от использования.
- CouchDB: CouchDB вместе с MongoDB являются документно-ориентированными базами данных NoSQL с открытым исходным кодом.
- Neo4j: Neo4j — это графическая база данных с открытым исходным кодом.
Опрос NoSQL
Вопрос о том, как запрашивать базу данных NoSQL, — это то, что интересует большинство разработчиков. В конце концов, данные, хранящиеся в огромной базе данных, никому не нужны, если вы не можете извлечь и показать их конечным пользователям или веб-службам. Базы данных NoSQL не предоставляют высокоуровневый язык декларативных запросов, такой как SQL. Вместо этого запросы к этим базам данных зависят от модели данных.
Многие из платформ NoSQL допускают RESTful-интерфейсы для данных. Другие API запроса предложений. Было разработано несколько инструментов запросов, которые пытаются запрашивать несколько баз данных NoSQL. Эти инструменты обычно работают в одной категории NoSQL. Одним из примеров является SPARQL. SPARQL — это декларативная спецификация запросов, разработанная для графовых баз данных. Вот пример запроса SPARQL, который извлекает URL-адрес конкретного блоггера (любезно предоставлен IBM):
PREFIX foaf:
SELECT? URL
ИЗ
ГДЕ {
?Автор foaf: имя "Джон Фубар".
?участник foaf: weblog? url.
}
Будущее NoSQL
Организации, которые испытывают большие потребности в хранении данных, серьезно относятся к NoSQL. По-видимому, концепция не получает такого большого влияния в небольших организациях. В опросе, проведенном информационной неделей, 44% ИТ-специалистов по бизнесу не слышали о NoSQL. Кроме того, только 1% респондентов сообщили, что NoSQL является частью их стратегического направления. Очевидно, что NoSQL имеет свое место в нашем связанном мире, но ему нужно будет продолжать развиваться, чтобы получить массовую привлекательность, которая, по мнению многих, могла бы быть.