Quantcast
Channel: Planet Object Pascal
Viewing all articles
Browse latest Browse all 1725

Pascal y Lazarus: La librería IBDAC

$
0
0


En nuestra empresa buscábamos una librería rápida y confiable para conectar nuestros sistemas a Firebird, y luego de hacer pruebas con las librerías nativas de Lazarus y varias otras librerías comerciales, nos decidimos por IBDAC.
IBDAC (Interbase Data Access Components) es una librería comercial, desarrollada por Devart. La primera versión es del año 2006, aunque recién en el 2008 se le agregó soporte para Free Pascal, y en el 2011 para Lazarus. La versión actual es la 5.0.

Aunque cada versión está certificada para una versión específica de Lazarus / Free Pascal, en la práctica la he podido instalar sin problemas en todas la versiones de Lazarus posteriores a la 0.9.30.

IBDAC instalada en Lazarus 1.0.10
IBDAC instalada en Lazarus 1.0.10

... instalada en Typhon 4.3 de 32 bits
... instalada en Typhon 4.3 de 32 bits

... instalada en Typhon 4.3 de 32 bits
... instalada en Typhon 4.3 de 64 bits
Al instalar esta librería aparecen dos nuevos tabs en la barra de herramientas de Lazarus. El primer tab lleva por título "Interbase Access" y contiene los componentes de acceso a la base de datos. El título del segundo tab es "Interbase Services", contiene los componentes de acceso administrativo, estadístico y de configuración de la base de datos. Los componentes TCRBatchMove y TVirtualTable aparecen en el tab "Data Access".

La librería IBDAC tiene una enorme cantidad de funciones y características, entre las que destacamos las siguientes:

Modo desconectado: En este modo la conexión se hace solamente cuando se la necesita. Para habilitarlo se debe setear en True la propiedad DisconnectedMode de la conexión. Luego de realizar las llamadas al servidor la conexión se cierra en forma automática. Los datasets permanecen abiertos aunque la conexión esté cerrada. Cuando se actualiza la información del dataset la conexión se abre, se envía la actualización, y se vuelve a cerrar.
El modo desconectado es muy útil en redes inseguras, pero tiene el inconveniente de que cada conexión requiere ser autorizada, y eso consume tiempo. Para evitarlo, podemos usar el componente TCustomDAConnection, que mantiene un pool de conexiones abiertas. De esa forma, cada vez que el sistema necesita conectarse a la base de datos, en vez de construir una nueva conexión utiliza una de las disponibles en el pool, reduciendo enormemente los tiempos.
Es recomendable además setear a True la opción LocalFailover de la conexión.

Local maestro-detalle: Cuando esta propiedad del TCustomDADataSet se pone en True las relaciones maestro-detalle usan filtrado local, sin referirse al servidor. De otro modo el dataset detalle ejecuta un query cada vez que se selecciona un registro en el dataset maestro. Esta opción es muy útil para reducir la cantidad de llamadas al servidor, mejorando el uso de recursos, aunque no es recomendable cuando la tabla detalle contiene demasiadas filas.   

Unicode: IBDAC soporta el formato Unicode UTF-8, para habilitar su uso utilizamos la propiedad  UseUnicode de la conexión. El valor de esta propiedad afecta los resultados de las consultas y procedimientos almacenados. Si se va a utilizar este formato, hay que tener en cuenta las recomendaciones del manual sobre las conversions entre StringField y WideStringField.

Encriptación de datos: IBDAC permite encriptar y desencriptar campos en la base de datos. Para eso es necesario agregar el componente TCREncryptor al dataset y especificar qué campos serán encriptados. Así, cuando se agregue o modifique la información de la tabla, se encriptará en el lado del cliente antes de guardarla. Del mismo modo, el componente desencriptará en forma automática al leer desde la base de datos.
Existen dos formas de trabajar: guardamos solamente los datos encriptados, o bien les agregamos el GUID y el hash. La segunda forma es la preferible en términos de seguridad, aunque consume más recursos.
TCREncryptor soporta la encriptación solamente de campos string o binarios, por razones de tamaño de buffer. Si es necesario encriptar campos de otro tipo (como fechas, números, etc.), es necesario crear un campo de tipo binario o BLOB en la tabla, y luego convertirlo en el tipo correcto en el lado cliente, con ayuda del Mapeo de Tipo de Datos.

Mapeo de Tipo de Datos: es un recurso que permite crear mapeos entre tipos de campos de la base de datos y tipos de datos Delphi.En versiones anteriores, donde el Mapeo de Tipo de Datos o ea soportado, IBDAC establecía automáticamente la correspondencia entre ambos tipos. En las versiones que soportan el mapeo, la correspondencia puede establecerse en forma manual.
El mecanismo es inteligente, pueden establecerse reglas para ignorar los errores de conversión, en caso de desbordes numéricos o de cadena.

CachedUpdates: Cuando está habilitada, esta propiedad permite que las modificaciones a un dataset (modificaciones a un registro, agregar un nuevo registro, borrar un registro) se guarden en una cache interna del lado cliente en lugar de ser escritos directamente a las tablas de la base de datos. Cando los cambios están completos, todos los cambios se escriben dentro de una sola transacción.
Este mecanismo es especialmente útil para aplicaciones cliente trabajando con servidores remotos, ya que de esta forma se reducen la cantidad de transacciones y los tiempos empleados, disminuyendo por lo tanto el tráfico de red.

Tablas Virtuales: Con el componente TVirtualTable es posible almacenar datos en forma independiente de la base de datos. Los campos de la tabla pueden ser definidos tanto en tiempo de diseño como en runtime. Se pueden definir filtros, así como crear índices sobre los campos de la tabla. Dispone de los métodos Locate y LocateEx para hacer búsquedas. Es posible hacer persistente la información ingresada en tempo de diseño usando la opción voStored. En tiempo de ejecución las modificaciones se pueden guardar usado el método SaveToFile y posteriormente recuperar llamando al método LoadFromFile.

Monitoreo: Es posible monitorear y analizar las llamadas a la base de datos hechas por nuestras aplicaciones, utilizando la herramienta gratuita dbMonitor. Los eventos puede ser ordenados y filtrados por descripción, timestamp, duración o estado.

En la práctica, luego de adoptar IBDAC como nuestra principal herramienta de acceso a bases de datos, hemos desarrollado dos proyectos comerciales - Capital 5 y Visual Sueldos 5.10 (para la empresa Logosoft de Argentina) - y varias herramientas de uso interno, incluyendo un CRM y . Entre nuestros planes está el testeo deotras herramientas del mismo fabricante.





Viewing all articles
Browse latest Browse all 1725

Trending Articles