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

Quel est le moteur de base de données orienté document le plus efficace pour stocker des milliers de documents de taille moyenne ?

Cela dépend beaucoup du cas d'utilisation spécifique. Si vous souhaitez pouvoir interroger vos documents sur autre chose que leur identifiant, vous ne devez pas choisir Redis. Avec Redis, vous devrez implémenter votre propre schéma d'indexation, ce qui est tout simplement inutile.

Il y a en fait très peu de cas où Redis serait une meilleure option pour ce que je pense que votre cas d'utilisation est (pas qu'il y ait quelque chose de mal avec Redis, j'utilise souvent à la fois Redis et Mongo, mais pour des choses différentes). Il me semble que vous avez des objets qui peuvent être représentés sous forme de hachages. Mongo et Redis peuvent stocker des hachages, mais Mongo peut faire bien plus. Avec Mongo, vous pouvez rechercher un document sur n'importe lequel de ses champs, vous pouvez ajouter un index pour l'accélérer, et le champ n'a même pas besoin d'être une chaîne, il peut s'agir d'un nombre, d'une date, d'une liste, même d'un document (ou une liste de documents), et tous les documents n'ont pas besoin de tenir dans la RAM (bien que cela changera lorsque la fonction diskstore de Redis sera terminée). Redis n'a rien de tout cela. Vous devriez implémenter vous-même des index pour pouvoir rechercher, vous ne pouvez stocker que des chaînes (ce qui est parfois très gênant), et vous ne pouvez stocker que des hachages plats (sans avoir recours à l'implémentation ou à l'utilisation d'une sorte de mappage couche comme Ohm).

Vous évoquez également la vitesse. Redis est incroyablement rapide, et Mongo n'est pas mal non plus, cependant, pour votre cas d'utilisation, l'utilisation de Mongo peut être plus rapide. Remarquez que je dis en utilisant Mongo, pas que Mongo lui-même serait plus rapide. Le fait est que si vous utilisez Redis et que vous souhaitez toujours pouvoir rechercher un document en utilisant un champ qui n'est pas la clé primaire, vous devrez, comme je l'ai mentionné ci-dessus, l'implémenter vous-même. Une recherche devrait alors faire au moins deux requêtes à Redis, une pour rechercher dans l'index et une pour obtenir le document. Si une recherche aboutit à plus d'un document, vous devrez faire une demande pour chaque document individuellement. La surcharge de toutes ces demandes rendrait probablement l'utilisation de Redis pire que celle de Mongo. D'après mon expérience, tout ce qui n'est pas le cache, la file d'attente ou similaire le plus simple doit faire plus d'une demande à Redis pour obtenir tout ce dont il a besoin.

Donc, avec les informations limitées à ma disposition, je recommande MongoDB.