60 votes

Laquelle la valeur de clé de magasin est le plus prometteur/stable?

Je suis à la recherche de commencer à utiliser un magasin de clé/valeur pour certains projets (la plupart du temps comme une expérience d'apprentissage), mais beaucoup ont surgi dans le passé récent que j'ai aucune idée de par où commencer. Juste la liste à partir de la mémoire, je pense:

  1. CouchDB
  2. MongoDB
  3. Riak
  4. Redis
  5. Tokyo Cabinet
  6. Berkeley DB
  7. Cassandra
  8. MemcacheDB

Et je suis sûr qu'il y a plus de là-bas qui ont passé à travers mes efforts de recherche. Avec toutes les informations qu'il est difficile de trouver de solides comparaisons entre tous les concurrents. Mes critères et questions sont les suivantes:

  1. (Le plus Important) Qui recommandez-vous et pourquoi?
  2. Lequel est le plus rapide?
  3. Lequel est le plus stable?
  4. Lequel est le plus facile à configurer et à installer?
  5. Ceux qui ont les liaisons Python et/ou Ruby?

Edit:
Jusqu'à présent, Redis est la meilleure solution, mais c'est seulement parce que j'ai reçu une solide réponse (à partir de ardsrk). Je suis à la recherche pour plus de réponses que le sien, parce qu'ils me pointer dans la direction de l'utile, des informations quantitatives. Qui Key-Value store ne vous utilisez, et pourquoi?

Edit 2:
Si quelqu'un a une expérience avec CouchDB, Riak, ou MongoDB, je serais ravi d'entendre vos expériences avec eux (et encore plus si vous pouvez proposer une analyse comparative de plusieurs d'entre eux)

26voto

ardsrk Points 1393

Qui recommandez-vous et pourquoi?

Je recommande Redis. Pourquoi? Continuer la lecture!!

Lequel est le plus rapide?

Je ne peux pas dire si c'est plus rapide. Mais Redis est rapide. C'est rapide parce que il contient toutes les données dans la RAM. Récemment, la mémoire virtuelle fonctionnalité a été ajoutée, mais encore toutes les clés restent dans la mémoire principale avec seulement rarement utilisé valeurs échangées sur le disque.

Lequel est le plus stable?

Encore une fois, depuis je n'ai pas d'expérience directe avec l'autre clé-valeur les magasins je ne peux pas comparer. Cependant, Redis est utilisé dans la production par de nombreuses applications web comme GitHub et Instagram, parmi beaucoup d'autres.

Lequel est le plus facile à configurer et à installer?

Redis est assez facile à l'installation. Saisir la source et sur une machine Linux exécutez make install. Cette rendements en redis-server binaires que vous pourriez mettre sur votre chemin et de le démarrer.

redis-server lie à port 6379 par défaut. Jetez un oeil à l' redis.conf qui vient avec la source pour plus de configuration et les options de configuration.

Ceux qui ont les liaisons Python et/ou Ruby?

Redis a d'excellentes Ruby et Python soutien.

En réponse à Xorlev de commentaire ci-dessous: Memcached est juste une simple clé-valeur à stocker. Redis prend en charge complexe des types de données comme les listes, les ensembles et d'ensembles classés et en même temps fournit une interface simple pour ces types de données.

Il est également make 32bit qui fait que tous les pointeurs 32 bits, même sur 64 bits machines. Cela permet d'économiser la mémoire considérable sur les machines avec moins de 4GO de RAM.

24voto

Vagif Verdi Points 2380

Vous devez comprendre ce que les modernes NoSQL phénomène est d'environ.
Ce n'est pas une valeur-clé de stockage. Ils ont été disponibles pendant des décennies (BerkeleyDB par exemple). Pourquoi tout le monde maintenant ?

Il ne s'agit pas de fantaisie document ou orienté-objet, de schémas et de surmonter "d'adaptation d'impédance". Les promoteurs de ces caractéristiques ont été vantant depuis des années, et ils ont obtenu nulle part.

C'est tout simplement de les résoudre 3 problèmes techniques: automatique (pour les développeurs) et transparent (pour les développeurs d'applications) de basculement, la fragmentation et la réplication. Ainsi, vous devez ignorer tous les produits à la mode qui ne livrons pas sur ce front. Ces inclure Redis, MongoDB, CouchDB, etc. Et de se concentrer sur les solutions distribuées comme cassandra, riak, etc.

Sinon, vous allez perdre toutes les bonnes choses sql vous donne (requêtes spécifiques, Crystal Reports pour votre patron, outils de tiers et des bibliothèques) et d'obtenir rien en retour.

8voto

AdamKG Points 6521

Cette année PyCon, Jeremy Edberg de Reddit a donné une conférence:

http://pycon.blip.tv/file/3257303/

Il a dit que Reddit utilise PostGres comme une valeur-clé magasin, sans doute avec un simple 2-tableau de la colonne; selon son discours, il a comparé plus vite que n'importe quelle autre clé-valeur en magasin, ils avaient essayé. Et, bien sûr, il est très mature.

En fin de compte, OverClocked est droit; votre cas d'utilisation détermine le meilleur magasin. Mais RDMBSs ont longtemps été (ab)utilisé comme clé-valeur des magasins, et ils peuvent être très rapide, trop.

7voto

OverClocked Points 821

Ils ont tous des caractéristiques différentes. Et n'oubliez pas de Projet de Voldemort qui est en fait utilisé/testé par LinkedIn dans leur production avant chaque publication.

Il est difficile de comparer. Vous devez vous demander ce dont vous avez besoin: par exemple, voulez-vous de partitionnement? si oui, alors certains d'entre eux, comme CouchDB, ne le supportent pas. Voulez-vous l'effacement de codage? Ensuite, la plupart d'entre eux n'ont pas. Etc.

Berkeley DB est un très de base, le faible niveau du moteur de stockage, qui peut-être peut être excusé de cette discussion. Plusieurs clés-systèmes de valeur sont construites au-dessus de lui, afin de fournir des fonctionnalités supplémentaires comme la réplication, la gestion des versions, codage, etc.

Aussi, qu'est-ce que votre application a besoin? Plusieurs solutions contiennent de la complexité qui peut ne pas être nécessaire. E. g. si vous venez de stocker des données statiques qui ne changent pas, vous pouvez les stocker dans les données du SHA-1 de hachage du contenu (c'est à dire utiliser le contenu de hachage de clé). Dans ce cas, vous n'avez pas à vous soucier de la fraîcheur, de la synchronisation, la gestion des versions, et beaucoup de complexité peut être retiré.

7voto

MattGrommes Points 3943

J'ai joué avec MongoDB et il a une chose qui le rend parfait pour mon application, la possibilité de stocker des Cartes complexes/Listes dans la base de données directement. J'ai une grande Carte où chaque valeur est une liste et je n'ai pas à faire quelque chose de spécial juste d'écrire et de les récupérer sans connaître toutes les différentes clés et les valeurs de la liste. Je ne sais pas beaucoup sur les autres options, mais la vitesse et la capacité de faire Mongo parfait pour mon application. Plus le pilote Java est très simple à utiliser.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X