Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Multiples aplicaciones - Que BBDD usar? (https://www.clubdelphi.com/foros/showthread.php?t=67039)

mcs 25-03-2010 09:46:19

Multiples aplicaciones - Que BBDD usar?
 
Hola,

Estoy estudiando la posibilidad de crear varias aplicaciones, independientes entre sí, que compartan datos. El tema es más bien simple: tenemos dos aplicaciones, Clientes y Presupuestos. Si estan las dos aplicaciones instaladas, la aplicación Presupuestos puede coger los datos de la aplicación Clientes. Si sólo está instalada Presupuestos, los datos se guardan de forma independiente.

En principio había pensado en usar Firebird Embedded (si me puedo ahorrar instalar un servidor BBDD, mejor), pero tiene el inconveniente que si una aplicación se conecta a una BBDD, esta queda bloqueada y nadie más la puede abrir.

Por otra parte, habría la posibilidad de usar BDE+tablas planas (Paradox, dBase, no sé), pero estas no tienen soporte Unicode, y por lo que he leído el BDE está casi muerto (bueno, es una tecnología obsoleta).

Con vuestra experiencia, que BBDD me aconsejaríais usar? Las aplicaciones en principio van a ser monousuario, y me gustaría algo que fuera simple de usar y instalar.

Muchas gracias,

Marc

Casimiro Notevi 25-03-2010 11:35:01

Intala firebird "normal" :)

mcs 25-03-2010 11:50:04

Ya... Pero es que justamente lo que quería evitar era tener que instalar un Firebird normal (o un MSSQL Server, o un MySQL...).

No existe nada parecido a las tablas dBase o Paradox, pero en "moderno"?

movorack 25-03-2010 14:01:18

Te diria igual, que instalaras un firebird normal pero buscas no instalar nigun servidor... bueno depronto con SQLite puedas obtener lo que quieres, no he leido mucho de el y en realidad no lo he trabajado pero aquí te dejo un aparte de la wikipedia que habla de las caractérisicas de SQLite; Para poder usar SQLite en tus aplicativos, requerirás de ZeosLib.

Cita:

Características

La biblioteca implementa la mayor parte del estándar SQL-92, incluyendo transacciones de base de datos atómicas, consistencia de base de datos, aislamiento, y durabilidad (ACID), triggers y la mayor parte de las consultas complejas.
SQLite usa un sistema de tipos inusual. En lugar de asignar un tipo a una columna como en la mayor parte de los sistemas de bases de datos SQL, los tipos se asignan a los valores individuales. Por ejemplo, se puede insertar un string en una columna de tipo entero (a pesar de que SQLite tratará en primera instancia de convertir la cadena en un entero). Algunos usuarios consideran esto como una innovación que hace que la base de datos sea mucho más útil, sobre todo al ser utilizada desde un lenguaje de scripting de tipos dinámicos. Otros usuarios lo ven como un gran inconveniente, ya que la técnica no es portable a otras bases de datos SQL. SQLite no trataba de transformar los datos al tipo de la columna hasta la versión 3.
Varios procesos o hilos pueden acceder a la misma base de datos sin problemas. Varios accesos de lectura pueden ser servidos en paralelo. Un acceso de escritura sólo puede ser servido si no se está sirviendo ningún otro acceso concurrentemente. En caso contrario, el acceso de escritura falla devolviendo un código de error (o puede automáticamente reintentarse hasta que expira un timeout configurable). Esta situación de acceso concurrente podría cambiar cuando se está trabajando con tablas temporales. Sin embargo, podría producirse un deadlock debido al multithread.[1] Este punto fue tratado en la versión 3.3.4, desarrollada el 11 de febrero, 2006.
Existe un programa independiente de nombre sqlite que puede ser utilizado para consultar y gestionar los ficheros de base de datos SQLite. También sirve como ejemplo para la escritura de aplicaciones utilizando la biblioteca SQLite.

mcs 25-03-2010 15:22:32

Cita:

Empezado por movorack (Mensaje 358249)
Te diria igual, que instalaras un firebird normal pero buscas no instalar nigun servidor... bueno depronto con SQLite puedas obtener lo que quieres, no he leido mucho de el y en realidad no lo he trabajado pero aquí te dejo un aparte de la wikipedia que habla de las caractérisicas de SQLite; Para poder usar SQLite en tus aplicativos, requerirás de ZeosLib.

Muchas gracias! He leído la web de SQLite, y parece ser que es exactamente lo que busco.

Saludos,

Marc

ESarger 25-03-2010 18:25:08

Que conceptos tan viejos te recomiendan
 
Lo de hoy es el NOSQL.

Te recomiendo hacer lo que twitter y facebook y cambiarte a cosas gratuitas y muy poderosas en cuanto a escalabilidad como Casandra, ahora que si planeas hacer algo pequeño y te da igual la moda NOSQL, mysql puede ser tu ideal para cosas pequeñas y libres.

Ahora, si quieres algo grande y gastar pues siempre tendrás Oracle

PD: Había puesto los links a todo esto pero por alguna razón no me ha permitido ponerlos

Casimiro Notevi 25-03-2010 18:31:43

Cita:

Empezado por ESarger (Mensaje 358284)
Que conceptos tan viejos te recomiendan

Lo de hoy es el NOSQL.
Te recomiendo hacer lo que twitter y facebook y cambiarte a cosas gratuitas y muy poderosas en cuanto a escalabilidad como Casandra, ahora que si planeas hacer algo pequeño y te da igual la moda NOSQL, mysql puede ser tu ideal para cosas pequeñas y libres.
Ahora, si quieres algo grande y gastar pues siempre tendrás Oracle
PD: Había puesto los links a todo esto pero por alguna razón no me ha permitido ponerlos

Veamos, explícate :)

ESarger 25-03-2010 18:52:56

Escalabilidad, rendimiento, optimización
 
Cita:

Empezado por Casimiro Notevi (Mensaje 358291)
Veamos, explícate

En términos de escalabilidad, y obviamente por ser un gratuito(tenía que ser parte de los eficientes de Apache) da un gran rendimiento, muy superior al de muchos otros.

No es un sistema centralizado, ni gestionado de manera centralizada, sino que toda la inteligencia de gestionar los datos es manejada de manera distribuída entre todos los nodos, lo que en la práctica en realidad significa que no existe un solo punto de fallas en el sistema, ya que aun si se caen varios de los servidores, los otros continuarán operando ininterrumpidamente, lo que es esencial para muchos tipos de sistemas estilo web hoy día. Incluso, Cassandra soporta replicación no solo local en una red, sino que entre varios centros de datos remotos, todo de manera natural.

Código:

Noten que existen soluciones que pueden escalar bastante bien en  varios  escenarios, como es utilizar MemCache con MySQL, pero el  problema de  esas soluciones es que requiere de mucha configuración  manual para  agregar nuevos nodos al cluster, y aparte de eso no  garantiza una  escalabilidad lineal como lo ofrece Cassandra.
En realidad el rendimiento para cinetos de millones de datos es completamente superior, a eso me refiero, además, como dije, mysql y algunos de este estilo son ideales para cosas pequeñas y sin coste, al final es una desición personal, y esta, es una alternativa mas. Pero es una alternativa a la que muchos se estan moviendo, tal y como lo esta haciendo twitter

mcs 25-03-2010 19:12:12

Ya, pero es que lo que yo busco es justamente el otro extremo. No busco crear una aplicación web para cinco zillones de usuarios, sinó simplemente una forma de guardar los datos en local, para una aplicación monousuario... No me sirve un Oracle, ni un MySQL... Sería matar moscas a cañonazos. Estoy hablando de bases de datos de media docena de tablas, y unos centenares de registros...

O sea, algo simple de instalar (y si es un único fichero con una DLL enlazada al ejecutable, mejor), con la única condición (que no cumple el Firebird) que pueda ser usada a la vez por más de una aplicación a la vez.

movorack 25-03-2010 19:19:23

Estuve lellendo algo de NOSQL, es un nuevo movimiento, liderado por desarrolladores con necesidades especificas que terminaron escribiendo sus propios estandares de almacenamiento. aquí un artículo

Bajo el concepto de este movimiento, muchos sitios web son simples y básicos y talvez no necesitan sino de 1 o dos tablas para funcionar y allí es donde apuntan a no usar un RDBMS, debido a que entrega una complejidad no necesitada. siendo que con modelos mas simples han obtenido mayor eficiencia en la escritura y lectura de datos.

De verdad, no se trata de conceptos novedosos u obsoletos; tampoco de modas. Cada modelo, lenguaje, motor tiene sus pros y sus contras... ninguno en realidad es la panacea ni la fuente de la eterna juventud.

En este caso, mcs ha encontrado algo que se adapta a su modelo... sayonara

ESarger 25-03-2010 20:14:51

Entonces la pregunta está mas que de sobra
 
Cita:

Empezado por mcs (Mensaje 358304)
Ya, pero es que lo que yo busco es justamente el otro extremo. No busco crear una aplicación web para cinco zillones de usuarios, sinó simplemente una forma de guardar los datos en local, para una aplicación monousuario... No me sirve un Oracle, ni un MySQL... Sería matar moscas a cañonazos. Estoy hablando de bases de datos de media docena de tablas, y unos centenares de registros...

O sea, algo simple de instalar (y si es un único fichero con una DLL enlazada al ejecutable, mejor), con la única condición (que no cumple el Firebird) que pueda ser usada a la vez por más de una aplicación a la vez.


La respuesta es MICROSOFT ACCESS

rretamar 26-03-2010 03:23:36

Firebird embebido y SQLite. Además de ser software libre, hay montones de documentación y funcionan en otros sistemas operativos además de Windows.

Mi elección es Firebird embebido, sobre todo si la complejidad de la aplicación puede aumentar. Llegado el caso, reemplazas el motor por la versión "Server" de Firebird y tu aplicación lo podrá usar y así escalarás sin demasiados cambios. Es importante tener en cuenta si vas a tener accesos concurrentes a la base de datos, porque en los motores embebidos el archivo queda bloqueado.

¿ Access ? Me suena como un mal chiste, es pago, costoso, hay alternativas libres que le dan mil vueltas, es cerrado, solo funciona en Windows, y además va en menosprecio de la especie felina (ver mi firma).

Saludos !

mcs 26-03-2010 08:12:19

Cita:

Empezado por rretamar (Mensaje 358407)
Firebird embebido y SQLite. Además de ser software libre, hay montones de documentación y funcionan en otros sistemas operativos además de Windows.

Mi elección es Firebird embebido, sobre todo si la complejidad de la aplicación puede aumentar. Llegado el caso, reemplazas el motor por la versión "Server" de Firebird y tu aplicación lo podrá usar y así escalarás sin demasiados cambios. Es importante tener en cuenta si vas a tener accesos concurrentes a la base de datos, porque en los motores embebidos el archivo queda bloqueado.

¿ Access ? Me suena como un mal chiste, es pago, costoso, hay alternativas libres que le dan mil vueltas, es cerrado, solo funciona en Windows, y además va en menosprecio de la especie felina (ver mi firma).

Saludos !

El Firebird embedido no me sirve, por el tema de no aceptar múltiples conexiones a la vez (cuando un proceso abre una BBDD, esta queda bloqueada).

Y el Access no es tan mala idea. No es de pago (el motor de Access viene en no sé qué service pack), y se puede administrar sin el Office. Y el tema que solo funcione en WIndows no es ningún problema. O sea, es lo más parecido a las tablas planas, pero en moderno (pero no sé si admite múltiples conexiones a la vez).

movorack 26-03-2010 14:41:50

Con el access puedes hcer una aplicación monousuario... aunque gatubela se ponga furiosa contigo.

El problema de access (por lo menos el punto que mas marcas aquí) es que no puede manejar muy bien las conexiones multiples.

porque tanto problema de instalar el firebird en modo servidor? en windows es solo ejecutar el instalador... PnP :D... y para el programa, creas un instalador que copie las librerias necesarias.

saludos.

rretamar 26-03-2010 17:03:41

Instalar y configurar Firebird es sencillísimo. Es más...hasta se puede hacer un script que automatice la instalación, pasando parámetros al instalador (se pueden hacer bastante cosas de este modo, en el sitio de Firebird se detallan todos los parámetros de línea de comandos que acepta el instalador). El usuario final ni se entera que se instaló Firebird, con lo que se puede automatizar su instalación.


La franja horaria es GMT +2. Ahora son las 08:38:09.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi