Какво е NoSQL?
NoSQL е система за управление на нерелационни бази от данни. Тези системи имат значителни разлики със същите, управляващи релационни бази. Те са измислени за ползване на разпределени хранилища за данни, където е нужна мащабируемост (например Google или Facebook, които събират терабитове данни всеки ден). Това съхраняване на данни може да не се нуждае от определена схема, да избягва join операции и по приницп да скалира хоризонтално.
История на NoSQL
Терминът NoSQL е въведен от Карло Строци през 1998 година. Той го използва, за да наименува неговата open-source лека база от данни, която няма SQL интерфейс. В началото на 2009 година, когато last.fm организира събитие за open-source разпределени бази от данни, Ерик Еванс, работник на Rackspace, преизползва термина, отнасяйки го към бази от данни, които са нерелационни, разпределени и не поддържат ACID (atomicity, consistency, isolation, durability) – четири от характеристиките на традиционните системи за управление на релационни бази от данни.
През същата година в Атланта, САЩ, се състои конференцията “no:sql(east)”, където NoSQL била обсъждана много. След това дискусията и практиката на NoSQL придобила несравним растеж.
Важни характеристики на NoSQL
Без схема : Схема на база от данни е структурата на системата, описана във формален език, който се поддържа от системата за управление на базата. В релационната база от данни схемата дефинира таблиците, полетата им и връзките между тях. В NoSQL колекцията е група от документи, всеки от които представлява ред, а колекцията прилича на таблицита от релационните бази от данни. Колекциите няма схема, което означава, че в една колекция могат да се съдържат различни по тип и структура документи. Например, следните два документа могат да бъдат запазени в една единствена колекция:
{“animal” : “monkey”}
{“speed” : 280.00}
Забележете, че горните два документа нямат нищо общo между елементите. Тази гъвкавост означава, че могат да се прилагат всякакви схема върху база данни от тип NoSQL.
Хоризонтална мащабируемост: Да се мащабира хоризонтално означава да се добавят още възли към системата (например добавяне на нов компютър). В NoSQL запазването на данни може да бъде много по-бързо, понеже то взима предимството на хоризонталното мащабиране и разпределя данните между възлите.
Категории на NoSQL бази от данни
Категория | Описание | Бази |
---|---|---|
Документ базирани | Данните се пазят като документи. Примерен формат би бил нещо такова: FirstName="Tihomir", Address="Beroe Square", Spouse=[{Name:"Penka"}], Children=[{Name:"Gosho", Age:18}] | CouchDB, MongoDB, OrientDB, SimpleDB и други |
XML базирани | Данните се пазят в XML формат. | BaseX, eXist и други |
Графови | Данните се съхраняват като колекция от възли, където възлите са аналог на обекти в съвременен език за програмиране. Възлите са свързани чрез връзки. | AllegroGraph, DEX, Neo4j, FlockDB, GraphDB и други |
Ключ-стойност базирани | В категориите, базирани на ключ-стойност, потребителят може да съхранява данни без схема. Ключовете могат да са стрингове, хеш-стойности, листове, множества, сортирани множества и др. | Cassandra, Redis, memcached и други |
Кой използва NoSQL?
Следните големи компании използват NoSQL бази от данни: