Domanda

Quindi sto esaminando varie chiavi: value (dove value è strettamente un singolo valore o possibilmente un oggetto) memorizza per l'uso con Python, e ne ho trovate alcune promettenti. Non ho ancora alcun requisito specifico perché sono in fase di valutazione. Sto cercando ciò che è buono, ciò che è male, quali sono i casi angolari che queste cose gestiscono bene o no, ecc. Sono sicuro che alcuni di voi li hanno già provati, quindi mi piacerebbe sentire i vostri risultati / problemi /eccetera. sulle varie chiavi: value memorizza con Python. Sto guardando principalmente a:

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

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

Tokyo Tyrant - http://1978th.net/tokyotyrant/ client python: http://code.google.com/p/pytyrant/

Lightcloud - http://opensource.plurk.com/LightCloud/ basato su Tokyo Tyrant, scritto in Python

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

MemcacheDB - http://memcachedb.org/

Così ho iniziato il benchmarking (semplicemente inserendo le chiavi e leggendole) usando un semplice conteggio per generare chiavi numeriche e un valore di " Una breve stringa di testo " ;:

memcached: CentOS 5.3 / python-2.4.3-24.el5_3.6, libevent 1.4.12-stabile, memcached 1.4.2 con impostazioni predefinite, 1 memoria da concerto, 14.000 inserti al secondo, 16.000 secondi da leggere. Nessuna vera ottimizzazione, carino.

rivendicazioni memcachedb nell'ordine di 17.000 a 23.000 inserti al secondo, da 44.000 a 64.000 letture al secondo.

Mi chiedo anche come gli altri aumentino la velocità saggia.

È stato utile?

Soluzione

Dipende principalmente dalle tue necessità.

Leggi Avvertenze sui database di valutazione su capire come valutarli.

Altri suggerimenti

shelve (memorizzazione di dictonaris in file / modulo python standard)

ZODB - database di oggetti persisatnce (database di oggetti Python, senza SQL)

Altri strumenti di persistenza: http://wiki.python.org/moin/PersistenceTools

I miei 5 centesimi:

Hai bisogno di sistemi distribuiti con dati di dimensioni in byte di tera o massime prestazioni di scrittura?

Bene, loro hanno bisogno di una delle chiavi principali: valore / BigTable / cose tipo Dynamo. Questo sarebbe Cassandra, Tokyo Tyrant, Redis, ecc. Devi assicurarti che la libreria client supporti lo sharding in modo da poter avere più database su cui scrivere. Quale utilizzare qui può essere deciso da te solo dopo aver testato con dati che assomigliano a ciò che pensi di aver bisogno.

È necessario che i dati siano accessibili da altri sistemi / lingue diversi da Python?

Dato che questi database non hanno alcuna struttura per i loro dati, se è accessibile da altre lingue / client, il tuo dipende da ciò che memorizzi in esso. Ma se hai bisogno di questo CouchDB è una buona scelta, poiché memorizza i suoi dati in documenti JSON, in modo da ottenere l'interoperabilità. Tuttavia, non è chiaro quanto sia buono CouchDB su dati davvero enormi e lo sharding.

Non è necessaria né l'interoperabilità con altre lingue oltre a Python o lo storage multi-server distribuito?

Usa ZODB.

Che ne dici di Amazon SimpleDB?

Esiste una libreria Python open source chiamata boto per Python che interfaccia i servizi Web di Amazon.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top