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ęcznejRedis, Memcached,
  • 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 Memcached. 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 Memcached, 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.6 , Maksymalnie : 5 , Głosów : 18