MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Redis contre MongoDB

1. Présentation

Souvent, nous trouvons difficile de choisir une base de données non relationnelle comme magasin de données principal pour nos applications.

Dans cet article, nous allons explorer deux bases de données non relationnelles populaires, Redis et MongoDB.

Dans un premier temps, nous allons faire un tour rapide des fonctionnalités proposées par Redis et MongoDB. Ensuite, nous verrons quand utiliser Redis ou MongoDB en les comparant les uns aux autres.

2. Redis

Redis est un magasin de structure de données en mémoire qui offre un riche ensemble de fonctionnalités. C'est utile comme cache, courtier de messages et file d'attente .

2.1. Fonctionnalités

  • Une interface de ligne de commande dédiée :redis-cli
  • Stocke les paires clé-valeur et prend en charge les structures de données telles que liste, ensemble et hachage
  • Peut stocker des valeurs allant jusqu'à 512 Mo
  • Permet de publier et de s'abonner à des messages à l'aide de files d'attente de messages pub/sub
  • Prise en charge géospatiale en fournissant des commandes spéciales pour gérer les données géospatiales en temps réel
  • Permet l'exécution de scripts LUA
  • Offre divers clients pour les technologies populaires
  • Compatible avec l'IoT et les appareils intégrés
  • Assistance Spring Data
  • Prise en charge de Spring Cache à l'aide de clients Java tels que Redisson

2.2. Mise en place

Nous pouvons télécharger le dernier serveur Redis depuis le site officiel et l'installer :

$ 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 est une base de données de documents NoSQL qui stocke des informations dans une structure de document de type JSON. Il est utile en tant que magasin de données sans schéma pour les applications en évolution rapide, le prototypage et les startups dans une phase de conception et de mise en œuvre .

3.1. Fonctionnalités

  • Offre une interface de ligne de commande interactive MongoDB Shell (mongosh ) pour effectuer des opérations administratives et interroger/mettre à jour des données
  • Structure de requête basée sur JSON avec prise en charge des jointures
  • Prend en charge divers types de recherches, telles que la recherche géographique, la recherche de graphiques et la recherche de texte
  • Prend en charge les transactions ACID multi-documents
  • Assistance Spring Data
  • Disponible dans les éditions Community, Enterprise et Cloud (MongoDB Atlas)
  • Divers pilotes pour les principales technologies telles que C++, Java, Go, Python, Rust et Scala
  • Fournit une interface graphique pour explorer et manipuler les données via MongoDB Compass
  • Offre une représentation visuelle des données à l'aide de graphiques MongoDB
  • MongoDB BI Connector fournit des connexions aux plates-formes de BI et d'analyse

3.2. Mise en place

Nous pouvons télécharger le dernier serveur MongoDB ou, si vous utilisez macOS, nous pouvons installer l'édition communautaire directement à l'aide de Homebrew :

brew tap mongodb/brew
brew install [email protected]

4. Quand utiliser Redis ?

4.1. Mise en cache

Redis offre les meilleures performances de mise en cache de sa catégorie en offrant un temps de réponse inférieur à la milliseconde pour les éléments fréquemment demandés .

De plus, il permet de définir le délai d'expiration des clés à l'aide de commandes telles que EXPIRE , EXPIRATION , et PEXPIRE .

En même temps, nous pouvons utiliser le PERSIST commande pour supprimer le délai d'expiration et conserver la paire clé-valeur, ce qui la rend idéale pour la mise en cache.

4.2. Stockage de données flexible

Redis fournit diverses structures de données telles que chaîne, liste, ensemble et hachage pour décider comment stocker et organiser nos données. Par conséquent, Redis nous donne une totale liberté sur la mise en œuvre des structures de la base de données.

Cependant, la réflexion sur la conception de la base de données peut également nécessiter beaucoup de temps. De même, il peut être difficile de créer et de maintenir la structure interne du schéma à l'aide de Redis.

4.3. Stockage de données complexes

De même, avec la combinaison de la liste, de l'ensemble et du hachage, nous pouvons implémenter des structures de données complexes telles que des files d'attente, des tableaux, des ensembles triés et des graphiques pour notre stockage.

4.4. Chat, file d'attente et courtier de messages

Redis peut publier et s'abonner à des messages à l'aide de files d'attente de messages pub/sub avec correspondance de modèle . Ainsi, Redis peut prendre en charge les applications de chat en temps réel et de flux de médias sociaux.

De même, nous pouvons implémenter une file d'attente légère en utilisant la structure de données de liste . De plus, la liste de Redis prend en charge les opérations atomiques et offre des capacités de blocage, ce qui la rend appropriée pour implémenter un courtier de messages.

4.5. Magasin de sessions

Redis fournit un magasin de données en mémoire avec des capacités de persistance, ce qui en fait un bon candidat pour stocker et gérer les sessions pour les applications Web/mobiles.

4.6. IoT et systèmes embarqués

Selon la documentation officielle de Redis, les nouvelles versions à partir de 4 et 5 prennent en charge le processeur ARM et le Raspberry Pi .

En outre, il fonctionne sur Andriod et des efforts sont en place pour inclure Android en tant que plate-forme officiellement prise en charge.

Ainsi, Redis semble idéal pour l'IoT et les systèmes embarqués, bénéficiant de son faible encombrement mémoire et ses faibles besoins en processeur.

4.7. Traitement en temps réel

Étant une structure de données en mémoire extrêmement rapide, nous pouvons l'utiliser pour des applications de traitement en temps réel.

Par exemple, Redis peut servir efficacement des applications qui offrent des fonctionnalités telles que des alertes sur le cours des actions, des classements et des analyses en temps réel.

4.8. Applications géospatiales

Redis propose une structure de données en mémoire spécialement conçue pour Geo Set - construite sur un ensemble trié - pour la gestion des indices géospatiaux. En outre, il fournit des commandes géographiques spécifiques telles que GEOADD , GEOPOS , et GEORADIUS pour ajouter, lire et analyser des données géospatiales.

Par conséquent, nous pouvons créer des applications géospatiales en temps réel avec des fonctionnalités basées sur la localisation telles que le temps de conduite et la distance de conduite à l'aide de Redis .

5. Quand utiliser MongoDB ?

5.1. Requêtes dynamiques

MongoDB offre un ensemble puissant d'outils de requête. En outre, il fournit un large éventail de schémas de requête flexibles, tels que la recherche géographique, la recherche de graphiques et la recherche de texte pour une récupération efficace des données.

Dans le même temps, avec la prise en charge des requêtes structurées JSON, MongoDB semble être un meilleur choix pour les scénarios où la recherche et l'analyse de données sont des activités quotidiennes.

5.2. Schéma à changement rapide

MongoDB peut être utile dans les phases de conception et de mise en œuvre initiale, où nous avons besoin de modifications rapides de notre schéma. En même temps, il ne fait pas d'hypothèses sur les données sous-jacentes et s'optimise sans avoir besoin d'un schéma.

5.3. Prototypage et Hackathons

En suivant la structure de document de type JSON, MongoDB permet un prototypage rapide, des intégrations rapides avec des canaux frontaux et des hackathons .

En même temps, cela peut être utile pour les équipes juniors qui ne veulent pas faire face aux complexités d'un SGBDR.

5.4. Catalogues

En fournissant un schéma dynamique auto-descriptif, MongoDB facilite l'ajout de produits, de fonctionnalités et de recommandations pour les catalogues tels que le commerce électronique, la gestion des actifs et l'inventaire.

Nous pouvons également utiliser des requêtes expressives dans MongoDB pour des fonctionnalités telles que la recherche avancée et l'analyse en indexant un champ ou un ensemble de champs du document structuré JSON.

5.5. Applications mobiles

La structure de document JSON de MongoDB permet de stocker différents types de données provenant de divers appareils ainsi que des index géospatiaux.

En outre, l'évolutivité horizontale avec partitionnement natif permet une mise à l'échelle facile d'une application mobile. Par conséquent, MongoDB peut servir des tonnes d'utilisateurs, traiter des pétaoctets de données et prendre en charge des centaines de milliers d'opérations par seconde, ce qui en fait un choix judicieux pour la sauvegarde d'applications mobiles.

5.6. Applications riches en contenu

Il n'est pas facile d'incorporer divers contenus dans RDBMS pour les applications riches en contenu modernes. D'autre part, MongoDB permet de stocker et de diffuser du contenu riche comme du texte, de l'audio et de la vidéo .

De plus, nous pouvons facilement stocker efficacement des fichiers de plus de 16 Mo en utilisant MongoDB GridFS . Il permet d'accéder à une partie de fichiers volumineux sans charger le fichier entier en mémoire.

De plus, il synchronise automatiquement nos fichiers et métadonnées sur tous les serveurs. Par conséquent, MongoDB semble être un choix plus approprié pour prendre en charge les applications riches en contenu.

5.7. Applications de jeu

Semblable aux applications mobiles et riches en contenu, les jeux nécessitent également une mise à l'échelle massive et des structures de données dynamiques. Ainsi, MongoDB peut être un choix prometteur pour les applications de jeu.

5.8. Service de base de données cloud mondial

MongoDB Atlas est disponible sur plusieurs services cloud tels qu'AWS, Google Cloud et Azure . De plus, avec un mécanisme de réplication et de basculement intégré, il offre un système distribué hautement disponible. Par conséquent, nous pouvons rapidement déployer et gérer la base de données et l'utiliser comme service de base de données cloud mondial.