| Artículos | 01 SEP 1997

Programación de bases de datos

Tags: Histórico
J. Sancho.

Los programadores no pueden ser ajenos a los nuevos modelos de diseño de bases de datos, tanto en soluciones de escritorio como en los grandes servidores.

Es difícil que en una aplicación no se utilice una base de datos. Incluso en aquellas aplicaciones que no están destinadas al mundo empresarial, la base de datos es algo fundamental, pues siempre hay algo que almacenar. Evidentemente, dada la cantidad de situaciones distintas en las que se puede utilizar una base de datos, es lógico que existan múltiples tipos, así como muchas formas distintas de acceder a ellas.

Breve introducción a las bases de datos

Las bases de datos actuales son todas relacionales, con un conjunto de tablas que se encuentra dividido en filas y columnas. Para acceder a las bases de datos relacionales, IBM desarrollo el lenguaje SQL. Pese a que la gran mayoría de las bases de datos fueron implementando este lenguaje, la forma de controlarlo desde un programa era diferente en función del fabricante. Para evitar estos problemas se desarrollaron controladores de acceso, siendo uno de los más famosos el ODBC, que proporcionan al programador un conjunto de funciones (API) estándar para acceder al motor. Cada fabricante suele desarrollar junto a la base de datos el controlador correspondiente, de igual forma que cada fabricante de impresoras fabrica el controlador de la misma. Con esto se consiguió que los programadores pudiéramos acceder de forma estándar a cualquier base de datos que incorporase el correspondiente controlador. A este tipo de software intermedio se le suele denominar middleware (palabra utilizada siempre que existe software intermedio). Sin embargo, con el fin de facilitar aún más las cosas, algunos fabricantes de herramientas de desarrollo dotaron a éstas con una nueva capa intermedia de software (motor de base de datos) intercalada entre el código fuente del programa y el controlador ODBC, o directamente entre el programa y la base de datos. En la actualidad los dos motores de base de datos más comunes son Microsoft Jet y BDE (Borland Database Engine).

Finalmente, con la introducción de herramientas de desarrollo rápido (RAD) han proliferado los controles y los objetos de acceso a datos. Estos establecen un puente entre la interfaz del usuario y el motor de acceso a datos, por lo que la tarea del programador, tal y como se ve, queda reducida a la mínima expresión. Actualmente nos encontramos en esta etapa, donde los controles y los objetos de acceso a datos gobiernan las nuevas aplicaciones. En la Tabla 1 se han mostrado los controles, objetos y motores más difundidos en la actualidad y sobre los que se apoyan la mayoría de los programadores.

Borland Database Engine

BDE (Borland Database Engine) nació como solución al acceso a las bases de datos desde los lenguajes clásicos. Inicialmente únicamente proporcionaba acceso a unas cuantas bases de datos, pero en la actualidad se ha convertido en una potente herramienta para el programador que desee acceder a prácticamente cualquier BD. El API que proporciona a los programadores se denomina Integrated Database Application Program Interface (IDAPI) y, entre otras, cuenta con las características que detallamos a continuación. En primer lugar proporciona un acceso unificado a bases de datos como Paradox, dBASE, InterBase, Oracle, Sybase e Informix, además de poder acceder a cualquier base de datos que posea el correspondiente controlador ODBC. La última versión incluida en Delphi 3 incorpora también conectividad nativa con MS Access, FoxPro, DB2 y AS/400 en la versión Delphi/400 y C++Builder/400.

BDE está formado por el ya mencionado IDAPI, un motor (engine) de consultas en SQL y QBE (Query By Example), tres controladores directos para acceder a Paradox, dBASE y ficheros de texto, controladores nativos opcionales para Oracle, Sybase, Informix e Interbase y conexión ODBC. Al tratarse de un software orientado a componentes, BDE contiene una serie de servicios compartidos, con el fin de facilitar el desarrollo y maximizar la reutilización. Por ejemplo, un administrador permite a todos los controladores compartir el mismo buffer, de forma que los buffers propietarios de algunos controladores pueden ser ubicados dentro del mismo buffer general. Pese a que los controladores no tienen por qué compartir este buffer general, si se hace, los recursos del sistema se maximizan. Con BDE se consigue una alta independencia del sistema operativo, pues éste queda aislado, controlando de forma directa la entrada y salida de archivos, accesos a la red y ubicación de memoria.

Con el fin de evitar los típicos cachés que hay que realizar para trabajar con BLOBs, BDE posee su propio servicio de caché. Éste es accesible desde todos los controladores y, además, es posible abrir múltiples BLOBs de forma simultánea. Una característica muy interesante es que el caché de BLOBs permite un acceso aleatorio, evitando así tener que transferir cada uno de ellos a un archivo. Esta es una característica que BDE implementa cuando la fuente de datos no lo permite hacer de forma directa.

Mediante un servicio de reestructuración que actualmente está disponible para cualquier base de datos, se proporciona al desarrollador la posibilidad de añadir o modificar campos o cualquier aspecto estructural de una tabla. Este mecanismo crea una nueva tabla que refleja las modificaciones en la estructura de la original y transfiere todos los registros adaptándolos de forma automática. Mediante la herramienta SQL Explorer permite realizar modificaciones de la estructura de cualquier tabla utilizando SQL.

Otra característica interesante de BDE es que permite la utilización de cursores enlazados dando posibilidad de establecer relaciones de una a muchas entre dos tablas. Mediante esta característica se permite la creación de complejas aplicaciones multitabla sin demasiada programación.

Todos los controladores nativos y todos los servicios compartidos de BDE soportan controladores de lenguaje, por lo que todo el entorno BDE cuenta con soporte internacional, pudiendo así desarrollar aplicaciones internacionales utilizando el mismo engine.

Microsoft Jet

MS Jet es el motor de bases de datos que Microsoft proporciona en la mayoría de sus productos. Se trata de un producto que es independiente de la aplicación que lo utilice y, por este motivo, puede ser utilizado desde los clásicos Excel o Word hasta las herramientas de programación más avanzadas, como Visual C++ o Visual Basic.

Mediante los objetos de acceso a datos (DAO) el programador tiene a su alance un control directo sobre la base de datos. Microsoft Jet puede controlar directamente ODBC, aunque no se reduce únicamente a él, ya que puede acceder, mediante ISAM, a un numero limitado de bases de datos, como FoxPro, Paradox, dBASE, Lotus 123, Excel y ficheros de texto.

Las aplicaciones o herramientas de programación que utilicen Microsoft Jet, pueden almacenar sus propios objetos en la base de datos, así por ejemplo, en Access se almacenan dentro de la misma base de datos formularios, macros y módulos de programa. Dentro de la base de datos los registros son organizados en páginas. Cada página puede contener más de un registro, pero nunca un registro puede superar el tamaño de una página. Algunos campos particulares, como Memos y objetos OLE, se suelen almacenar en páginas separadas del registro que los contiene. Otra cualidad es que los registros contenidos dentro de una página no tienen por qué tener la misma longitud.

La ingeniería de consulta (query engine) de Microsoft Jet soporta la recuperación y manipulación de datos desde SQL, aunque también se pueden utilizar DAO para programar el acceso a los datos de las tablas. Dentro del terreno de la seguridad, Microsoft Jet permite definir usuarios y grupos, así como fijar los permisos de cada objeto de la base de

Contenidos recomendados...

Comentar
Para comentar, es necesario iniciar sesión
Se muestran 0 comentarios
X

Uso de cookies

Esta web utiliza cookies técnicas, de personalización y análisis, propias y de terceros, para facilitarle la navegación de forma anónima y analizar estadísticas del uso de la web. Consideramos que si continúa navegando, acepta su uso. Obtener más información