Съкращението NoSQL е измислено през 1998 г. Много хора смятат, че NoSQL е унизителен термин, създаден, за да се бърка в SQL. В действителност терминът означава не само SQL. Идеята е, че двете технологии могат да съществуват едновременно и всяка има своето място. Движението NoSQL беше в новините през последните няколко години, тъй като много от лидерите на Web 2.0 възприеха NoSQL технология. Компании като Facebook, Twitter, Digg, Amazon, LinkedIn и Google използват NoSQL по един или друг начин. Нека разбием NoSQL, за да можете да го обясните на вашия CIO или дори на вашите колеги.
NoSQL възникна от нужда
Съхранение на данни: Съхранените цифрови данни в света се измерват в екзабайти. Един екзабайт е равен на един милиард гигабайта (GB) данни. Според Internet.com количеството съхранени данни, добавени през 2006 г., е 161 екзабайта. Само 4 години по-късно през 2010 г. обемът на съхранените данни ще бъде почти 1 000 ExaBytes, което е увеличение от над 500%. С други думи, в света се съхраняват много данни и те просто ще продължат да нарастват.
Взаимосвързани данни: Данните продължават да стават все по-свързани. Създаването на мрежата се насърчава чрез хипервръзки, блоговете имат pingbacks и всяка основна социална мрежа има тагове, които свързват нещата заедно. Основните системи са изградени да бъдат свързани помежду си.
Сложна структура на данните: NoSQL може лесно да обработва йерархични вложени структури от данни. За да постигнете същото нещо в SQL, ще ви трябват множество релационни таблици с всички видове ключове. Освен това има връзка между производителността и сложността на данните. Производителността може да се влоши в традиционната RDBMS, тъй като съхраняваме огромните количества данни, необходими в приложенията за социални мрежи и семантичната мрежа.
Какво е NoSQL?
Предполагам, че един от начините да се дефинира NoSQL е да се вземе предвид какво не е. Това не е SQL и не е релационно. Както подсказва името, това не е заместител на RDBMS, а го допълва. NoSQL е проектиран за разпределени хранилища за данни за много големи нужди от данни. Помислете за Facebook с неговите 500 000 000 потребители или Twitter, който натрупва терабити данни всеки ден.
В NoSQL база данни няма фиксирана схема и обединения. RDBMS се „мащабира“, като получава все по-бърз хардуер и добавя памет. NoSQL, от друга страна, може да се възползва от „мащабирането“. Мащабирането се отнася до разпределяне на товара върху много стокови системи. Това е компонентът на NoSQL, който го прави евтино решение за големи масиви от данни.
NoSQL Категории
Настоящият свят на NoSQL се вписва в 4 основни категории.
- Магазините за ключови стойности са базирани предимно на Dynamo Paper на Amazon, който е написан през 2007 г. Основната идея е съществуването на хеш таблица, където има уникален ключ и указател към конкретен елемент от данни. Тези съпоставяния обикновено са придружени от механизми за кеширане, за да се увеличи максимално производителността.
- Базите данни за документи са вдъхновени от Lotus Notes и са подобни на хранилищата за ключ-стойност. Моделът е основно документи с версии, които са колекции от други колекции ключ-стойност. Полуструктурираните документи се съхраняват във формати като JSON.
- Graph Databases са изградени с възли, връзки между бележките и свойствата на възлите. Вместо таблици с редове и колони и твърдата структура на SQL се използва гъвкав графичен модел, който може да се мащабира в много машини.
Column Family Stores са създадени за съхраняване и обработка на много големи количества данни, разпределени на много машини. Все още има ключове, но те сочат към множество колони. В случая на BigTable (NoSQL модел на семейство колони на Google), редовете се идентифицират чрез ключ за ред, като данните са сортирани и съхранени от този ключ. Колоните са подредени по семейство колони.
Основни NoSQL играчи
Основните играчи в NoSQL се появиха главно благодарение на организациите, които ги възприеха. Някои от най-големите NoSQL технологии включват:
- Dynamo: Dynamo е създаден от Amazon.com и е най-известната NoSQL база данни с ключ-стойност. Amazon се нуждаеше от силно мащабируема разпределена платформа за техния бизнес за електронна търговия, така че те разработиха Dynamo. Amazon S3 използва Dynamo като механизъм за съхранение.
- Cassandra: Cassandra е с отворен код от Facebook и е ориентирана към колони NoSQL база данни.
- BigTable: 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. Вместо това запитването към тези бази данни е> PREFIX foaf:
SELECT ?url
FROM
WHERE {
?contributor foaf:name "Jon Foobar".
?contributor foaf:weblog ?url.
}
Бъдещето на NoSQL
Организации, които имат големи нужди от съхранение на данни, гледат сериозно на NoSQL. Очевидно концепцията не се налага толкова много в по-малките организации. В проучване, проведено от Information Week, 44% от бизнес ИТ специалистите не са чували за NoSQL. Освен това само 1% от респондентите съобщават, че NoSQL е част от тяхната стратегическа посока. Ясно е, че NoSQL има своето място в нашия свързан свят, но ще трябва да продължи да се развива, за да получи масовата привлекателност, която мнозина смятат, че може да има.