NoSQL („nie tylko SQL”) to podejście do projektowania baz danych, które umożliwia przechowywanie i odpytywanie danych poza tradycyjnymi strukturami występującymi w relacyjnych bazach danych. Został stworzony, aby przede wszystkim radzić sobie z nieustrukturyzowanymi danymi, które są generowane z wielu źródeł, takich jak dokumenty, audio, wideo, sieci społecznościowe itp. Bazy danych NoSQL są najlepsze dla nowoczesnych aplikacji, w których modele danych ewoluują, a skalowalność jest niezbędna. Ta baza danych zyskała popularność w ostatnich latach, ponieważ firmy mają teraz do czynienia z nieustrukturyzowanymi danymi bardziej niż kiedykolwiek wcześniej. Ten model przechowuje dane inaczej niż tradycyjne tabele relacyjne, aby umożliwić przechowywanie powiązanych danych w pojedynczej strukturze danych. Bazę danych NoSQL można podzielić na cztery kategorie:
-
Sklep z dokumentami
-
Bazy danych klucz-wartość
-
Sklepy szerokokolumnowe
-
Wykresowe bazy danych
Bazy danych NoSQL są często wykorzystywane w projektach zwinnych, ponieważ oferują elastyczne modele danych. Pozwala to programistom skupić się na logice biznesowej i algorytmach zamiast zajmować się aktualizacjami schematów. Jeśli przewidujesz, że model danych Twojej aplikacji musi pozostać elastyczny, aby dostosować się do zmian w czasie, podejście oparte na elastycznym schemacie baz danych NoSQL może być odpowiednie dla Twoich potrzeb.
Według db-engines dwie najlepsze bazy danych NoSQL (lipiec 2021) to MongoDB (miejsce 5) i Redis (miejsce 6). Co ciekawe, te bazy danych NoSQL nie istniały 12 lat temu. Sposób, w jaki powstały i zyskały atrakcyjność, popularność i zmieniły krajobraz systemu zarządzania bazami danych, jest podstawową esencją tego wpisu na blogu.
MongoDB
MongoDB to baza danych typu open source zorientowana na dokumenty, której pierwsze wydanie miało miejsce w lutym 2009 roku. Bazy danych dokumentów silnie kontrastują z tradycyjną relacyjną bazą danych. Przechowują wszystkie informacje dotyczące danego obiektu w jednej instancji w bazie danych, a każdy przechowywany obiekt może się różnić od siebie. Eliminuje to potrzebę mapowania obiektowo-relacyjnego i umożliwia strukturę bezschematyczną, funkcję, w której programiści aplikacji mogą szybko ewoluować dzięki elastycznemu modelowi danych. Zamiast dopasowywać aplikację do wymagań schematu, programiści piszą aplikację, a schemat podąża za nią.
MongoDB jest bardzo popularny ze względu na swoją elastyczność, łatwość nauki i niższy koszt posiadania na początek. Twórcy aplikacji uwielbiają MongoDB, ponieważ mogą zmieniać model danych w podróży, a MongoDB używa dokumentów JSON do rejestrowania danych. JSON jest wszędzie i można go uznać za format de facto do przesyłania bogatych danych między aplikacjami internetowymi a punktami końcowymi. Jego prosta konstrukcja i elastyczność sprawiają, że jest łatwy do czytania i zrozumienia, a w większości przypadków łatwy do manipulowania w wybranym języku programowania.
MongoDB powstało dzięki 10gen (zanim zmieniono nazwę na MongoDB Inc), zaczęło go rozwijać w 2007 roku i wyszło z pierwszym wydaniem GA w lutym 2009. Od tego czasu MongoDB szybko ewoluowało i jest uważany za jeden z najbardziej ekscytujących projektów baz danych dla nowoczesnych aplikacji. Według StackOverflow Developer Survey 2020, MongoDB pozostaje technologią baz danych, której programiści chcą się najwięcej nauczyć. W chwili pisania tego tekstu wydali właśnie wersję 5.0 (13 lipca 2021 r.) i zawiera wiele godnych uwagi funkcji, takich jak resharding na żywo, natywna obsługa danych szeregów czasowych i wersjonowany interfejs API, odpowiedni dla środowisk wielochmurowych.
Kolejną istotną cechą MongoDB są wbudowane funkcje wysokiej dostępności, takie jak replikacja, zestaw replik i sharding. Jest skalowalny w poziomie, co pomaga zmniejszyć obciążenie pracą i z łatwością skalować firmę. Oferuje replikację za pośrednictwem własnego protokołu konsensusu, który czerpie inspirację z Raft i może dystrybuować dane między fragmentami za pośrednictwem routera zapytań zwanego mongos. Możesz użyć ClusterControl do łatwego wdrożenia zestawu replik MongoDB i konfiguracji klastra podzielonego na fragmenty.
MongoDB zwrócił uwagę opinii publicznej i krytyków ze względu na słabość domyślnej konfiguracji bezpieczeństwa MongoDB, umożliwiając każdemu pełny dostęp do bazy danych. Skradziono dane z dziesiątek tysięcy instalacji MongoDB. Co więcej, wiele serwerów MongoDB było przetrzymywanych dla okupu. To ujawnienie skłoniło nas do napisania kilku wpisów na blogu związanych z bezpieczeństwem związanych z MongoDB, takich jak Zabezpiecz MongoDB i chroń się przed hakowaniem okupu oraz Jak zabezpieczyć MongoDB przed oprogramowaniem ransomware — dziesięć wskazówek. W związku z tym MongoDB poprawiło domyślne aspekty konfiguracji, aby były bezpieczniejsze w MongoDB 3 i nowszych.
Niektóre wielkie firmy w dużym stopniu polegają na MongoDB jako magazynie danych, takie jak Forbes, Toyota, SAP, Cisco, eBay i Adobe. MongoDB jest uważany za przełom w świecie baz danych, stając się jedną z najważniejszych platform baz danych w erze Internetu.
ClusterControl obsługuje MongoDB od wersji z lipca 2013 r. (v1.2.3) i od tego czasu stale się poprawia. ClusterControl obsługiwał nawet TokuMX (MongoDB z drzewem fraktalnym Tokutek), zanim został przestarzały w MongoDB 3 z powodu podstawowych zmian projektowych. W ostatnich znaczących ulepszeniach ClusterControl wprowadza obsługę Percona Backup for MongoDB, rozproszonego rozwiązania o niewielkim wpływie na tworzenie spójnych kopii zapasowych klastrów shardowanych MongoDB i zestawów replik. Projekt Percona Backup for MongoDB jest dziedziczony i zastępuje mongodb_consistent_backup, który nie jest już aktywnie rozwijany ani wspierany.
Ponownie
Redis to kolejna najpopularniejsza technologia baz danych NoSQL, która koncentruje się na częstym szybkim dostępie do tych samych porcji danych, nawet jeśli te porcje danych są duże. W maju 2019 r. Salvatore Sanfilllippo wydał początkową wersję Redis, znanego również jako Remote Dictionary Server, i przyciągnął uwagę wszystkich ze względu na swoje bogatsze funkcje w stosunku do już ustanowionego w tym czasie rozwiązania bazy danych typu open source o nazwie Memcached.
Redis jest superszybki ze względu na strukturę danych w pamięci i fakt, że został napisany w języku C (jest to jeden z powodów, dla których Memcached został przepisany w C). Ze względu na wysoką wydajność programiści zwrócili się do Redis w celu buforowania danych, gdy wolumen operacji odczytu i zapisu przekracza możliwości tradycyjnych baz danych. Często używane dane mogą być buforowane i obsługiwane przez magazyny danych klucz-wartość w pamięci oraz minimalizując odczyty i zapisy w wolniejszych systemach dyskowych, koncentrując się na trwałej pamięci masowej.
Tradycyjnie systemy zarządzania bazami danych są projektowane z myślą o zapewnieniu solidnych funkcji danych, a nie szybkości na dużą skalę. Pamięć podręczna aplikacji jest często wykorzystywana do przechowywania kopii tabel przeglądowych i odpowiedzi na kosztowne zapytania z DBMS, zarówno w celu poprawy wydajności aplikacji, jak i zmniejszenia obciążenia źródła danych. Czasami przepływ pracy aplikacji wymaga generowania wyników wymagających dużej ilości zasobów. Po uzyskaniu tych wyników zdarzają się przypadki, w których można je później ponownie wykorzystać, na przykład podczas wykonywania częściowych agregatów. Pamięć podręczna działa jako idealne medium pośrednie do przechowywania takich wyników między żądaniami. Tutaj właśnie świeci Redis.
Redis ewoluował od bardzo szybkiego, prostego magazynu klucz-wartość do trwałego przechowywania danych i bycia używanym jako broker wiadomości i system kolejkowania. Umożliwia prawdziwą bezstanowość procesów aplikacji przy jednoczesnym ograniczeniu duplikacji danych lub żądań do zewnętrznych źródeł danych. Według StackOverflow Developer Survey 2020, Redis pozostaje na szczycie technologii baz danych, którą programiści wyrazili zainteresowanie dalszym rozwojem. W chwili pisania tego tekstu Redis 6 jest najnowszą wersją, z nową, bardziej zaawansowaną implementacją list ACL opartą na użytkownikach, wbudowanym szyfrowaniem ruchu SSL i wielowątkowym we/wy, chociaż proces Redis jest nadal jednowątkowy .
Wdrażanie Redis jest obsługiwane w ClusterControl 1.9.0 przy użyciu naszego nowego pakietu GUI ClusterControl nowej generacji dostępnego w oddzielnej instalacji. W chwili pisania tego tekstu określamy go jako ClusterControl v2 z tagiem Technology Preview, który obsługuje tylko wdrażanie replikacji Redis do 5 węzłów z Redis Sentinel z zarządzaniem kopiami zapasowymi AOF i RDB. Jeśli jesteś zainteresowany, zapoznaj się z tym przewodnikiem, jak go zainstalować.
Podsumowanie
MongoDB i Redis są obecnie dwoma najlepszymi rozwiązaniami bazodanowymi NoSQL na rynku i uważa się, że od dłuższego czasu utrzymują swoją pozycję w pierwszej dziesiątce rankingu baz danych. To jest powód, dla którego ClusterControl obsługuje obie technologie baz danych.