Общ преглед на NoSQL

click fraud protection

Акронимът NoSQL е въведен през 1998 г. Много хора смятат, че NoSQL е пренебрежителен термин, създаден, за да мушне SQL. В действителност терминът означава не само SQL. Идеята е, че и двете технологии могат да съществуват съвместно и всяка има своето място. Движението за NoSQL е в новините през последните няколко години, тъй като много от лидерите на Web 2.0 са приели NoSQL технология. Компании като Facebook, Twitter, Digg, Amazon, LinkedIn и Google използват NoSQL по един или друг начин. Нека разбием NoSQL, за да можете да го обясните на вашия CIO или дори на вашите колеги.

MYSQL база данни.

NoSQL се появи от нужда

Хранилище за данни: Съхранените в света цифрови данни се измерват в ексабайти. Един ексабайт е равен на един милиард гигабайта (GB) данни. Според Internet.com, количеството съхранявани данни, добавени през 2006 г., е 161 екзабайта. Само 4 години по-късно, през 2010 г., количеството съхранявани данни ще бъде почти 1000 ExaBytes, което е увеличение от над 500%. С други думи, в света има много данни, които се съхраняват и просто ще продължи да расте.

Взаимосвързани данни: Данните продължават да стават все по-свързани. Създаването на мрежата се насърчава чрез хипервръзки, блоговете имат pingbacks и всяка голяма система за социални мрежи има тагове, които свързват нещата. Основните системи са изградени, за да бъдат взаимосвързани.

Сложна структура на данните: NoSQL може лесно да обработва йерархични вложени структури от данни. За да постигнете същото в SQL, ще ви трябват множество релационни таблици с всякакви ключове. Освен това има връзка между производителността и сложността на данните. Производителността може да се влоши в традиционната RDBMS, тъй като съхраняваме огромните количества данни, необходими в приложенията за социални мрежи и семантична мрежа.

Какво е NoSQL?

Предполагам, че един от начините за дефиниране на NoSQL е да се помисли какво не е. Това не е SQL и не е релационен. Както подсказва името, това не е заместител на RDBMS, а го допълва. NoSQL е предназначен за разпределени хранилища на данни за много мащабни нужди от данни. Помислете за Facebook с неговите 500 000 000 потребители или Twitter, който натрупва терабити данни всеки ден.

В NoSQL база данни няма фиксирана схема и няма обединения. RDBMS се "увеличава", като става все по-бърз и по-бърз хардуер и добавя памет. NoSQL, от друга страна, може да се възползва от "намаляването". Мащабирането се отнася до разпределяне на товара върху много стокови системи. Това е компонентът на NoSQL, който го прави евтино решение за големи масиви от данни.

NoSQL категории

Настоящият свят на NoSQL се вписва в 4 основни категории.

  1. Магазини за ключ-стойности се основават предимно на Динамо хартия на Amazon която е написана през 2007 г. Основната идея е съществуването на хеш таблица, където има уникален ключ и указател към определен елемент от данни. Тези съпоставяния обикновено са придружени от кеш механизми, за да се увеличи максимално производителността.
    1. Колона Семейни магазини са създадени да съхраняват и обработват много големи количества данни, разпределени върху много машини. Все още има ключове, но те сочат към множество колони. В случая на BigTable (модел NoSQL на семейство колони на Google), редовете се идентифицират с ключ на ред с данните, сортирани и съхранявани от този ключ. Колоните са подредени по семейство колони.
  2. Бази данни за документи бяха вдъхновени от Lotus Notes и са подобни на магазините ключ-стойност. Моделът е основно документи с версии, които са колекции от други колекции ключ-стойност. Полуструктурираните документи се съхраняват във формати като JSON.
  3. Графична база данниs са изградени с възли, връзки между бележките и свойствата на възлите. Вместо таблици с редове и колони и твърдата структура на SQL, се използва гъвкав модел на графика, който може да мащабира в много машини.

Основни NoSQL играчи

Основните играчи в NoSQL се появиха главно поради организациите, които ги приеха. Някои от най-големите NoSQL технологии включват:

  • Динамо: Dynamo е създаден от Amazon.com и е най-известната NoSQL база данни с ключ-стойност. Amazon се нуждаеше от силно мащабируема разпределена платформа за техния бизнес за електронна търговия, така че разработиха Dynamo. Amazon S3 използва Dynamo като механизъм за съхранение.
  • Касандра:Касандра е с отворен код от 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: 
ИЗБЕРЕТЕ ?url
ОТ
КЪДЕТО {
?сътрудник foaf: име "Jon Foobar" .
?сътрудник foaf: уеблог ?url .
}

Бъдещето на NoSQL

Организациите, които имат огромни нужди за съхранение на данни, гледат сериозно към NoSQL. Очевидно концепцията не получава толкова голяма популярност в по-малките организации. В проучване, проведено от Information Week, 44% от бизнес ИТ специалистите не са чували за NoSQL. Освен това само 1% от респондентите съобщават, че NoSQL е част от тяхното стратегическо направление. Ясно е, че NoSQL има своето място в нашия свързан свят, но ще трябва да продължи да се развива, за да придобие масовата привлекателност, която мнозина смятат, че може да има.