1.1 Как работи NoSQL база данни

NoSQL базите данни използват различни модели на данни за достъп и манипулиране на данни. Тези типове бази данни са оптимизирани за applications с интензивно използване на данни, които изискват ниска латентност и гъвкави модели на данни. Всичко това се постига чрез смекчаване на строгите изисквания за съгласуваност на данните, характерни за други видове бази данни.

Помислете за пример за моделиране на схема за проста база данни от книги.

  • В релационна база данни записът в книга често се разделя на множество части (or „нормализиран“) и се съхранява в отделни таблици, чиито връзки се определят от ограничения на първичния и външния ключ. В този пример tableта Книги има колони ISBN , Заглавие на книга и „ISBN“и„Author“Author-ISBN, аИме на автораиID на автораколониAuthorиtableтана изданиетоНомер. Релационният модел е проектиран да поддържа референтна цялост между таблици в база данни. Данните са нормализирани, за да се намали излишъкът и като цяло са оптимизирани за съхранение.

  • В NoSQL база данни записът на книга обикновено се съхранява като JSON document. За всяка книга or елемент стойностите на ISBN , Заглавие на книга , Номер на изданието , Име на автора и ID на автора се съхраняват като атрибути в един document. В този модел данните са оптимизирани за интуитивно развитие и хоризонтална мащабируемост.

1.2 За Howво могат да се използват NoSQL бази данни?

NoSQL базите данни са много подходящи за много съвременни applications, като мобилни applications, игри, уеб applications, които изискват гъвкави, мащабируеми бази данни с висока производителност и богата функционалност, които могат да осигурят максимална използваемост.

  • Гъвкавост . Обикновено NoSQL базите данни предлагат гъвкави схеми, позволяващи по-бързо развитие и позволяващи постепенно внедряване. Благодарение на използването на гъвкави модели на данни, NoSQL базите данни са много подходящи за полуструктурирани и неструктурирани данни.

  • Мащабируемост . NoSQL базите данни са проектирани да се мащабират с помощта на разпределени хардуерни клъстери, а не чрез добавяне на скъпи, надеждни сървъри. Някои доставчици на облачни услуги изпълняват тези операции във фонов режим, предоставяйки напълно управлявана услуга.

  • Висока производителност . NoSQL базите данни са оптимизирани за специфични модели на данни и модели на достъп, за да се постигне по-висока производителност от релационните бази данни.

  • Широка функционалност . NoSQL базите данни предоставят богати API и типове данни, които са специално проектирани за съответните им модели на данни.

1.3 Видове NoSQL бази данни

Базите данни NoSQL се използват там, където не е много удобно да се съхраняват данни под формата на таблици. Следователно те се съхраняват в много различни формати. Обикновено има 6 основни типа данни на NoSQL бази данни.

DB, базиран на двойки ключ-стойност

Базите данни, използващи двойки ключ-стойност, поддържат висока разделимост и осигуряват безпрецедентно хоризонтално мащабиране, което не е постижимо с други типове бази данни. Добри случаи на използване на бази данни ключ-стойност са игри, реклама и IoT applications.

Например Amazon DynamoDB осигурява стабилна работа с база данни със закъснение от не повече от няколко мorсекунди във всеки мащаб. Тази стабилна производителност беше основната причина за мигрирането на Snapchat Stories към DynamoDB, тъй като тази функция на Snapchat е свързана с най-голямото натоварване при запис на хранorще.

Документ

В codeа на приложението данните често се представят като обект or document във формат, подобен на JSON, тъй като това е ефективен и интуитивен модел на данни за разработчиците. Базите данни с documentи позволяват на разработчиците да съхраняват и заявяват данни в база данни, използвайки същия модел на document, който използват в codeа на своето приложение. Гъвкавият, полуструктуриран, йерархичен характер на documentите и базите данни с documentи им позволява да се развиват с нуждите на applicationsта.

Моделът на documentа работи добре в каталози, потребителски профor и системи за управление на съдържание, където всеки document е уникален и се променя с времето. Amazon DocumentDB (съвместим с MongoDB) и MongoDB са общи бази данни с documentи, които предоставят функционални и интуитивни API за гъвкаво развитие.

Графични бази данни

Графичните бази данни улесняват разработването и стартирането на applications, които работят с набори от сложни данни. Типични примери за използване на графични бази данни са социалните мрежи, услугите за препоръки, системите за откриване на измами и графите на знанието. Amazon Neptune е напълно управлявана услуга за база данни с графики. Neptune поддържа Property Graph и Resource Description Framework (RDF), предоставяйки два графични API за избор: TinkerPop и RDF/SPARQL. Общите бази данни с графики включват Neo4j и Giraph.

DB в паметта

Често applicationsта за игри и реклама използват класации, съхранение на сесии и анализи в реално време. Такива възможности изискват отговор в рамките на няколко микросекунди, докато рязкото увеличение на трафика е възможно по всяко време.

Amazon MemoryDB за Redis е Redis-съвместима, надеждна услуга за база данни в паметта, която намалява латентността на четене до мorсекунди и осигурява издръжливост в множество зони на достъпност. MemoryDB е специално създадена за свръхвисока производителност и надеждност, така че може да се използва като основна база данни за модерни applications, базирани на микросервизи.

Amazon ElastiCache е напълно управлявана услуга за кеширане в паметта, съвместима с Redis и Memcached, която обслужва натоварвания с ниска латентност и висока производителност. Клиенти като Tinder, които имат нужда applicationsта им да отговарят в реално време, използват системи за съхранение в паметта, а не на диск. Друг пример за специално създадено хранorще за данни е Amazon DynamoDB Accelerator (DAX). DAX позволява на DynamoDB да чете данни няколко пъти по-бързо.

Търсене в бази данни

Много applications генерират регистрационни файлове, за да улеснят разработчиците при отстраняване на неизправности и коригиране на проблеми. Amazon OpenSearch е специално създадена услуга за визуализация и анализ в почти реално време на автоматично генерирани потоци от данни чрез индексиране, агрегиране и търсене в полуструктурирани регистрационни файлове и показатели.

Освен това Amazon OpenSearch е мощна, високопроизводителна услуга за пълнотекстово търсене. Expedia използва над 150 домейна на услугата Amazon OpenSearch, 30 TB данни и 30 мorарда documentа за различни критични случаи на използване, от оперативен мониторинг и отстраняване на неизправности до проследяване на стека на разпределени applications и оптимизиране на разходите.

1.4 Сравнение на SQL (релационни) и NoSQL (нерелационни) бази данни

NoSQL има много предимства, така че трябва поне на теория да знаете, че инструментът, от който се нуждаете, вече съществува, преди да го напишете сами. По-долу ще дам сравнение на NoSQL и SQL бази данни:

Подходящи натоварвания

Релационните бази данни са предназначени за транзакционни и силно последователни applications за обработка на транзакции в реално време (OLTP) и са много подходящи за аналитична обработка в реално време (OLAP).

NoSQL базите данни са проектирани да работят с набор от модели за достъп до данни, включително applications с ниска латентност. NoSQL базите данни за търсене са предназначени за анализ на полуструктурирани данни.

Модел на данни

Релационният модел нормализира данните и ги трансформира в таблици от редове и колони. Схемата стриктно дефинира таблици, редове, колони, индекси, връзки между таблици и други елементи на базата данни. Такава база данни гарантира целостта на референтните данни във връзките между таблиците.

NoSQL базите данни предоставят разнообразие от модели на данни като двойки ключ-стойност, documentи и графики, които са оптимизирани за висока производителност и мащабируемост.

Свойства на ACID

Релационните бази данни предоставят набор от ACID свойства: атомарност, консистенция, изолация, надеждност.

  • Атомичността изисква транзакцията да бъде изпълнена изцяло or изобщо да не бъде изпълнена.
  • Съгласуваност означава, че веднага щом транзакцията приключи, данните трябва да съответстват на схемата на базата данни.
  • Изолацията изисква паралелните транзакции да се изпълняват отделно една от друга.
  • Надеждността се отнася до способността за възстановяване до последното запазено състояние след неочаквана повреда на системата or прекъсване на захранването.

NoSQL базите данни често предлагат компромис, облекчавайки строгите изисквания на свойствата на ACID в полза на по-гъвкав модел на данни, който позволява хоризонтално мащабиране. Това прави NoSQL чудесен избор за случаи на употреба с висока честотна лента и ниска латентност, които изискват хоризонтално мащабиране отвъд един екземпляр.

производителност

Производителността зависи главно от дисковата подсистема. Оптимизирането на заявките, индексите и структурата на tableта често се изисква за максимална производителност.

Производителността обикновено зависи от размера на основния хардуерен клъстер, латентността на мрежата и приложението за повикване.

Мащабиране

Релационните бази данни обикновено се мащабират чрез увеличаване на изчислителната мощност на хардуера or чрез добавяне на отделни копия за работни натоварвания за четене.

NoSQL базите данни обикновено поддържат висока разделимост чрез скалируеми модели за достъп, базирани на разпределена архитектура. Това подобрява производителността и осигурява постоянна производителност в почти неограничен мащаб.

API

Заявките за писане и извличане на данни са написани на SQL. Тези заявки се анализират и изпълняват от релационна база данни.

Обектно-ориентираните API позволяват на разработчиците на applications лесно да пишат и извличат структури от данни. Използвайки ключове за дялове, applicationsта могат да търсят двойки ключ-стойност, набори от колони or полуструктурирани documentи, съдържащи серийни обекти и атрибути на applications.