Servidor BBDD para aplicación pequeña

Hola, resulta que tengo un pequeño problema de indecisión, y quisiera pediros consejo. Tengo en desarrollo una pequeña aplicación con dos variantes independientes, con tecnología cliente-servidor. Os cuento a grandes rasgos intentando no enrollarme. Consta de una web con BBDD (PHP5 + MySQL 5) que va a tener aparte del interfaz web una aplicación cliente independiente con dos posibles variantes: una flash y otra posible (no segura) aún por determinar (c#, c++, java, por decidir aún). El caso es que cualquiera de las dos variantes necesitarán un servidor de bbdd MUY liviano, para evitar usar acceso a disco. Su finalidad es almacenar muy pocos registros, dado que estarán temporalmente hasta que se "sincronice" con el servidor web y su correspondiente BBDD.

Como requisito indispensable es que sea software libre, a ser posible gratuito, dado que el presupuesto es 0€. Por tanto, no voy a usar access. El caso es que me parece exagerado levantar un servidor MySQL para dicho menester. ¿Estoy en lo cierto? ¿es posible levantarlo con unas opciones mínimas para que apenas cargue el sistema?. Ya digo, sería para contener una BBDD con 5 tablas y pocos registros.

Un saludo y gracias de antemano
SQLite es tu solucion...

base de datos SQL sobre archivos de texto plano...

MUY, MUY LIVIANO, decentemente rapido y multiplataforma, practicamente es una libreria a incluir en tu proyecto y ya lo tienes andando...

eso si, olvidate de gestion automatica de integridad, de tablas relacionadas automaticamente y de transacciones...

pero para proyectos como el tuyo, es lo ideal, es mas, puedes 'recrear' la base de datos desde 0 cada vez que se arranque el programa
Hola compañero de armas,

tienes varias opciones, dependiendo de los recursos que dispongas y del tiempo que quieras emplear (pero siempre el presupuesto siempre 0€):

1.- MySQL con caché de queries. Esta opción es válida y muy recomendable si no quieres modificar todos los programas (ahora usas PHP, y no se si utilizas alguna librería que unifique las BBDD), además de ser MUY rápida. Lo único, que quizás tengas pocos recursos (RAM y HD), pero si ya lo estás utilizando... lo único que necesitas es RAM, ya que el proceso de caché funciona así: haces una query, esa devuelve un resultado e inmediatamente el cacheador de queries se guarda el mismo en el HD o en RAM (tu lo decides), de tal manera que a la siguiente que vez que hagas la misma query (por lo general SELECTs) el programa mirará si la tabla ha cambiado, y si no es así accederá directamente al resultado guardado... evitando así recorrer toda la tabla, y sacar los datos. El tiempo de mejora es... impresionate. Sólo te digo que la mejora de guardar los datos cacheados en HD es muy grande, pero que si los guardas en RAM el tiempo de acceso se aproxima (""aproxima"", para los puristas) al acceso a una casilla de un array. Impresionante.

2.- SQLite. Es un "sistema" (más que un motor completo) que permite almacenar y acceder a datos utilizando queries SQL. Hay pequeñas disputas si se puede comparar con "bases de datos grandes", pero por lo general da muy buenos resultados. Ocupa muy poco. Está disponible en forma de librería para prácticamente todos los lenguajes y plataformas que existen. Una de las mejores cosas que tiene PHP es el tema de los módulos. ¿Que quieres otra base de datos? pues programas el modulo de acceso y listo. Si no hay uno, hay varios. Sólo es ver el que mejor te va. También hay módulos para C# y para Python.

Sobre el tema del Flash: Flash en sí no tiene acceso a base de datos, si no que tendrás que hacer las queries en un programa contenido en un servidor y devolver los resultados por HTTP en formato texto o XML que deberá ser interpretado por tu "programa" en flash.

Espero haberte ayudado. Un abrazo.

== Edito ==

Veo que se m'a adelantao f5inet :D
Muchas gracias a los dos. Os comento un poco para esclarecer el funcionamiento. Hay un servidor web con PHP5, base de datos e interfaz web completa. Pero además, quiero mantener todas las funcionalidades en una aplicación cliente semi independiente, es decir, que sincronice cada X o cuando el usuario diga, descargue contenidos y los almacene de forma muy liviana, permita modificarlos (crear, modificar, borrar) con independencia total del servidor hasta la próxima sincronización. Esto es así porque considero que aun en el supuesto caso de siempre se tenga conexión, me parece un despilfarro mantener conexiones con la BBDD para cada cosa.

¿Mi elección? MySQL a muerte, tiene muy buena pinta y siempre me permite mayor flexibilidad si la aplicación crece, ¿no os parece?. Vaya, y eso que casi lo tenía descargado.

En cuanto a Flash, soy desarrollador bastante avanzado, uso asíduamente Flash con BBDD, la interacción con XML pocos secretos me guarda (ni siquiera generarlos dinámicamente con ASP o PHP). Además conozco bien la restricción de acceso a disco de Flash, y los sistemas para evitarlo. En resumen, lejos de lo que parezca, no quiero presumir de nada, simplemente remarcar que es la pata de la que menos cojeo. Aún así, mil gracias por el apunte Rurouni.

Y por contra, aunque pueda parecer lo contrario, el proyecto es de uso exclusivo para mi enriquecimiento personal y un "gadget" para el uso cotidiano.

F5inet, mil gracias a ti también, aunque es lo que buscaba lo que comentas, poder usar MySQL es muy tentador, sobretodo porque ya lo tengo todo implementado para tal, y me permite margen para crecer.

Salu2 y gracias de nuevo

Edito:

Cuanto más lo leo y busco información, más me gusta la opción de MySQL con caché de queries. Y en cuanto al servidor, pues es un 'servidor' propio que tengo en casita, aunque lo uso para muchas más cosas, puede pasar más por pc de sobremesa potentillo que por servidor web (al final la factura de la luz me la va a jugar), así que no creo tener que preocuparme por la ram.
Pues si es para uso propio, y aún notándose la caché... creo que sobra si lo que quieres es que funcione YA. Se puede implementar a posteriori.

Por cierto, también puedes mirar de usar PostgreSQL... aunque si, como dije, no has utilizado ninguna librería que te ayude a la hora de conectar a las BBDD (o te la has hecho, como suelo hacer yo)... tendrás que cambiar tus programas, ya que la interfaz de llamada de Postgre es diferente a la de MySQL.

Me pica la curiosidad... ¿que estás haciendo? Si se puede preguntar... Supongo que ya tendrás experiencia con BBDD, pero has tener muy clara la estructura de datos de las mismas... porque depende de como sincronizaras las dos bases de datos distintas (porque, al modificar un dato, insertar uno nuevo, o borrarlo ya son distintas). Depende de como lo hayas planteado... el planteamiento te costará más de la mitad del desarrollo (si luego no quieres hacer chapuzas, claro).

Suerte!
Si claro que puedes preguntar, nunca a sido secreto, simplemente no quería aburrir.

Es una agenda online en la que se pueden guardar y tener centralizados tus favoritos, 2 o 3 archivos livianos, tu correo, tus contactos... entre otras cosas. Además, voy a desarrollar un wallpaper flash con gran parte de las opciones (para tenerlas disponibles con mayor comodidad). Esto es, a grandes rasgos el resumen del proyecto.

La idea me surgió porque tengo varios equipos en casa, con varios SO. Y claro, si estoy navegando desde windows en el portátil y veo un enlace interesante... ¿que hago?. A lo mejor las 2 o 3 primeras veces me lo mando al correo o cualquier otra chapuza, pero con el tiempo y la cantidad de artículos o enlaces interesantes que encuentro y guardo para otro momento o para necesidades futuras....

Sip, se que ya hay opciones perféctamente válidas por internet, y seguramente mil veces mejores que la mía. Pero... ¡es que es la mía! y como para mí programar es un reto a la vez que un hobby, ¿qué mejor forma para evitar ver la tele?

En cuanto al diseño de la base de datos, mi novia ha trabajado bastante con Oracle y con desarrollo de base de datos, así que tengo buena tutora ;-)

En fin, que me enrollo. Salu2 y muchas gracias por tu interés
yo para eso de los links favoritos, uso la extension de firefox 'google sync'... mano de santo, aunque a veces se le vaya un poco la olla, el 99% de las veces sincroniza bien y resuelve bien los conflictos... el 1% que no lo hace bien... a lo mejor te duplica la mitad de los favoritos :D...

pero eso solo me ha pasado una vez en 2 meses que lo llevo usando y con una de las primeras versiones...
Sip, la conozco. Lo que pasa es que cuando yo inicié mi proyecto no existía (publicamente), dado que tengo MUUY poco tiempo y al cosa va con calma. En cualquier caso, ya digo, es más por motivos didácticos que por cualquier otra índole. Incluso, en principio no contemplo abrirlo al uso público (aunque casi seguro liberaré el código).

Salu2
7 respuestas