Bazy danych SQL

Ukończone

Bazy danych NoSQL odnoszą spore sukcesy w konkretnych domenach. Najpopularniejszymi zastosowaniami systemów NoSQL są magazyny danych Big dla firm w skali sieci Web, których aplikacje mogą tolerować mniejsze gwarancje spójności. Jednakże takie podejście wiąże się z pewnymi wyzwaniami dotyczącymi magazynowania dla deweloperów aplikacji. Przykładowo nierelacyjny model danych oznacza, że deweloperzy mogą chcieć wdrażać własne sprzężenia, jeśli kiedykolwiek będą musieli połączyć dane z dwóch tabel. Muszą też obsługiwać ostatecznie spójne dane i zagwarantować, że ich aplikacje nie będą miały żadnych problemów poprawności wynikających z braku transakcji. Jednakże nie wszystkie aplikacje mogą zrezygnować z tej silnej semantyki transakcyjnej. Istnieje zapotrzebowanie na systemy baz danych, które mogą łączyć najlepsze cechy rozwiązań relacyjnych i NoSQL. Te systemy działają przy użyciu modelu relacyjnego, języka SQL i transakcji ACID, jednocześnie oferując skalowalną wydajność podobną do systemów NoSQL.

Bazy danych NewSQL odnoszą się do nowej generacji relacyjnych systemów DBMS, które mogą być skalowane, podobnie jak systemy NoSQL, bez pełnej rezygnacji z języka SQL lub pewnego poziomu właściwości ACID transakcji. Można to zrobić przy użyciu wielu technik. Najpopularniejsze z nich przedstawiono poniżej:

  • Architektury z niczym udostępnionym: typowym wzorcem projektowania w systemach NewSQL jest wdrożenie architektury z niczym współużytkowanym. Jest to system, w którym każdy węzeł jest całkowicie niezależny (czasami do poziomu poszczególnych wątków). Dzięki temu system nie ma żadnego punktu rywalizacji. Systemy charakteryzują się więc wysoką wydajnością na dużą skalę, ponieważ nie ma potrzeby stosowania kosztownych protokołów blokowania.
  • Systemy w pamięci: Innym sposobem poprawy wydajności w systemach baz danych jest zmniejszenie liczby przejazdów na dysk dla danego zapytania. Najbardziej ekstremalną wersją tej filozofii jest operowanie całą bazą danych z pamięci, aby nigdy nie trafiała na dysk.

H-Store i VoltDB

Magazyn H-Store to eksperymentalny przykład systemu NewSQL, zaprojektowany przez zespół z uniwersytetów Brown University, Carnegie Mellon University, Institute Massachusetts of Technology oraz Yale University. Magazyn H-Store jest wdrażany w klastrze węzłów przy użyciu architektury nieudostępnionej. Magazyn H-Store to w istocie wysoce zoptymalizowany jednowątkowy silnik bazy danych, który szybko przetwarza poszczególne zapytania. Baza danych jest następnie udostępniana w klastrze tak, aby każdy indywidualny rdzeń odpowiadał za oddzielny podzestaw danych. Dane w magazynie H-Store są przechowywane w pamięci każdego z węzłów systemu.

Ponieważ każdy silnik ma wyłączny dostęp do wszystkich danych w partycji, w danym momencie tylko jedna transakcja może uzyskać dostęp do danych przechowywanych na danej partycji. Eliminuje to konieczność stosowania w systemie blokad i zatrzaśnięć. W rezultacie żadna rozpoczęta transakcja nie będzie czekać na kolejną transakcję, przynajmniej w przypadku zapytań, które nie obejmują pojedynczej partycji.

Magazyn H-Store ma pewne ograniczenia. Po pierwsze brak trwałego magazynu (ponieważ przechowuje wszystkie dane w pamięci) w połączeniu z architekturą nieudostępnioną oznacza, że awarie węzłów mogą spowodować utratę danych.

Mimo że magazyn H-Store był projektem akademickim, został realizowany komercyjnie jako VoltDB. VoltDB udoskonala magazyn H-Store i dodaje do niego funkcje w celu rozwiązania niedoskonałości VoltDB, w tym trybu rejestrowania, aby zwiększyć trwałość systemu magazynu.

Sprawdź swoją wiedzę

1.

Jakie są podstawowe kompromisy w większości baz danych NoSQL?

2.

Witryna internetowa do tworzenia i dystrybucji dzieł prac artystycznych online pozwala użytkownikom przesyłać swoje prace i udostępniać jej innym. Inni użytkownicy mogą je komentować oraz, jeśli osoba przesyłająca na to zezwoli, edytować pracę przesłane przez oryginalnych artystów. Witryna stała się popularna i jej właściciel ocenia teraz opcje magazynowania, które mogą być skalowane wraz ze stałym wzrostem popularności witryny. Biorąc pod uwagę wymagania witryny, jaki typ bazy danych pasowałby najlepiej do przechowywania prac użytkowników?