Delphi - Que BD me recomiendan???

   
Vista:

Que BD me recomiendan???

Publicado por Ingeniero (54 intervenciones) el 10/06/2008 15:25:57
Saludos!! Amigos expertos en Delphi:

Estoy necesitando una BD que sea mas o menos portable, aun por lo menos con capacidad limitada, que no sean Access (por sus innumerables limitaciones mdb), ni SQL server (ya que esta requiere obtener la licencia para su legitimidad), por favor, si alguien me puede mencionar de algunas BD (dos o tres) que pueda yo bajar sus versiones gratis o Express, porque necesito pasar algunas aplicaciones en Delphi a tal BD para su instalacion independiente de la licencia requerida, entre ellas me mencionan Interbase, MySql, DB2, pero no se las caracteristicas o ventajas entre ellas, y si hay otras BD mencionarmelas por favor. Ante todo, muchas gracias por su amable atencion.

Ingeniero.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Que BD me recomiendan???

Publicado por pacopaz (104 intervenciones) el 10/06/2008 17:04:00
Pues creo que tendrías mejor respuesta en el foro de Bases de Datos, pero esta es mi opinión:
MSDE2000 es la versión 'gratuita' de MS SQL Server 2000, normalmente distribuida junto con Access, aunque no estoy seguro de que siga ofreciéndose de esta manera. Sin embargo, lo puedes bajar directamente de la página de microsoft. Esta versión ofrece todas las características del SQL Server, con todas las funcionalidades, seguridad y mantenimiento del sistema de pago, con la limitante de que la base de datos no puede exceder los 2Gb de tamaño. Esto puede ser una limitante a 3 años si estás programando un ERP, pero un sistema administrativo puede almacenar todo lo fiscalmente relevante por 10 años o más. Otra consideración es que no se distribuye con el Enterprise Manager, lo cual hace que tengas que codificar todo, pero es un alivio considerar la opción de hacer todas las tablas y sus relaciones en Access y migrarlas hacia allá, así sólo quedaría la labor de crear los triggers, stored procedures, etc.
La evolución es el SQL Server Express 2005, distribuido junto con el Visual Studio. No lo he utilizado mayormente, pero la experiencia es bastante similar.
MySQL es uno de los servidores de base de datos que más ha crecido. Su funcionalidad, luego de muchos intentos, ha logrado cumplir con ciertos estándares de la industria de las bases de datos, pero aún tiene mucho que cumplir. Su versión gratuita permite bases de datos de hasta 4Gb. Su uso de memoria es bastante mejor, en comparación con SQL Server, pero tiene aún serios problemas con la seguridad, un caso, es que se puede emular SQL Dinámico (cosa que es natural en SQL Server), que puede ser bastante propenso a lo que se conoce como 'injection', que no es otra cosa que permitir el ingreso indebido de información a la base de datos. Esto sucede debido a que el sql dinámico en MySQL tiene permisos globales, lo cual significa que si un usuario no tiene permisos para introducir datos a una tabla, a través de esto podría. El tamaño máximo para la base de datos es de 4Gb, lo cual suena a mejor opción que la primera, pero hay que hacer notar que el archivo crece más rápido en MySQL que en SQL Server. Sus características te permiten instalarlo en Unix o Linux, además de Windows, así que es buena opción para sistemas multiplataforma.
No puedo hablar de otros manejadores de bases de datos gratuitos, por que no los conozco y no he trabajado con ellos, además de que mi nivel técnico al respecto sería pobre.
Espero que esto te dé algún panorama y aunque no entiendo a que te refieres con 'portable', puedes hacer grandes cosas en cuanto a portabilidad con estas dos opciones.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

¿Que es el SQL dinamico?

Publicado por BigLuis (715 intervenciones) el 10/06/2008 22:44:21
Por favor podrias explicarnos un poco mas profundamente que es el sql dinamico Lo digo en relacion con tu parrafo " Esto sucede debido a que el sql dinámico en MySQL tiene permisos globales, lo cual significa que si un usuario no tiene permisos para introducir datos a una tabla, a través de esto podría. " y como se podria hacer esto. Porque si es asi de sencillo podemos entrar en miles de bases de datos, incluso de gobiernos (el censo de EEUU esta implementado sobre MySQL).
Gracias.
Suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:¿Que es el SQL dinamico?

Publicado por pacopaz (104 intervenciones) el 10/06/2008 23:07:12
Ok, ya que les hice despertar su espíritu crackero, supongo que tendré que desilusionarlos.
SQL Dinámico (Dynamic SQL) es la implementación de comandos de sql en variables de texto (char, varchar, nvarchar, etc), para luego ser ejecutadas directamente en el servidor de base de datos.
Lógicamente, primero tienes que tener acceso a la base de datos, para luego poder ejecutarlas, así que el tema de la seguridad lo obviaré.
La implementación de este tipo de comandos es muy útil, sobretodo en el desarrollo de store procedures más versátiles. Algunos por acá tendremos alguna experiencia con la programación en base de datos, así que entenderán que hacer un sp para alta, modificación y eliminación de registros (todo en uno) requiere de demasiados parámetros y el trato de ellos, considerando que puedan ser nulos.
Lo que permite el sql dinámico es hacer de estos parámetros valores que signifiquen la simple adecuación de un comando sql y no la evaluación previa de los parámetros para tomar acciones.

Hay diferencias entre las dos bases de datos que mencioné, al respecto de como sucede el sql dinámico. Mientras que en SQL Server basta un

select @Qry = 'select...'
exec @Qry

en MySql es un proceso ligeramente más complejo:

prepare Qry from 'select...'
execute Qry
deallocate prepare Qry

La enorme diferencia está en que si el usuario loggeado a la base de datos SQL Server que no tiene permisos para leer una tabla específica, si intentara leerla a través de sql dinámico no la podría leer, mientras que otro usuario conectado a MySql sin permisos para leer una tabla, si podría leerla a través de esto. Y no tengo que decir que sólo leerla.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:¿Que es el SQL dinamico?

Publicado por Ariel O. (61 intervenciones) el 11/06/2008 01:17:16
Hola

Si quieres trabajar con una buena base de datos, y que sea gratis, te puedo recomendar
Firebird, es gratis, muy rápida.
puedes encontrar información acá www.firebird.cl

En mi trabajo llevamos trabajando con BD firebird por más de 5 años
actualmente hay más de 200 usuarios conectados, más los usuarios que se conectan vía web.

El instalador el liviano y simple de instalar, puedes utilizar el IBExpert Free, para trabajar con firebird.

Saludos...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:¿Que es el SQL dinamico?

Publicado por Ingeniero (54 intervenciones) el 12/06/2008 02:33:48
...Gracias por sus aportes, especialmente sobre Firebird, estoy probando con esta, pero tengo una simple pregunta para ti, Ariel O., Como puedo accesar a una base de datos de FireBird (o .GDB) porque se que el usuario es SYSDBA pero no se el Password para accesar y conectar la DB??? Muchas gracias de Antemano...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:¿Que es el SQL dinamico?

Publicado por eva (484 intervenciones) el 12/06/2008 10:30:13
masterkey
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:¿Que es el SQL dinamico?

Publicado por Ingeniero (54 intervenciones) el 12/06/2008 16:02:03
...Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:¿Que es el SQL dinamico?

Publicado por pacopaz (104 intervenciones) el 12/06/2008 18:31:12
Y abrás notado que cualquiera que sepa algo de FB la sabe, así que es mejor que la cambies lo antes posible.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:¿Que es el SQL dinamico?

Publicado por BigLuis (715 intervenciones) el 14/06/2008 10:59:13
Perdona pacopaz, este con este comunicado pongo, por mi parte, fin al hilo, pero creo que no entiendo muy bien tu párrafo
"La enorme diferencia está en que si el usuario loggeado a la base de datos SQL Server que no tiene permisos para leer una tabla específica, si intentara leerla a través de sql dinámico no la podría leer, mientras que otro usuario conectado a MySql sin permisos para leer una tabla, si podría leerla a través de esto. Y no tengo que decir que sólo leerla. ".
Yo te aseguro que yo tengo una base de datos MySQL y te doy a ti permiso, como usuario, para ejecutar una store procedure y no puedes ni modificarla, ni leer otra tabla o store procedure ni nada de nada. Y si no te doy permiso para ejecutarla ni esa store procedure podrias ejecutar. En MySQL los permisos a usuarios descienden hasta nivel de campo de una tabla.
Pero como nada es absoluto y todo relativo, si tu sabes el sistema para acceder a una tabla sin permisos y "tocarla" , por favor, dimelo porque estoy en grave riesgo por mi desconocimiento.
Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

....continuacion

Publicado por BigLuis (13 intervenciones) el 14/06/2008 11:16:22
Estos son algunos (la mayoria) privilegios que se pueden conceder o revocar por el administrador

CREATE Create_priv bases de datos, tablas, o índices
DROP Drop_priv bases de datos o tablas
GRANT OPTION Grant_priv bases de datos, tablas, o procedimientos almacenados
REFERENCES References_priv bases de datos o tables
ALTER Alter_priv tablas
DELETE Delete_priv tablas
INDEX Index_priv tablas
INSERT Insert_priv tablas
SELECT Select_priv tablas
UPDATE Update_priv tablas
CREATE VIEW Create_view_priv vistas
SHOW VIEW Show_view_priv vistas
ALTER ROUTINE Alter_routine_priv procedimientos almacenados
CREATE ROUTINE Create_routine_priv procedimientos almacenados
EXECUTE Execute_priv procedimientos almacenados
FILE File_priv acceso a archivos en la máquina del servidor
CREATE TEMPORARY TABLES Create_tmp_table_priv administración del servidor
LOCK TABLES Lock_tables_priv administración del servidor
CREATE USER Create_user_priv administración del servidor
PROCESS Process_priv administración del servidor
RELOAD Reload_priv administración del servidor
REPLICATION CLIENT Repl_client_priv administración del servidor
REPLICATION SLAVE Repl_slave_priv administración del servidor
SHOW DATABASES Show_db_priv administración del servidor
SHUTDOWN Shutdown_priv administración del servidor
SUPER Super_priv administración del servidor

Suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:....continuacion

Publicado por pacopaz (104 intervenciones) el 16/06/2008 18:55:15
Luis, el riesgo lo corres si y solo si en alguno de tus procedimientos utilizas sql dinámico.
Dado que tú mismo has mencionado que desconoces que es sql dinámico, deduzco que no lo has implementado en ninguno de tus procedimientos.
El riesgo real es crear un procedimiento que tenga una estructura similar a esto:

CREATE PROCEDURE Dinamico
(IN parameter varchar(1000))
BEGIN
...
prepare Qry from parameter
execute Qry
...
deallocate prepare Qry
...
END

Esto haría que cualquier instrucción sql pueda ser ejecutada, sin pasar por los perfiles de usuario.
Ahora, si tuvieras este tipo de estructura u otra con dos parámetros, uno para los campos que deseas y otro para los filtros, por ejemplo, lo que puedes hacer para evitar el riesgo es asignar permisos de uso a dicho procedimiento, sólo para los que realmente puedan ejecutar este procedimiento.
Dicho esto, y sabiendo cuales son las posibles consecuencias, sería riesgoso e irresponsable hacer un procedimiento como el que acabo de mencionar, sin embargo, con la suficiente implementación de seguridad y el uso razonable de este tipo de instrucciones, deja de ser tan riesgoso y se vuelve recomendable, por su flexibilidad y mantenimiento.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar