ene 19

Acceso a bases de datos externas existentes

Posted in foro, ideas, MySQL

En este hilo del foro, se comentan algunas cosas interesantes, y me gustaria aclarar y dar mi punto de vista

Crear aplicaciones sobre una base de datos existente

Velneo, en su modelo de “Base de Datos Real”, algo que la diferencia de las bases de datos relacionales como MySQL, PostgreSQL, SQLite, Oracle, MS-SQL, tiene muchas ventajas y algunos inconvenientes.

No voy a centrarme en esta ocasión en verificar cual de estas bases de datos obtiene mejores rendimientos, ya que no es el tema que se debate en esta ocasión.

El tema en cuestión, es que cada uno debe valorar las ventajas que les reporta una base de datos y los inconvenientes, y despues, agitarlo todo en una cocktelera, y tomar una decisión al respecto.

Desde que conoci Velazquez Visual, ahora Velneo, una de las cosas que mas me ha gustado, y de las que uno menos suele valorar con el paso del tiempo (quizá por la costumbre), ha sido la refactorización, y la facilidad con que podia realizar cualquier cambio en la estructura de la base de datos, sin tener que preocuparme de nada en absoluto.

Cuando llegue a Velazquez Visual (alla por el 97/98), venia precisamente de SQL (Multibase – Transtools), y aunque la base de datos funcionaba estupendamente en SQL, la empresa dejó de mantener las actualizaciones periodicas que realizaban (semestralmente). Durante casi 3 años estuve, probando otras herramientas, y por fin, en una revista especializada, vi el anuncio de Velazquez Visual, y decidi pedir una demo.

Desde que la instale, me sorprendio la facilidad con que se realizaban las actualizaciones en los datos, y la cantidad de tiempo que me ahorraba en mis actualizaciones a los clientes. Desde entonces, han ido apareciendo muchas novedades, algunas muy interesantes y llega un momento en que incluso podria haber olvidado toda la comodidad que habia ganado.

Cuando Velazquez Visual parecia que iba a desaparecer, volvi a buscar otras herramientas, y de nuevo el mismo problema, despues de evaluar varias herramientas, decidi que no queria perder la comodidad que habia tenido todos estos años.

La presentación de la V7 fue una luz en el camino, y decidi que habia que seguir esa luz.

Si bien es verdad que me he quejado mucho, siempre lo he echo para que Velneo respondiera, con la unica intención de mejorar la herramienta. Y parece que ese cambio se está produciendo, quizá mas lento de lo que todos deseariamos, pero veo como las cosas cambian, para mejor, y eso me gusta.

Volviendo a lo que nos pedia “Cjribera” en el foro, es cierto que todo el esfuerdo de Velneo esta pensado en su propia base de datos, y aunque el acceso a bases de datos externas, es posible, siempre se echa algo en falta.

Para estos casos, yo he decidido que hay que protestar y pedir y aportar ideas y/o soluciones, porque si no pido lo que necesito, si no me quejo por lo que no me gusta, ¿como van a saber en Velneo mis problemas?

Ahora despues de analizar estas peticiones, estoy pensando que me parecen muy interesantes, pero he querido llegar un poco mas alla, y he pensado, ¿como podriamos tener acceso a otras bases de datos? o dicho ¿como podriamos tener objetos de V7 asignados a tablas de bases de datos externas?

Y he tenido un pequeño “flash”, y he visto una posible solución al problema para poder usar bases de datos externas manteniendo lo bueno de Velneo, la refactorización.

Primero pense, asociar cada uno de los objetos a una “tabla SQL“, formularios, rejillas, busquedas, tubos, procesos, es complicado, cada vez que se produzca un cambio en la base de datos externa, los objetos dejarian de estar enlazados y se producirian cantidad de errores.

Entonces, como solucioarlo …   ¡¡ thinking !!

… y unos minutos despues, una idea,

Podriamos crear “Tablas lógicas“, con estructura similar a las tablas de la base de datos SQL (basicamente copias de las tablas), y asi podriamos asociar los objetos a estas tablas lógicas, manteniendo toda la operatividad que tenemos ahora.

Esta idea, permitiria mantener la refactorizacion entre los objetos de Velneo y las “tablas lógicas”. Cierto es , que si se produce un cambio en la estructura de datos de SQL, deberiamos corregirlo tambien en la “tabla lógica” para que los objetos se adaptasen correctamente, pero en cualquier caso, solo habria que corregir la estructura de campos de la tabla, evitandonos realizar correcciones en todos los objetos.

Luego segui soñando, y por soñar, que no quede…

Ya que tenemos esta “tabla lógica“, porque no tener toda la funcionalidad completa, ¿que quiero decir con esto?,

Pues que, ya puestos, y con las tablas sincronizadas, entre SQL y Velneo, realizar un alta en la “tabla lógica“, o una modificación o una baja, porque no mantener actualizada la tabla SQL, diretamente, ¿no es eso lo que hace ODBC?

Pero en este caso, realizando altas, modificaciones, bajas, o búsquedas directamente con sentencias de Velneo sobre las “tablas lógicas“.

Luego de soñar todo, viene un pajarito y me dice ¿porque te complicas tanto la vida?, todo esto puede ser mas sencillo aún. ¿Como?, y el pajarito me respondio:

A la definición de tablas actual, bastaria con añadir una propiedad “Conector”, que nos permitiera indicar a que base de datos vamos a realizar la conexión: Velneo V7 (interna), a MySQL, a PostgreSQL, a Oracle, y porque no a tablas de V6 con Aplicaciones de V7, etc.

Y de paso, una propiedad más , para establecer los datos de conexión a la base de datos. Y sobre todo, poder cambiar estos datos de conexion en ejecución para poder tener varias instalaciones con la misma estructura de base de datos.

Y ahora me direis, “los pajaritos no hablan”, pero como esto era un sueño, y en los sueños todo es posible. Además, este es mi sueño y yo decido quién habla y quién no, 😀 😀 😀

Luego me despierto y pienso que ha sido un sueño bonito, y que si lo cuento, es posible que se haga realidad. 😉

Aqui podeis votar la idea:

Desarrollar directamente sobre bases de datos existentes

P.D.:

Y porque el nombre de “Tabla lógica“, pues sencillamente, porque su funcionamiento seria similar al de las “Impresoras lógicas“, y de esta forma, todos los objetos de V7 quedan asignados a un origen, y ya solo nos queda asociar la tabla lógica a la tabla SQL, de la misma forma que asociamos una impresora lógica a una impresora real instalada en el sistema.

PDF Creator    Enviar artculo en formato PDF   
comments: Closed

12 Responses to “Acceso a bases de datos externas existentes”

  1. Geproin dice:

    pio pio….

  2. agustin dice:

    Completamente de acuerdo Jose Luis. Ese tema sería de lo más interesante para todos los desarrolladores.
    Gracias por compartir tus ideas. Creo que lo del Think Tank lo tenemos que poner en marcha ya!!!!

  3. agustin dice:

    Ahoa que me acuerdo. En v6 hay una opción “crear tabla igual a externa” que permitía crear una tabla de un objeto “base de datos externa” que podría ser un buen punto de partida. Lo digo desde la más absoluta ignorancia de las dificultades técnicas que esto podría crear en el dpto de programación de Velneo, pero podría ser un buen punto de partida. :-)

  4. Interesante Don José Luis,

    Aunque una aclaración, donde dices:

    Pues que, ya puestos, y con las tablas sincronizadas, entre SQL y Velneo, realizar un alta en la “tabla lógica“, o una modificación o una baja, porque no mantener actualizada la tabla SQL, diretamente, ¿no es eso lo que hace ODBC?

    Realmente ODBC es un estandar de acceso a datos. No realiza sincronización ni nada por el estilo. La ventaja de usar ODBC, es, que “te asegura” poder estar trabajando sobre una BBDD (pongamos Oracle), y el alias ODBC podríamos cambiarlo a MySQL sin tener que hacer cambios en las sentencias, la desventaja, que es tecnología obsoleta y leeeeenta.

    Respecto a todo lo demás..Pues que estoy más que de acuerdo. Windev, dispone de un análisis, y en este análisis, pueden haber tablas de distintas BBDD. El análisis, lo único que mantiene es la estructura para que los objetos visuales conozcan como tienen que mostrar y trabajar esa información, y luego aparte, estaría la capa que realmente habla con la BBDD (o con los pajaritos). El análisis de Windev, además, permite, que si modificas algo en éste, te modificará (si quieres) los objetos donde están enlazadas para asegurar la consistencia de datos (por ejemplo, cambias un campo Fecha que está como string, a Date, y los controles donde enlaces a éste campo, lo cambiará por controles de selección de fecha), y también te sugerirá de lanzar una actualización sobre la BBDD destino para actualizar el análisis a ésta, y modificar los campos pertinentes.

    Realmente, que la estructura de la BBDD se pueda manipular desde Velneo, no creo que sea verdaderamente importante (aunque quizás sí deseable), pero sí considero bastante importante el poder enlazar una rejilla con una tabla MySql, aunque actualice con un botón Sincronizar, y no lo hiciera al vuelo.

    Como ya hablamos por el foro, hay veces que surgen proyectos donde el cliente nos “impone” la BBDD sobre la que trabajar, y, no rechazaré un proyecto, porque Velneo no lo permita.

  5. admin dice:

    @Don Giuseppe

    Ya se lo que hace ODBC, solo intentaba explicar una idea, ya se que ODBC no realiza la sincronización en tre bases de datos, solo traduce las sentencias para que las bases de datos se entiendan entre ellas y retorna los resultados.

    En cualquier caso, lo que queria indicar, es que ya puestos, para la mayoria de usuarios que no conocen SQL, seria mas facil:
    – Usar ALTA DIRECTA que utilizar la sentencia INSERT de SQL
    – Usar MODIFICAR LA FICHA SELECCIONADA, que usar la sentencia UPDATE de SQL
    – Usar BUSQUEDAS, que usar SELECT de SQL
    – etc.

    Ya se que la idea es basicamente añadir una propiedad mas en las tablas. Y algo tan sencillo, debe ser sumamente complejo de implementar para que todo funcione correctamente.

    Asi, no creo que sea una idea que pueda desarrollarse en breve, pero simplemente, la expongo para que se tenga en consideración y quizá algún dia nos sorprendan con algo parecido, y conociendo al arquitecto. Mucho mejor y seguramente más abstracto.

    Es simplemente una idea … y si de ella puede salir algo bueno, tan contento, si no, pues no habré perdido nada en absoluto.

    un saludo
    Jose Luis

    P.D. por favor, no me llame Vd. de “Don” que me hace más mayor aún. Y aunque veia Vickie al salir del cole, me siento joven de espiritu. 😉

  6. Miguel dice:

    Hola, opino que la idea es buena, pero supongo que Velneo está a otras cosas, en la parte técnica veo que el altas/bajas/modificaciones de registros no debe ser imposible, pero ya el (digamos ‘traductor’) para las otras miles de opciones, búsquedas, joins, actualizaciones (que no existen en estas BBDD), se tienen que implementar con analizadores y toa ‘la pesca’ , descartando los problemas de velocidad/desempeño, como bien dices lo veo un sueño, pero un sueño imposible :-).

    Saludos.
    Miguel.

  7. Miguel dice:

    Hola Jose Luis,

    A mi me parece un sueño muy bonito, por el que me he paseado más de una vez, y sobre todo sería clave para atacar a los grandes mutando sus BBDD a v7 sin que ellos se percaten de la metamorfosis, y una vez infectados de v7 ya no habrá marcha atras. No cambiaría ni una coma de tu sueño, por soñar que no quede.

    un saludo.
    MyAvatar

  8. cjribera dice:

    Pepero, revisa el hilo, yo ya hablado sobre esto dentro del mismpo hilo, se llama mapeo object-relational…persistencia de objetos (eso yo mismo lo he hehco en Netbans trabajando con PostGreSQL)…incluso eso lo he propuesto a Velneo…leelo algunos post encima del tuyo….

  9. admin dice:

    @cjribera

    Ya habia leido los post, cuando escribi el articulo, de hecho lo escribi por esa razon.

    He entendido perfertamente lo que querias decir, y se que la idea a sido tuya, no mia.

    Con este articulo, no he pretendido quitarte la idea, sino dar una posible solucion al problema “adaptado a Velneo V7”.

    Que hay otras herramientas que lo hacen con bases de datos SQL, me alegro. Yo solo he pretendido despejar el camino que nos lleve a la solucion del problema.

    Fijate que en cualquier caso, he puesto los enlaces al “Foro” y al “Foro de ideas”, para que los lectores puedan leer todos los comentarios que han originado este articulo.

    un saludo
    Jose Luis.

  10. cjribera dice:

    No Pepeto, la idea no es mia, je je… la persistencia y el mapeo ORM existen hace mucho….
    Me alegra saber que se entiende cual es el camino posible…pues es justamente lo que he propuesto….Aun no lo pongo en el foro ide ideas, porque busco como ponerlo lo mas claro posible para los que usan Velneo….
    Quiza ponga este link, si me lo permites…
    Saludos.
    Cesar

  11. admin dice:

    @cjribera

    Con “la idea es tuya”, me refiero a que has sido tu el que has hecho la propuesta de incluir esa funcionalidad en Velneo V7

    Por supuesto que teneis permiso para poner links a cualquier articulo del blog, siempre que querais compartir el contenido de cualquier articulo.

    un saludo
    Jose Luis

  12. cjribera dice:

    Estoy dudando si ponerlo como idea nueva, por ahora lo pondre solo como un enlace a este blog, para mayor aclaracion y que no piensen que la diea es un imposible, y que por ello no la voten….pra el que quiera votarla, esta aqui
    http://ideas.velneo.es/forums/61867-ideas/suggestions/1385231-desarrollar-directamente-sobre-bases-de-datos-exte?ref=title



Pings responses to this post