1.1 Jak działa baza danych NoSQL

Bazy danych NoSQL wykorzystują różne modele danych do uzyskiwania dostępu do danych i manipulowania nimi. Te typy baz danych są zoptymalizowane pod kątem aplikacji intensywnie korzystających z danych, które wymagają małych opóźnień i elastycznych modeli danych. Wszystko to osiąga się poprzez złagodzenie restrykcyjnych wymagań dotyczących spójności danych, które są typowe dla innych typów baz danych.

Rozważmy przykład modelowania schematu dla prostej bazy danych książek.

  • W relacyjnej bazie danych wpis księgowy jest często dzielony na wiele części (lub „znormalizowany”) i przechowywany w oddzielnych tabelach, których relacje są definiowane przez ograniczenia klucza podstawowego i obcego. W tym przykładzie tabela Książki zawiera kolumny ISBN , Tytuł książki i „ISBN”i„Autor”Autor-ISBN, aNazwisko autoraiIdentyfikator autorakolumnyAutorzytabelawydaniaNumer. Model relacyjny ma na celu utrzymanie integralności referencyjnej między tabelami w bazie danych. Dane są normalizowane w celu zmniejszenia redundancji i ogólnie zoptymalizowane pod kątem przechowywania.

  • W bazie danych NoSQL rekord księgi jest zwykle przechowywany jako dokument JSON. Dla każdej książki lub elementu wartości ISBN , Tytuł książki , Numer wydania , Nazwa autora i Identyfikator autora są przechowywane jako atrybuty w jednym dokumencie. W tym modelu dane są zoptymalizowane pod kątem intuicyjnego rozwoju i skalowalności poziomej.

1.2 Do czego mogą służyć bazy danych NoSQL?

Bazy danych NoSQL doskonale nadają się do wielu nowoczesnych aplikacji, takich jak aplikacje mobilne, gry, aplikacje internetowe, które wymagają elastycznych, skalowalnych baz danych o wysokiej wydajności i bogatej funkcjonalności, które mogą zapewnić maksymalną użyteczność.

  • Elastyczność . Zazwyczaj bazy danych NoSQL oferują elastyczne schematy, pozwalające na szybszy rozwój i stopniową implementację. Dzięki zastosowaniu elastycznych modeli danych bazy danych NoSQL są dobrze przystosowane do danych częściowo ustrukturyzowanych i nieustrukturyzowanych.

  • Skalowalność . Bazy danych NoSQL są zaprojektowane do skalowania przy użyciu rozproszonych klastrów sprzętowych, a nie poprzez dodawanie drogich, niezawodnych serwerów. Niektórzy dostawcy usług w chmurze wykonują te operacje w tle, zapewniając w pełni zarządzaną usługę.

  • Wysoka wydajność . Bazy danych NoSQL są zoptymalizowane pod kątem określonych modeli danych i wzorców dostępu, aby osiągnąć wyższą wydajność niż relacyjne bazy danych.

  • Szeroka funkcjonalność . Bazy danych NoSQL zapewniają bogate interfejsy API i typy danych, które są specjalnie zaprojektowane dla odpowiednich modeli danych.

1.3 Rodzaje baz danych NoSQL

Bazy danych NoSQL są wykorzystywane tam, gdzie przechowywanie danych w formie tabelarycznej jest mało wygodne. Dlatego są one przechowywane w bardzo różnych formatach. Zwykle istnieje 6 głównych typów danych w bazach danych NoSQL.

Baza danych oparta na parach klucz-wartość

Bazy danych korzystające z par klucz-wartość obsługują wysoką separację i zapewniają bezprecedensowe skalowanie poziome, nieosiągalne w przypadku innych typów baz danych. Dobrymi przypadkami użycia baz danych klucz-wartość są gry, reklamy i aplikacje IoT.

Na przykład Amazon DynamoDB zapewnia stabilną pracę bazy danych z opóźnieniem nie większym niż kilka milisekund w dowolnej skali. Ta solidna wydajność była głównym powodem migracji Snapchat Stories do DynamoDB, ponieważ ta funkcja Snapchata wiąże się z największym obciążeniem pamięci masowej.

Dokument

W kodzie aplikacji dane są często reprezentowane jako obiekt lub dokument w formacie podobnym do JSON, ponieważ jest to wydajny i intuicyjny model danych dla programistów. Bazy danych dokumentów umożliwiają programistom przechowywanie i wysyłanie zapytań do danych w bazie danych przy użyciu tego samego modelu dokumentu, którego używają w kodzie aplikacji. Elastyczny, częściowo ustrukturyzowany, hierarchiczny charakter dokumentów i baz danych dokumentów umożliwia ich ewolucję wraz z potrzebami aplikacji.

Model dokumentu sprawdza się w katalogach, profilach użytkowników i systemach zarządzania treścią, gdzie każdy dokument jest unikalny i zmienia się w czasie. Amazon DocumentDB (kompatybilny z MongoDB) i MongoDB to popularne bazy danych dokumentów, które zapewniają funkcjonalne i intuicyjne interfejsy API do sprawnego programowania.

Bazy danych grafów

Grafowe bazy danych ułatwiają tworzenie i uruchamianie aplikacji, które pracują z zestawami złożonych danych. Typowymi przykładami wykorzystania grafowych baz danych są sieci społecznościowe, usługi rekomendacji, systemy wykrywania oszustw i grafy wiedzy. Amazon Neptune to w pełni zarządzana usługa bazy danych wykresów. Neptune obsługuje Property Graph i Resource Description Framework (RDF), udostępniając dwa interfejsy API wykresów do wyboru: TinkerPop i RDF/SPARQL. Typowe bazy danych wykresów obejmują Neo4j i Giraph.

DB w pamięci

Aplikacje do gier i reklamy często korzystają z tabel liderów, przechowywania sesji i analiz w czasie rzeczywistym. Takie możliwości wymagają reakcji w ciągu kilku mikrosekund, a gwałtowny wzrost ruchu jest możliwy w każdej chwili.

Amazon MemoryDB for Redis to kompatybilna z Redis, niezawodna usługa bazy danych w pamięci, która zmniejsza opóźnienie odczytu do milisekund i zapewnia niezawodność w wielu strefach dostępności. MemoryDB został stworzony z myślą o ultrawysokiej wydajności i niezawodności, dzięki czemu może być używany jako podstawowa baza danych dla nowoczesnych aplikacji opartych na mikrousługach.

Amazon ElastiCache to w pełni zarządzana, kompatybilna z Redis i Memcached usługa buforowania w pamięci, która obsługuje obciążenia o niskiej latencji i dużej przepustowości. Klienci tacy jak Tinder, którzy potrzebują, aby ich aplikacje reagowały w czasie rzeczywistym, używają systemów przechowywania w pamięci, a nie na dysku. Innym przykładem specjalnie zbudowanej hurtowni danych jest Amazon DynamoDB Accelerator (DAX). DAX pozwala DynamoDB odczytywać dane kilka razy szybciej.

Przeszukaj bazy danych

Wiele aplikacji generuje dzienniki, aby ułatwić programistom rozwiązywanie problemów. Amazon OpenSearch to specjalnie zaprojektowana usługa do wizualizacji i analizy automatycznie generowanych strumieni danych w czasie zbliżonym do rzeczywistego poprzez indeksowanie, agregowanie i przeszukiwanie częściowo ustrukturyzowanych dzienników i metryk.

Ponadto Amazon OpenSearch to potężna, wydajna usługa wyszukiwania pełnotekstowego. Expedia wykorzystuje ponad 150 domen usługi Amazon OpenSearch, 30 TB danych i 30 miliardów dokumentów do różnych zastosowań o znaczeniu krytycznym, od monitorowania operacyjnego i rozwiązywania problemów po śledzenie stosu rozproszonych aplikacji i optymalizację kosztów.

1.4 Porównanie baz danych SQL (relacyjnych) i NoSQL (nierelacyjnych).

NoSQL ma wiele zalet, więc powinieneś przynajmniej teoretycznie wiedzieć, że potrzebne narzędzie już istnieje, zanim sam je napiszesz. Poniżej przedstawię porównanie baz NoSQL i SQL:

Odpowiednie obciążenia pracą

Relacyjne bazy danych są przeznaczone do transakcyjnych i wysoce spójnych aplikacji przetwarzania transakcji w czasie rzeczywistym (OLTP) i dobrze nadają się do przetwarzania analitycznego w czasie rzeczywistym (OLAP).

Bazy danych NoSQL są zaprojektowane do pracy z różnymi wzorcami dostępu do danych, w tym z aplikacjami o niskim opóźnieniu. Bazy danych wyszukiwania NoSQL są przeznaczone do analizy częściowo ustrukturyzowanych danych.

Model danych

Model relacyjny normalizuje dane i przekształca je w tabele składające się z wierszy i kolumn. Schemat sztywno definiuje tabele, wiersze, kolumny, indeksy, relacje między tabelami i inne elementy bazy danych. Taka baza danych zapewnia integralność danych referencyjnych w relacjach między tabelami.

Bazy danych NoSQL udostępniają różne modele danych, takie jak pary klucz-wartość, dokumenty i wykresy, które są zoptymalizowane pod kątem wysokiej wydajności i skalowalności.

Właściwości KWASU

Relacyjne bazy danych zapewniają zestaw właściwości ACID: niepodzielność, spójność, izolacja, niezawodność.

  • Atomowość wymaga, aby transakcja była realizowana w całości lub wcale.
  • Spójność oznacza, że ​​po zakończeniu transakcji dane muszą być zgodne ze schematem bazy danych.
  • Izolacja wymaga, aby transakcje równoległe przebiegały oddzielnie od siebie.
  • Niezawodność odnosi się do możliwości przywrócenia ostatniego zapisanego stanu po nieoczekiwanej awarii systemu lub przerwie w dostawie prądu.

Bazy danych NoSQL często oferują kompromis, rozluźniając sztywne wymagania dotyczące właściwości ACID na rzecz bardziej elastycznego modelu danych, który umożliwia skalowanie w poziomie. To sprawia, że ​​NoSQL jest doskonałym wyborem w przypadkach użycia o dużej przepustowości i małych opóźnieniach, które wymagają skalowania w poziomie poza jedną instancję.

Wydajność

Wydajność zależy głównie od podsystemu dysku. Aby uzyskać maksymalną wydajność, często wymagana jest optymalizacja zapytań, indeksów i struktury tabel.

Wydajność zwykle zależy od rozmiaru podstawowego klastra sprzętowego, opóźnienia sieci i aplikacji wywołującej.

skalowanie

Relacyjne bazy danych zazwyczaj skalują się, zwiększając moc obliczeniową sprzętu lub dodając osobne kopie dla obciążeń odczytu.

Bazy danych NoSQL zazwyczaj obsługują wysoką separację dzięki skalowalnym wzorcom dostępu opartym na architekturze rozproszonej. Poprawia to przepustowość i zapewnia stałą wydajność w niemal nieograniczonej skali.

API

Żądania zapisu i pobierania danych są zapisywane w języku SQL. Te zapytania są analizowane i wykonywane przez relacyjną bazę danych.

Zorientowane obiektowo interfejsy API umożliwiają programistom aplikacji łatwe pisanie i pobieranie struktur danych. Korzystając z kluczy partycji, aplikacje mogą wyszukiwać pary klucz-wartość, zestawy kolumn lub częściowo ustrukturyzowane dokumenty zawierające obiekty szeregowe i atrybuty aplikacji.