2010-11-22 11 views
18

Pregunta breve: ¿Hay alguna base de datos de archivos planos nosql disponible como sqlite?¿Hay alguna base de datos de archivo plano nosql igual que sqlite?

Explicación: La base de datos de archivos planos se puede abrir en diferentes procesos para leer y mantener un proceso para escribir. Creo que es perfecto para el caché de lectura si no se necesita una coherencia estricta. Digan 1-2 segundos para escribir en el archivo o incluso en el bloque de memoria y los lectores obtienen datos actualizados después de eso.

Por lo tanto, casi elijo usar sqlite, ya que mi servidor python lee el caché. Pero todavía hay un problema. No me gusta volver a escribir sqls en otro lugar y construir otra copia de mis tablas de datos en sqlite igual que hice en PostgreSql que se usaba como base de datos de fondo.

¿Hay alguna otra opción? ¡Gracias!

Respuesta

9

Tal vez shelve? Básicamente es una tienda de valores-clave donde puedes almacenar objetos Python. http://docs.python.org/library/shelve.html

¿O tal vez podría simplemente usar el sistema de archivos?

+0

Definitivamente voy con shelve. De hecho, estoy usando load/dump de pickle en archivos separados para un acceso rápido, pero shelve es una opción viable. – vonPetrushev

+0

.... ¡Simplemente lo olvido! Muchas gracias por recordarme esta gran solución enviada con Python. – davyzhang

+1

Tenga en cuenta que para las lecturas y escrituras concurrentes, 'shelve' no es una alternativa viable a sqlite. From the python docs: "El módulo shelve no admite el acceso concurrente de lectura/escritura a objetos archivados. (Múltiples accesos simultáneos de lectura son seguros). Cuando un programa tiene un estante abierto para escribir, ningún otro programa debe tenerlo abierto para leer o El bloqueo de archivos Unix se puede utilizar para resolver esto, pero esto difiere en las versiones de Unix y requiere conocimiento sobre la implementación de la base de datos utilizada ". sqlite, por otro lado, cumple con ACID en todos los SO compatibles y funciona el bloqueo para usted. – chadrik

6

BerkeleyDB es una base de datos integrada ampliamente utilizado que ha existido siempre (derivó originalmente de la biblioteca de base de datos incluida en BSD, de ahí el nombre) y tiene excelentes características de rendimiento para muchos casos de uso (y el almacenamiento en caché es uno usado frecuentemente), pero tiene algunas limitaciones significativas.

Si desea usarlo con Python, probablemente desee externally-maintained pybsddb/bsddb3 library, no deprecated bsddb library incluido en Python 2.x (y ya no en 3.x).

Actualmente es propiedad de Oracle, pero está disponible bajo una licencia de código abierto. Tome nota cuidadosamente de los términos de la licencia: las versiones actuales son GPLish (y compatibles con GPL), así que asegúrese de que sea compatible con lo que planea hacer.

Más información:

+3

muchas gracias por la recomendación!pero después de ver lo que le hicieron a mysql, me alejaré del oráculo. Pero realmente consideré bsdb como una comparación con sqlite. Si no lo vendieron, definitivamente voy a ir con eso. Gracias por la información que proporciona. Es valioso – davyzhang

+0

BerkelyDB tiene un aumento de $ 15,000 en tarifas de licencia, incluso para aplicaciones simples de iPhone. Tal vez más si tu nombre y tu startup parecen más prometedores que míos. – Lothar

+0

@Lothar BDB es software gratuito. Puede desarrollar más software libre sin ninguna tarifa de licencia. – bugmenot123

0

algo trivial, pero viable, si usted está buscando almacenamiento de copia de seguridad de valor clave utilización estructura de datos de diccionario en escabeche. Use cPickle para un mejor rendimiento si es necesario.

+0

Usa Sqlite o Firebird con solo una tabla. O el componente de base de datos del proyecto OpenLDAP, que es ultra rápido. http://symas.com/mdb/ – Lothar

Cuestiones relacionadas