W ciągu ostatnich kilku lat narzędzia NoSQL czy nierelacyjne bazy danych zyskały dużą popularność w zakresie przechowywania ogromnych ilości danych i łatwego ich skalowania. Trwają dyskusje na temat tego, czy nierelacyjne bazy danych zastąpią w przyszłości relacyjne bazy danych. Wraz ze wzrostem liczby danych społecznościowych i innych danych nieustrukturyzowanych, oto niektóre z pytań zadawanych w relacyjnych bazach danych.
Czy relacyjne bazy danych są w stanie obsłużyć duże zbiory danych?
Czy relacyjne bazy danych są w stanie skalować ilość danych?
Czy relacyjne bazy danych są odpowiednie dla danych z czasów współczesnych?
Przed udzieleniem odpowiedzi na te pytania zapoznaj nas z podstawowymi informacjami dotyczącymi relacyjnych i nierelacyjnych baz danych.
Podstawy relacyjnych i nierelacyjnych baz danych
Relacyjne bazy danych: Koncepcja relacyjnej bazy danych została opracowana w latach 70-tych. Najważniejszą cechą wszystkich relacyjnych baz danych jest obsługa właściwości ACID (automiczność, spójność, izolacja i trwałość), co zapewnia niezawodne przetwarzanie wszystkich transakcji.
Automatyczność: Każda transakcja jest unikalna i zapewnia, że w przypadku niepowodzenia jednej logicznej części transakcji, wszystko zostanie wycofane, aby dane pozostały niezmienione.
Spójność: Wszystkie dane zapisywane w bazie danych podlegają zdefiniowanym regułom (ograniczenia, wyzwalacze itp.)
Izolacja: Zmiany wprowadzone w transakcji nie są widoczne dla innych transakcji, dopóki nie zostaną zatwierdzone.
Trwałość: Zmiany wprowadzone w transakcji są przechowywane i dostępne w bazie danych, nawet jeśli nastąpi awaria zasilania lub baza danych nagle przejdzie w tryb offline.
Ścisła struktura: Obiekty w relacyjnych bazach danych mają ściśle określoną strukturę. Wszystkie dane w tabeli są przechowywane w wierszach i kolumnach. Każda kolumna ma typ danych. Jest w większości znormalizowany. Strukturalny język zapytań (SQL) jest odpowiedni dla relacyjnych baz danych do przechowywania i pobierania danych w ustrukturyzowany sposób. Zapytania to polecenia w prostym języku angielskim. Zawsze istnieje stała liczba kolumn, chociaż dodatkowe kolumny można dodać później. Większość tabel jest powiązana ze sobą kluczami podstawowymi i obcymi, co zapewnia „integralność referencyjną” między obiektami. Główni dostawcy to ORACLE, SQL Server, MySQL, PostgreSQL itp.
Nierelacyjne bazy danych: Pojawiła się koncepcja nierelacyjnych baz danych, aby poradzić sobie z szybkim wzrostem nieustrukturyzowanych danych i łatwo je skalować. Zapewnia to elastyczny schemat, więc nie ma czegoś takiego jak „Integralność referencyjna”, jak widzimy w relacyjnych bazach danych. Dane są mocno zdenormalizowane i nie wymagają JOIN między obiektami. To rozluźnia właściwość ACID relacyjnych baz danych i obsługuje CAP (spójność, dostępność i partycjonowanie). Ale z tych trzech tylko dwa są gwarantowane w dowolnym momencie. Tak więc w przeciwieństwie do ACID, obsługuje tylko BASE (stan podstawowy dostępny w wersji miękkiej, spójność ostateczna). Początkowe bazy danych utworzone na podstawie tych koncepcji to BigTable firmy Google, HBase firmy Yahoo, Cassandra firmy Facebook itp.
Kategorie nierelacyjnych baz danych: Nierelacyjne bazy danych można podzielić na cztery główne kategorie, takie jak baza danych par klucz-wartość, baza kolumn, baza dokumentów i baza danych wykresów.
Baza danych par klucz-wartość: Jest to najprostsza forma bazy danych NoSQL, w której każda wartość jest powiązana z unikalnym kluczem. (np. Redis)
Kolumnowa baza danych: Ta baza danych jest w stanie przechowywać i przetwarzać duże ilości danych za pomocą wskaźnika wskazującego wiele kolumn rozproszonych w klastrze. (ex HBase)
Baza dokumentów: Ta baza danych może zawierać wiele dokumentów klucz-wartość z wieloma zagnieżdżonymi poziomami. Dzięki tej bazie danych możliwe jest wydajne zadawanie zapytań. Dokumenty są przechowywane w formacie JSON.(ex MongoDB)
Baza danych wykresów: Zamiast tradycyjnych wierszy i kolumn te bazy danych wykorzystują węzły i krawędzie do reprezentowania struktur wykresów i przechowywania danych. (np. Neo4J)