13 votes

Quel système de stockage clé/valeur utiliser avec Python ?

Je suis donc en train d'étudier différents magasins clé:valeur (où la valeur est soit strictement une valeur unique, soit éventuellement un objet) à utiliser avec Python, et j'en ai trouvé quelques-uns qui sont prometteurs. Je n'ai pas encore d'exigences spécifiques car je suis dans la phase d'évaluation. Je cherche à savoir ce qui est bon, ce qui est mauvais, quels sont les cas particuliers que ces choses gèrent bien ou ne gèrent pas, etc. Je suis sûr que certains d'entre vous les ont déjà essayés, alors j'aimerais entendre vos conclusions/problèmes/etc. sur les différents magasins clé/valeur avec Python. Je regarde principalement :

memcached - http://www.danga.com/memcached/ clients python : http://pypi.python.org/pypi/python-memcached/1.40 http://www.tummy.com/Community/software/python-memcached/

CouchDB - http://couchdb.apache.org/ clients python : http://code.google.com/p/couchdb-python/

Tyran de Tokyo - http://1978th.net/tokyotyrant/ clients python : http://code.google.com/p/pytyrant/

Nuage de lumière - http://opensource.plurk.com/LightCloud/ Basé sur Tokyo Tyrant, écrit en Python

Redis - http://redis.io/ clients python : http://pypi.python.org/pypi/txredis/0.1.1

MemcacheDB - http://memcachedb.org/

J'ai donc commencé à faire du benchmarking (en insérant simplement des clés et en les lisant) en utilisant un simple comptage pour générer des clés numériques et une valeur de "Une courte chaîne de texte" :

memcached : CentOS 5.3/python-2.4.3-24.el5_3.6, libevent 1.4.12-stable, memcached 1.4.2 avec les paramètres par défaut, 1 gig de mémoire, 14 000 insertions par seconde, 16 000 secondes de lecture. Pas de réelle optimisation, sympa.

memcachedb revendique de l'ordre de 17 000 à 23 000 insertions par seconde, 44 000 à 64 000 lectures par seconde.

Je me demande également comment les autres se situent au niveau de la vitesse.

7voto

Anand Chitipothu Points 1440

Cela dépend principalement de vos besoins.

Lire Mises en garde concernant l'évaluation des bases de données pour comprendre comment les évaluer.

3voto

Luka Rahne Points 5479

Shelve (stockage des dictonaris dans un fichier / module python standard)

ZODB - persisatnce object database (base de données d'objets python, pas de SQL)

Plus d'outils de persistance : http://wiki.python.org/moin/PersistenceTools

3voto

Lennart Regebro Points 52510

Mes 5 centimes :

Avez-vous besoin de systèmes distribués avec des données de la taille d'un téraoctet ou de performances d'écriture massives ?

Eh bien, ils ont besoin d'un des grands systèmes clé:valeur/BigTable/Dynamo. Il peut s'agir de Cassandra, Tokyo Tyrant, Redis, etc. Vous devez vous assurer que la bibliothèque client supporte le sharding afin de pouvoir écrire dans plusieurs bases de données. Vous ne pouvez décider laquelle utiliser ici qu'après avoir testé des données qui ressemblent à ce dont vous pensez avoir besoin.

Avez-vous besoin que les données soient accessibles à partir d'autres systèmes/langages que Python ?

Comme ces bases de données n'ont aucune structure, si elles sont accessibles à partir d'autres langages/clients, le vôtre dépend de ce que vous y stockez. Mais si vous avez besoin de cela, CouchDB est un bon choix, car il stocke ses données sous forme de documents JSON, ce qui garantit l'interopérabilité. Il n'est cependant pas certain que CouchDB soit efficace pour les données vraiment massives et le sharding.

Vous n'avez besoin ni d'interopérabilité avec d'autres langages que Python, ni de stockage distribué multi-serveurs ?

Utiliser ZODB.

-1voto

DanJ Points 1592

Qu'en est-il de SimpleDB d'Amazon ?

Il existe une bibliothèque python open-source appelée boto pour l'interface python avec les services web d'Amazon.

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