Ostatnio NoSQL zyskał ogromną popularność.
Jakie są zalety NoSQL w porównaniu z tradycyjnymi RDBMS ?
database
database-design
nosql
relational-database
rdbms
user496949
źródło
źródło
Odpowiedzi:
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:
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.
źródło
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.Historia wygląda tak:
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ę.
Wszyscy inni zdają sobie sprawę, co właśnie zrobiła Google.
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ń.
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ść
źródło
NoSQL jest lepszy niż RDBMS z następujących powodów / właściwości NoSQL
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
Musimy używać RDBMS (SQL) i NoSQL (nie tylko SQL) w zależności od przypadku biznesowego i wymagań
źródło
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.
źródło
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.
źródło
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.
źródło
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.
źródło
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.
źródło
Z mongodb.com :
źródło