Samouczek NoSQL: Typy baz danych NoSQL i przykład
⚡ Inteligentne podsumowanie
NoSQL to nierelacyjny system zarządzania bazą danych, który nie wymaga stałego schematu, unika złączeń i jest łatwy w skalowaniu. Ten materiał wyjaśnia, czym jest NoSQL, dlaczego istnieje, jego historię, funkcje, cztery typy baz danych, twierdzenie CAP, spójność końcową oraz jego zalety i wady.

Co to jest NoSQL?
Baza danych NoSQL To nierelacyjny system zarządzania danymi, który nie wymaga stałego schematu. Unika łączenia i jest łatwy w skalowaniu. Głównym celem korzystania z bazy danych NoSQL jest rozproszone magazyny danych o ogromnych potrzebach w zakresie przechowywania danych. NoSQL jest używany w przypadku dużych zbiorów danych i aplikacji internetowych działających w czasie rzeczywistym. Na przykład firmy takie jak Twitter, Facebook i… Google zbierać terabajty danych użytkowników każdego dnia.
Baza danych NoSQL Skrót od „Not Only SQL” lub „Not SQL”. Choć lepszym określeniem byłoby „NoREL”, NoSQL zyskał na popularności. Carl Strozzi wprowadził koncepcję NoSQL w 1998 roku.
Tradycyjne systemy RDBMS wykorzystują składnię SQL do przechowywania i pobierania danych w celu uzyskania dalszych informacji. System baz danych NoSQL obejmuje szeroki zakres technologii baz danych, które mogą przechowywać dane ustrukturyzowane, częściowo ustrukturyzowane, nieustrukturyzowane i polimorficzne. Przyjrzyjmy się diagramowi NoSQL w tym samouczku dotyczącym baz danych NoSQL:
Dlaczego NoSQL?
Koncepcja baz danych NoSQL zyskała popularność wśród internetowych gigantów, takich jak Google, Facebook, Amazonitp., którzy mają do czynienia z ogromnymi ilościami danych. Czas reakcji systemu staje się powolny, gdy używasz systemu RDBMS do obsługi ogromnych ilości danych.
Aby rozwiązać ten problem, moglibyśmy „zwiększyć skalę” naszych systemów, modernizując istniejący sprzęt. Proces ten jest kosztowny.
Alternatywą dla tego problemu jest rozłożenie obciążenia bazy danych na wiele hostów w przypadku wzrostu obciążenia. Ta metoda jest znana jako „skalowanie w poziomie”.
Bazy danych NoSQL nie są relacyjne, dlatego lepiej się skalują niż bazy relacyjne, gdyż są projektowane z myślą o aplikacjach internetowych.
Krótka historia baz danych NoSQL
- 1998 – Carlo Strozzi używa terminu NoSQL na określenie swojej lekkiej, relacyjnej bazy danych o otwartym kodzie źródłowym.
- 2000 – Baza danych grafów Neo4j został uruchomiony.
- 2004 - Google Uruchomiono BigTable.
- 2005 - CouchDB jest uruchomiona.
- 2007 – Praca badawcza na temat Amazon Dynamo zostaje zwolniony.
- 2008 – Facebook udostępnia źródła otwarte Cassandra projekt.
- 2009 – Ponownie wprowadzono termin NoSQL.
Funkcje NoSQLa
Nierelacyjne
- Bazy danych NoSQL nigdy nie podążają za model relacyjny.
- Nigdy nie należy tworzyć tabel z płaskimi rekordami o stałej liczbie kolumn.
- Praca z samodzielnymi agregatami lub obiektami BLOB.
- Nie wymagaj mapy obiektowo-relacyjnejping i normalizacji danych.
- Brak skomplikowanych funkcji, takich jak języki zapytań, planery zapytań, łączenia integralności referencyjnej czy ACID.
Bez schematów
- Bazy danych NoSQL są albo wolne od schematów, albo mają luźne schematy.
- Nie wymagają żadnego rodzaju definicji schematu danych.
- Oferuj heterogeniczne struktury danych w tej samej domenie.

Proste API
- Oferuje łatwe w użyciu interfejsy do przechowywania i wyszukiwania danych.
- Interfejsy API umożliwiają niskopoziomową manipulację danymi i stosowanie metod selekcji.
- Protokoły tekstowe używane głównie z HTTP, REST i JSON.
- W większości nie używano standardowego języka zapytań NoSQL.
- Bazy danych obsługujące sieć WWW, działające jako usługi dostępne przez Internet.
Rozproszone
- Wiele baz danych NoSQL można uruchamiać w sposób rozproszony.
- Oferuje funkcje automatycznego skalowania i przełączania awaryjnego.
- Często koncepcję ACID można poświęcić na rzecz skalowalności i przepustowości.
- W większości przypadków brak replikacji synchronicznej między rozproszonymi węzłami; asynchroniczna replikacja wielo-masterowa, replikacja typu peer-to-peer, replikacja HDFS.
- Zapewniamy jedynie ostateczną spójność.
- Architektura bez współdzielenia. Pozwala to na ograniczenie koordynacji i zwiększenie dystrybucji.
Typy baz danych NoSQL
Bazy danych NoSQL Bazy danych dzielą się głównie na cztery typy: pary klucz-wartość, zorientowane na kolumny, oparte na grafach i zorientowane na dokumenty. Każda kategoria ma swoje unikalne atrybuty i ograniczenia. Żadna z wyżej wymienionych baz danych nie rozwiązuje wszystkich problemów lepiej. Użytkownicy powinni wybrać bazę danych w oparciu o swoje potrzeby produktowe.
Rodzaje baz danych NoSQL:
- Na podstawie pary klucz-wartość
- Wykres kolumnowy
- Oparte na wykresach
- Zorientowany na dokumenty
Na podstawie pary klucz-wartość
Dane są przechowywane w parach klucz/wartość. System został zaprojektowany tak, aby obsługiwać duże ilości danych i duże obciążenia. Bazy danych przechowujące pary klucz/wartość przechowują dane w postaci tablicy skrótów, w której każdy klucz jest unikalny, a wartością może być JSON, BLOB (Binary Large Objects), ciąg znaków itp.
Na przykład para klucz-wartość może zawierać klucz taki jak „Witryna internetowa” powiązany z wartością taką jak „Guru99 ”.
To jeden z najprostszych przykładów baz danych NoSQL. Ten rodzaj bazy danych NoSQL jest używany jako kolekcja, słowniki, tablice asocjacyjne itp. Magazyny klucz-wartość pomagają programistom przechowywać dane bez schematu. Najlepiej sprawdzają się w sklepach.ping zawartość koszyka.
Redis, Dynamo i Riak to przykłady baz danych NoSQL przechowujących klucze i wartości. Wszystkie bazują na Amazongazeta Dynamo.
Oparte na kolumnach
Bazy danych zorientowane kolumnowo działają na kolumnach i opierają się na artykule BigTable autorstwa GoogleKażda kolumna jest traktowana osobno. Wartości baz danych jednokolumnowych są przechowywane w sposób ciągły.
Zapewniają wysoką wydajność w przypadku zapytań agregacyjnych, takich jak SUMA, LICZNIK, AVG, MIN itp., ponieważ dane są łatwo dostępne w kolumnie. Bazy danych NoSQL oparte na kolumnach są szeroko stosowane do zarządzania magazynami danych, business intelligence, CRM i katalogi kart bibliotecznych.
HBase, Cassandrai Hypertable to przykłady zapytań NoSQL do baz danych opartych na kolumnach.
Zorientowany na dokument
Baza danych NoSQL zorientowana na dokumenty przechowuje i pobiera dane jako pary klucz-wartość, ale część wartości jest przechowywana jako dokument. Dokument jest przechowywany w formatach JSON lub XML. Wartość jest rozpoznawana przez bazę danych i można ją odpytać.
Na tym diagramie po lewej stronie widać wiersze i kolumny, a po prawej bazę danych dokumentów o strukturze podobnej do JSON. W przypadku bazy relacyjnej trzeba znać kolumny itd. Natomiast w przypadku bazy dokumentów mamy magazyn danych, taki jak obiekt JSON. Nie trzeba go definiować, co zapewnia elastyczność.
Ten typ dokumentu jest najczęściej używany w systemach CMS, platformach blogowych, analizach w czasie rzeczywistym i aplikacjach e-commerce. Nie należy go używać w przypadku złożonych transakcji wymagających wielu operacji lub zapytań względem zróżnicowanych struktur agregacji.
Amazon prosta baza danych, CouchDB, MongoDB, Riak i Lotus Notes to popularne aplikacje zorientowane na dokumenty Systemy DBMS.
Oparte na wykresach
Baza danych typu graf przechowuje zarówno encje, jak i relacje między nimi. Encja jest przechowywana jako węzeł, a relacja jako krawędzie. Krawędź definiuje relację między węzłami. Każdy węzeł i krawędź mają unikalny identyfikator.
W porównaniu z relacyjną bazą danych, w której tabele są luźno połączone, grafowa baza danych ma charakter wielorelacyjny. Przeglądanie relacji jest szybkie, ponieważ są one już zapisane w bazie danych i nie ma potrzeby ich obliczania. Grafowe bazy danych są wykorzystywane głównie do obsługi sieci społecznościowych, logistyki i danych przestrzennych.
Neo4J, nieskończony wykres, OrientDBi FlockDB to popularne bazy danych oparte na grafach.
Narzędzia mechanizmu zapytań dla NoSQL
Najbardziej powszechnym mechanizmem pobierania danych jest pobieranie wartości na podstawie klucza/ID za pomocą zasobu GET, bazującego na protokole REST.
Bazy danych przechowujące dokumenty oferują trudniejsze zapytania, ponieważ rozumieją wartość w parze klucz-wartość. Na przykład: CouchDB umożliwia definiowanie widoków za pomocą MapReduce.
Co to jest twierdzenie CAP?
Twierdzenie CAP, zwane również twierdzeniem Brewera, głosi, że rozproszony magazyn danych nie może zapewnić więcej niż dwóch z trzech gwarancji:
- Konsystencja:
- Dostępność:
- Tolerancja partycji
Konsystencja: Dane powinny pozostać spójne nawet po wykonaniu operacji. Oznacza to, że po zapisaniu danych każde przyszłe żądanie odczytu powinno zawierać te dane. Na przykład po zaktualizowaniu statusu zamówienia wszyscy klienci powinni móc zobaczyć te same dane.
Dostępność: Baza danych powinna być zawsze dostępna i responsywna. Nie powinien mieć żadnych przestojów.
Tolerancja podziału: Tolerancja partycji oznacza, że system powinien nadal działać, nawet jeśli komunikacja pomiędzy serwerami nie jest stabilna. Na przykład serwery można podzielić na wiele grup, które mogą nie komunikować się ze sobą. W tym przypadku, jeśli część bazy danych jest niedostępna, inne części pozostają niezmienione.
Ostateczna spójność
Termin „spójność ostateczna” oznacza posiadanie kopii danych na wielu maszynach w celu zapewnienia wysokiej dostępności i skalowalności. W związku z tym zmiany wprowadzone w dowolnym elemencie danych na jednej maszynie muszą zostać rozpropagowane na inne repliki.
Replikacja danych może nie być natychmiastowa, ponieważ niektóre kopie zostaną zaktualizowane natychmiast, a inne z czasem. Kopie te mogą być wzajemnie niespójne, ale z czasem stają się spójne. Stąd nazwa „spójność ostateczna”.
BAZA: Basistycznie Adostępny, Sczęsto stan, Epozorna spójność
- Zasadniczo dostępny oznacza, że baza danych jest dostępna cały czas, zgodnie z twierdzeniem CAP.
- Stan miękki oznacza, że nawet bez danych wejściowych stan systemu może się zmienić.
- Ostateczna spójność oznacza, że system z czasem stanie się spójny.
Zalety NoSQLa
- Można go używać jako podstawowego lub analitycznego źródła danych.
- Możliwość przetwarzania dużych zbiorów danych.
- Brak pojedynczego punktu awarii.
- Łatwe powielanie.
- Nie ma potrzeby stosowania osobnej warstwy buforującej.
- Zapewnia szybką wydajność i skalowalność poziomą.
- Może równie skutecznie obsługiwać dane ustrukturyzowane, częściowo ustrukturyzowane i nieustrukturyzowane.
- Łatwe w użyciu i elastyczne programowanie obiektowe.
- Bazy danych NoSQL nie wymagają dedykowanego, wydajnego serwera.
- Obsługa najważniejszych języków programowania i platform.
- Łatwiejsze do wdrożenia niż korzystanie z RDBMS.
- Może służyć jako główne źródło danych dla aplikacji internetowych.
- Zajmuje się przetwarzaniem dużych zbiorów danych, co oznacza zarządzanie prędkością, różnorodnością, objętością i złożonością danych.
- Specjalizuje się w obsłudze rozproszonych baz danych i wielu centrów danych.
- Eliminuje potrzebę stosowania specjalnej warstwy buforującej do przechowywania danych.
- Oferuje elastyczną konstrukcję schematu, którą można łatwo zmienić bez przestoju lub przerw w świadczeniu usług.
Wady NoSQL
- Brak zasad standaryzacji.
- Ograniczone możliwości zapytań.
- RDBMS bazy danych i narzędzia są stosunkowo dojrzałe.
- Nie oferuje żadnych tradycyjnych możliwości baz danych, takich jak spójność przy jednoczesnym wykonywaniu wielu transakcji.
- Gdy ilość danych wzrasta, utrzymanie unikalnych wartości staje się trudne, ponieważ klucze stają się skomplikowane.
- Nie działa tak dobrze z danymi relacyjnymi.
- Dla nowych programistów krzywa uczenia się jest trudna.
- Opcje open source nie cieszą się dużą popularnością wśród przedsiębiorstw.






