Baza NoSQL: Różnice pomiędzy wersjami
m (Dodanie MetaData Description) |
m (cleanup bibliografii i rotten links) |
||
(Nie pokazano 11 wersji utworzonych przez 2 użytkowników) | |||
Linia 1: | Linia 1: | ||
'''Baza NoSQL''' - (ang. NoSQL lub Not Only [[SQL]]) - [[baza danych]] nie korzystająca bezpośrednio ze struktury relacyjnego modelu. | '''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). | 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. | 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). | 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). | ||
==TL;DR== | ==TL;DR== | ||
Bazy danych typu NoSQL są alternatywą dla tradycyjnych baz relacyjnych i są bardziej elastyczne w przechowywaniu danych. Istnieje kilka typów baz NoSQL, takich jak bazy klucz-wartość, bazy kolumnowe, bazy dokumentowe, bazy oparte na grafach i bazy obiektowe. Każdy typ ma swoje zalety i wady. NoSQL oznacza "Not Only SQL" i odnosi się do zbioru rozwiązań, które służą do przechowywania danych. | Bazy danych typu NoSQL są alternatywą dla tradycyjnych baz relacyjnych i są bardziej elastyczne w przechowywaniu danych. Istnieje kilka typów baz NoSQL, takich jak bazy klucz-wartość, bazy kolumnowe, bazy dokumentowe, bazy oparte na grafach i bazy obiektowe. Każdy typ ma swoje zalety i wady. NoSQL oznacza "Not Only SQL" i odnosi się do zbioru rozwiązań, które służą do przechowywania danych. | ||
== Założenia ruchu NoSQL <ref name="W.A">Wójcik A. (2014) | ==Założenia ruchu NoSQL <ref name="W.A">Wójcik A. (2014), s. 89-91</ref>== | ||
1. Uproszczenie tworzenia oraz budowy zapytań. | 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|open source]]). | 2. Poszukiwanie wsparcia dla swoich rozwiązań (na razie tworzonych zazwyczaj przez małe firmy rozwiązań typu [[Open Source|open source]]). | ||
3. "[[Standaryzacja]] interfejsu dostępu do baz NoSQL5. | 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ć. | 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<ref name="W.A"></ref>== | |||
1.Odejście od założenia ACID czyli: | 1.Odejście od założenia ACID czyli: | ||
* Atomicity - atomowość (konieczność logowania operacji). | * Atomicity - atomowość (konieczność logowania operacji). | ||
Linia 49: | Linia 28: | ||
3. Zmniejszenie znaczenia schematów danych, gdyż największą uwagę powinno się zwrócić na dane. | 3. Zmniejszenie znaczenia schematów danych, gdyż największą uwagę powinno się zwrócić na dane. | ||
== Cechy baz NoSQL <ref> Sadalage P.J. (red.) (2015) | <google>n</google> | ||
==Cechy baz NoSQL <ref> Sadalage P.J. (red.) (2015), s. 25-28</ref>== | |||
* Sposób przechowywania danych można dobrać w zależności od ich specyfiki. | * Sposób przechowywania danych można dobrać w zależności od ich specyfiki. | ||
* Nie posiadają modelu relacyjnego. | * Nie posiadają modelu relacyjnego. | ||
* Przechowują bogatą strukturę bardzo blisko spokrewnionych danych, które zostały potraktowane jako jednostki ('''[[agregacja]]''') | * Przechowują bogatą strukturę bardzo blisko spokrewnionych danych, które zostały potraktowane jako jednostki ('''[[agregacja]]''') | ||
* | * Najczęściej są to bazy [[Open Source|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). | * Ł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. | * 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. | ||
Linia 62: | Linia 43: | ||
==Rodzaje== | ==Rodzaje== | ||
Wyróżniamy kilka głównych typów NoSQL-owych baz danych: | 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 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 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 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 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. | |||
* '''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. | * '''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ą. | 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== | ==Ciekawostka== | ||
Termin NoSQL - co ciekawe - pojawił się po raz pierwszy właśnie jako nazwa bazy relacyjnej [[Open Source|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. | |||
{{infobox5|list1={{i5link|a=[[BASIC]]}} — {{i5link|a=[[SQL]]}} — {{i5link|a=[[JavaScript]]}} — {{i5link|a=[[Kod QR]]}} — {{i5link|a=[[Python]]}} — {{i5link|a=[[Program komputerowy]]}} — {{i5link|a=[[Open Source]]}} — {{i5link|a=[[SmallTalk (język programowania)]]}} — {{i5link|a=[[Język wysokiego poziomu]]}} }} | |||
==Przypisy== | |||
<references /> | |||
==Bibliografia== | ==Bibliografia== | ||
<noautolinks> | |||
* Francuzik S. (2012), ''Bazy danych NoSQL'', Poznań | * Francuzik S. (2012), ''Bazy danych NoSQL'', Poznań | ||
* Rokicki M. (2011), ''Zastosowanie baz danych noSQL w grach komputerowych'', Siedlce | * Rokicki M. (2011), ''Zastosowanie baz danych noSQL w grach komputerowych'', Siedlce | ||
* Sadalage P | * Sadalage P. (red.) (2015), ''NoSQL Distilled: A Brief Guide to the Emerging World of Polyglot Persistence'', Wydawnictwo Helion, Gliwice | ||
* | * Strona internetowa: ''[https://www.mongodb.com/nosql-explained What is NoSQL?]'' | ||
* Zieliński P. ''[https:// | * Wójcik A. (2014), ''Nierelacyjne bazy danych'', Zeszyty Naukowe WSEI | ||
* Zieliński P. (2021), ''[https://learn.microsoft.com/pl-pl/previous-versions/msdn10/dn912483(v=msdn.10) Wprowadzenie do NoSQL]'', Microsoft | |||
</noautolinks> | |||
{{a|Przemysław Hardyn, Krystyna Jania}} | {{a|Przemysław Hardyn, Krystyna Jania}} | ||
[[Kategoria:Systemy informatyczne]] | [[Kategoria:Systemy informatyczne]] | ||
{{#metamaster:description|Baza NoSQL to zbiór rozwiązań do przechowywania danych bez struktury relacyjnej. Idealna dla Big Data.}} | {{#metamaster:description|Baza NoSQL to zbiór rozwiązań do przechowywania danych bez struktury relacyjnej. Idealna dla Big Data.}} |
Aktualna wersja na dzień 00:32, 9 gru 2023
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).
TL;DR
Bazy danych typu NoSQL są alternatywą dla tradycyjnych baz relacyjnych i są bardziej elastyczne w przechowywaniu danych. Istnieje kilka typów baz NoSQL, takich jak bazy klucz-wartość, bazy kolumnowe, bazy dokumentowe, bazy oparte na grafach i bazy obiektowe. Każdy typ ma swoje zalety i wady. NoSQL oznacza "Not Only SQL" i odnosi się do zbioru rozwiązań, które służą do przechowywania danych.
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)
- Najczęś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.
Baza NoSQL — artykuły polecane |
BASIC — SQL — JavaScript — Kod QR — Python — Program komputerowy — Open Source — SmallTalk (język programowania) — Język wysokiego poziomu |
Przypisy
Bibliografia
- Francuzik S. (2012), Bazy danych NoSQL, Poznań
- Rokicki M. (2011), Zastosowanie baz danych noSQL w grach komputerowych, Siedlce
- Sadalage P. (red.) (2015), NoSQL Distilled: A Brief Guide to the Emerging World of Polyglot Persistence, Wydawnictwo Helion, Gliwice
- Strona internetowa: What is NoSQL?
- Wójcik A. (2014), Nierelacyjne bazy danych, Zeszyty Naukowe WSEI
- Zieliński P. (2021), Wprowadzenie do NoSQL, Microsoft
Autor: Przemysław Hardyn, Krystyna Jania