none
Alternativas a bases de datos RRS feed

  • Pregunta

  • Buen día,

    Estoy desarrollando una aplicación que quiero distribuir como standalone. Básicamente ya esta lista, pero el almacenamiento de toda la información se hace sobre SQL Server, lo cual requeriría que se instale en una computadora con el SQL Server instalado o con conexión a una base de datos remota.

    Como alternativa pensé en SQLite o algún otro gestor de bases de datos sobre archivos, pero ya lo estuve probando y por alguna razón no me convence del todo.

    Por otra parte, estuve revisando algunos programas que tengo instalados en mi computadora y me quedé con una duda, que quizá es la alternativa que estoy buscando: tengo un software de finanzas personales que compré como standalone. No genera ningún archivo para guardar, evidentemente no se conecta a ninguna base de datos y de hecho la carpeta de la aplicación solo contiene:
    • Dos dlls
    • Un ejecutable
    • Un readme.txt
    • Un manual de usuario en pdf

    Y no contiene ningún archivo "save" o algo parecido, y sin embargo guarda toda mi información y la muestra instantáneamente cuando lo corro. ¿Cómo hace este programa para guardar la información y dónde lo hace?  Espero me puedan contestar o al menos recomendarme alguna alternativa. GRACIAS!


    laloivol
    viernes, 20 de febrero de 2009 19:10

Respuestas

  • Hola,

    Es muy raro que la aplicacion de finanzas si guarda informacion no use ningun repositorio, seguramente lo que esta pasando es que este esta oculta, ojo que una de las dll que ves alli puede ser el repositorio.

    Recuerdo una aplicacion el Enterprise Architect  a simple vista parecia que no tendia repositorio, pero despues de ver un poco mejor resulta que usaba un archivo de extension algo rara, que si la renombrabas a mdb, resultaba ser una base de datos Access, es mas hasta podias abrirla.

    Puede ser este el caso en donde las dll en realidad actuen como repositorio, por ahi no de un access, sino que puede ser un dBase, o una serializacion a xml o binario, puede que esten serializando a binario y guardandolo como un archivo de extension dll.

    Igual con esto solo estoy sacando una conjetura, puede que me equivoque, pero son alternativas viables.


    Por la descripcion de tu problema veo que estas desarrollando una aplicacion que correra de forma standalone en la pc de usuario, y no quieres agregar sql server en esas pcs.

    Una alternativa que se me ocurrer y puede ser muy buena es usar SQL Server Express Edition esta alternativa es bastante buena, es compatible con tu SQL Server normal, y ademas es liviana y potente.

    Otra alternativa interesante es usar la version SQL Server Compact  por lo general esta pensada para usarse en aplicacion de PDA, pero la he visto como una muy buena alternativa cuando requieres algo liviano, que corre casi como si fuera Access, pero con mas potencia, y tiene mecanismos de sincronizacion, lo cual es genial. Lo estan usando mucho cuando quieres dale a tu aplicacion la capacidad de trabajo offline.
    La unica desventaja es que no puedes usar Store Procedures.


    Hay mas alternativas como ser usar db4o, o sea una base de datos orientada a objetos, la verdad esta solucion ya es palabra mayor y va a requerir de seguro que recodifiques tu aplicacion, o al menos tu capa de datos.
    la verdad tiene una potencia increible, y es muy liviana para suar en clientes.
    Hasta donde se esta base de datos es gratuita
    http://www.db4o.com/


    Por ahi la ultima alternativa podria utilizar es trabajar en memoria, creando una estructura de objetos, y utilizando mecanismos de serializacion, para persistir ya sea a xml o a binario, cuando abris la aplicacion hidratarias tus objetos, y ante ciertos eventos los persistirias, la unica macana con esto son las busquedas y operacion, van a ser un poco tediosas, pero si usas Linq, no seria tanto problema.


    Bueno como veras alternativas existen, y varias.
    Espero alguna se adecue a lo que buscas.
    Saludos


    Leandro Tuttini
    • Marcado como respuesta MasterReisender lunes, 23 de febrero de 2009 17:40
    domingo, 22 de febrero de 2009 17:56

Todas las respuestas

  • Hola,

    Es muy raro que la aplicacion de finanzas si guarda informacion no use ningun repositorio, seguramente lo que esta pasando es que este esta oculta, ojo que una de las dll que ves alli puede ser el repositorio.

    Recuerdo una aplicacion el Enterprise Architect  a simple vista parecia que no tendia repositorio, pero despues de ver un poco mejor resulta que usaba un archivo de extension algo rara, que si la renombrabas a mdb, resultaba ser una base de datos Access, es mas hasta podias abrirla.

    Puede ser este el caso en donde las dll en realidad actuen como repositorio, por ahi no de un access, sino que puede ser un dBase, o una serializacion a xml o binario, puede que esten serializando a binario y guardandolo como un archivo de extension dll.

    Igual con esto solo estoy sacando una conjetura, puede que me equivoque, pero son alternativas viables.


    Por la descripcion de tu problema veo que estas desarrollando una aplicacion que correra de forma standalone en la pc de usuario, y no quieres agregar sql server en esas pcs.

    Una alternativa que se me ocurrer y puede ser muy buena es usar SQL Server Express Edition esta alternativa es bastante buena, es compatible con tu SQL Server normal, y ademas es liviana y potente.

    Otra alternativa interesante es usar la version SQL Server Compact  por lo general esta pensada para usarse en aplicacion de PDA, pero la he visto como una muy buena alternativa cuando requieres algo liviano, que corre casi como si fuera Access, pero con mas potencia, y tiene mecanismos de sincronizacion, lo cual es genial. Lo estan usando mucho cuando quieres dale a tu aplicacion la capacidad de trabajo offline.
    La unica desventaja es que no puedes usar Store Procedures.


    Hay mas alternativas como ser usar db4o, o sea una base de datos orientada a objetos, la verdad esta solucion ya es palabra mayor y va a requerir de seguro que recodifiques tu aplicacion, o al menos tu capa de datos.
    la verdad tiene una potencia increible, y es muy liviana para suar en clientes.
    Hasta donde se esta base de datos es gratuita
    http://www.db4o.com/


    Por ahi la ultima alternativa podria utilizar es trabajar en memoria, creando una estructura de objetos, y utilizando mecanismos de serializacion, para persistir ya sea a xml o a binario, cuando abris la aplicacion hidratarias tus objetos, y ante ciertos eventos los persistirias, la unica macana con esto son las busquedas y operacion, van a ser un poco tediosas, pero si usas Linq, no seria tanto problema.


    Bueno como veras alternativas existen, y varias.
    Espero alguna se adecue a lo que buscas.
    Saludos


    Leandro Tuttini
    • Marcado como respuesta MasterReisender lunes, 23 de febrero de 2009 17:40
    domingo, 22 de febrero de 2009 17:56
  • Muchas gracias por tu respuesta, muy completa!

    Bueno, primero que nada, mi fé de erratas: estuve buscando el repositorio de datos de la aplicacion que habia descrito y resulta que si tiene uno, sólo que no en la misma ubicación que la aplicación. De hecho tiene un archivo para cada cuenta.

    Después de dar una ojeada rápida a las alternativas que describes, concluyo que la mejor opción es utilizar una base de datos embebida, ya que no quisiera instalar un servidor de bases de datos en las computadoras donde se corra mi standalone. Voy a investigar un poco más acerca de estas alternativas y a abrir una discusión sobre ellas en el foro.

    Muchas gracias de nuevo.
    laloivol
    lunes, 23 de febrero de 2009 17:39