Ostatnio NoSQL zyskał ogromną popularność.
Jakie są zalety NoSQL w porównaniu z tradycyjnymi RDBMS ?
Ostatnio NoSQL zyskał ogromną popularność.
Jakie są zalety NoSQL w porównaniu z tradycyjnymi RDBMS ?
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.
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ść
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ń
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.
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.
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.
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.
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.