domingo, julio 26, 2009

ADS 9.1... uno nunca termina de aprender.

Estos 3 últimos días he estado haciendo una implementación de Advantage Database Server para un importante grupo ferretero de México, cuya reseña haré en los próximos días.

Es increíble la cantidad de usuarios de Clipper que aún existen, y en especial en México hay muchísmos usuarios de los sistemas de Abits: Admin, Aconta, Anomina y Abancos. Abits es una empresa que hace unos 10 años se les ocurrió vender programas de gestión administrativa con código fuente hechos en CA-Clipper y que vendió unos cuantos miles de unidades, aún hoy, muchas empresas usan esos programas, en algunos casos con bastantes usuarios y enormes volúmenes de datos, muchos de estos usuarios son clientes nuestros de Advantage Database Server, como en esta última implemenación.

Tenía mucho tiempo de no hacer una implementación de Advantage con CA-Clipper, la mayoría de las implementaciones que hacemos son para (x)Harbour y otros lenguajes de programación.

Yo creía que conocía todos los secretos de ADS, pero no cabe duda que cada día se aprende algo nuevo, como en el caso de esta implementación.

Las últimas implemenaciones de ADS que hice con CA-Clipper fueron con la versión 7.1 de ADS, en esa versión se introdujo un "cliente" TCP/IP para aplicaciones MS-DOS llamado AdsDosIp. Este es un programa que permite a los programas en CA-Clipper conectarse al servidor remoto ADS usando protocolo TCP/IP, el problema de los programas en DOS, es que el sistema operativo no soporta envío de paquetes TCP, con lo cual es necesario este programa para que un programa CA-Clipper / DOS se conecte a un servidor ADS ya sea Novell, Linux o Windows usando protocolo TCP/IP.

En esta versión el AdsDosIp si bien no daba mejor desempeño a la aplicación, si te ofrecía todas las ventajas de ADS excepto un aumento de velocidad, hay que ver las quejas que me tuve que comer porque muchos clientes cambiaron de Novell a Windows y la caida en la velocidad de la aplicación si que era notable.

Para la versión 9.1 las cosas han cambiado radicalmente, por un lado el desempeño del servidor ADS se ha mejorado sustancialmente, pero también se hicieron algunos cambios en el cliente para IP de CA-Clipper, que hay que ser un poco mañosos para saber donde están.

Si bien no existe un cliente CA-Clipper específico para la versión 9.1 de ADS (se sigue usando el cliente de la versión 7.1), el equpo de Sybase iAnywhere hizo algunos cambios en el año 2008 para el cliente IP para Clipper que aceleran tremendamente la velocidad de las aplicaciones al servidor Advantage usando el AdsDosIp.

Buscando en la base de conocimientos de Advantage como acelerar el acceso a los datos y después de varias horas dándole vuelas al asunto en los grupos de noticias de ADS y en la base de conocimientos, me encontré con este tema, que me llevó a esta página en la Central de código de ADS donde encontré las nuevas libs de comunicaciones IP para usar con CA-Clipper y las versiones 8.1 y 9.1 de Advantage, estas librerías funcionan estupendamente y el acceso a los datos ahora sí es tremendamente rápido para aplicaciones CA-Clipper / MS-DOS, como en los viejos tiempos de los servidores Novell y lo mejor de todo SIN TOCAR EL CODIGO FUENTE, basta con relinkar el programa con las LIBs nuevas y listo, a funcionar, los resultados, como siempre, impresionantes.

Otra cosa que aprendí en esta implementación, es que en la versión 9.1 ya no es necesario compartir una carpeta en el servidor para accesar a los datos y que también es posible utilizar discos duros externos tipo NAS (Network Attached Storage) con Advantage Database Server.

Veamos la primer característica:

En versiones anteriores de ADS, se podía proteger los datos simplemente no dándole acceso a los usuarios a la carpeta del servidor donde están almacenados los DBFs, sin embargo, sí era necesario compartir el recurso, pero sin asignarle usuarios, esto si bien era un mecanismo de protección eficiente, dejaba un recurso compartido a la vista del "entorno de red", aunque el cliente no tuviera acceso a ese recurso compartido, este quedaba a la vista de todo el mundo.

En la versión 9.1 ADS introduce los Alias del lado del Servidor (Server-Side Aliases), esta característica esta disponible para Linux, Novell y Windows, pero solo para los servidores remotos o internet, el servidor LOCAL no puede usar esta característica.

Para crear un Server-side alias, basta con crear un archivo llamado ADSSERVER.INI en la misma carpeta que esté configurada para el archivo de errores de ADS (por default la unidad C:\ del servidor), este es un ejemplo del archivo ADSSERVER.INI:


[ServerAliases]
order_db=c:\data\orders
bikes=\\server1\shared_drive\data
flights_db=c:\data


Este archivo .INI solo tiene una sección [ServerAliases], cada entrada de la sección es el nombre del alias y la ruta donde están los datos CON RESPECTO AL SERVIDOR, las carpetas de los datos también pueden ser referenciadas por la UNC, pero no se pueden usar unidades de red MAPEADAS.

Para usar estos servidores, en el código fuente se hace referencia a ellos al momento de conectar con el servidor, ya sea por medio de un diccionario, o de una ruta en un USE de un archivo DBF, siempre indicando el nombre del servidor, seguido del ALIAS. Ejemplos:

USE \\servidor\flights_db\usuarios.dbf
AdsConnect60("\\servidor\order_db\diccionario.add",3,"usuario","password")

Es importante indicar el nombre del servidor (también se puede utilizar la dirección IP : PUERTO, para resolver la ubicación del server), porque ADS necesita saber donde buscar el archivo con los Alias del lado del servidor.

De esta característica se desprende el poder usar un servidor NAS (disco duro externo) para almacenar archivos en estos dispositivos.

Si el servidor NAS puede ser ubicado por medio de una UNC, entonces se puede crear un alias del lado del servidor para direccionar el almacenamiento al servidor NAS, hay que tener en cuenta que al ser un dispositivo externo, la velocidad de acceso a los datos no será la misma que si los datos estuvieran en un disco duro dentro del servidor, también tomar en cuenta que la comunicación al servidor NAS depende de la conexión de la red, si la comunicación con el NAS se pierde, se puede producir corrupción de los datos.

Supongo que hay mas secretos en el servidor Advantage 9.1, pero tendré que irlos descubriendo poco a poco y por su puesto documentarlos en OP.

2 comentarios:

Anónimo dijo...

Genial maestro!!! Era una cuenta pendiente el tema de la velocidad en redes tcp/ip con clipper y advantage. Muchas gracias.

Kike dijo...

Hola Rene,

LLegué a tu blog, buscando ayuda de como configurar ADS.

Actualmente estoy tratando de migrar la programacion de clipper a Delphi utilizando las mismas bases de datos en este proceso.

Ahi donde me recomiendan ADS y que me parece fabuloso! El tema es que tengo el servidor de ADS montado en un win server 2008 y cuando ejecuto un programa clipper desde el mismo servidor funciona, pero cuando lo hago desde un cliente no encuentra ADS.

En el servidor instale el protocolo IPX y tambien tengo instlado TCP/IP y en el cliente estoy utilizando ADSDOSIP.

Me ayudarias por favor ?
Muchas Gracias

Enrique
ejaimez@gmail.com