Comment Leveldb se compare-t-il à Redis, Riak ou Tokyo Tyrant? [fermé]

Leveldb semble être un nouveau magasin de valeur clé persistant intéressant de Google. En quoi Leveldb diffère-t-il de Redis, Riak ou Tokyo Tyrant? Dans ce cas d'utilisation est l'un meilleur que l'autre?

42
demandé sur Viktor Dahl 2011-05-23 22:38:33

3 réponses

je trouve que je suis un peu en désaccord avec les critères de colum, bien que les différences entre leveldb et Redis qu'il souligne soient très nettes.

avez-vous besoin de simultanéité? J'irais avec le Redis. Je dis cela parce que Redis a déjà écrit le code pour le gérer. Chaque fois que je peux utiliser le Code bien écrit D'autres personnes pour gérer la concurrence, tant mieux. Je ne veux pas simplement dire les applications multi-threadées, mais inclure dans cela la notion de processus multiples - qu'ils soient sur le même système ou non. Même alors,, ne pas avoir besoin d'écrire et de déboguer le verrouillage dans une application multi-thread a un grand avantage à mes yeux.

voulez-vous complètement autonome dans l'application? Allez avec leveldb car c'est une bibliothèque. Avez besoin ou voulez plus qu'un simple k/v? Aller avec le Redis.

je commente seulement l'aspect leveldb ou Redis car je ne me considère pas encore assez parlant dans Riak ou TT pour commenter sur leurs meilleurs costumes.

en bref si tout ce que vous recherchez est une valeur clé persistante stockez dans une application mono-threadée puis leveldb est l'option à choisir dans votre liste (une autre serait Tokyo cabinet ou bon Ole BerkleyDB ou même sqlite). Mais si vous voulez plus que cela, choisissez l'une des autres.

[edit: mise à jour de l'explication wrt. la simultanéité]

29
répondu The Real Bill 2011-05-25 06:17:22

j'ajoute seulement ceci parce que dans les deux réponses précédentes Je ne vois pas cette distinction (importante) faite...

  • Redis: est un serveur de base de données. Vous communiquez avec lui via un protocole binaire personnalisé (via la bibliothèque client en général).
  • LevelDB: est une bibliothèque qui implémente un stockage de valeurs clés. Vous communiquez avec lui en appelant le API C++ directement.

Si vous êtes familier avec SQLite et comment il est devenu comme un DB embarqué pour les applications client (je crois que les deux Android et iOS l'expédier) puis vous voyez où quelque chose comme LevelDB s'inscrit.

Imaginez que vous écriviez une application PIM complexe, peut-être un gestionnaire de carnet d'adresses d'entreprise destiné à être installé sur des ordinateurs individuels dans le bureau. Vous ne voudriez pas stocker toutes ces données en XML ou JSON que vous avez écrites/analysées vous-même dans votre application -- si vous le pouviez, vous préféreriez les stocker dans un DB pour avoir un accès plus facile modèle.

mais vous ne voulez pas non plus avoir à expédier et installer une copie locale de Redis, tournant sur un port aléatoire juste pour pouvoir vous y connecter... vous voulez un DB que vous pouvez appeler directement et nativement à partir de votre application et de ne pas vous soucier de la communication "sans fil"... vous voulez les tripes crues d'un DB sans aucun des trucs de network-ey dont vous n'avez pas besoin dans une application client only.

C'est ici que se situe LevelDB.

C'est un outil différent pour un autre emploi.

40
répondu Riyad Kalla 2011-11-07 14:52:47

Différences:

  • Redis est un serveur, tandis que Leveldb est "une bibliothèque qui implémente un stockage rapide et persistant de valeurs clés". Par conséquent, avec Redis, vous devez interroger le serveur. Avec Leveldb, la base de données est stockée sur disque, ce qui la rend beaucoup plus lente que Redis, qui est stockée en mémoire.
  • Leveldb n'offre que key / store. Redis a ceci aussi, mais a aussi beaucoup plus de fonctions et caractéristiques

Caractéristiques:

  • ils ont tous les deux des méthodes de clé/stockage

Raisons de choisir l'une ou l'autre

si vous faites une application C / C++, alors leveldb est la solution, pourvu que vous ayez juste besoin d'une base de données qui n'est pas aussi lourde que mysql. Leveldb fournit un accès au niveau du code, tandis que redis nécessite une interface qui doit communiquer avec le serveur. Dans toute autre application, Redis est le chemin à parcourir. Non seulement vous recevez un serveur réel, que plus d'une application peut accéder, mais vous recevez d'autres traits comme écrire sur le disque, les ensembles, la liste, les hachures, et il continue.

11
répondu Colum 2011-05-23 22:28:32