Cual es el mejor sistema de gestión de bases de datos

Antes de mi pregunta, quiero agradecerte el tiempo y el empeño en tus respuestas que he podido ojear.
He desarrollado durante año y medio una base de datos en Microsoft ACCESS a mi juicio bastante compleja (20 tablas relacionadas, unos 60 formularios, 100 informes...) con la que se gestionan varios asuntos de distintos departamentos de una empresa medianamente grande.
La cuestión es que de este desarrollo únicamente he aprendido y domino como implementar bases de datos en Access (con sus consultas, visual basic...) pero me he dado cuenta, tarde, que para lo que ha llegado a ser esta base de datos, este programa tiene serias limitaciones en cuanto escalabilidad, seguridad de usuarios y permisos.
Quiero aprender a hacer esto mismo con otros programas que no presenten estos problemas, pero por mucho que busco en Internet, no consigo elegir ninguno (para comprarme los manuales pertinentes y el o los programas en cuestión y ponerme manos a la obra).
Te agradecería me dijeras, teniendo en cuenta que no tengo NI IDEA de como funcionan el resto de programas, ¿cuál es el mejor programa para?:
- Entorno multiusuario (para 50/100 usuarios simultáneos)
- Que me permita aprender rápido teniendo en cuenta que solo sé usar Access y Visual Basic de Access.
- Que me sirva para crear una base de datos realmente segura (que nadie pueda acceder a tablas, que se puedan establecer permisos fiables...)
- Interfaz veloz (si dependiese esto del programa utilizado)
He oído hablar de MySQL: ¿Esto me permite crear tablas y consultas o más cosas? Si solo me permite crear esto, he oído que necesito Visual Basic para formularios. ¿Es así?
¿SQL Server me permite crear lo mismo que con Access o también necesito otro programa asociado?
¿Hay mejores opciones a parte de estas?
Por favor, te ruego me indiques cual crees que es el mejor programa o combinación y en qué versión adquirirlo y si no es mucha molestia y para que lo entienda, te ruego me digas cuales son sus utilidades comparándolas con Access, es decir, si podré hacer lo mismo, más o menos...
Creo que será una información muy útil para otros usuarios.
3

3 Respuestas

113.225 pts. Con mas de 15 años de experiencia en consultoria...
Lo primero decirte que me parece una pregunta interesante y que creo que seria interesante dedicarle un PPT con más detalle de lo que te voy a contar ahora. Lo colgare cuando la tenga en mi web.
Respecto a la pregunta.
En general no creo que la cuestión sea 'cual es la mejor' por que realmente todas son válidas. La pregunta debería ser ' cual es mi mejor opción' dadas las circunstancias y necesidades de cada uno.
Vamos a intentar resumirlas:
Access:
- Admite ciertos tamaños de BD, numero de registros, de tablas, se puede programar, tiene una seguridad razonable para la mayoría de aplicaciones 'medianas'( luego detallo esto) y sobre todo para mi lo más importante. No necesita administración, ni instalación. Le puedes cambiar la extensión al archivo. Hoy día hay varias aplicaciones comerciales con archivos de extensión 'rara' que lo que usan por detrás es un access. Bien usada puedes hacer aplicaciones muy serias.
- MySQL: Es gratis, muy potente y cada vez se ve más en entornos profesionales. Está evolucionando continuamente y te va a permitir hacer muchas cosas con seguridad. Malo: Hay que instalarlo y mantenerlo lo que requiere formación y tiempo. Aunque no he hecho muchas cosas con ella si te soy sincero.
- SQL-Server: De pago, muy potente, relativamente simple de administrar para aplicaciones pequeñas. Gratis en su versión 'Desktop' y con buena integración con otros datos. Dispone de lenguaje de programación T-SQL ( que es espantoso). Y si trabajas con Microsoft. Da algo de juego. Buena seguridad
- Oracle: A la que todos quieren copiar. La más usada en grandes aplicaciones ( miles de tablas, billones de datos). Tiene un lenguaje de programación potente y fácil de aprender ( Pl-SQL) y admite Java. Para mi gusto la que prefiero para trabajar y de seguridad, encriptación, etc.. tiene lo que quieras. Problema: Es difícil de mantener, es cara la licencia y necesita recursos caros para administrarla y mantenerla al día.
Todas: Admiten ANSI SQL por lo que si usas ese lenguaje para trabajar con la BD te da igual usar una u otra. Es muy fácil de aprender.
Para tu caso:
Si como dices conoces VB, yo iría migrando la aplicación poco a poco hacia un entorno mejor pero sin cambiar de momento de BD ( 20 tablas son pocas) ni tecnología. Divídela en aplicaciones y si tienes muchos datos historifica.
a) La BD por un lado solo tiene los datos y las vistas.
b) Los formularios por otro lado en otra BD con las tablas linkadas
c) los informes por otro ídem.
Con eso tienes el primer paso, luego.
Migras los formularios a VB6. Si sabes VBA no te va a costar mucho. La diferencia está en que vas a poner una DLL entre las ventanas y los datos. Que va a impedir que los usuarios 'vean' la BD con lo que ya estás protegiendo los mismos. Por otro lado en un paso posterior podrías cambiar la BD a otra más potente sin afectar al programa por que son cosas independientes. También puedes plantear migrar directamente a un entorno WEB tipo ASP o J2EE, pero eso te va a costar más y los usuarios se te pueden rebotar.
Para los informes: Puedes hacerlos en una aplicación a parte en Crystal Reports+vb6. Pero si no son muy muy complicados, te sugeriría algo en tecnología Web, que simplemente seleccionara los informes y los mostrara en pantalla o los volcara a excel. Con eso ganas mucha potencia, no es dificl hacer un sistema paremetrizable. Y a los usuarios les suele gustar el excel por que pueden trastear con los datos.
Si te fijas, la idea es romper una aplicación que se está haciendo compleja en 3 o 4 más pequeñas que trabajen juntas y más fáciles de mantener. Por otro lado separar totalmente los datos de la lógica de programación y los informes de los mantenimientos. Que cada usuario 'vea' lo que necesita y así no te pillas los dedos por si quieres cambiar de BD o de tecnología en el futuro.
Piensa que si has ido haciendo la aplicación poco a poco en la empresa, y la usan y tiene su información en ella, corres un riesgo cuando empieces a cambiar. Mejor ser prudente e ir haciendo las cosas poco a poco y hablar con los jefes para comentarle los riesgos etc.. Las migraciones siempre dan problemas y hay que tomar muchas consideraciones en cuenta, hay que ser precavido.
Ya con lo que sea me dices para ver en que te puedo ayudar.
Tu respuesta es desde luego de lo más completa.
En la base de datos actual, las tablas las he separado del resto como mencionas en tus puntos a y b (de los formularios, consultas, informes y módulos).
Tan solo me gustaría pedirte unas aclaraciones que te formularé en preguntas cortas en batería. Me encantaría que me pudieras respinder:
¿Entiendo qué es probable que la mejor opción si quisiera empezar una BD desde 0 sin las limitaciones que te expuse seria utilizar MySQL y VB6? ¿Estos dos programas me sirven para almacenar las tablas, los formularios, las consultas y los informes?
En la base de datos que ya tengo y con lo que mencionas de las DLL, ¿si migro los formularios a VB6, podría hacer que nadie tuviera acceso a las tablas? Es decir, ¿podría anular los permisos de lectura de la carpeta que contiene la BD con las tablas a todo el mundo, pero a través de la base de datos la gente podría ejecutar la BD? (En la base de datos actual, he implementado los nombres de usuario y las contraseñas con sus permisos en una tabla, el problema que no sé resolver es que si alguien accede a esta tabla y modifica las propiedades del campo "contraseña" para que no aparezcan los asteriscos puede averiguar la contraseña que quiera, si bloqueo el que puedan acceder a esta carpeta, no pueden ejecutar la BD.
¿Qué programa tengo que utilizar para hacer los informes en "tecnología web"?
¿Se puede ejecutar una BD en Access sin tener Access instalado? Me ha parecido que querías decir eso cuasndo mencionas los cambios de extensiones.
Cuando te refieres al mantenimiento, ¿qué es exactamente? ¿La creación de usuarios, contraseñas y permisos?
De verás, te agradezco enormemente la información que aportas, que es absolutamente completa. Cuando finalice la pregunta, te ruego que dejes la dirección web donde vayas a ampliar esta información tal y como has mencionado.
Gracias de nuevo.
Te contesto esquemáticamente. Cuando te aconsejo algo es por que creo que es la mejor opción para tu caso y los conocimientos que comentas que tienes. En general para cada punto hay muchas opciones. No obstante no es un programa grande y mejor ir separando problemas para poder atacarlos después por separado en el futuro si lo necesitas.
BD: Te da lo mismo usar Access que MySql que SQLServer-Express. Personalmente empezaría por cambiar la parte cliente antes que la BD, es menos problemático. Access y SQLServer Express son más sencillas de Administrar lo que te quitara problemas ya que estas más acostumbrado al concepto Microsoft de las cosas. El tema de seguridad se resuelve con una DLL y separando la aplicación en capas en Access. Pero si tienes especial interés en usar MySQl hazlo.
Los informes u pantallas: Los tienes que hacer en un lenguaje de programación. MySql no tiene 'informes' como los tiene Access.
Informes: Normalmente se usa Crystal Reports. Con Vb6 hay una versión sencilla pero puedes hacerlo en otras tecnologías. Muchas veces se opta por sacar directamente los listados a Excel con lo que te quitas muchos problemas y haces una solución más dinámica.
Pantallas clientes: Usaría VB6 por que es lo más parecido a Access pero puedes hacerlo en cualquier tecnología. Java, .Net bien en Cliente-Servidor bien en entorno Web.
Con la DLL lo que haces es exactamente lo que dices. La DLL tiene acceso a la BD pero los usuarios NO, tienen que usar la DLL por narices con lo que quitas el problema de la seguridad. A parte que como no van a saber donde está, no van a poder llegar.
Para hacer páginas web dinámicas usaría ASP normal. Creo que te pasé un Link de un entorno muy fácil de usar para estas cosas, no creo que te cueste mucho aprenderlo.
Para usar Access necesitas una BD Access y los MDAC instalados. Te los puedes bajar de Microsoft aunque los servidores XP y Vista lo suelen traer ya instalado.
El Mantenimiento de una BD es todas las tareas para que vaya bien. Creación usuarios, backups, rendimiento, configuración servidor, listeners, procesos. Acees te hace transparente esos temas, pero según son más profesionales se complica todo. Una BD Oracle mal instalada es una patata en rendimiento.
Creo que no me he dejado nada.
300 pts.

Para aprender lo mejor es que te formes debidamente, una base de datos es algo bastante complejo e importante como para ir a tientas.

Yo te lo digo porque trabajo a diario con ellas, hice algunos cursos como estos, https://www.institutoeurofor.com/curso-de-sql.html?search_query=sql&results=6  (sql)

https://www.institutoeurofor.com/curso-de-access-2013.html?search_query=sql&results=6 (access)

https://www.institutoeurofor.com/curso-oracle.html?search_query=sql&results=6  (oracle)

Deberías aprender a usar todos, por temas de profesionalidad y porque en diferentes momentos te interesará más utilizar una y en otros otra

685.100 pts. No responderé preguntas de usuarios que no valoren las...

Quisiera añadir una cosa a las respuestas que te han proporcionado:

Independientemente del sistema al que elijas migrar tu BD (MySQL, SQLServer, Oracle...), puedes aprovechar el trabajo que has hecho en Access (formularios, informes, código...) simplemente si vinculas las tablas del gestor que hayas elegido con tu Access. De esta manera, tendrás las tablas en SQLServer, Oracle...(con las ventajas que tienen sobre access) pero los formularios e informes los tienes en access y te evitas tener que volver a hacerlos.

Si optas por SQLServer (o su versión gratuita SQLServerExpress), puedes descargarte un asistente para migrar tu BD de Access, y además, ya te deja las tablas vinculadas.

Creo que también hay un asistente para mySQl, para Oracle no tengo ni idea, que nunca trabajé con ella.

Saludos!


Añade tu respuesta

Haz clic para o

Más respuestas relacionadas