No hay soluciones mágicas. Y aquí se han dicho muchas verdades. Todas valederas. Pero no se ha analizado correctamente el requerimiento de Oscar, que por cierto, tampoco veo del todo explicitado.
Migrar URGENTE aplicación MONSTRUOSA de DBF a MARIADB.
Si quieres hacer algo urgente, hay un error de fecha de comienzo de la tarea, no se empezó con tiempo, Urgente implica poco tiempo (que es poco tiempo?), si es porque el cliente lo pide intempestivamente, que pague, con plata, se puede en general resolver todo urgente, si es por demora tuya Agua y Ajo. Que definís por monstruosa, monstruosamente grande, monstruosamente fea, o ambas (y si es ambas, que carajo estas haciendo con mi suegra?! ;-D).
Se propusieron varias opciones. Por ejemplo, normalizar la BD, no se si es necesario, pero normalizar implica repensar el negocio. Es como decir que viene un tsunami y decides construir un dique.
Se discuten conceptos de cliente servidor u otras cosas. No puedo deducir de lo que dice Oscar que el sistema no tenga ya arquitectura cliente servidor (donde las dbfs están en una sola máquina, servidor de archivos), de hecho, foxpro se destacaba en sus comienzos de la competencia por el rendimiento en entornos de ese tipo.
Los problemas de modificar la aplicación, va a estar, entiendo, acotada a como se acceden a los datos (lecturas, modificaciones, etc.) y como los datos accedidos se relacionan con los formularios y los reportes (y con que están hechos los reportes).
Si se usa el esquema xbase (append, replace, do while, aún scan, seek, etc.) independientemente de lo monstruosa de la aplicación, tal como dijeron, el chip a cambiar es un tronco. (chip=astilla ;-D). Hay que convertir toda la lógica a cursores y sql (no conozco la herramienta de Antonio, por lo que no se si usando esta o directamente SQLPassthru, el esfuerzo de adaptación es "monstruoso". Y si los formularios estaban conectados directamente a tablas, otro gran trabajo de "reconexionado"
Como entiendo que urgente impide rediseñar la bd, y según han indicado, foxydb utiliza autoincrementales, habría una imposibilidad de aplicación, ya que implica lo mismo que normalizar, pero bueno, eso podrá ser retificado/ratificado por los que conocen la herramienta.
Pasar a una arquitectura en capas (ideal), lo veo inviable por la urgencia.
Entonces, como es algo urgente: Solo se tiene tiempo de convertir los dbfs en tablas idénticas en mariadb, y pasa los datos tal cual, con las adaptaciones de algunos como fechas. Todo el uso de filtros, implicará crear vistas sobre la bd, con los wheres que oficien de filtros y acceder a los datos a través de esas vistas.
Donde se usaban SET RELATIONS, la estrategia es la misma, se crean vistas equivalentes.
Toda la lógica de acceso se debe pensar en función de cursores (listados, reportes, browses, procesos por lotes etc.)
Toda la lógica de append blank replace deberá convertirs a INSERTs, toda la lógica de REPLACEs a UPDATES WHERE!!!!.
Lo interesante es que toda esa conversión, se puede probar contra las mismas dbfs (eso es soportado por fox) y una vez logrado eso "envolver" las sentencias SQL (sobre dbf) con SQL Passthru y conexiones a la bd.
En el proceso de conversión. Sugiero:
a) Codificar los programas de migración de datos de dbf a mariaDB
b) Migrar todos los programas de reportes tipo lote, no los tipos on-lines (facturas) porque estos se pueden probar procesando a) y luego el reporte. De esa manera, comparar con los reportes directos (sin convertir) y detectar diferencias, que implicarían errores de conversión.
c) Migrar módulos que procesen datos tipo lote y probar a, b y c, para verificar diferencias (puede que al convertir una bd en otra te surjan diferencias (tengo entendido que mariadb no maneja datos currency y tiene que crearse el equivalente con decimal). Y los datos de fecha, muchas veces crean algunas diferencias.
d) Y después empezar a convertir programas de modifican datos, desde los más simples a los más complejos, para ir tomándole la mano paso a paso.
De esta manera, reducís los tiempos de paralelo, que es lo que más pueden criticarte, y relativamente rápido, estas mostrando producción con el sistema convertido.
No hay herramientas de conversión rápidas. Las costumbres de codificación de cada uno, son muy difíciles de cambiar, y en caso de urgencia KISS.
Saludos: Miguel, La Pampa (RA)
Larga Vida y Prosperidad
Que la Fuerza los acompañe