Table des matières:
- Mise en cache des données en mémoire
- Réplication de données vers des esclaves
- Modélisation des données dans les magasins de valeurs-clés
- Opération sur données
- Évaluation de Redis
Vidéo: Mettre en place un serveur Web (27/28) : Redis 2024
Les valeurs-clés dans NoSQL concernent la vitesse. Vous pouvez utiliser diverses techniques pour optimiser cette vitesse, depuis la mise en cache des données, jusqu'à l'obtention de plusieurs copies de données ou en utilisant les structures de stockage les plus appropriées.
Mise en cache des données en mémoire
Les données sont facilement accessibles lorsqu'elles sont stockées dans la mémoire vive (RAM). Le choix d'un magasin de valeurs-clés qui met en mémoire cache les données peut accélérer considérablement l'accès aux données. de coûts de serveur plus élevés.
Souvent, cependant, ce compromis vaut la peine d'être fait. Vous pouvez facilement calculer le pourcentage de vos données stockées fréquemment demandé. Si vous savez que cinq pour cent est généralement demandé toutes les quelques minutes, prenez cinq pour cent de la taille de vos données et ajoutez ce nombre en tant qu'espace mémoire libre sur vos serveurs de base de données.
Gardez à l'esprit que le système d'exploitation, les autres applications et le serveur de base de données ont également besoin de mémoire.
Réplication de données vers des esclaves
Dans les magasins de valeurs-clés, une clé particulière est stockée sur l'un des serveurs du cluster. Ce processus est appelé partitionnement des clés . Cela signifie que, si cette clé est constamment demandée, ce nœud recevra l'essentiel des requêtes. Ce nœud sera donc plus lent que la vitesse moyenne de vos requêtes, ce qui pourrait affecter la qualité de service de vos utilisateurs.
Pour éviter cette situation, certaines banques de valeurs-clés prennent en charge l'ajout de répliques en lecture seule, également appelées esclaves. Redis, Riak et Aerospike sont de bons exemples. La réplication permet à la clé d'être stockée plusieurs fois sur plusieurs serveurs, ce qui augmente la vitesse de réponse, mais au prix de plus de matériel.
Certains magasins de valeurs-clés garantissent que les répliques de la clé auront toujours la même valeur que le maître. Cette garantie est appelée être entièrement cohérente. Si une mise à jour se produit sur le serveur maître contenant la clé, toutes les répliques sont garanties à jour.
Tous les magasins de valeurs-clés ne garantissent pas ce statut (Riak, par exemple), donc s'il est important d'être à la milliseconde, choisissez une base de données dont les répliques sont parfaitement cohérentes (comme Aerospike).
Modélisation des données dans les magasins de valeurs-clés
De nombreux magasins de valeurs-clés ne prennent en charge que les structures de base pour leurs types de valeur, laissant au programmeur d'application le soin d'interpréter les données. La prise en charge de type de données simple inclut généralement des chaînes, des entiers, des valeurs JSON et des valeurs binaires.
Pour de nombreux cas d'utilisation, cela fonctionne bien, mais il est parfois utile d'avoir un accès légèrement plus granulaire aux données.Redis, par exemple, prend en charge les types de valeurs de données suivants:
-
Chaîne
-
Liste
-
Jeu
-
Jeu trié
-
Cartes de hachage
-
Tableaux de bits
-
Journaux Hyperlog
Les ensembles triés peuvent être interrogé pour trouver des plages de valeurs correspondantes - un peu comme interroger un index de valeurs triées par date, ce qui est très utile pour rechercher un sous-ensemble de données typées.
Opération sur données
Redis inclut des opérations permettant d'incrémenter et de décrémenter les valeurs de clé directement, sans avoir à effectuer un ensemble d'étapes de lecture-modification-mise à jour (RMU). Vous pouvez le faire au sein d'une seule transaction pour vous assurer qu'aucune autre application ne modifie la valeur lors d'une mise à jour. Ces opérations spécifiques au type de données incluent l'ajout et la suppression d'éléments dans des listes et des ensembles.
Vous pouvez même fournir des fonctionnalités de saisie semi-automatique sur l'interface utilisateur d'une application à l'aide de la commande Redis ZRANGEBYLEX. Cette commande récupère un ensemble de clés qui correspond partiellement à une chaîne. Donc, si vous deviez taper "NoSQL pour" dans la barre de recherche d'une application construite sur Redis, vous verriez la suggestion "NoSQL For Dummies". "
Évaluation de Redis
Redis se targue d'être un magasin de valeur-clé très léger mais très rapide. Il a été conçu à l'origine pour être un magasin de valeurs-clés en mémoire, mais dispose désormais d'un stockage de données sur disque.
Vous pouvez utiliser Redis pour protéger les données en activant le mode AOF (append only file) et en demandant à Redis de forcer les données sur le disque à chaque requête (appelée fsync flushing ). AOF ralentit les écritures, bien sûr, mais il fournit un plus haut niveau de durabilité pour les données. Sachez cependant qu'il est toujours possible de perdre jusqu'à une seconde de commandes.
De plus, Redis a récemment ajouté un support pour la mise en cluster. En fait, au moment d'écrire ces lignes, le support de cluster de Redis est en phase de test bêta. Heureusement, Redis utilise un modèle de cluster partagé-rien, avec des maîtres pour des clés et des esclaves particuliers qui ne sont jamais écrits directement par un client; seul le maître le fait. La mise en cluster à valeurs partagées doit permettre à Redis de mettre en œuvre une mise en cluster fiable plus facilement que les bases de données autorisant les écritures sur toutes les répliques.
Si vous souhaitez disposer d'une couche de mise en cache en mémoire très rapide devant une autre base de données (MongoDB ou Riak est généralement utilisée avec Redis), évaluez Redis en tant qu'option. À mesure que le soutien au regroupement et à la durabilité des données évolue, Redis peut peut-être dépasser d'autres bases de données principales.