NoSql vs relacyjna baza danych

Odpowiedzi:

123

Nie wszystkie dane są relacyjne. W takich sytuacjach pomocny może być NoSQL.

Mając to na uwadze, NoSQL oznacza „nie tylko SQL”. Nie ma na celu zablokowania SQL ani jego zastąpienia.

SQL ma kilka bardzo dużych zalet:

  1. Mocne podstawy matematyczne.
  2. Deklaratywna składnia.
  3. Dobrze znany język w Structured Query Language (SQL).

Te nie odeszły.

Błędem jest myślenie o tym jako o argumencie albo / albo. NoSQL to alternatywa, którą ludzie muszą rozważyć, kiedy pasuje, to wszystko.

Dokumenty można przechowywać w nierelacyjnych bazach danych, takich jak CouchDB.

Może przeczytanie tego pomoże.

duffymo
źródło
10
Czy mógłbyś podać przykłady danych nierelacyjnych?
user496949
7
Dokumenty i obrazy mogą być również przechowywane w RDBMS, tak jak SQL Server i Oracle? Więc dlaczego NoSQL?
user496949
2
Jedną z takich klas są dane częściowo ustrukturyzowane. Zawiera XML, e-maile, JSON, itp. Zobacz stronę Wikipedii. Ogólna zasada jest taka, że ​​struktura istnieje, ale jest luźno zdefiniowana i dynamicznie rozszerzalna (te ostatnie mają tendencję do klasowania z modelem relacyjnym - i chociaż modelowanie nie jest niemożliwe, jest zdecydowanie uciążliwe). Inną klasą są „dane naturalne”: powieść, obraz, obie bez dołączonych metadanych.
DAWĘ ODPOWIEDZI CRAPOWI
2
Nie możesz tego zrobić SELECT blob FROM images WHERE blob CONTAINS('red car'). Więc chociaż możesz przechowywać dane surowe w bazie danych, nie możesz ich przeszukiwać bez dołączania metadanych. Moduły wyszukiwania pełnotekstowego w systemach RDBMS wypełniają niektóre luki półstrukturalne.
DAWĘ ODPOWIEDZI CRAPOWI
1
@duffymo: Dokumenty nie są „nierelacyjne”. Dokumenty są często przechowywane w SQL DBMS i nie potrzebujesz do tego NOSQL DBMS. W rzeczywistości bazy danych NOSQL często używają modeli danych, które są mniej ogólne i bardziej ograniczone w zastosowaniu niż model relacyjny. Np. Graficzne bazy danych. Rodzaj przechowywanych danych nie wyjaśnia żadnej przewagi NOSQL.
nvogel
98

Historia wygląda tak:

  1. Google potrzebuje warstwy pamięci dla ich odwróconego indeksu wyszukiwania. Wydaje im się, że tradycyjny system RDBMS go nie przerwie. Dlatego implementują magazyn danych NoSQL, BigTable na szczycie swojego systemu plików GFS. Główną częścią jest to, że tysiące tanich maszyn sprzętowych zapewniają szybkość i redundancję.

  2. Wszyscy inni zdają sobie sprawę, co właśnie zrobiła Google.

  3. Twierdzenie Brewersa CAP zostało udowodnione. Wszystkie używane systemy RDBMS to systemy CA. Ludzie zaczynają też bawić się systemami CP i AP. Sklepy K / V są znacznie prostsze, więc są głównym narzędziem do badań.

  4. Systemy typu oprogramowanie jako usługa na ogół nie zapewniają magazynu podobnego do SQL. Stąd ludzie bardziej interesują się sklepami typu NoSQL.

Myślę, że wiele z tego startu można powiązać z tą historią. Skalowanie Google przyniosło kilka nowych pomysłów w Google, a wszyscy inni podążają za nim, ponieważ jest to jedyne znane obecnie rozwiązanie problemu skalowania. Dlatego chcesz przerobić wszystko, co dotyczy idei rozproszonej bazy danych Google, ponieważ jest to jedyny sposób na skalowanie poza określony rozmiar.

C - Spójność
A - Dostępność
P - Tolerancja podziału
K / V - Klucz / Wartość

DAJĘ ODPOWIEDZI CRAP
źródło
10
Co to jest CAP, CP, AP, K / V?
knownasilya
3
Wyszukaj twierdzenie CAP w Wikipedii. Stamtąd wywodzą się CA i CP. K / V to skrót od Key / Value, (rozproszone) skończone mapowanie kluczy na wartości.
DAWĘ ODPOWIEDZI CRAPOWI
Wszyscy inni zdają sobie sprawę z tego, co właśnie zrobiła Google ”. Lol. Wydaje mi się, że szkocka odpowiedź (inaczej NIE CRAP).
ruffin
38

NoSQL jest lepszy niż RDBMS z następujących powodów / właściwości NoSQL

  1. Obsługuje dane częściowo ustrukturyzowane i dane nietrwałe
  2. Nie ma schematu
  3. Przepustowość odczytu / zapisu jest bardzo wysoka
  4. Łatwo można osiągnąć poziomą skalowalność
  5. Będzie wspierać Bigdata w tomach Terra Bytes i Peta Bytes
  6. Zapewnia dobre wsparcie dla narzędzi analitycznych oprócz Bigdata
  7. Może być hostowany na tańszych maszynach sprzętowych
  8. Dostępna jest opcja buforowania w pamięci, aby zwiększyć wydajność zapytań
  9. Szybsze cykle rozwoju dla programistów

EDYTOWAĆ:

Aby odpowiedzieć „dlaczego RDBMS nie może skalować”, zapoznaj się z plikiem PDF RDBMS Overheads napisanym przez Stavrosa Harizopoulosa, Daniela J. Abadi, Samuela Maddena i Michaela Stonebrakera

RDBMS mają problemy z obsługą ogromnych ilości danych o wielkości terabajtów i pety . Nawet jeśli masz nadmiarową tablicę niezależnych / niedrogich dysków (RAID) i niszczenie danych, nie skaluje się dobrze w przypadku dużych ilości danych. Potrzebujesz bardzo drogiego sprzętu.

Rejestrowanie : gromadzenie rekordów dziennika i śledzenie wszystkich zmian w strukturach bazy danych spowalnia wydajność. Rejestrowanie może nie być konieczne, jeśli możliwość odzyskania danych nie jest wymagana lub jeśli można ją odzyskać w inny sposób (np. Inne witryny w sieci).

Blokowanie : Tradycyjne blokowanie dwufazowe wiąże się ze znacznym narzutem, ponieważ wszystkimi dostępami do struktur bazy danych zarządza oddzielny podmiot, Menedżer blokad.

Zatrzaskiwanie : w wielowątkowej bazie danych wiele struktur danych musi zostać zablokowanych, zanim będzie można uzyskać do nich dostęp. Usunięcie tej funkcji i przejście do podejścia jednowątkowego ma zauważalny wpływ na wydajność.

Zarządzanie buforami : system bazy danych pamięci głównej nie musi uzyskiwać dostępu do stron za pośrednictwem puli buforów, co eliminuje poziom niezależności przy każdym dostępie do rekordu.

Nie oznacza to, że musimy używać NoSQL zamiast SQL.

Mimo to RDBMS jest lepszy niż NoSQL z następujących powodów / właściwości RDBMS

  1. Transakcje z właściwościami ACID - atomowość, spójność, izolacja i trwałość
  2. Zgodność z silnym schematem zapisywania / odczytu danych
  3. Zarządzanie zapytaniami w czasie rzeczywistym (w przypadku rozmiaru danych <10 terabajtów)
  4. Wykonywanie złożonych zapytań obejmujących klauzule join i group by

Musimy używać RDBMS (SQL) i NoSQL (nie tylko SQL) w zależności od przypadku biznesowego i wymagań

Ravindra babu
źródło
2
Warto zauważyć, że niektóre bazy danych NoSQL obsługują transakcje ACID.
Dave Cassel
15

NOSQL nie ma specjalnych zalet w porównaniu z modelem relacyjnej bazy danych. NOSQL rozwiązuje pewne ograniczenia obecnych SQL DBMS, ale nie oznacza to żadnych fundamentalnie nowych możliwości w porównaniu z poprzednimi modelami danych.

NOSQL oznacza tylko brak języka SQL (lub „nie tylko SQL”), ale nie oznacza to tego samego, co brak relacji . Relacyjna baza danych byłaby w zasadzie bardzo dobrym rozwiązaniem NOSQL - po prostu żaden z aktualnych zestawów produktów NOSQL nie używa modelu relacyjnego.

nvogel
źródło
4
Wygląda na to, że na niedawnej konferencji O'Reilly Strata, Mark Madsen ukuł nową interpretację „NoSQL” w swojej historii baz danych, aby nie zastąpić „Not Only SQL”. Teraz jest: „Nie, SQL” ;-)
Lukas Eder
4

RDBMS koncentruje się bardziej na relacjach, a NoSQL koncentruje się bardziej na pamięci masowej.

Możesz rozważyć użycie NoSQL, gdy RDBMS osiągnie wąskie gardła. NoSQL sprawia, że RDBMS jest bardziej elastyczny.

suiwenfeng
źródło
4

Największą zaletą NoSQL w stosunku do RDBMS jest skalowalność .
Bazy danych NoSQL można łatwo skalować w poziomie do wielu węzłów, ale w przypadku RDBMS jest to bardzo trudne.
Skalowalność zapewnia nie tylko więcej przestrzeni dyskowej, ale także znacznie wyższą wydajność, ponieważ wiele hostów pracuje w tym samym czasie.

Jon
źródło
3

Jeśli potrzebujesz przetworzyć ogromną ilość danych z wysoką wydajnością

LUB

Jeśli model danych nie jest z góry określony

następnie

Baza danych NoSQL to lepszy wybór.

Chris
źródło
2

Dodam tylko do wszystkich informacji podanych powyżej

Zalety NoSql:

1) NoSQL jest dobry, jeśli chcesz szybko przygotować się do produkcji, dzięki obsłudze architektury bez schematu i zorientowanej obiektowo.

2) Baza danych NoSql jest ostatecznie spójna, co w prostym języku oznacza, że ​​nie będzie zapewniać żadnej blokady danych (dokumentów), jak w przypadku RDBMS, a to oznacza, że ​​najnowsza migawka danych jest zawsze dostępna, a tym samym zwiększa opóźnienie aplikacji .

3) Wykorzystuje strategię MVCC (kontrola współbieżności wielu widoków) do utrzymywania i tworzenia migawek danych (dokumentów).

4) Jeśli chcesz mieć zindeksowane dane, możesz utworzyć widok, który automatycznie indeksuje dane według podanej definicji widoku.

Wady NoSql:

1) Zdecydowanie nie nadaje się do dużych, ciężkich zastosowań transakcyjnych, ponieważ jest ostatecznie spójny i nie obsługuje właściwości ACID.

2) Tworzy również wiele migawek (poprawek) danych (dokumentów), ponieważ wykorzystuje metodologię MVCC do kontroli współbieżności, w wyniku czego miejsce jest zużywane szybciej niż wcześniej, co sprawia, że ​​zagęszczanie, a tym samym ponowne indeksowanie, jest częstsze i spowalnia odpowiedź aplikacji w miarę wzrostu ilości danych i transakcji w aplikacji. Aby temu przeciwdziałać, możesz skalować węzły w poziomie, ale z drugiej strony będzie to wyższy koszt niż porównanie bazy danych sql.

Manvendra Jina
źródło
1

Z mongodb.com :

Bazy danych NoSQL różnią się od starszych, relacyjnych technologii w czterech głównych obszarach:

Modele danych : Baza danych NoSQL umożliwia zbudowanie aplikacji bez konieczności definiowania schematu w przeciwieństwie do relacyjnych baz danych, które wymagają zdefiniowania schematu przed dodaniem jakichkolwiek danych do systemu. Brak predefiniowanego schematu znacznie ułatwia aktualizację baz danych NoSQL w miarę zmieniania się danych i wymagań.

Struktura danych : Relacyjne bazy danych powstały w epoce, w której dane były dość ustrukturyzowane i jasno zdefiniowane przez ich relacje. Bazy danych NoSQL są zaprojektowane do obsługi nieustrukturyzowanych danych (np. Tekstów, postów w mediach społecznościowych, wideo, e-maili), które stanowią większość danych, które istnieją obecnie.

Skalowanie : Skalowanie bazy danych NoSQL jest znacznie tańsze niż relacyjnej bazy danych, ponieważ można zwiększyć pojemność poprzez skalowanie w poziomie w stosunku do tanich, popularnych serwerów. Z drugiej strony relacyjne bazy danych wymagają jednego serwera do obsługi całej bazy danych. Aby skalować, musisz kupić większy, droższy serwer.

Model programistyczny : bazy danych NoSQL są open source, podczas gdy relacyjne bazy danych są zazwyczaj zamkniętymi źródłami, a opłaty licencyjne są wbudowane w użytkowanie ich oprogramowania. Dzięki NoSQL możesz rozpocząć projekt bez dużych inwestycji w opłaty za oprogramowanie z góry.

Deadpool
źródło