Pregunta

Por lo tanto, estoy viendo varias claves: el valor (donde el valor es estrictamente un valor único o posiblemente un objeto) se almacena para usar con Python, y he encontrado algunas prometedoras. No tengo ningún requisito específico todavía porque estoy en la fase de evaluación. Estoy buscando lo que es bueno, lo que es malo, cuáles son los casos en las esquinas, estas cosas se manejan bien o no, etc. Estoy seguro de que algunos de ustedes ya los han probado, así que me encantaría escuchar sus hallazgos / problemas / etc. en las distintas claves: valor almacena con Python. Estoy mirando principalmente a:

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

CouchDB - http://couchdb.apache.org/ clientes de Python: http://code.google.com/p/couchdb-python/

Tokyo Tyrant - http://1978th.net/tokyotyrant/ clientes de Python: http://code.google.com/p/pytyrant/

Lightcloud - http://opensource.plurk.com/LightCloud/ Basado en el Tyrant de Tokio, escrito en Python

Redis - http://redis.io/ clientes de Python: http://pypi.python.org/pypi/txredis/0.1.1

MemcacheDB - http://memcachedb.org/

Así que empecé a comparar (simplemente insertando claves y leyéndolos) usando un conteo simple para generar claves numéricas y un valor de " Una cadena corta de texto " ;:

memcached: CentOS 5.3 / python-2.4.3-24.el5_3.6, libevent 1.4.12-stable, memcached 1.4.2 con ajustes predeterminados, 1 gigabyte de memoria, 14,000 inserciones por segundo, 16,000 segundos para leer. Sin optimización real, agradable.

reclamaciones de memcachedb del orden de 17,000 a 23,000 inserciones por segundo, de 44,000 a 64,000 lecturas por segundo.

También me pregunto cómo se apilan los demás en cuanto a velocidad.

¿Fue útil?

Solución

Eso depende principalmente de tu necesidad.

Lea Advertencias de evaluar bases de datos para Entender cómo evaluarlos.

Otros consejos

shelve (almacenamiento de dictonaris en un archivo / módulo estándar de python)

ZODB: base de datos de objetos de perspectiva (base de datos de objetos de Python, sin SQL)

Más herramientas de persistencia: http://wiki.python.org/moin/PersistenceTools

Mis 5 centavos:

¿Necesita sistemas distribuidos con datos de tera byte o un rendimiento de escritura masivo?

Bueno, necesitan una de las claves principales: valor / BigTable / Dynamo. Eso lo harían Cassandra, Tokyo Tyrant, Redis, etc. Debe asegurarse de que la biblioteca del cliente admita fragmentación para poder tener múltiples bases de datos para escribir. Usted puede decidir cuál usar aquí solo después de realizar pruebas con datos que parecen ser lo que cree que necesita.

¿Necesita que los datos sean accesibles desde otros sistemas / idiomas distintos de Python?

Dado que estas bases de datos no tienen ninguna estructura para sus datos, si es accesible desde otros idiomas / clientes, la suya depende de lo que almacene en ellos. Pero si necesita este CouchDB es una buena opción, ya que almacena sus datos en documentos JSON, de modo que obtiene interoperabilidad. No está claro qué tan bueno es CouchDB en datos realmente masivos y no está claro el fragmentado.

¿No necesita interoperabilidad con otros lenguajes que no sean Python o el almacenamiento multiservidor distribuido?

Usa ZODB.

¿Qué hay de SimpleDB de Amazon?

Hay una biblioteca de código abierto de python llamada boto para los servicios web de Amazon que se conectan con python.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top