NoSQL урок: Видове NoSQL бази данни и пример
⚡ Умно обобщение
NoSQL е нерелационна система за управление на бази данни, която не изисква фиксирана схема, избягва съединения и се мащабира лесно. Този ресурс обяснява какво е NoSQL, защо съществува, неговата история, функции, четирите типа бази данни, теоремата за CAP, евентуална съгласуваност, както и неговите предимства и недостатъци.

Какво е NoSQL?
База данни NoSQL е нерелационна система за управление на данни, която не изисква фиксирана схема. Тя избягва съединения и е лесна за мащабиране. Основната цел на използването на NoSQL база данни е за разпределени хранилища на данни с огромни нужди за съхранение на данни. NoSQL се използва за големи данни и уеб приложения в реално време. Например, компании като Twitter, Facebook и... Google събират терабайти потребителски данни всеки ден.
NoSQL база данни означава „Не само SQL“ или „Не SQL“. Въпреки че по-добър термин би бил „NoREL“, NoSQL се налага. Карл Строци въвежда концепцията за NoSQL през 1998 г.
Традиционната RDBMS използва SQL синтаксис за съхраняване и извличане на данни за по-нататъшна информация. Вместо това, NoSQL системата за бази данни обхваща широк спектър от технологии за бази данни, които могат да съхраняват структурирани, полуструктурирани, неструктурирани и полиморфни данни. Нека разберем NoSQL с диаграма в този урок за NoSQL бази данни:
Защо NoSQL?
Концепцията за NoSQL бази данни стана популярна сред интернет гиганти като Google, Facebook, Amazon, и т.н., които работят с огромни обеми от данни. Времето за реакция на системата става бавно, когато използвате RDBMS за огромни обеми от данни.
За да разрешим този проблем, бихме могли да „мащабираме“ нашите системи, като надстроим съществуващия си хардуер. Този процес е скъп.
Алтернативата на този проблем е да се разпредели натоварването на базата данни на множество хостове, когато натоварването се увеличи. Този метод е известен като „мащабиране навън“.
NoSQL базата данни е нерелационна, така че се мащабира по-добре от релационните бази данни, тъй като те са проектирани с мисъл за уеб приложения.
Кратка история на NoSQL базите данни
- 1998 г. – Карло Строци използва термина NoSQL за своята лека релационна база данни с отворен код.
- 2000 г. – Графична база данни Neo4j е пуснат на пазара.
- 2004 - Google BigTable е стартиран.
- 2005 - CouchDB се стартира.
- 2007 г. – Изследователската работа върху Amazon Динамо е освободен.
- 2008 г. – Facebook предоставя отворени кодове Cassandra проект.
- 2009 г. – Терминът NoSQL беше въведен отново.
Характеристики на NoSQL
Нерелационни
- NoSQL базите данни никога не следват релационен модел.
- Никога не предоставяйте таблици с фиксирани записи с фиксирани колони.
- Работете със самостоятелни агрегати или BLOB-ове.
- Не изисква обектно-релационна картаping и нормализиране на данните.
- Няма сложни функции като езици за заявки, планиращи заявки, съединения за референтна цялост или ACID.
Без схеми
- NoSQL базите данни са или без схеми, или имат облекчени схеми.
- Не изисквайте никакво определение на схемата на данните.
- Предлагайте хетерогенни структури от данни в една и съща област.

Прост API
- Предлага лесни за използване интерфейси за съхранение и заявки към данни.
- API позволяват манипулиране на данни и методи за избор на ниско ниво.
- Текстово-базирани протоколи, използвани най-вече с HTTP REST с JSON.
- Най-често се използва нестандартен NoSQL език за заявки.
- Уеб-бази данни, работещи като интернет-услуги.
Разпределени
- Множество NoSQL бази данни могат да бъдат изпълнявани по разпределен начин.
- Предлага възможности за автоматично мащабиране и превключване при срив.
- Често концепцията ACID може да бъде пожертвана за сметка на мащабируемост и пропускателна способност.
- Предимно няма синхронна репликация между разпределени възли; асинхронна репликация от няколко главни узла, peer-to-peer, HDFS репликация.
- Само осигуряване на евентуална последователност.
- Архитектура без споделено съдържание. Това позволява по-малко координация и по-високо разпределение.
Видове NoSQL бази данни
NoSQL бази данни се категоризират основно в четири типа: двойки ключ-стойност, колонно-ориентирани, графично-ориентирани и документно-ориентирани. Всяка категория има своите уникални атрибути и ограничения. Нито една от горепосочените бази данни не е по-добра в решаването на всички проблеми. Потребителите трябва да изберат базата данни въз основа на нуждите на продукта си.
Типове NoSQL бази данни:
- Базиран на двойка ключ-стойност
- Графика, ориентирана по колони
- Базирани на графики
- Ориентиран към документи
Базиран на двойка ключ стойност
Данните се съхраняват в двойки ключ/стойност. Проектирани са по такъв начин, че да обработват големи количества данни и голямо натоварване. Базите данни за съхранение на двойки ключ-стойност съхраняват данните като хеш таблица, където всеки ключ е уникален, а стойността може да бъде JSON, BLOB (Binary Large Objects), низ и др.
Например, двойка ключ-стойност може да съдържа ключ като „Уебсайт“, свързан със стойност като „Guru99. "
Това е един от най-основните примери за NoSQL бази данни. Този вид NoSQL база данни се използва като колекция, речници, асоциативни масиви и др. Хранилищата тип „ключ-стойност“ помагат на разработчика да съхранява данни без схема. Те работят най-добре за магазини.ping съдържанието на количката.
Redis, Dynamo и Riak са някои NoSQL примери за бази данни с хранилища за ключове и стойности. Всички те са базирани на AmazonДинамо хартия.
Базиран на колони
Колонно-ориентираните бази данни работят с колони и са базирани на статията за BigTable от GoogleВсяка колона се третира отделно. Стойностите на бази данни с една колона се съхраняват последователно.
Те осигуряват висока производителност при заявки за агрегиране като SUM, COUNT, AVG, MIN и т.н., тъй като данните са лесно достъпни в колона. Базираните на колони NoSQL бази данни се използват широко за управление на хранилища за данни, бизнес разузнаване, CRM и каталози на библиотечни карти.
HBase, Cassandraи Hypertable са примери за NoSQL заявки на бази данни, базирани на колони.
Ориентиран към документи
Документно-ориентираната NoSQL база данни съхранява и извлича данни като двойка ключ-стойност, но частта със стойността се съхранява като документ. Документът се съхранява във формат JSON или XML. Стойността се разбира от базата данни и може да бъде заявена.
На тази диаграма отляво можете да видите, че имаме редове и колони, а отдясно имаме база данни с документи, която има подобна структура на JSON. За релационната база данни трябва да знаете какви колони имате и т.н. За база данни с документи обаче имате хранилище за данни, подобно на JSON обект. Не е необходимо да го дефинирате, което го прави гъвкаво.
Типът документ се използва най-вече за CMS системи, блог платформи, анализи в реално време и приложения за електронна търговия. Не трябва да се използва за сложни транзакции, които изискват множество операции или заявки към различни агрегатни структури.
Amazon SimpleDB, CouchDB, MongoDB, Riak и Lotus Notes са популярни, ориентирани към документи СУБД системи.
Базиран на графики
Графовата база данни съхранява както обекти, така и връзките между тези обекти. Обектът се съхранява като възел, а връзките са като ръбове. Ръбът определя връзката между възлите. Всеки възел и ръб има уникален идентификатор.
В сравнение с релационна база данни, където таблиците са слабо свързани, графовата база данни е мултирелационна по природа. Преминаването през релации е бързо, тъй като те вече са записани в базата данни и няма нужда да се изчисляват. Графовите бази данни се използват най-вече за социални мрежи, логистика и пространствени данни.
Neo4J, безкрайна графика, OrientDBи FlockDB са някои популярни графово-базирани бази данни.
Инструменти за механизъм за заявки за NoSQL
Най-разпространеният механизъм за извличане на данни е REST-базираното извличане на стойност въз основа на нейния ключ/ИД с GET ресурс.
Базите данни за хранилища на документи предлагат по-трудни заявки, тъй като те разбират стойността в двойка ключ-стойност. Например CouchDB позволява дефиниране на изгледи с MapReduce.
Какво представлява теоремата за CAP?
Теоремата на CAP, наричана още теорема на Брюър, гласи, че е невъзможно едно разпределено хранилище за данни да предлага повече от две от три гаранции:
- Съгласуваност
- Наличност
- Толерантност към дялове
Съвместимост: Данните трябва да останат последователни дори след изпълнение на операция. Това означава, че след като данните бъдат записани, всяка бъдеща заявка за четене трябва да съдържа тези данни. Например, след актуализиране на статуса на поръчката, всички клиенти трябва да могат да виждат едни и същи данни.
Достъпност: Базата данни трябва да е винаги достъпна и отзивчива. Не трябва да има престой.
Толерантност към дялове: Partition Tolerance означава, че системата трябва да продължи да функционира дори ако комуникацията между сървърите не е стабилна. Например, сървърите могат да бъдат разделени на множество групи, които може да не комуникират помежду си. Тук, ако част от базата данни е недостъпна, другите части винаги остават незасегнати.
Последователност на събитията
Терминът „евентуална съгласуваност“ означава да има копия на данни на множество машини, за да се постигне висока достъпност и мащабируемост. По този начин промените, направени във всеки елемент от данните на една машина, трябва да се разпространят към други реплики.
Репликацията на данните може да не е мигновена, тъй като някои копия ще се актуализират незабавно, а други - с течение на времето. Тези копия може да са взаимно несъвместими, но с течение на времето те стават последователни. Оттук и името - евентуална последователност.
БАЗА: Bпо принцип Aналичен, Sчесто състояние, Eвентуална консистенция
- „Базово налична“ означава, че базата данни е налична през цялото време, съгласно теоремата на CAP.
- Меко състояние означава, че дори без вход, състоянието на системата може да се промени.
- Евентуалната съгласуваност означава, че системата ще стане съгласувана с течение на времето.
Предимства на NoSQL
- Може да се използва като основен или аналитичен източник на данни.
- Възможности за работа с големи данни.
- Няма нито една точка на неуспех.
- Лесно репликация.
- Няма нужда от отделен слой за кеширане.
- Осигурява бърза производителност и хоризонтална мащабируемост.
- Може да обработва структурирани, полуструктурирани и неструктурирани данни с еднакъв ефект.
- Обектно-ориентирано програмиране, което е лесно за използване и гъвкаво.
- NoSQL базите данни не се нуждаят от специален високопроизводителен сървър.
- Поддържа ключови езици и платформи за разработчици.
- По-лесно за внедряване от използването на RDBMS.
- Може да служи като основен източник на данни за онлайн приложения.
- Обработва големи данни, които управляват скоростта, разнообразието, обема и сложността на данните.
- Отличава се с разпределени бази данни и операции с множество центрове за данни.
- Елиминира необходимостта от специфичен кеширащ слой за съхранение на данни.
- Предлага гъвкав дизайн на схемата, който може лесно да бъде променян без прекъсване или прекъсване на услугата.
Недостатъци на NoSQL
- Няма правила за стандартизация.
- Ограничени възможности за заявки.
- RDBMS Базите данни и инструментите са сравнително зрели.
- Той не предлага никакви традиционни възможности за база данни, като последователност, когато множество транзакции се извършват едновременно.
- Когато обемът на данните се увеличи, е трудно да се поддържат уникални стойности, тъй като ключовете стават трудни.
- Не работи толкова добре с релационни данни.
- Кривата на обучение е трудна за новите разработчици.
- Опциите с отворен код не са толкова популярни за предприятията.






