Основите на базите данни NoSQL - и защо имаме нужда от тях

Ръководство за начинаещи в света NoSQL

Организирането на данни е много трудна задача. Когато казваме да организираме, ние всъщност категоризираме нещата в зависимост от вида и функцията им.

Едната опция е RDBMS е като Excel Sheet - категоризирате данните под формата на таблици. Можете да формирате връзки между таблиците.

А заявките въпроси в базата данни, която ви дава съответен отговор в замяна. Този език за заявки е SQL или език за структурирани заявки.

Например,

select * from Employee_Data;

избира всички данни за служителите от таблицата Employee_Data.

Релационните бази данни следват схема , подробен план за това как работят вашите таблици.

Използвате Amazon, Facebook и толкова много мрежови приложения. Те пускат актуализации, добавят нови функционалности и дори допълнителни модули. И така, как се променя схемата всеки път? Не отнема ли време на такива огромни компании да отделят своето време и труд за промяна на схемата?

Това е мястото, където SQL не може да работи .

Недостатъците на RDBMS

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

Ще ви покажа примери, за да имате ясно разбиране.

1. RDBMS не може да обработва „Разнообразие от данни“.

Количеството неструктурирани данни продължава да се увеличава годишно и управлението им е трудно. RDBMS не може да форсира всички видове данни в единна схема на таблици.

Силозите за данни също са проблем за разработчиците.

Според Tech Target силозът за данни е хранилище на данни, което остава под контрола на един отдел. Той е изолиран от останалата част от организацията.

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

Увеличението на данните от 2013 до 2020 г. е видимо на изображението по-долу.

Около 44 Zeta байта данни ще бъдат генерирани през 2020 година.

Обработката на толкова разнообразни данни, които не са свързани помежду си, може да бъде много по-трудна в RDBMS.

Пример: Трудно е да се съхраняват данните на пациент, който има различни телесни състояния. Категоризирането на такива разнообразни данни е трудно в RDBMS.

2. Трудно е да се сменят таблици и взаимоотношения.

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

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

Добавянето на нова функционалност ще изисква всички елементи, които да поддържат новата структура. Промяната е неизбежна.

Пример: Всяка допълнителна колона се нуждае от всички предходни редове, за да има стойности за тази колона. Докато в Cassandra (база данни NoSQL), можете да добавите колона към определени дялове на редове.

3. RDBMS следват ACID свойствата на базата данни.

ACID свойствата на базата данни са атомност, последователност, изолираност и трайност. ‌

Атомност - подход „всичко или нищо”. Ако някое извлечение в транзакцията се провали, цялата транзакция се връща обратно.

Последователност - Транзакцията трябва да отговаря на всички протоколи, дефинирани от системата. Няма наполовина завършени транзакции.

Изолация - Нито една транзакция няма достъп до друга транзакция, която е в междинно или незавършено състояние. Всяка транзакция е независима.

Трайност - гарантира, че след като транзакцията се ангажира с базата данни, тя се запазва чрез използването на архиви и дневници на транзакции.

ACID свойствата не са гъвкави.

Например RDBMS следва Нормализация или концепция за една точка на истината . За всяка промяна, която правите, трябва да осигурявате строги ACID свойства. Правилата за цялост на обекта и референтна цялост също се прилагат.

Теоремата за ОСП

Според Уикипедия, теоремата за ОСП ( теоремата на Брюър) гласи, че е невъзможно разпределено хранилище за данни да предоставя едновременно повече от две от следните три гаранции:

Последователност: Подобно на C в киселината.

Наличност : ‌Ресурсите трябва да са винаги на разположение. Трябва да има отговор без грешка.

Толеранс на дяла : Няма единична точка (или възел) на повреда.

Трудно е да се постигнат и трите условия. Човек трябва да направи компромис между трите.

БАЗА на помощ!

‌NoSQL разчита на по-мек модел, известен като BASE модел. BASE ( B asically A vailable , S oft state, E ventual consistency).

Основно достъпно : Гарантира наличността на данните. Ще има отговор на всяка заявка (може да бъде и неуспех).

Меко състояние : Състоянието на системата може да се промени с течение на времето.

Евентуална последователност: Системата в крайна сметка ще стане последователна, след като спре да получава входни данни.

Базите данни NoSQL се отказват от изискванията A, C и / или D и в замяна подобряват мащабируемостта.

NoSQL

Това е, когато NoSQL дойде на помощ. ‌ Това са бази данни „ Не само SQL“ или „ Нерелационни “.

Характеристики на NoSQL:

  • Безплатна схема
  • В крайна сметка последователно (както в свойството BASE)
  • Репликация на хранилища за данни, за да се избегне единична точка на отказ.
  • Може да борави с разнообразие от данни и огромни количества данни.

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

Базите данни NoSQL попадат в четири основни категории:

Магазини с ключови стойности - Riak, Voldemort и Redis

Магазини с широки колони - Касандра и HBase.

Бази данни на документи - MongoDB

Графични бази данни - Neo4J и HyperGraphDB.

Думите отдясно са примери за типовете типове бази данни NoSQL.

1. Магазини за ключови стойности

Хранилището за стойности на ключове използва хеш таблица, в която съществува уникален ключ и указател към определен елемент от данни.

Представете си, че магазините за ключови стойности са като телефонна директория, в която имената на индивида и техните номера са картографирани заедно.

Магазините за ключови стойности нямат език за заявки по подразбиране. Извличате данни с помощта на команди за получаване, поставяне и изтриване . Това е причината да има висока производителност.

Приложения : Полезно за съхранение на информация за коментари и сесии. ‌Pinterest използва Redis за съхраняване на списъци с потребители, последователи, отписатели, дъски.

2. Широки магазини за колони

В база данни база данни за колони колоните във всеки ред се съдържат в този ред.

Всяко семейство колони е контейнер от редове в RDBMS таблица. На ключа идентифицира ред, състоящ се от множество колони.

Редовете не трябва да имат еднакъв брой колони. Колони могат да се добавят към всеки ред по всяко време, без да се налага да го добавяте към други редове. Това е магазин с разделени редове.

Как колонна база данни съхранява данни?

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

3. Бази данни на документи

StoresДокументите за съхранение на данни използват JSON, XML или BSON (двоично кодиране на JSON) документи.

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

Един документ е да съхранява записи и данни от тях.

‌Не поддържа връзки или присъединява.

Ако искаме да съхраним данните на клиента и техните поръчки, можем да използваме магазини за документи, за да го направим.

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

4. Графирайте бази данни

‌ Възлите и връзките са съществените съставки на графичните бази данни. А възел представлява субект. А връзката представлява как две възли са свързани.

‌В RDBMS добавянето на друга връзка води до много промени в схемата.

Графичната база данни изисква съхраняване на данни само веднъж (възли). Различните видове връзки (ръбове) са посочени към съхранените данни.

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

Преминаването на трайни връзки е по-бързо.

Трудно е да се промени връзката между два възела. Това би довело до регресивни промени в базата данни.

Пример : Това изображение е как MySQL работи, където трябва да извърши много операции, за да намери правилен резултат за Алиса.

Базата данни графика , която предопределя взаимоотношения.

Това е част от основната информация, която ще ви е необходима, за да започнете да изследвате NoSQL. Измислят се нови бази данни за специфични цели.

Научете типа данни, които генерира вашето приложение, и тогава е лесно да изберете правилната база данни.

Пиша истории за Уроци от живота, кодиране и технологии. За да прочетете повече, следвайте ме в Twitter и Medium.