Maison  >  Article  >  base de données  >  La différence entre es et redis

La différence entre es et redis

藏色散人
藏色散人original
2019-07-06 13:45:4719878parcourir

La différence entre es et redis

La différence entre es et redis

ElasticSearch

Recommandation de cours→ : "Elasticsearch Full Text Search Practical Combat" (Vidéo pratique)

Extrait du cours "Solution de concurrence de données de niveau dix millions ( Théorie + Combat Pratique) 》

Comparé à MongoDB et Redis, ES, sorti un an plus tard, est peut-être moins connu, mais la réputation d'ES dans le domaine des moteurs de recherche est définitivement retentissant. Comparé à d’autres produits de bases de données haut de gamme, ES a un parcours beaucoup plus modeste.

Le créateur d'ES, Shay Banon, était autrefois un programmeur au chômage. Lorsqu'il n'avait rien à faire, il a créé ES pour faciliter la recherche de recettes de sa femme (bien sûr, cela ne s'appelait pas ES à l'époque). . De manière inattendue, grâce à une intervention involontaire, la base de données des moteurs de recherche les plus populaires d'aujourd'hui a été créée. Il s'avère que les filles sont la plus grande motivation des programmeurs !

ES a également créé sa propre société Elastic et a reçu des centaines de millions de dollars de financement. Shay Banon, le programmeur perdant de l'époque, a déjà contre-attaqué pour devenir PDG et a atteint le sommet de sa vie. Programmeurs, après avoir lu cette histoire, avez-vous déjà commencé à imaginer le jour où vous deviendrez PDG et épouserez Bai Fumei ?

La fonctionnalité d'ES, comme son nom l'indique, est la recherche. À proprement parler, ES n’est pas une base de données, mais un moteur de recherche, et tous les aspects d’ES sont conçus autour de la recherche. ES prend en charge la recherche en texte intégral Voici une brève explication de ce qu'est la recherche en texte intégral : Pour des données telles que "Je travaille dans une société Internet à Pékin", si vous recherchez les mots-clés "Pékin", "Internet" et " "travail", vous pouvez cliquer sur ceci. S'il y a une donnée, il s'agit d'une recherche en texte intégral. Baidu et Google que vous utilisez quotidiennement sont des recherches en texte intégral.

Il convient de mentionner que la recherche en texte intégral d'ES prend également en charge le chinois (il existe à lui seul de nombreux segmenteurs de mots chinois), ce qui peut certainement répondre aux besoins de recherche en texte intégral de la plupart des Chinois. En plus de la recherche, ES indexera automatiquement tous les champs pour que vous puissiez réaliser des requêtes d'agrégation complexes hautes performances. Par conséquent, tant que les données sont stockées dans ES, quelle que soit la complexité de la requête d'agrégation, vous pouvez obtenir de bonnes performances et. Vous n'avez plus à vous soucier de la façon de créer divers index complexes.

Après avoir parlé de tant d'avantages de l'ES, pensez-vous que l'ES est presque tout-puissant ?

Malheureusement non, ES présente également de nombreux défauts. Les plus évidents sont que les types de champs ne peuvent pas être modifiés, de faibles performances d'écriture et une consommation élevée de ressources matérielles. Comme mentionné précédemment, ES créera automatiquement des index pour vous. Bien que cela puisse apporter de nombreux avantages à la recherche en texte intégral et aux requêtes agrégées et vous éviter d'avoir à créer des index, cette fonctionnalité entraînera également de nombreux problèmes.

ES doit établir le mappage à l'avance avant de créer des champs. Le mappage contient des informations de type de chaque champ. ES doit établir des index appropriés pour les champs basés sur le mappage. Du fait de l'existence de ce Mapping, le type d'un champ dans ES ne peut pas être modifié une fois créé.

(Par exemple, vous avez oublié d'ajouter la recherche en texte intégral à un champ de la table de données que vous avez créée. Vous souhaitez l'ajouter temporairement, mais la table a déjà été construite et contient beaucoup de données. Quoi devriez-vous le faire à ce moment-là ? Non Désolé, vous pouvez uniquement supprimer la table de données entière et la reconstruire à nouveau ! )

Par conséquent, ES est supérieur à MySQL en termes de flexibilité de la structure des données mais bien inférieur à MongoDB. Les défauts d'ES ne se limitent pas à ceux-ci. La création automatique d'index affecte également les performances d'écriture d'ES, qui sont nettement inférieures à celles de MongoDB.

Pour les mêmes données, l'espace de stockage occupé par ES est nettement plus grand que celui de MongoDB (peut-on construire autant d'index sans prendre de place ?), et la consommation de ressources matérielles est également très puissante, 64G mémoire + SSD pour les gros volumes de données Il est fondamentalement standard et peut être considéré comme un service aristocratique dans la base de données. Par conséquent, si votre patron est très avare, vous devez être prudent lorsque vous choisissez ES !

La fonctionnalité de recherche en texte intégral d'ES en fait un outil puissant pour créer des moteurs de recherche. De plus, ES prend très bien en charge les requêtes d'agrégation complexes. Cette fonctionnalité rend également ES très adapté à l'analyse de données.

En fait, ES a également spécialement créé sa propre suite ELK pour vous fournir un service unique, de la collecte de journaux à l'analyse de la visualisation des données. Il s'agit sans aucun doute d'un outil puissant pour créer une plateforme d'analyse de données haut de gamme. .

Cependant, les inconvénients du coût élevé et des faibles performances d'écriture d'ES le rendent également impropre à une utilisation dans des scénarios où la valeur des données n'est pas élevée, des performances d'écriture sont requises, le volume de données est important et le coût est limité. .

Redis

Redis est actuellement la base de données clé-valeur la plus populaire. Il a été publié en 2009 avec MongoDB et constitue également un chef-d'œuvre des bases de données au début de l'ère du Big Data.

La plus grande fonctionnalité de Redis est bien sûr la simplicité et les hautes performances apportées par le stockage clé-valeur. Le stockage dit clé-valeur signifie que chaque enregistrement contient uniquement une clé pour interroger les données et la valeur correspondante pour stocker les données, tout comme les numéros de maison et les résidents dans la vie réelle, sans bases de données conventionnelles telles que des tables et des champs. sont nécessaires dans , toutes les requêtes reposent uniquement sur des valeurs clés.

Par conséquent, la base de données clé-valeur peut être considérée comme la structure de données la plus simple de la base de données. Grâce à cette structure simple, et Redis chargera toutes les données dans la mémoire, Redis peut obtenir des résultats de lecture et d'écriture beaucoup plus élevés. performances des bases de données conventionnelles telles que MongoDB. Bien entendu, la fonction de Redis n'est pas aussi simple que le stockage de valeurs-clés. Par rapport à son prédécesseur Memcached, Redis prend également en charge la persistance des données, diverses structures de données telles que la liste et l'ensemble, et une série de fonctions telles que master. -réplication et sauvegarde esclave Par conséquent, Redis est certainement la base de données clé-valeur la plus complète et la plus simple à utiliser.

Le stockage clé-valeur de Redis apporte des avantages en termes de performances, mais il apporte également de nombreuses limitations aux requêtes complexes. Étant donné que des fonctionnalités importantes telles que les tables de données et les champs sont éliminées et que toutes les requêtes reposent sur des clés, Redis ne peut pas fournir de fonctions de requête complexes telles que les requêtes multi-colonnes et les requêtes de section dont disposent les bases de données conventionnelles.

Dans le même temps, étant donné que Redis doit stocker des données en mémoire, cela limite également considérablement la quantité de données que Redis peut stocker, ce qui détermine également que Redis est difficile à utiliser dans des scénarios d'application avec de grandes échelles de données.

Redis sacrifie les tables de données, les requêtes complexes et d'autres fonctions des bases de données conventionnelles en échange de grandes améliorations de performances. Il est particulièrement adapté à ceux qui ont des exigences extrêmement élevées en matière de performances de lecture et d'écriture et qui ont une structure de table de données simple (. clé-valeur , liste, ensemble, etc.), les conditions de requête sont également des scénarios d'application simples.

Si la structure de votre table de données est assez complexe et que vous devez souvent effectuer des opérations de requête complexes, vous feriez mieux de vous en tenir à MongoDB ou SQL.

Pour plus de connaissances sur Redis, veuillez visiter la colonne Tutoriel d'utilisation de Redis !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn