Samouczek NoSQL: co to jest, rodzaje baz danych NoSQL i przykład
Co to jest NoSQL?
NoSQL Baza danych jest nierelacyjnym systemem zarządzania danymi, który nie wymaga stałego schematu. Pozwala uniknąć połączeń i jest łatwy do skalowania. Głównym celem korzystania z bazy danych NoSQL są rozproszone magazyny danych o ogromnych potrzebach w zakresie przechowywania danych. NoSQL jest używany w przypadku Big Data i aplikacji internetowych działających w czasie rzeczywistym. Na przykład firmy takie jak Twitter, Facebook i Google gromadzą każdego dnia terabajty danych użytkowników.
Baza danych NoSQL oznacza „Nie tylko SQL” lub „Nie SQL”. Chociaż lepszym terminem byłoby „NoREL”, NoSQL został przyjęty. Carl Strozz wprowadził koncepcję NoSQL w 1998 roku.
Tradycyjny RDBMS wykorzystuje składnię SQL do przechowywania i pobierania danych w celu uzyskania dalszych informacji. Zamiast tego system baz danych NoSQL obejmuje szeroką gamę technologii baz danych, które mogą przechowywać dane strukturalne, częściowo ustrukturyzowane, nieustrukturyzowane i polimorficzne. Przyjrzyjmy się NoSQL za pomocą diagramu w tym samouczku dotyczącym bazy danych NoSQL:
Dlaczego NoSQL?
Koncepcja baz danych NoSQL stała się popularna wśród gigantów internetowych, 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 za każdym razem, gdy obciążenie wzrasta. Ta metoda jest nazywana „skalowaniem w poziomie”.
Baza danych NoSQL nie jest relacyjna, dlatego skaluje się lepiej niż relacyjne bazy danych, ponieważ są projektowane z myślą o aplikacjach internetowych.
Krótka historia baz danych NoSQL
- 1998 — Carlo Strozzi używa terminu NoSQL w swojej lekkiej, relacyjnej bazie danych o otwartym kodzie źródłowym
- 2000- Baza danych graficznych NeoUruchomiono 4j
- 2004 – Uruchomienie Google BigTable
- 2005- CouchDB jest uruchomiony
- 2007- Praca naukowa nt Amazon Dynamo zostaje wypuszczone
- 2008 – Facebook otwiera źródła Cassandra projekt
- 2009 — Ponownie wprowadzono termin NoSQL
Funkcje NoSQLa
Nierelacyjne
- Bazy danych NoSQL nigdy nie podążają za model relacyjny
- Nigdy nie twórz tabel z płaskimi rekordami o stałej kolumnie
- Pracuj z niezależnymi agregatami lub obiektami BLOB
- Nie wymaga mapowania obiektowo-relacyjnego i normalizacji danych
- Brak złożonych funkcji, takich jak języki zapytań, planiści zapytań, połączenia integralności referencyjnej, ACID
Bez schematów
- Bazy danych NoSQL są albo wolne od schematów, albo mają luźne schematy
- Nie wymagają żadnej definicji schematu danych
- Oferuje heterogeniczne struktury danych w tej samej domenie
Proste API
- Oferuje łatwe w użyciu interfejsy do przechowywania i wysyłania zapytań o dostarczone dane
- Interfejsy API umożliwiają manipulację i selekcję danych niskiego poziomu
- Protokoły tekstowe używane najczęściej z HTTP REST z JSON
- Najczęściej nie jest używany żaden standardowy język zapytań NoSQL
- Internetowe bazy danych działające jako usługi internetowe
Rozproszone
- Wiele baz danych NoSQL może być uruchamianych 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 synchronicznej replikacji między rozproszonymi węzłami Asynchroniczna replikacja Multi-Master, peer-to-peer, replikacja HDFS
- Tylko zapewnienie ostatecznej spójności
- Nic wspólnego Architektura. Umożliwia to mniejszą koordynację i lepszą dystrybucję.
Typy baz danych NoSQL
Bazy danych NoSQL są podzielone głównie na cztery typy: para klucz-wartość, zorientowane na kolumny, oparte na wykresach i zorientowane na dokumenty. Każda kategoria ma swoje unikalne atrybuty i ograniczenia. Żadna z wyżej wymienionych baz danych nie jest lepsza do rozwiązania wszystkich problemów. 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ść. Został zaprojektowany w taki sposób, aby obsłużyć dużą ilość danych i duże obciążenie.
Bazy danych do przechowywania par klucz-wartość przechowują dane w postaci tabeli skrótów, w której każdy klucz jest unikalny, a wartością może być JSON, BLOB (duże obiekty binarne), 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”.
Jest to jeden z najbardziej podstawowych przykładów bazy danych NoSQL. Ten rodzaj bazy danych NoSQL jest używany jako kolekcja, słowniki, tablice asocjacyjne itp. Magazyny kluczowych wartości pomagają programiście przechowywać dane bez schematu. Najlepiej sprawdzają się w przypadku zawartości koszyka.
Redis, Dynamo, Riak to niektóre przykłady baz danych NoSQL przechowujących klucz-wartość. Wszystkie opierają się na Amazongazeta Dynamo.
Oparte na kolumnach
Kolumnowe bazy danych działają na kolumnach i bazują na papierze BigTable firmy Google. Każda kolumna traktowana jest osobno. Wartości jednokolumnowych baz danych są przechowywane w sposób ciągły.
Zapewniają wysoką wydajność w przypadku zapytań agregujących, takich jak SUM, COUNT, AVG, MIN itp., ponieważ dane są łatwo dostępne w kolumnie.
Kolumnowe bazy danych NoSQL są szeroko stosowane do zarządzania hurtowniami danych, business intelligence, CRM, katalogi kart bibliotecznych,
HBase, Cassandra, HBase, Hypertable to przykłady zapytań NoSQL dla bazy danych opartej na kolumnach.
Zorientowany na dokument
Zorientowana na dokumenty baza danych NoSQL DB przechowuje i pobiera dane jako parę klucz-wartość, ale część wartości jest przechowywana jako dokument. Dokument jest przechowywany w formatach JSON lub XML. Wartość jest rozumiana przez bazę danych i można ją odpytywać.
Na tym diagramie po lewej stronie widać wiersze i kolumny, a po prawej bazę danych dokumentów o strukturze podobnej do JSON. Teraz w przypadku relacyjnej bazy danych musisz wiedzieć, jakie masz kolumny i tak dalej. Jednak w przypadku bazy danych dokumentów masz magazyn danych taki jak obiekt JSON. Nie musisz definiować, co czyni go elastycznym.
Typ dokumentu jest najczęściej używany w systemach CMS, platformach blogowych, analizach w czasie rzeczywistym i aplikacjach e-commerce. Nie powinien być używany w przypadku złożonych transakcji, które wymagają wielu operacji lub zapytań względem różnych struktur agregujących.
Amazon prosta baza danych, CouchDB, MongoDB, Riak, Lotosowe notatki, MongoDB, są popularne Dokument pochodzi Systemy DBMS.
Oparte na wykresach
Baza danych typu grafowego przechowuje jednostki oraz relacje pomiędzy tymi jednostkami. Element jest przechowywany jako węzeł z relacją jako krawędziami. Krawędź określa relację pomiędzy węzłami. Każdy węzeł i krawędź ma unikalny identyfikator.
W porównaniu do relacyjnej bazy danych, w której tabele są luźno powiązane, baza danych Graph ma charakter wielorelacyjny. Relacje przejścia są szybkie, ponieważ są już zapisane w DB i nie ma potrzeby ich obliczania.
Baza danych grafów wykorzystywana głównie w sieciach społecznościowych, logistyce, danych przestrzennych.
Neo4J, nieskończony wykres, OrientDB, FlockDB to popularne bazy danych oparte na wykresach.
Narzędzia mechanizmu zapytań dla NoSQL
Najpopularniejszym mechanizmem wyszukiwania danych jest pobieranie wartości w oparciu o REST na podstawie jej klucza/identyfikatora za pomocą zasobu GET
Baza danych magazynu dokumentów oferuje 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 jest również nazywane twierdzeniem Brewa. Stwierdza, że rozproszony magazyn danych nie może oferować 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 komputerach w celu uzyskania wysokiej dostępności i skalowalności. Zatem zmiany wprowadzone w dowolnym elemencie danych na jednej maszynie muszą zostać przeniesione do innych replik.
Replikacja danych może nie być natychmiastowa, ponieważ niektóre kopie zostaną zaktualizowane natychmiast, a inne w odpowiednim czasie. Te kopie mogą być wzajemne, ale w odpowiednim czasie stają się spójne. Stąd nazwa „eventual integrity”.
BAZA: Basistycznie Adostępny, Sczęsto stan, Epozorna spójność
- Zasadniczo dostępny oznacza, że DB jest dostępny przez cały czas zgodnie z twierdzeniem CAP
- Stan miękki oznacza nawet bez wejścia; stan systemu może się zmienić
- Ostateczna spójność oznacza, że system stanie się spójny z biegiem czasu
Zalety NoSQLa
- Może być używany jako podstawowe lub analityczne źródło danych
- Możliwości dużych zbiorów danych
- Brak pojedynczego punktu awarii
- Łatwa replikacja
- Nie ma potrzeby stosowania oddzielnej warstwy buforowania
- Zapewnia szybką wydajność i skalowalność poziomą.
- Potrafi z równym skutkiem obsługiwać dane ustrukturyzowane, częściowo ustrukturyzowane i nieustrukturyzowane
- Programowanie obiektowe, które jest łatwe w obsłudze i elastyczne
- Bazy danych NoSQL nie wymagają dedykowanego serwera o wysokiej wydajności
- Obsługa kluczowych języków i platform programistycznych
- Proste do wdrożenia niż użycie RDBMS
- Może służyć jako główne źródło danych dla aplikacji internetowych.
- Obsługuje duże zbiory danych, zarządzając prędkością, różnorodnością, objętością i złożonością danych
- Doskonale radzi sobie z rozproszonymi bazami danych i operacjami w wielu centrach danych
- Eliminuje potrzebę stosowania określonej warstwy buforowania do przechowywania danych
- Oferuje elastyczny projekt schematu, który można łatwo zmieniać bez przestojów lub zakłóceń 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 wzrasta ilość danych, trudno jest zachować unikalne wartości, ponieważ klucze stają się trudne
- Nie działa tak dobrze z danymi relacyjnymi
- Dla nowych programistów krzywa uczenia się jest sztywna
- Opcje open source, więc nie są tak popularne wśród przedsiębiorstw.
Podsumowanie
- NoSQL to nierelacyjny DMS, który nie wymaga stałego schematu, pozwala uniknąć złączeń i jest łatwy w skalowaniu
- Koncepcja baz danych NoSQL stała się popularna wśród gigantów internetowych, takich jak Google, Facebook, Amazonitp., którzy mają do czynienia z ogromnymi ilościami danych
- W roku 1998 Carlo Strozzi użył terminu NoSQL w swojej lekkiej, relacyjnej bazie danych o otwartym kodzie źródłowym
- Bazy danych NoSQL nigdy nie są zgodne z modelem relacyjnym, są albo wolne od schematów, albo mają luźne schematy
- Cztery typy baz danych NoSQL to 1). Na podstawie pary klucz-wartość 2). Wykres kolumnowy 3). Na podstawie wykresów 4). Zorientowany na dokumenty
- NOSQL może z równym skutkiem obsługiwać dane strukturalne, częściowo ustrukturyzowane i nieustrukturyzowane
- Twierdzenie CAP składa się z trzech słów: spójność, dostępność i tolerancja partycji
- BAZA oznacza Basistycznie Adostępny, Sczęsto stan, Epozorna spójność
- Termin „spójność ostateczna” oznacza posiadanie kopii danych na wielu komputerach w celu uzyskania wysokiej dostępności i skalowalności
- NOSQL oferują ograniczone możliwości zapytań