Bazy danych NoSQL – definicja i przykłady

Web Design Blog

Kategoria:
Bazy danych

Data publikacji:
23 września 2019

Autor:
Paweł Mansfeld

Bazy danych NoSQL – definicja i przykłady

Bazy danych NoSQL (ang. non SQL, non relational, Not Only SQL) – bazy danych, w których można przechowywać, organizować i wyszukiwać dane w inny sposób niż w tabelach relacyjnych znanych z tradycyjnych RDBMS.

NoSQL jest przydatny w przypadku danych o dużym wolumenie, które będzie można stosunkowo łatwo skalować horyzontalnie – w klastrach i na wielu serwerach – mowa między innymi o Big Data.

Big Data charakteryzuje się dużymi zbiorami danych, ciągłym przyrostem nowych i koniecznością ich wydajnego przetwarzania. Widać to w przypadku wyszukiwarek internetowych, sieci społecznościowych, innych skalowalnych aplikacji internetowych. Wyzwaniem dla Big Data jest przechowywanie, zapisywanie, analiza i transfer tych danych. NoSQL w rozwiązaniu tych problemów mają rzekomo przewagę nad rozwiązaniami SQL, ale dlaczego?

NoSQL łatwiej skalować horyzontalnie. Możliwość łatwego skalowania w poziomie jest wpisana w ideę NoSQL. Zgodnie z teorią CAP Erica Brewera, którą już miałem okazję przytoczyć we wpisie o skalowaniu baz danych, każda baza danych może mieć co najwyżej dwie cechy z poniższej listy:

  • Spójność (ang. Consistency),
  • Dostępność (ang. Availibility),
  • Tolerancja partycjonowania (ang. Partition Tolerance).

W bazach NoSQL po prostu celowo rezygnuje się ze spójności na rzecz większej wydajności i tolerancji na partycje wprowadzając często różnego rodzaju redundancje (czyli dane nadmiarowe). Na czym polega ta rezygnacja? W bazach NoSQL zazwyczaj nie mamy wsparcia dla transakcji czyli nie spełniają one zasady ACID. Spójność po prostu nie jest w nich kluczowa.

Rodzaje baz danych NoSQL

NoSQL to szerokie pojęcie odnoszące się nie tylko do wybranej technologii. Poniżej wybrane rodzaje baz danych MySQL i przykładowe technologie:

  • bazy danych dokumentów – MongoDB, CouchDB,
  • kolumnowe bazy danych – Apache Cassandra,
  • bazy danych typu klucz-wartość – Redis, Couchbase Server, DynamoDB,
  • systemy pamięci podręcznej – Redis, Memcache,
  • grafowe bazy danych – Neo4J, ArangoDB, FaunaDB, OrientDB.

Pełną listę można znaleźć na stronie podanej w źródłach.

Zalety baz danych NoSQL

Przewaga NoSQL nad SQL polega na tym, że:

  • są bardziej przystosowane i wydajniejsze przy przetwarzaniu Big Data,
  • modele danych – brak predefiniowanych schema (czyli schematów tabel, typów danych itp.) powoduje ich większą elastyczność,
  • potrafią przetwarzać dane niestrukturalne,
  • tańsze i prostsze w utrzymaniu (szczególnie w przypadku prostych baz klucz-wartość) nie wymagają skomplikowanych RDBMS,
  • z natury skalowalne (łatwe skalowanie horyzontalne).

Wady baz danych NoSQL

  • dla danych, w których występują relacje zalecane są nadal standardowe RDBMS,
  • normalizacja w bazach relacyjnych pozwala na uniknięciu redundancji,
  • relacyjne bazy danych rokują większą integralności i spójność danych,
  • SQL jest szeroko znany,
  • brak mechanizmów transkacyjnych – może nie spełniać zasady ACID (ang. Atomicity, Consistensy, Isolation, Durability)

Zastosowanie baz danych NoSQL

Praktycznie każda większa aplikacja webowa prędzej czy później będzie zmuszona wykorzystać bazy NoSQL choćby w celu utrzymywania pamięci podręcznej. Najpopularniejsze rozwiązania tego typu to przykładowo Redis i Memcache. Rozwiązania te warto wdrożyć nawet w małych aplikacjach i wykorzystać je w ramach pamięci podręcznej przechowywanej w pamięci RAM. Radykalnie skracając czas dostępu do danych przechowywanych w bazie MySQL zmniejszamy opóźnienie TTFB, które jest kluczowe w przypadku prędkości działania i responsywności interakcji w serwisach WWW.

Serwis Facebook korzysta z Memcached. Instagram, Netflix i Apple wykorzystują architekturę Cassandra. Redis wykorzystują: Twitter, GitHub, Weibo, Pinterest, Snapchat, Craigslist, Digg, StackOverflow, Flickr. I tak można wymieniać bez końca.

Współdziałanie SQL i NoSQL

Błędne jest patrzenie na technologie baz NoSQL jako alternatywę lub „konkurencję” dla standardowych baz SQL. Technologie te świetnie się uzupełniają i od lat są stosowane równolegle. Bazy danych NoSQL typu klucz-wartość wykorzystuje się jako warstwę pamięci podręcznej dla relacyjnych baz SQL. Przykładem może tutaj być Redis i Memcache, które wykorzystując możliwość łatwego skalowania horyzontalnego i wysokiej wydajności wspierają przetwarzanie danych w różnego rodzaju aplikacjach wymagających wysokiej dostępności i przetwarzania w czasie rzeczywistym.

Źródła

http://nosql-database.org/

Oceń artykuł na temat: Bazy danych NoSQL – definicja i przykłady
Średnia : 4.7 , Maksymalnie : 5 , Głosów : 6

Poprzedni post:

Następny post:

Tagi:
dla profesjonalistów,


 

Dodaj swój komentarz




Komentarze

Gość

10 października 2019

Zastanawia mnie to, czy rzeczywiście potrzebne są te setki czy tysiące baz NoSQL, i wymyślanie kolejnych? Rozumiem że w powszechnym użyciu może być kilkanaście albo kilkadziesiąt znaczących (ale takich "niewielkich" kilkadziesiąt) baz nierelacyjnych, podobnie jak to jest w przypadku baz relacyjnych. Mnóstwo programistów rozprasza swoje siły i czas na stworzenie kolejnej porcji baz NOSQL, a czy nie lepiej skupić się na wsparciu kilkunastu najważniejszych? A potem okaże się że większość z tych masowo tworzonych baz i tak zostanie porzucona. Zresztą na wizualizacji danych ze strony https://db-engines.com/en/ranking_trend wynika, że "hype" na bazy nierelacyjne już wyraźnie wyhamował.

Paweł Mansfeld

11 listopada 2019

Tak jest chyba ze wszystkim. Są programiści, którzy wolą stworzyć swoje rozwiązanie "od zera" a potem jak okazuje się, że to co zostało stworzone "przy okazji" można zastosować w innych projektach,to może zostać opublikowane lub sprzedawane dalej. Każdy model bazy ma jakieś przypadki użycia i mocne i słabe strony. To może przytłaczać jeżeli chcemy opanować technologię pod kątem przyszłego zatrudnienia lub kiedy chcemy podejmować idealnych wyborów przy tworzeniu architektury. Zazwyczaj z jakieś grupy technologii wyłaniają się te popularniejsze i te mniej popularne.

 

Następny artykuł: