1. Przegląd
Często jest nam trudno zdecydować się na nierelacyjną bazę danych jako podstawowy magazyn danych dla naszych aplikacji.
W tym artykule omówimy dwie popularne nierelacyjne bazy danych, Redis i MongoDB.
Najpierw przyjrzymy się funkcjom oferowanym przez Redis i MongoDB. Następnie omówimy, kiedy używać Redis lub MongoDB, porównując je ze sobą.
2. Redis
Redis to magazyn struktury danych w pamięci, który oferuje bogaty zestaw funkcji. Jest przydatny jako pamięć podręczna, broker wiadomości i kolejka .
2.1. Funkcje
- Dedykowany interfejs wiersza poleceń – redis-cli
- Przechowuje pary klucz-wartość i obsługuje struktury danych, takie jak lista, zestaw i hash
- Może przechowywać wartości do 512 MB w rozmiarze
- Pozwala na publikowanie i subskrybowanie wiadomości za pomocą kolejek wiadomości pub/sub
- Wsparcie geoprzestrzenne poprzez zapewnienie specjalnych poleceń do zarządzania danymi geoprzestrzennymi w czasie rzeczywistym
- Pozwala na wykonywanie skryptów LUA
- Oferuje różnych klientów dla popularnych technologii
- Obsługuje IoT i urządzenia wbudowane
- Obsługa danych wiosennych
- Obsługa Spring Cache przy użyciu klientów Java, takich jak Redisson
2.2. Instalacja
Możemy pobrać najnowszy serwer Redis z oficjalnej strony internetowej i zainstalować go:
$ wget http://download.redis.io/releases/redis-6.0.9.tar.gz
$ tar xzf redis-6.0.9.tar.gz
$ cd redis-6.0.9
$ make
3. MongoDB
MongoDB to baza danych dokumentów NoSQL, która przechowuje informacje w strukturze dokumentów podobnej do JSON. Przydaje się jako bezschematowy magazyn danych do szybko zmieniających się aplikacji, prototypowania i uruchamiania w fazie projektowania i wdrażania .
3.1. Funkcje
- Oferuje interaktywny interfejs wiersza poleceń MongoDB Shell (mongosh ) do wykonywania operacji administracyjnych i zapytania/aktualizacji danych
- Struktura zapytań oparta na JSON z obsługą złączeń
- Obsługuje różne typy wyszukiwań, takie jak wyszukiwanie geograficzne, wyszukiwanie wykresów i wyszukiwanie tekstowe
- Obsługuje wielodokumentowe transakcje ACID
- Obsługa danych wiosennych
- Dostępne w wersjach społecznościowych, korporacyjnych i chmurowych (MongoDB Atlas)
- Różne sterowniki dla głównych technologii, takich jak C++, Java, Go, Python, Rust i Scala
- Zapewnia GUI do eksploracji i manipulowania danymi za pomocą kompasu MongoDB
- Oferuje wizualną reprezentację danych za pomocą wykresów MongoDB
- MongoDB BI Connector zapewnia połączenia z platformami BI i analitycznymi
3.2. Instalacja
Możemy pobrać najnowszy serwer MongoDB lub, jeśli używasz macOS, możemy zainstalować edycję społecznościową bezpośrednio za pomocą Homebrew:
brew tap mongodb/brew
brew install [email protected]
4. Kiedy używać Redisa?
4.1. Buforowanie
Redis zapewnia najlepszą w swojej klasie wydajność pamięci podręcznej, zapewniając mniej niż milisekundę czasu odpowiedzi w przypadku często żądanych elementów .
Ponadto umożliwia ustawienie czasu wygaśnięcia klawiszy za pomocą poleceń takich jak EXPIRE , WYGAŚNIĘCIE i PEXPIRE .
Jednocześnie możemy użyć PERSIST polecenie, aby usunąć limit czasu i zachować parę klucz-wartość, dzięki czemu idealnie nadaje się do buforowania.
4.2. Elastyczne przechowywanie danych
Redis zapewnia różne struktury danych, takie jak ciąg, lista, zestaw i hash, aby decydować o sposobie przechowywania i organizowania naszych danych. Dlatego Redis daje nam pełną swobodę w implementacji struktur baz danych.
Jednak może również zająć dużo czasu, aby przemyśleć projekt DB. Podobnie trudne może być zbudowanie i utrzymanie wewnętrznej struktury schematu za pomocą Redis.
4.3. Złożone przechowywanie danych
Podobnie, łącząc listę, zestaw i hash, możemy zaimplementować złożone struktury danych, takie jak kolejki, tablice, posortowane zestawy i wykresy dla naszego przechowywania.
4.4. Broker czatu, kolejki i wiadomości
Redis może publikować i subskrybować wiadomości za pomocą kolejek wiadomości pub/sub z dopasowaniem do wzorca . W ten sposób Redis może obsługiwać czaty w czasie rzeczywistym i aplikacje do obsługi mediów społecznościowych.
Podobnie możemy zaimplementować lekką kolejkę przy użyciu struktury danych listy . Ponadto lista Redis obsługuje operacje atomowe i oferuje możliwości blokowania, dzięki czemu nadaje się do zaimplementowania brokera komunikatów.
4.5. Sklep sesji
Redis zapewnia magazyn danych w pamięci z funkcjami trwałości, dzięki czemu jest dobrym kandydatem do przechowywania sesji i zarządzania nimi dla aplikacji internetowych/mobilnych.
4.6. IoT i systemy wbudowane
Zgodnie z oficjalną dokumentacją Redis, nowsze wersje, począwszy od 4 i 5, obsługują procesor ARM i Raspberry Pi .
Działa również na Androidzie i podejmowane są wysiłki, aby włączyć Androida jako oficjalnie obsługiwaną platformę.
Tak więc Redis wygląda idealnie dla IoT i systemów wbudowanych, korzystając z jego mały rozmiar pamięci i niskie wymagania dotyczące procesora.
4.7. Przetwarzanie w czasie rzeczywistym
Będąc niesamowicie szybką strukturą danych w pamięci, możemy jej używać do aplikacji przetwarzających w czasie rzeczywistym.
Na przykład Redis może wydajnie obsługiwać aplikacje oferujące funkcje, takie jak alerty cen akcji, tabele wyników i analizy w czasie rzeczywistym.
4.8. Aplikacje geoprzestrzenne
Redis oferuje specjalnie wbudowaną strukturę danych w pamięci Geo Set — zbudowaną na posortowanym zestawie — do zarządzania indeksami geoprzestrzennymi. Zapewnia również określone polecenia geograficzne, takie jak GEOADD , GEOPOS i GEORADIUS do dodawania, odczytywania i analizowania danych geoprzestrzennych.
Dlatego możemy tworzyć aplikacje geoprzestrzenne w czasie rzeczywistym z funkcjami opartymi na lokalizacji, takimi jak czas jazdy i odległość, za pomocą Redis .
5. Kiedy używać MongoDB?
5.1. Zapytania dynamiczne
MongoDB oferuje potężny zestaw narzędzi zapytań. Ponadto zapewnia szeroką gamę elastycznych schematów zapytań, takich jak wyszukiwanie geograficzne, wyszukiwanie wykresów i wyszukiwanie tekstowe w celu wydajnego wyszukiwania danych.
Jednocześnie, dzięki obsłudze zapytań o strukturze JSON, MongoDB wydaje się być lepszym wyborem w scenariuszach, w których wyszukiwanie i analiza danych są codziennymi czynnościami.
5.2. Szybko zmieniający się schemat
MongoDB może być pomocny w fazie projektowania i wczesnych etapów wdrażania, gdzie wymagamy szybkich zmian w naszym schemacie. Jednocześnie nie przyjmuje założeń na podstawie danych źródłowych i optymalizuje się bez konieczności tworzenia schematu.
5.3. Prototypowanie i hackathony
Przestrzegając struktury dokumentu podobnej do JSON, MongoDB umożliwia szybkie prototypowanie, szybką integrację z kanałami frontonu i hackathonami .
Jednocześnie może być przydatny dla młodszych zespołów, które nie chcą zajmować się złożonością RDBMS.
5.4. Katalogi
Dostarczając dynamiczny schemat, który sam się opisuje, MongoDB ułatwia dodawanie produktów, funkcji i rekomendacji dla katalogów, takich jak e-commerce, zarządzanie zasobami i inwentarz.
Możemy również używać ekspresyjnych zapytań w MongoDB dla funkcji takich jak zaawansowane wyszukiwanie i analityka poprzez indeksowanie pola lub zestawu pól dokumentu o strukturze JSON.
5.5. Aplikacje mobilne
Struktura dokumentów JSON MongoDB umożliwia przechowywanie różnych typów danych z różnych urządzeń wraz z indeksami geoprzestrzennymi.
Poza tym skalowalność pozioma z natywnym shardingiem umożliwia łatwe skalowanie aplikacji mobilnej. Dlatego MongoDB może obsługiwać mnóstwo użytkowników, przetwarzać petabajty danych i obsługiwać setki tysięcy operacji na sekundę, co czyni go godnym wyborem do tworzenia kopii zapasowych aplikacji mobilnych.
5.6. Aplikacje bogate w treść
Nie jest łatwo włączać różne treści do RDBMS dla nowoczesnych aplikacji bogatych w treść. Z drugiej strony MongoDB umożliwia przechowywanie i udostępnianie bogatej zawartości, takiej jak tekst, dźwięk i wideo .
Ponadto możemy z łatwością przechowywać pliki większe niż 16 MB przy użyciu MongoDB GridFS . Umożliwia dostęp do części dużych plików bez ładowania całego pliku do pamięci.
Dodatkowo automatycznie synchronizuje nasze pliki i metadane na wszystkich serwerach. W rezultacie MongoDB wydaje się być bardziej odpowiednim wyborem do obsługi aplikacji bogatych w treści.
5.7. Aplikacje do gier
Podobnie jak w przypadku aplikacji mobilnych i bogatych w treści, gry również wymagają ogromnego skalowania i dynamicznych struktur danych. Dlatego MongoDB może być obiecującym wyborem dla aplikacji do gier.
5.8. Globalna usługa bazy danych w chmurze
MongoDB Atlas jest dostępny w wielu usługach w chmurze, takich jak AWS, Google Cloud i Azure . Ponadto dzięki wbudowanemu mechanizmowi replikacji i przełączania awaryjnego oferuje wysoce dostępny system rozproszony. Dlatego możemy szybko wdrożyć bazę danych i zarządzać nią oraz używać jej jako globalnej usługi bazy danych w chmurze.