Baza NoSQL

Baza NoSQL
Polecane artykuły

Baza NoSQL - (ang. NoSQL lub Not Only SQL) - baza danych nie korzystająca bezpośrednio ze struktury relacyjnego modelu. Termin "Not Only" oznacza, że systemy te mogą dopuszczać elementy SQL-a (m.in języki zapytań podobne do tych SQL-owych). Nie powinno się kojarzyć terminu NoSQL z jedną, konkretną technologią, bowiem jest to zbiór rozwiązań, które służą do przechowywania danych. Zazwyczaj w NoSQL-owych bazach dane nie są przechowywane w tabelach, nie istnieją także relacje. Sprawdzają się najlepiej do zapisywania dużych ilości danych (tzw. Big Data).

Założenia ruchu NoSQL [1]

1. Uproszczenie tworzenia oraz budowy zapytań.

2. Poszukiwanie wsparcia dla swoich rozwiązań (na razie tworzonych zazwyczaj przez małe firmy rozwiązań typu open source).

3. "Standaryzacja interfejsu dostępu do baz NoSQL5."

4. Eliminacja najsłabszych rozwiązań, gdyż obecnie jest ich zbyt dużo i nikt nie jest w stanie wszystkich przetestować.


Założenia technologii NoSQL[1]

1.Odejście od założenia ACID czyli:

  • Atomicity - atomowość (konieczność logowania operacji).
  • Consistency - spójność (weryfikacja poprawności).
  • Isolation - izolacja (blokowanie).
  • Durability - trwałość (zapis w pamięci trwałej).

Bowiem uznano, że są one zbyt restrykcyjne.

2.Rezygnacja z wielu składników (elementów) baz relacyjnych, gdyż ścisły schemat bazy często bywa wadą.

3. Zmniejszenie znaczenia schematów danych, gdyż największą uwagę powinno się zwrócić na dane.

Cechy baz NoSQL [2]

  • Sposób przechowywania danych można dobrać w zależności od ich specyfiki.
  • Nie posiadają modelu relacyjnego.
  • Przechowują bogatą strukturę bardzo blisko spokrewnionych danych, które zostały potraktowane jako jednostki (agregacja)
  • Najcześciej są to bazy open source.
  • Łatwo się skalują, gdyż mogą działać na rozproszonej architekturze (nie posiadają złączeń), którą daje się łatwo poszerzyć o kolejne jednostki (ang. node).
  • Są przystosowane do pracy na klastrach (efektywna praca w klastrach w przeciwieństwie do baz relacyjnych), nie wszystkie jednak z nich korzystają. Istnieją również bazy grafowe, w którym model dystrybucji jest podobny do baz relacyjnych, lecz model danych jest inny, dzięki czemu można w nich przechowywać dane zawierające skomplikowane relacje.
  • Ich budowa jest przystosowana do potrzeb aplikacji webowych powstałych po 2000 roku.
  • Nie posiadają ściśle określonych schematów (np.tabel).
  • Mają otwarty kod.
  • Tzw. piętą achillesową rozwiązań nierelacyjnych jest to, że praca z kodem aplikacji jest w tym rozwiązaniu utrudniona, bowiem programiści nie mają do tego odpowiednich (szybkich i wygodnych) narzędzi.

Rodzaje

Wyróżniamy kilka głównych typów NoSQL-owych baz danych:

  • bazy klucz-wartość (ang. key-value) - są najmniej skomplikowanymi implementacjami NoSQL. Najprościej mówiąc są to tabele, które zawierają dwie kolumny tekstowe. Pierwsza kolumna to klucz, druga zaś wartość. Bazują na mapie, która pozwala dodawać i odczytywać wartości poprzez odwołanie się do klucza. Zaletą tego typu rozwiązania jest szybkość (zapisu jak i odczytu), a wadą jest stosunkowo mała możliwość segregacji danych, przez co używanie takiej bazy w życiu codziennym jest zazwyczaj nie zalecane. Przykłady takich baz to: BerkeleyDB, LevelDB, Memcached, Project Voldemort, Redis, Riak.
  • bazy kolumnowe (ang. column oriented stores) - w tym modelu zamiast w wierszach, dane zapisywane są w kolumnach. To rozwiązanie jest stosowane do przechowywania dużych ilości danych, np. jako hurtowania danych. Na tym modelu została oparta baza danych wykorzystywana przez jeden z najpopularniejszych serwisów społecznościowych - Facebook. Nosi ona nazwę Cassandra. Inne przykłady kolumnowych baz to Hypertable, Hadoop / Hbase.
  • bazy dokumentowe - dane przechowywane są w dokumentach (zamiast w tradycyjnych wierszach). W każdym dokumencie obowiązuje struktura klucz-wartość. Zaletą takiego rozwiązania jest duża elastyczność, co pozwala na wierne odtwarzanie danych rzeczywistych w systemach informatycznych.Sposób prezentacji i zapisu danych jest bardziej czytelny niż w innych typach baz. Przykładowe bazy danych to MongoDB i CouchDB, Orient DB oraz baza w systemie IBM Domino.
  • bazy oparte na grafach (ang. graph stores) - Najpopularniejszą bazą tego typu jest Neo4j. Bazy te oparte są na teorii grafów. Nie wykorzystują indeksów tylko wskaźniki połączone z przylegającymi elementami. Pozwala to na szybsze wyszukiwanie danych w stosunku do relacyjnych baz. FlockDB, HyperGraphDB, Infinite Graph, Neo4J, OrientDB.
  • bazy obiektowe (ang. object databases)- Struktura takiej bazy przypomina model wykorzystywany w obiektowych językach programowania wysokiego poziomu. Dzięki zastosowaniu takiego rozwiązania nie jest konieczne mapowanie z modelu relacyjnego na obiektowy, pozwala to znacznie skrócić czas dostępu do danych. Przykładami takich baz są Versant, Objectivity, db4O, EyeDB, a także SBQL.
  • inne bazy danych - zazwyczaj stanowią hybrydę kilku z wyżej wymienionych. Takie podejście jest wykorzystane w bazie OrientDB.

Wyżej wymieniony podział, jest podziałem na podstawie modelu danych. Granica pomiędzy różnymi modelami danych jest często dość wąska. Wiele baz danych nie pasuje wyłącznie do jednego modelu, np: OrientDB możemy określić zarówno jako bazę dokumentową, jak i bazę grafową.

Ciekawostka

Termin NoSQL - co ciekawe - pojawił się po raz pierwszy właśnie jako nazwa bazy relacyjnej open source. Było to w latach 90., kiedy Carlo Strozzi stworzył bazę, która nie korzystała z języka SQL podczas tworzenia zapytań (stąd człon "No" w nazwie). Nie ma to jednak nic wspólnego (poza zbieżnością nazw) z współczesnym znaczeniem terminu NoSQL.

Bibliografia

  • Francuzik S. (2012), Bazy danych NoSQL, Poznań
  • Rokicki M. (2011), Zastosowanie baz danych noSQL w grach komputerowych, Siedlce
  • Sadalage P.J. (red.) (2015), NoSQL Distilled: A Brief Guide to the Emerging World of Polyglot Persistence, Wydawnictwo Helion, Gliwice
  • Wójcik A. (2014),Nierelacyjne bazy danych, Zeszyty Naukowe WSEI, Lublin, s. 83-96
  • Zieliński P. Wprowadzenie do NoSQL
  • Co to jest NoSQL?

Przypisy

  1. 1,0 1,1 Wójcik A. (2014),Nierelacyjne bazy danych, Zeszyty Naukowe WSEI, Lublin, s. 89-91
  2. Sadalage P.J. (red.) (2015), NoSQL Distilled: A Brief Guide to the Emerging World of Polyglot Persistence, Wydawnictwo Helion, Gliwice, s. 25-28

Autor: Przemysław Hardyn, Krystyna Jania