UNIDAD 4.- TECNOLOGÍAS DE CONECTIVIDAD DE BASES DE DATOS
Las tecnologías que se emplean para la
conectividad entre los datos y la aplicación, se ha convertido en un factor muy
importante a la hora de desarrollar un proyecto web que cuente con
funcionalidad de acceso a datos. A continuación se describen las tres
principales tecnologías que se usan más para conectar bases de datos.
4.1 ODBC
Introducción
Open Database Connectivity (ODBC) es la
interfaz estratégica de Microsoft para obtener acceso a datos en un entorno
heterogéneo de relacionales y no - relacionales sistemas de administración de
la base de datos. Basado en la
especificación de interfaz de nivel de llamada del grupo de acceso de SQL, ODBC
proporciona una forma abierta, independiente del proveedor de acceso a datos
almacenados en una gran variedad de propietario equipo personal,
minicomputadoras y las bases de datos de mainframe.
ODBC alivia la necesidad de aprender múltiples interfaces de programación de aplicaciones para los programadores corporativos y fabricantes independientes de software. ODBC proporciona ahora una interfaz de acceso de datos universal.Con ODBC, los desarrolladores de aplicaciones pueden permitir que una aplicación al mismo tiempo tener acceso, ver y modificar los datos procedentes de múltiples bases de datos diferentes.
ODBC es un componente básico de la arquitectura de servicios abiertos de Microsoft Windows. Apple ha respaldado ODBC como una clave de habilitación de la tecnología de anuncio de soporte en System 7 en el futuro. Con soporte de la industria cada vez más, ODBC está rápidamente emergiendo como un sector importante estándar para el acceso a datos para las aplicaciones de Windows y Macintosh.
ODBC alivia la necesidad de aprender múltiples interfaces de programación de aplicaciones para los programadores corporativos y fabricantes independientes de software. ODBC proporciona ahora una interfaz de acceso de datos universal.Con ODBC, los desarrolladores de aplicaciones pueden permitir que una aplicación al mismo tiempo tener acceso, ver y modificar los datos procedentes de múltiples bases de datos diferentes.
ODBC es un componente básico de la arquitectura de servicios abiertos de Microsoft Windows. Apple ha respaldado ODBC como una clave de habilitación de la tecnología de anuncio de soporte en System 7 en el futuro. Con soporte de la industria cada vez más, ODBC está rápidamente emergiendo como un sector importante estándar para el acceso a datos para las aplicaciones de Windows y Macintosh.
DEFINICIÓN
Open DataBase Connectivity (ODBC) es un
estándar de acceso a las bases de datos desarrollado por SQL Access Group en 1992. El objetivo de ODBC es hacer
posible el acceder a cualquier dato desde cualquier aplicación, sin importar
qué sistema de gestión de bases de datos (DBMS) almacene los
datos. ODBC logra esto al insertar una capa intermedia (CLI) denominada nivel
de Interfaz de Cliente SQL, entre la aplicación y el DBMS. El propósito de esta
capa es traducir las consultas de datos de la aplicación en comandos que el
DBMS entienda. Para que esto funcione tanto la aplicación como el DBMS deben
ser compatibles con ODBC, esto es que la aplicación debe ser capaz de producir
comandos ODBC y el DBMS debe ser capaz de responder a ellos. Desde la versión
2.0 el estándar soporta SAG y SQL.
El software funciona de dos
modos, con un software manejador en el cliente, o una filosofía
cliente-servidor. En el primer modo, el driver interpreta las conexiones y
llamadas SQL y las traduce desde el API ODBC hacia el DBMS. En el segundo modo
para conectarse a la base de datos se crea una DSN dentro del ODBC que define los parámetros, ruta y características
de la conexión según los datos que solicite el creador o fabricante.
Para
conectar con ODBC una base de datos se ha de crear un DSN, que es un nombre que
asociamos a una conexión por ODBC para referirnos a ella desde las aplicaciones
o programas que deban conectarse con la base de datos.
Cualquier base de datos que se pretenda utilizar desde aplicaciones Windows debe tener su propio driver ODBC. Por ejemplo, MySQL dispone de un Driver ODBC que se puede descargar desde su página web. Las bases de datos Access (Microsoft Jet) y SQL Server de Microsoft también tienen su driver ODBC y este ya se encuentra instalado en el Windows de fábrica.
Una versión
de 64 bits del sistema operativo Microsoft Windows incluye las siguientes
versiones de la herramienta Administrador de orígenes de datos de Microsoft
Open Database Connectivity (ODBC) (Odbcad32.exe):
·
La versión de 32 bits del
archivo Odbcad32.exe se encuentra en la carpeta %systemdrive%\Windows\SysWoW64.
·
La versión de 64 bits del
archivo Odbcad32.exe se encuentra en la carpeta %systemdrive%\Windows\System32.
El
archivo Odbcad32.exe muestra los siguientes tipos de nombres de origen de datos
(DSN):
·
DSN de sistema
·
DSN de usuario
Síntoma 1
Muestra la versión
de 32 bits de la herramienta Administrador de ODBC DSN de sistema de 32 bits,
usuario DSN de 32-bit y 64-bit DSN. Muestra
la versión de 64 bits de la herramienta Administrador de ODBC DSN de sistema de
64 bits, usuario DSN de 32-bit y 64-bit DSN.
Síntoma 2
La
función SQLDataSources devuelve todas las versiones de usuario DSN,
independientemente de la arquitectura de la aplicación. La
función SQLDataSources que se llama en una aplicación de 32 bits
devuelve exclusivamente DSN del sistema para los controladores de 32 bits, pero
devuelve DSN de usuario de los controladores de 32 bits y controladores de 64
bits.De forma similar, la función SQLDataSources que se llama en una aplicación de 64
bits devuelve exclusivamente DSN del sistema para los controladores de 64 bits,
pero devuelve DSN de usuario de los controladores de 32 bits y controladores de
64 bits. Por lo tanto, si la
aplicación realiza una conexión utilizando un DSN que se devuelve desde la función SQLDataSourcesde usuario,
puede recibir el mensaje de error siguiente:
No
se encontró el nombre de origen de datos y se especificó ningún controlador
predeterminado
Por ejemplo,
considere el siguiente escenario. Crear
un DSN de usuario para el controlador de 32 bits "Microsoft Access Driver
(*.mdb)". Este controlador
no tiene una versión de 64 bits correspondiente. La función SQLDataSources que se llama en una aplicación de 64
bits, devuelve este DSN de usuario de 32 bits. Sin embargo, si realiza una conexión a
través de este DSN de usuario de 32 bits, recibirá el mensaje de error que se
ha mencionado anteriormente en esta sección.
Conectar con datos y recuperarlos en ADO.NET
4.2 ADO.NET
Introducción
El ADO.NET es un conjunto de componentes
del software que pueden ser usados por los programadores
para acceder a datos y a servicios de datos. Es una parte de la biblioteca de
clases base que están incluidas en el Microsoft .NETFramework. Es comúnmente usado por los
programadores para acceder y para modificar los datos almacenados en un Sistema
Gestor de Bases de Datos Relacionales, aunque también puede ser usado
para acceder a datos en fuentes no relacionales. ADO.NET es a veces considerado
como una evolución de la tecnología ActiveX
Data Objects (ADO), pero fue cambiado tan extensivamente
que puede ser concebido como un producto enteramente nuevo.
DEFINICION:
ADO.NET es un conjunto de clases que exponen servicios de acceso
a datos para el programador de .NET. ADO.NET ofrece abundancia de componentes
para la creación de aplicaciones de uso compartido de datos distribuidas.
Constituye una parte integral de .NET Framework y proporciona acceso a datos
relacionales, XML y de aplicaciones. ADO.NET satisface diversas necesidades de
desarrollo, como la creación de clientes de base de datos de aplicaciones para
usuario y objetos empresariales de nivel medio que utilizan aplicaciones,
herramientas, lenguajes o exploradores de Internet.
Novedades en
ADO.NET
Las
siguientes características son nuevas en ADO.NET versión 2.0.
Proveedores administrados
Enumeración
de servidores
- Ofrece compatibilidad con la enumeración de
instancias activas de Microsoft SQL Server 2000 y posterior. Para obtener
más información, veaEnumeración de instancias de SQL Server.
Procesamiento
asincrónico
- Permite realizar operaciones asincrónicas de
base de datos mediante una API modelada después del modelo asincrónico que
utiliza .NET Framework. Para obtener más información, vea Realización de operaciones asincrónicas.
Varios
conjuntos de resultados activos (MARS)
- Permite que las aplicaciones tengan más de
un SqlDataReader abierto
en una conexión cuando cada instancia de SqlDataReader se
inicia desde un comando distinto. Para obtener más información, vea Uso de varios conjuntos de resultados activos.
Operaciones
de copia masiva
- Permite realizar inserciones masivas rápidas
mediante el proveedor de datos de .NET para SQL Server. Para obtener más
información, veaRealización de operaciones de copia masiva.
Nuevos
tipos de datos máximos de SQL Server
- Ofrece compatibilidad con los tipos de
datos varchar(max), nvarchar(max), varbinary(max) en
SQL Server 2005. Para obtener más información, veaTrabajo con tipos de valores grandes
Tipos
definidos por el usuario de SQL Server
- Ofrece compatibilidad con tipos de datos
definidos por el usuario (UDT) en SQL Server 2005. Para obtener más
información, vea Creación y uso de tipos definidos por el usuario.
Notificaciones
de SQL Server
- Permite que las aplicaciones .NET Framework
envíen un comando a SQL Server y soliciten que se genere una notificación
si la ejecución del mismo comando fuera a producir conjuntos de resultados
diferentes de los inicialmente recuperados. Para obtener más información,
vea Uso de notificaciones de consulta.
Transacciones
con aislamiento de instantáneas de SQL Server
- Ofrece compatibilidad con el aislamiento de
instantáneas, un mecanismo de SQL Server 2005 diseñado para reducir el
bloqueo en aplicaciones OLTP. Para obtener más información, vea Uso de aislamiento de instantáneas.
Reflejo
de bases de datos en SQL Server 2005
- Ofrece compatibilidad con el reflejo de bases
de datos en SQL Server 2005 con una nueva sintaxis de cadena de conexión
para especificar un servidor asociado de conmutación por error. Para
obtener más información, vea Uso del reflejo de base de datos.
Estadísticas
de proveedor
- Ofrece compatibilidad con la recuperación de
estadísticas de tiempo de ejecución en SQL Server 2005. Actualmente hay
disponibles 21 contadores diferentes desde el proveedor de .NET para SQL
Server. Para obtener más información, vea Uso de estadísticas de proveedor.
Cambio de
contraseña en SQL Server 2005
- Permite que las aplicaciones .NET Framework
cambien la contraseña de una cuenta de usuario sin necesidad de que
intervenga el administrador. Para obtener más información, vea ChangePassword.
Procesamiento
por lotes
- Mejora el rendimiento de la aplicación
mediante la reducción del número de viajes de ida y vuelta a la base de
datos al aplicar las actualizaciones desde el DataSet.
Para obtener más información, vea Realizar operaciones por lotes mediante DataAdapters.
Seguimiento
- ADO.NET 2.0
presenta una nueva funcionalidad integrada de seguimiento de datos que
admiten los proveedores de datos de .NET. Para obtener más información,
vea Seguimiento administrado en .NET Framework.
Información general acerca de ADO.NET
ADO.NET proporciona
acceso coherente a orígenes de datos como Microsoft SQL Server y XML, así como
a orígenes de datos expuestos mediante OLE DB y ODBC. Las aplicaciones para
usuarios que comparten datos pueden utilizar ADO.NET para conectar a estos orígenes
de datos y recuperar, manipular y actualizar los datos contenidos.
ADO.NET separa el acceso
a datos de la manipulación de datos y crea componentes discretos que se pueden
utilizar por separado o conjuntamente. ADO.NET incluye proveedores de datos de
.NET Framework para conectarse a una base de datos, ejecutar comandos y
recuperar resultados. Los resultados se procesan directamente o se colocan en
un objeto DataSet de
ADO.NET con el fin de exponerlos al usuario para un propósito específico,
combinados con datos de varios orígenes, o de utilizarlos de forma remota entre
niveles.
El objeto DataSet de ADO.NET también puede utilizarse
independientemente de un proveedor de datos de .NET Framework para administrar
datos que son locales de la aplicación o que proceden de un origen XML.
Las clases de
ADO.NET se encuentran en el archivo System.Data.dll y están integradas con las
clases de XML que se encuentran en el archivo System.Xml.dll. Cuando se compila
un código que utiliza el espacio de nombres System.Data, es necesario hacer referencia a
los archivos System.Data.dll y System.Xml.dll. Para obtener un ejemplo de una
aplicación de ADO.NET que se conecta a una base de datos, recupera datos de
ésta.
ADO.NET proporciona funcionalidad a los programadores que
escriben código administrado similar a la funcionalidad que los objetos ADO
(ActiveX Data Objects) proporcionan a los programadores de modelo de objetos
componentes (COM) nativo. Para obtener más información sobre las diferencias
entre ADO y ADO.NET,
Utilizar
DataSets en ADO.NET
El DataSet de
ADO.NET es una representación de datos residente en memoria que proporciona un
modelo de programación relacional coherente independientemente del origen de
datos que contiene. Un DataSet representa un conjunto completo
de datos, incluyendo las tablas que contienen, ordenan y restringen los datos,
así como las relaciones entre las tablas.
Hay varias maneras de trabajar con un DataSet, que se pueden
aplicar de forma independiente o conjuntamente. Puede:
- Crear
mediante programación una DataTable, DataRelation y
una Constraint en
un DataSet y rellenar las tablas con datos.
- Llenar
el DataSet con tablas de datos de un origen de datos relacional
existente mediante DataAdapter.
- Cargar
y hacer persistente el contenido de DataSet mediante XML.
Para obtener más información, vea Utilizar XML en un DataSet.
También se puede transportar un DataSet con
establecimiento inflexible de tipos mediante un servicio Web XML. El diseño
del DataSet lo convierte en idóneo para el transporte de datos
mediante servicios Web XML. Para obtener información general sobre servicios
Web XML, vea Información general acerca de servicios Web XML. Para ver un ejemplo de cómo
utilizar un DataSet de un servicio Web XML, vea Consumir DataSet a partir de un servicio Web XML.
Conectar con datos y recuperarlos en ADO.NET
La
principal función de cualquier aplicación de base de datos es conectarse a un
origen de datos y recuperar los datos contenidos . Los proveedores de datos de
.NET Framework para ADO.NET sirven como puente entre una aplicación y un origen
de datos, permitiéndole ejecutar comandos y recuperar datos mediante un DataReader o un DataAdapter.
Al trabajar con ADO.NET no se utiliza la
dll de acceso ODBC de GX (gxdata.dll), sino que toda la lógica se encuentra en
la gxclasses.dll.
En el caso de los DBMSs, cada uno utiliza
un Data Provider para acceder a la base de datos, cada DBMS tiene su propio
Data Provider para acceso ADO.NET.
Por el momento los DBMSs que soportan el
acceso ADO.NET son:
SQL
Server
Oracle
DB2
Universal Database
DB2
UDB for iSeries
Los requerimientos necesarios en cada caso
son:
SQL Server
ADO.NET utiliza el Data Provider de
Microsoft para SQL Server (el cual se instala con el framework).
Oracle
Se debe tener el Cliente de Oracle versión
8.1.7 o superior, de esta forma se instala el Data Provider correspondiente.
El valor “Server Name” de las Dbms option
hace referencia al Service Name definido en la instancia del Oracle.
La implementación utiliza el Data provider
de Microsoft para Oracle (System.Data.OracleClient)
DB2 UDB for iSeries
Se necesita la V5R3 del iSeries Access,
que es una versión beta y está solo en inglés.
Además cuando se crea un modelo se debe
copiar la dll IBM.Data.DB2.iSeries.dll al directorio gxnet/bin si la aplicación
es web o gxnetwin/bin win.
La versión V5R3 del iSeries Access se
puede obtener de la URL: http://www-1.ibm.com/servers/eserver/iseries/access/windows/beta.html.
Nota:
- El Data provider para DB2 UDB for
iSeries no soporta BLOBs por ahora.
- Una limitación del driver client acces
V5 R3 no permite el llamado objetos remotos en el Iseries (RPC). Esto implica
store procedures (programas RPG o Cobol) u objetos externos en el Iseries
(programas CL)
DB2 Universal Database
Se necesita tener instalada la versión
8.1.3 o superior.
La dll es IBM.Data.DB2.dll, también se
debe copiar a los directorios gxnet/bin si la aplicación es web o gxnetwin/bin
win.
4.3 JDBC
(Conectividad de Java con bases de datos)
Introducción
Es un derivado inspirado en el mismo, una interfaz de programación de aplicaciones que
permite la ejecución de operaciones sobre bases de datos desde el lenguaje de programación Java independientemente
del sistema operativo donde se ejecute o de la base de datos a la cual se
accede utilizando el dialecto SQL del modelo de base de datos que se utilice.
JDBC o Java Data Base
Connectivity, creado por la empresa Sun, es la API estándar de acceso a
bases de datos con Java. Sun optó por crear una nueva API en lugar de utilizar
ODBC, porque esta última presentaba algunos problemas desde ciertas
aplicaciones Java. ODBC es una interfaz escrita en lenguaje C, que al no ser un
lenguaje portable, hacía que las aplicaciones Java también perdiesen la
portabilidad. Además, ODBC ha de instalarse manualmente en cada máquina,
mientras que los controladores (drivers) JDBC que están escritos en
Java son automáticamente instalables y portables. El nivel de abstracción al
que trabaja JDBC es más alto que el de ODBC y, de esta forma, se pueden crear
librerías de más alto nivel.
¿Qué
es JDBC?
• JDBC es una interfaz que permite a un programa java ejecutar
instrucciones SQL dentro de bases de datos relacionales.
– Las bases de datos deben seguir el estándar ANSI SQL-92
Cuatro tipos de
drivers JDBC (Cont…)
I. Puente JDBC-ODBC
– traduce Java al API de ODBC
II. Native API
- traduce Java al API de la base de datos
III. Middleware
- Invoca un servidor
intermedio generalmente ubicado en el mismo host de la base de datos. Utiliza
un protocolo estándar independiente de la base de datos.
IV. Net Protocol
Genera el protocolo de comunicaciones
de la base de datos
REQUERIMIENTOS
Para trabajar con JDBC es necesario tener
controladores que permitan acceder a las distintas bases de datos. Sin embargo,
ODBC sigue siendo hoy en día la API más popular para acceso a Bases de Datos,
por lo que: Sun se ha visto obligada a diseñar un puente que permite utilizar
la API de JDBC en combinación con controladores ODBC.
Fuentes bibliográficas: