Clarion y SQL (I)

SQL, mySQL, postgreSQL y otros motores
Responder
Avatar de Usuario
Mauricio
Desarrollador de Clarion
Mensajes: 1125
Registrado: Dom Feb 06, 2011 9:34 am
Ubicación: España
Contactar:

Clarion y SQL (I)

Mensaje por Mauricio » Mié Ago 10, 2011 12:51 pm

Los motores de bases de datos se han hecho más y más populares en los últimos años gracias a las versiones gratuitas (MS SQL Express, Firebird, PostgreSQL, Oracle Express) y al óptimo desempeño de las mismas.
Sin embargo aún son muchos los clarioneros que trabajan con TPS dejando de lado las ventajas de SQL. Podemos hacer una breve enumeración de las mismas:
1) Velocidad: con un buen diseño de la base de datos la velocidad de respuesta de SQL es mayor que la de los TPS y se hace mayor cuanto mayor es la base de datos.
2) Independencia: no dependemos de Clarion como front-end y podemos usar la misma base de datos con distintos lenguajes. Los TPS son exclusivos de Clarion.
3) Simplicidad: el código SQL es, en muchos casos, más sencillo que escribir código Clarion.
4) Escalabilidad: los motores de bases de datos permiten trabajar con muchos usuarios en forma simultánea mientras que la perfomance de los TPS comienza a degradarse cuando el número de usuarios concurrentes supera los 20.
5) Documentación: hay infinidad de material de consulta sobre SQL, libros, foros de internet, etc.

Pero trabajar con SQL también tiene sus desventajas, como estas:
a) Exige un cambio de mentalidad, hay que pensar en modo SQL y no en la forma que estamos acostumbrados. Un ejemplo sencillo es la forma de hacer una actualización de precios de un determinado rubro. En TPS debemos recorrer la tabla para todos aquellos registros que cumplan la condición, asignando luego el nuevo valor en el campo precio para posteriormente hacer la actualización. Todo eso dentro de un LOOP. En SQL, en cambio, enviamos una sentencia que resuelve todo en el motor.
b) Cambios en el diccionario. Contrariamente a lo que muchos creíamos, pasar de TPS a SQL no es solo un cambio en el driver. Muchas veces nos encontraremos conque hay que hacer cambios en el tipo de datos, agregar nuevos para tener claves únicas, etc.
c) Los campos fechas. En las versiones anteriores a 2008 de SQL los campos fechas son un tipo único, datetime. Para manejarlos en forma correcta desde Clarion había que hacer un engendro, definiéndolos como string, un grupo y luego sí, los campos date y time. Tenemos la opción de dejarlos como campos Date en el dct pero después cuando hacemos una consulta externa nos encontramos con un número del cual es difícil conocer su valor exacto.
d) Mantenimiento: SQL no es solo declarar las tablas y problema resuelto. Para un máximo rendimiento tenemos que dedicarle tiempo al servidor, asegurándonos que tenemos todos los índices que necesitamos, actualizando estadísticas, controlando el crecimiento de la base de datos, etc.

Lo que sí es seguro es que SQL es un camino sin retorno. Una vez que se empieza a trabajar con él no se quiere volver a TPS nunca más. Ahora bien, a la pregunta ¿debo cambiar todos mis sistemas a SQL? la respuesta es no. Todo depende del tipo de sistema, de quién lo esté usando, etc. Si tenemos un pequeño sistema de facturación instalado en un solo negocio donde a lo sumo lo usarán 3 usuarios en forma simultánea, no tiene sentido instalar un SQL Express y convertir el sistema. Pero si queremos aspirar a algo más grande donde seamos capaces de competir seriamente con otros desarrolladores, entonces SQL se convierte en indispensable.

Una vez decididos a trabajar con SQL debemos elegir cuál de ellos usaremos. En mi caso particular elegí SQL Express principalmente porque me siento cómodo con él, hay muchos libros para leer, es fácil de administrar y otras razones más. Seguramente habrá otros motores que lo superen en ciertos aspectos y tengan un rendimiento menor en otros. Lo importante, al igual que con el lenguaje que utilicemos para programar, es que nos sentamos cómodos.

Si trabajamos con MS SQL tenemos la ventaja de que Clarion ya viene con el driver nativo para él. Para los otros debemos utilizar el driver ODBC y asegurarnos de tener el driver adecuado para la versión de SQL que utilicemos lo cual a veces se transforma en un problema más, aunque no algo insalvable.

El driver ODBC nos permite, en teoría, cambiar la cadena de conexión y conectarnos a otra base de datos. Digo en teoría porque supuestamente los distintos SQL deberían seguir un estándar pero, como no podía ser de otra forma, las distintas empresas hicieron lo que se les antojó. Entonces una sentencia que en MS SQL se ejecuta puede que de error en Oracle, o una función existente en Oracle no tenga correlativo en PostgreSQL y así. Debemos tener en cuenta que si queremos hacer un sistema que se pueda ejecutar en distintos motores tendremos que trabajar mucho más y algunas veces perderemos ventajas propias del motor. Así que es importante tener en claro cuál es el objetivo.

En los siguientes artículos intentaré volcar un poco mi experiencia con MS SQL. Por favor, no tomen todo como palabra santa, estoy seguro que hay formas mejores de hacer ciertas cosas y no duden en sugerirlas, así todos aprendemos.
Mauricio, básicamente usando Clarion 6.3
www.tdcsoftware.com y www.clarioneros.com/blog


PabloVM
Novato
Mensajes: 19
Registrado: Mar Feb 22, 2011 10:37 pm
Contactar:

Re: Clarion y SQL (I)

Mensaje por PabloVM » Mié Ago 10, 2011 1:46 pm

Mauricio, exelentes explicaciones y detalles muy importantes.

Saludos.-

oms647
Mensajes: 6
Registrado: Sab Feb 19, 2011 7:07 pm
Contactar:

Re: Clarion y SQL (I)

Mensaje por oms647 » Vie Ago 12, 2011 10:37 am

Gracias Mauricio por el aporte, realmente muy bueno, gracias por todo.

Saludos

Oscar M. Schmidt

salvaram
Novato
Mensajes: 47
Registrado: Mar Mar 08, 2011 6:09 pm
Contactar:

Re: Clarion y SQL (I)

Mensaje por salvaram » Mar Mar 06, 2012 7:17 pm

Mauricio... muy interesante... continuare leyendo los demas, pues requiero hacer el cambio.


Gracias.


Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 21 invitados