database - ruta - Alternativas a MySQL
mysql client ubuntu (11)
Para los pares clave = valor, puede usar el formato de archivo INI con procedimientos simples de carga y guardado para cargarlo y guardarlo en la tabla hash en memoria.
Eso puede ampliarse posteriormente a cualquier cosa, simplemente cambiando la carga y guardando los procedimientos para trabajar con db.
Me gustaría almacenar datos persistentemente para mi aplicación, pero realmente no necesito una base de datos relacional completa. Realmente podría salir adelante con un almacenamiento persistente tipo "caché" básico donde la estructura es solo un par (clave, valor).
En lugar de una base de datos, ¿cuáles son mis mejores opciones escalables?
Puedes probar con CounchDB , es una base de datos orientada a documentos muy flexible que no te obliga a definir un esquema por adelantado. Fue escrito en Erlang y gracias a esto se considera una solución muy escalable. Se puede consultar fácilmente a través de una interfaz REST.
Realmente no estoy seguro de que debas, pero ¿has considerado almacenar información en un documento XML si realmente es así? Y si no es así, ¿has considerado SQLite ?
Si está escribiendo Java, existen implementaciones de bases de datos Java (Jared menciona hsqldb, hay otras) que puede incluir directamente.
SQLite está bien para la inclusión estática, sin embargo, también puede incluir MySQL en su aplicación si está utilizando un lenguaje compatible como C.
Creo que apreciaría tener SQL disponible también. Los archivos XML ya no se cortan, tal vez hace un par de años cuando se escribía el software PDA, pero incluso el iPhone y Android ahora incluyen SQLite.
Si está escribiendo un programa Java que quiere una base de datos incrustada, mire hsqldb ya que está escrito en Java y funciona mucho mejor que sqlite si se llama desde programas java.
Si quieres algo realmente escalable, no optaría por un archivo plano o XML. A medida que crecen sus datos, podría matar su rendimiento.
Si en algún momento tendrás una gran cantidad de datos, aún optaría por una base de datos; echaría un vistazo a algo como SQLIte con un esquema muy simple que se adapte a tus necesidades.
Siempre hay SQLite , una base de datos que está almacenada en un archivo. SQLite ya tiene simultaneidad incorporada, por lo que no tiene que preocuparse por cosas como el bloqueo de archivos, y es realmente rápido para las lecturas.
Sin embargo, si está haciendo muchos cambios en la base de datos, es mejor hacerlos todos a la vez dentro de una transacción . Esto solo escribirá los cambios en el archivo una vez, a diferencia de cada vez que se emite una consulta de cambio. Esto aumenta drásticamente la velocidad de hacer múltiples cambios.
Cuando se emite una consulta de cambio, ya sea dentro o fuera de una sección de transición, toda la base de datos se bloquea hasta que finaliza la consulta. Esto significa que las transacciones extremadamente grandes podrían afectar negativamente el rendimiento de otros procesos porque deben esperar a que la transacción finalice antes de que puedan acceder a la base de datos. En la práctica, no he encontrado que esto sea tan notable, pero siempre es una buena práctica intentar minimizar el número de consultas de modificación de la base de datos que usted emite.
si quieres un "caché persistente" y ya usas memcached , revisa memcachedb . es una tabla hash persistente que utiliza el protocolo de memcached, no es necesario un nuevo cliente (sino un nuevo daemon)
hsqldb en modo de memoria le proporcionará un rendimiento mucho mejor que las bases de datos basadas en archivos planos. Es bastante fácil de usar también. Y si la tabla es demasiado grande, también hay una opción para almacenarla en el disco. Mira esta comparación de rendimiento:
http://hsqldb.org/images/imola_retrieve.jpg http://hsqldb.org/images/imola_retrieve.jpg
Hace una pregunta similar recientemente. Aquí hay algunas opciones:
- El Berkley DB es maravilloso. (también vea la entrada Berkley DB Wikipedia )
- Si está en Windows, puede usar el motor de almacenamiento extensible integrado. Esto solía llamarse "Jet Blue".
- Microsoft SQL Compact Edition también es gratuito (pero no está integrado en el sistema operativo).
Si necesita escalabilidad, entonces un RDBMS es su mejor opción. En el nivel más básico, puede serializar las estructuras de datos en archivos; sin embargo, debe tener en cuenta los problemas de bloqueo de archivos que limitarían la concurrencia.
SQLite es un motor de base de datos basado en archivos SQL, que puede ejecutarse sin un daemon de base de datos persistente (en PHP, por ejemplo, se ejecuta como una extensión), pero también tiene problemas de concurrencia (lea las respuestas a esta pregunta que podrían ayudarle a decidir SQLite es adecuado para usted).
A menos que tenga una muy buena razón para no usar un DRBMS real, le sugiero que se quede con MySQL u otros motores "en toda regla".