Jaka jest różnica między bazami danych NoSQL i relacyjnymi bazami danych?
Usługa Azure Cosmos DB charakteryzuje się zarówno nierelacją, jak i skalowalną w poziomie.
Skalowanie w poziomie a skalowanie w pionie
Relacyjne bazy danych zwykle rosną przez zwiększenie rozmiaru maszyny wirtualnej lub zasobów obliczeniowych, na których są hostowane. Bazy danych NoSQL, takie jak skalowanie usługi Azure Cosmos DB, przez dodanie większej liczby serwerów lub węzłów. Jest to nazywane skalowaniem w poziomie. Te węzły są również nazywane partycjami fizycznymi w usłudze Cosmos DB. Dane przechowywane na tych partycjach fizycznych muszą być zorganizowane, aby można było uzyskać do nich dostęp później.
Dane są kierowane do różnych partycji fizycznych przy użyciu wartości wymaganej właściwości w każdym dokumencie. Ta właściwość jest nazywana kluczem partycji kontenera. Ten klucz partycji należy określić podczas tworzenia kontenera. Przekazywanie klucza partycji, gdy dane są zapisywane lub odczytywane z kontenera, zapewniają, że operacje są wydajne, kierując tylko żądanie do partycji, na którą jest przechowywany.
Mimo że zapotrzebowanie na klucz partycji może wydawać się ograniczone, ma pewne ogromne korzyści. Zazwyczaj relacyjna baza danych prawdopodobnie wzrośnie do mniej niż 100 TB. Baza danych NoSQL może zwiększać się do nieograniczonego rozmiaru i może to zrobić bez żadnego wpływu na czasy odpowiedzi, gdy uzyskuje dostęp do danych z dowolnej partycji.
Ponadto w miarę dodawania partycji jest również więcej zasobów obliczeniowych i zwiększa się ilość przetwarzania obsługiwana przez bazę danych jednocześnie. Oznacza to, że może również obsługiwać więcej równoczesnych użytkowników. Również bez wpływu na wydajność.
Nierelacyjne i relacyjne bazy danych
Drugą cechą definiującą bazę danych NoSQL jest to, że nie ma kluczy obcych, ograniczeń ani wymuszonych relacji dowolnego rodzaju między fragmentami danych. Ponieważ dane w bazie danych NoSQL są przechowywane na różnych serwerach fizycznych, wymuszanie ograniczeń lub relacji albo umieszczanie blokad na danych spowodowałoby negatywną lub nieprzewidywalną wydajność.
Jednak nie wymuszane relacje nie oznaczają, że nie można zarządzać jednostkami, które mają relacje w bazie danych NoSQL, oznacza to tylko, że trzeba to zrobić inaczej.
Dlaczego te typy baz danych są tak różne?
Zrozumienie, w jaki sposób ekonomia obliczeń zmieniła się od czasu wprowadzenia relacyjnych baz danych, może pomóc wyjaśnić, dlaczego te dwa typy baz danych są tak różne.
Kiedy w 1970 r. zostały wynalezione relacyjne bazy danych, koszty magazynowania i pamięci były wysokie w stosunku do obliczeń. Celem normalizacji modelu bazy danych było zmniejszenie zduplikowanych danych, a tym samym koszt w bazie danych. Aparat bazy danych stosuje blokady i zatrzaski w celu wymuszania ścisłej semantyki ACID (niepodzielności, spójności, izolacji, trwałości) podczas wykonywania operacji na wszystkich potrzebnych fragmentach danych. Blokady danych zapewniają spójne dane, ale z kompromisami w współbieżności, opóźnieniach i dostępności.
Obecnie koszt magazynowania i pamięci jest stosunkowo tani w porównaniu z obliczeniami, dzięki czemu nie potrzebujemy już optymalizacji pod kątem wydajności magazynowania. W przypadku obciążeń wymagających rosnących poziomów współbieżności i dostępności i niższych opóźnień istniała potrzeba nowego typu bazy danych zoptymalizowanej pod kątem tych wymagań, a więc urodziły się bazy danych NoSQL.
Jest to również z tych powodów, że jednym z celów modelowania danych dla bazy danych NoSQL jest wykonanie tego w sposób zapewniający wydajne odczytywanie lub zapisywanie danych. Częściowo dlatego, że operatory relacyjne, takie jak sprzężenia między dokumentami, nie istnieją w bazach danych NoSQL, dane muszą być przechowywane, ponieważ aplikacja używa jej do najbardziej wydajnego działania. Często dane muszą być zdenormalizowane, zduplikowane lub w inny sposób przechowywane w sposób, który przerywa wiele reguł normalizacji relacyjnej, które są używane do modelowania danych relacyjnych.
Czy można używać programu NoSQL dla obciążeń relacyjnych?
W tym momencie warto się zastanawiać, czy bazy danych NoSQL są odpowiednie do użycia w przypadku obciążeń relacyjnych. A odpowiedź brzmi tak! Bazy danych NoSQL mogą być absolutnie używane w przypadku obciążeń, w których istnieją relacje między różnymi jednostkami.
Bazy danych NoSQL są często używane, gdy relacyjna baza danych nie spełnia żądanych wymagań dotyczących wydajności, skalowania ani dostępności aplikacji.
Techniki projektowania bazy danych NoSQL różnią się od technik modelowania danych dla relacyjnej bazy danych. Te techniki nie są również intuicyjne dla kogoś, kto ma doświadczenie w projektowaniu relacyjnej bazy danych. Niektóre z najlepszych rozwiązań uczenia się na potrzeby tworzenia relacyjnych baz danych są często antywzorzecami podczas projektowania bazy danych NoSQL.
W pozostałej części tego modułu i w zaawansowanym module modelowania przeprowadzimy Cię przez techniki używane do modelowania danych w sposób, który spowoduje wysoką wydajność bazy danych NoSQL.