herramientas os/2 - epbcn · bases de datos relacionales no . novedades en versión 2.1 2:/2 ibm...

8

Upload: others

Post on 09-May-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: HERRAMIENTAS OS/2 - EPBcn · Bases de datos relacionales no . Novedades en versión 2.1 2:/2 IBM DATABASE 2" v.","" forOSf2° ~) Hace relativamente poco que ha aparecido en el mercado
Page 2: HERRAMIENTAS OS/2 - EPBcn · Bases de datos relacionales no . Novedades en versión 2.1 2:/2 IBM DATABASE 2" v.","" forOSf2° ~) Hace relativamente poco que ha aparecido en el mercado
Page 3: HERRAMIENTAS OS/2 - EPBcn · Bases de datos relacionales no . Novedades en versión 2.1 2:/2 IBM DATABASE 2" v.","" forOSf2° ~) Hace relativamente poco que ha aparecido en el mercado

HERRAMIENTAS OS/2

Bases de datos relacionales no .

Novedades en

versión 2.12:/2

IBM DATABASE 2" v.",""

forOSf2° ~ )

Hace relativamente poco que ha aparecido en el mercado la versión 2.1 de DB2/2.

DB2/2 es la versión para OS/2 de DB2, la conocidísima base de datos relacional de IBM, líder

absoluto en el mercado mundial de bases de datos relacionales. En este artículo, basado

en nuestro contacto con la beta de junio de este producto y con la versión final,

examinaremos algunas de las novedades que la nueva versión aporta.

DB2 (DataBase 2) es la implementación SQLde IBM. Hay versiones para OS/2, para sis­temas Unix (actualmente AIX, HP-UX ySolaris), para OS/400, y para mainframes

en VSE, VM y MVS. Las distintas versiones están con­vergiendo, de modo que se habla de un common serverpara OS/2 y las plataformas Unix (la mayoría del códi­go es el mismo). El hecho de que el mismo producto estédisponible en varias plataformas permite un nivel deescalabilidad casi ilimitado: es posible escribir una apli­cación en un ordenador Jntel de prestaciones relativa­mente limitadas, convertirla automáticamente en clien­te-servidor sin más que añadir nodos de LAN, migrar aun sistema Unix cuando las posibilidades de un servidorJnte! empiecen a agotarse, e ir aumentando así sucesi­vamente la capacidad del servidor hasta un super-main­frame con sistema MVSIESA, que admite decenas demiles conexiones simultáneas, sin necesidad de tocar niuna sola línea de la aplicación ni de nuestra base dedatos.

OS/2 dispone de bases de datos relacionales desde laversión 1, donde se podía adquirir OS/2 como StandardEdition, que constaba sólo del sistema operativo base,o como Extended Edition, que incluía además soporte

para comunicaciones SNA (Communications Manager)y bases de datos SQL (Database Manager). La versión2 separó los componentes propios de la Extended Editionde la versión 1 en un paquete llamado Extended Services;a continuación, estos componentes empezaron a ven­derse por separado; es allí donde aparece por primeravez DB2/2 como producto independiente. La última ver­sión ampliamente distribuida antes de la que nos ocupaes la versión 1.2.

José María Blasco

José María E/asco, nacido en 1960, es Licencíado en Matemáticaspor la Universidad de Barcelonn. Ha sido profesor de Programación enla Facultad de Infonnática de Barcelona, y Coordinador Nacional de la.

red EARN en Alemania. Sus temas de interés más recientes son lasredes, la programación orientada a objeto, las bases de datos, y toda lo

relacionado con OS/2. Su direcciónlntemet [email protected].

Francesc Rosés

Francesc Rosés. nncido en Barcelonn en 1958, es licenciado enFilología Catalana por la Universidad de Barcelona. Desde 1985 desa­rrolla en el Centre dÍnjormiltica de la Universitat de Barcelonn (ClUB)la coordinación iliformárica de diversos proyeClos de lexicografia com-

putacional. Profesor del Máster de Lingüistica Aplicada de laUniversidad de Barcelona. Desde 1994 es el responsable de la sección

de Microinformárica del ClUB. Su direccián lnternet [email protected].

RPP Nº 16

37

Page 4: HERRAMIENTAS OS/2 - EPBcn · Bases de datos relacionales no . Novedades en versión 2.1 2:/2 IBM DATABASE 2" v.","" forOSf2° ~) Hace relativamente poco que ha aparecido en el mercado

La comunicación entre clientes y servidoreses posible utilizando cualquierade los protoc~los más comunes

HERRAMIENTAS OS/2

DB2 2.1 no es sólo un nuevo rele­ase de DB2, sino una nueva versión,y se nota. El procedimiento de insta­lación utiliza el software installer haciael que están convergiendo todos losproductos IBM. Una instalación com­pleta del servidor coloca 44 megas enel directorio SQLLIB, contra 9 MBpara la versión 1.2. La nueva carpetade información de DB2 contiene 10libros (books en formato .INF) en vezde los 3 de la 1.2; los nuevos librosson absolutamente exhaustivos. Se­incluye también una carpeta con todaslas utilidades necesarias para accedera DB2 desde Windows (directamente,o mediante aplicaciones que utilicenODBC), También es posible gestionarel servidor mediante SNMP, para loque se incluyen iconos para activar ydesactivar el agente SNMP para DB2.

Novedadesen la administraciónLos usuarios de DB2/2 1.2 se encon­trarán con una sorpresa: QueryManager ha desaparecido. Y es unalástima: aunque Query Manager esta­ba bastante anticuado, y no soporta­ba las adiciones más recientes a DB2/2,era bastante práctico para tener unapanorámica de la estructura de la basede datos, o para crear y manipulartablas. Con la nueva versión se hacenecesario guardar cuidadosamente lasdefiniciones SQL de nuestra base dedatos (probablemente en ficherosASCII), para poderlas revisar y cam­biar cuando lo deseemos. Otra alter­nativa es utilizar el producto de IBMVisualizer Query, que no revisamosaquí, y del que sólo diremos que ofre­ce un nivel de integración con el

-Workplace Shell de OS/2 y una capa­cidad de administración de DB2 que

alcanza niveles simplemente impre­sionantes, o la versión más reducida,Visualizer Flight, que está actualmen­te en beta gratuita disponible enInternet. Otra posibilidad es adminis­trar nuestras bases de datos con laayuda de las herramientas especiali­zadas que se incluyen en las versionesavanzadas de Vispro/REXX oVX'REXX.

Las diferentes utilidades de admi­nistración presentes en la versión 1.2(CONFIG.EXE, RECOVERY.EXE yDIRECT.EXE) han sido substituidaspor una nueva herramienta unificada,llamada Database Director, que esmucho más potente y general, aunquela encontramos bastante lenta en estaversión.

La comunicación entre clientes yservidores es posible utilizando cual-

quiera de los protocolos más comu­nes: APPC (que es parte de SNA),IPX/SPX (mediante la ayuda de unservidor Novel! Netware que actuarácomo router), NETBIOS (nativo, osobre IP), y TCP/IP (nuevo en esta ver­sión). Una vez instalado el software,habrá que indicar cuáles son los pro­tocolos mediante los cuales deseamosque nuestro servidor sea accesible. Estose hace añadiendo una línea al CON­FIG.SYS, por ejemplo:

SET DB2COMM=NETBIOS,TCPIP

Esta línea indica que entre todoslos protocolos posibles, elegimos quenuestro servidor sea accesible simul­táneamente mediante NETBIOS yTCP/IP (esta información está bas­tante escondida en los manuales delCD-ROM). La adición de TCP/lP esmuy importante, porque permite, porejemplo, publicar servidores de DB2

RPP Nº 16

38

en Internet, o instalarlos en MANs yWANs que sólo soporten IP sin tenerque añadir NETBIOS sobre IP, comoera necesario hasta ahora.

En cuanto a la ubicación física delas bases de datos, DB2 ofrece ahorados posibilidades: podemos dejar alsistema la responsabilidad de escogerel lugar de almacenamiento de losficheros que implementan nuestra basede datos (como en la versión 1.2, sólonecesitaremos entonces especificar launidad lógica en la que se va a guar­dar la base de datos), o bien podemosdefinir una serie de espacios de tablas(tablespaces) en la misma o diferen­tes unidades lógicas, para decidir des­pués dónde queremos almacenar nues­tras tablas o índices.

Si optamos por esta última posibi­lidad, el nivel de control del almace­namiento físico es muy grande: cadatablespace puede consistir en un nume­ro arbitrario de directorios, posible­mente distribuidos en diferentes uni­dades, y para cada directorio podemosindicar al sistema una estimación delcoste de acceso (tiempo de acceso,transferencia media por segundo, ete.),que será utilizada por el optimizadorde DB2 al elegir la distribución de losdatos. A continuación, para cada tabladefinida, podemos indicar el tables­pace en el que se va a almacenar, indi­cando si lo deseamos diferentes tables­paces para los índices o para losobjetos largos (BLOBs, CLOBs yDBCLOBs, de los que hablamos másadelante). De este modo, si contamoscon un servidor con varias unidades dedisco duro SCSI, para las cuales esposible la entrada y salida simultáneadesde varias unidades, es posible dis­tribuir, por ejemplo, las diferentestablas de un join muy utilizado en dis­cos distintos, de modo que los datosdel join se carguen en paralelo; o pode­mos poner los índices de una tabla enun disco y los datos en otro, de modoque el acceso al índice y a los datosasociados pueda ejecutarse simultá­neamente, etc. En resumen, en esteaspecto el nivel de control permitidoes similar al de los grandes sistemas

Page 5: HERRAMIENTAS OS/2 - EPBcn · Bases de datos relacionales no . Novedades en versión 2.1 2:/2 IBM DATABASE 2" v.","" forOSf2° ~) Hace relativamente poco que ha aparecido en el mercado

HERRAMIENTAS OS/2

Figura A DB2 incluye soporte integrado paraWindows y ODBC

zando SU forma entrecomi­llada (es decir, reproducien­do exactamente su secuenciade mayúsculas, minúsculas,espacios en blanco, etc.):

Create Table T ("Columna "Integer, uCoLuMnP~2n Floü~)

Crea una tabla con doscolumnas llamadas exacta­mente "Columna 1" (con blan­cos en medio), y "CoLu­MnA_2" (con la combinaciónmostrada de mayúsculas y

minúsculas).

Cláusula AS en la instrucción

SELECT

Select DlA, Max (VALOR) AS ;'lAXlMO From ...

Cuando una de las columnas de unselect en DB2/2 1.2 era una expresión,DB2 asignaba automáticamente a lacolumna del resultado un nombre,normalmente COLn, donde n era elnúmero de columna. Con DB2/2 2.1,podemos indicar mediante la cláusu­la AS de la instrucción select cuál es elnombre de la columna:

expresión-cornún-de-t?-blaSELECT

Expresiones comunes de tabla

es un select cuyo resultado es una tablacon dos columnas, de nombre DIA yMAXIMO. Aquí también es posibleutilizar identificadores entrecomilla­dos. Y el mecanismo es válido paradefinir vistas, que pueden tener así losnombres de columna que deseemos. Esespecialmente interesante combinaresta posibilidad con el uso de funcio­nes incorporadas para obtener direc­tamente selects y vistas que con la ver­sión anterior de D B2 requerían de unamini-aplicación.

Las expresiones comunes de tabla(common-table-e~pressions)permitenla definición local de tablas auxilia­res dentro de una instrucción selecto Lasintaxis es:

Logolf

I~~l ...LeganCommandLine Processar OOBCltlstallar OientSetup

y objetos largos. Examinaremos estosdos tipos de extensiones separada­mente.

Funciones

Extensiones de usabilidad

CAST ( micalumna_entera AS FLOAT)

DB2/2 2.1 incorpora gran cantidadde funciones, además de permitir alusuario definir las suyas propias. Estosignifica que gran parte del formateonecesario de los datos puede realizar­lo el servidor, y que, mediante el usode vistas escogidas cuidadosamente,podemos presentar al usuario la infor­mación de modos mucho más sofisti­cados que en las versiones anteriores.Además, disponemos de la construc­ción CAST, que permite la conversiónexplícita de un tipo a otro, y que ilus­tramos con un ejemplo:

Identificadores entrecomillados

DB2/2 2.1 permite el uso de identifi­cadores entrecomillados en la mayo­ría de los lugares en los que sintácti­camente se requiere el uso de unidentificador. Los identificadoresentrecomillados pueden contener ma­yúsculas y minúsculas (que se respe­tan), caracteres especiales, y espaciosen blanco. Esto permite asignar nom­bres más significativos a, por ejem­plo, las columnas de una tabla o unavista, pero también nos obliga a refe­rirnos siempre al identificador utili-

REAOME

~ Wmdows Support - Vista de Iconos

B ~06211'l1oml3:ÍiJn W~SuppOl1: 1M!zII.000UtI.ly Co,1\fnondLMP/'OCOl:o;OI REAOME $te.1DB2

I ' ~ 'u\'StM SNl-IP SuboQ&n\ S10p SNMP Sub~enl ClilJI'lI S41fUp D~ Otr&aor R«overy Job. ~"'I S~'I

de bases de datos de un main­frame, pero sin obligar anadie: si se desea, todo el tra­bajo lo realiza DB2, esco­giendo por nosotros valorescorrectos para nuestra basede datos.

El sistema de backup hacambiado también bastante:en vez de realizar los backupsdirectamente a una unidadlógica, como en la versión 1.2(lo cual obligaba muchasveces a utilizar trucos de redmecliante NET USE o MAP para poderhacer backups a unidades de discoduro), ahora los backups se realizandirectamente a un directorio o a undispositivo (como una unidad decinta). Los backups son extensivos, yocupan mucho espacio, incluso parabases de datos pequeñas. El truco está,si deseamos transportarlos en disque­te, en hacer previamente un ZIP deldirectorio de backup. Por ejemplo, labase de datos SAMPLE ocupa unos 8MB, pero comprimida ocupa sólo 0.5MB Ycabe perfectamente en un dis­quete.

El lenguaje SQL implementado por laversión de DB2/2 que estamos exa­minando ha evolucionado de formamuy notable desde la versión 1.2, ylo ha hecho al menos en dos direc­ciones clave: por una parte, al imple­mentar numerosas extensiones quepodríamos llamar de usabilidad, quepermiten obtener salidas más claras,realizar con mucha facilidad tareasque antes eran complejas o requerí­an el uso de pasos intermedios (comola creación de tablas auxiliares), odescargar la aplicación en favor delservidor, al implementar nuevas fun­ciones incorporadas ejecutables di­rectamente por el servidor y, por otraparte, al incluir toda una serie deextensiones objetuales, como los tiposdefinidos por usuario, funciones defi­nidas por el usuario, triggers, checks,

Novedades en el lenguajeSal

RPP Nº 16

39

Page 6: HERRAMIENTAS OS/2 - EPBcn · Bases de datos relacionales no . Novedades en versión 2.1 2:/2 IBM DATABASE 2" v.","" forOSf2° ~) Hace relativamente poco que ha aparecido en el mercado

HERRAMIENTAS OS/2

donde una expresión común de tablatiene la forma

nombre-de-tabla [(columna[,columna ... )'1 AS linstrucción-selectl

Supongamos, por ejemplo, quetenemos una tabla VALORES con doscolumnas, DIA y VALOR; para cadaDIA disponemos de varios VALORes.Deseamos construir un select que nosentregue, para cada DIA, el máximoyel mínimo VALOR. Podemos escri­birlo elegantemente así:

\1ITHI.axirr:.os AS

(Select Dia, MaxlValorlAs Maximo From Valores Group By Dial,

l~inimos ."SISelec~ Dia, Min(Valor)

As Mini. o F'rem Valores Group By :.lia)SELECT ~axim s.Dia, Maximos.Maximo,Minimos.HinimoFROl·: Maxirnos, Mi irnosoffiERE Max·mos.Di = Min~mos.Dia

El ejemplo nos permite observarque las expresiones comunes de tablapueden ser objeto de todas las mani­pulaciones propias de una tabla nor­mal. A efectos de la instrucción select,esas tablas existen con el mismo rangoque cualquier otra tabla, pero se creany se destruyen dinámicamente en elámbito de su ejecución. De hecho, lastablas se crean por orden de apari­ción, de modo que si escribimos WITHectl, ect2, ect3 SELECT. .. , donde ectison expresiones comunes de tabla,ect2 puede hacer referencia a ectl, y

ect3 a ectl y ect2.

Éxpresiones CASE

Las expresiones CASE permitencalcular un valor como el resulta­do de calcular una expresión uotra según se cumplan determi­nadas condiciones. La expresión

AIB

da un error de desbordamiento siB es O. Si el problema que nosplanteamos requiere substituir laexpresión por Osi B=O, en DB2/21.2 nos vemos forzados a escribir

SEL CT AIB FROM ... WHERE B <> oUN IONSELECT o FROM ... WHERF. B = o

lo cual es poco claro. Con DB2/2 2.1podemos escri bir

SELECTCl\SE

'tIREN B <> o 'rHEN i'./B

ELSE oEND

FRQt.1 ...

que está mucho mejor. Otro ejem­plo es

CASEWHEN A < B THEN 'Menor'WHEN A > B THEN 'Mayor'ELSE 'Igual'

END

Restricciones ("constraints")

Las restricciones son condiciones aso­ciadas a una tabla que limitan losvalores de una columna o de toda lafila a cumplir determinado conjun­to de condiciones. Permiten imple­mentar hasta un cierto punto la inte­gridad de dominio, cuando se aplicana una sola columna, y definir condi­ciones estructurales para las tuplas ofilas de la tabla cuando se aplican avarias. Veamos unos ejemplos:

Create T ble T (DIA Integer Check (elABe "'Jeen 1 And 31), ... )

define una columna DIA de tipoINTEGER que sólo podrá tener valo­res entre 1 y 31; si intentamos eje­cutar una instrucción INSERT oUPDATE que cambie el valor de DIAen alguna fila a un valor que no estéentre 1 y 31, la instrucción fallará.

DB2 Infarmatioll - Vlsta de iconos

Aclministration Guide Commond Reference CPI-C Return Codesand APPC Sansa Dala

Datobose System Monitor Glossary lnformation and Master IndaxGuide 8.nd Reference Cancepts Guida

Message Reference Problem SOL ReferenceOetermine.~on Guide

Figura B La carpeta de ¡n"formación deDB2 es muy completa

RPP Nº 16

40

Crea~e Table T (t.ipidos FloatP..GS Float,AG.' Float,.l;GE' Flo t,

Constrainc Acidos_Grasos CheckIAGS+AG'P+AGt'l <= Lipidos)}

obliga a que cualquier fila cumpla lacondición de que la suma total de losácidos grasos no sea superior a la can­tidad de lípidos. La restricción tieneun nombre ("Acidos_ Grasos"), ypuede ser objeto de manipulación (p.ej. "ALTER TABLETDROPCONS­TRAINT Acidos_Grasos"). Si inten­tamos añadir una restricción a unatabla y existe alguna fila que no laverifica, la instrucción de añadido falla.

Las restricciones sólo pueden refe­rirse a las columnas de una fila de latabla a la que se aplican; si se deseaimplementar condiciones más com­plicadas, deberemos recurrir a los trig­gers, explicados más adelante.

Extensiones objetuales

Las extensiones que hemos llamadode usabilidad son especialmente úti­les para el usuario "clásico" de DB2:son un conjunto de extensiones natu­rales al DB2, que lo hacen muchomás potente, y con toda seguridadmás de un usuario habrá anticipadosu creación al preguntarse por quéno se implementaron antes. En cam­bio, las extensiones objetuales (obje­tos largos, y tipos y funciones defi­nidos por el usuario) están destinadas

a abordar un nuevo tipo de pro­blema.

Por ejemplo, multimedia: inte­resa poder almacenar en bases dedatos relacionales campos de tipoimagen, audio o vídeo, de modoque la información sobre un obje­to multimedia (por ejemplo autor,tamaño, y fecha) esté almacenadajunto con el propio objeto.

Los datos podrán guardarse enla base de datos si admitimos unaextensión al SQL que permita elalmacenamiento de objetos largos.Pero almacenar los datos no es sufi­ciente, pues -además de las con-

Page 7: HERRAMIENTAS OS/2 - EPBcn · Bases de datos relacionales no . Novedades en versión 2.1 2:/2 IBM DATABASE 2" v.","" forOSf2° ~) Hace relativamente poco que ha aparecido en el mercado

HERRAMIENTAS OS/2

TCP/IP

~ System dalabase directory

~ Nade directory

.. Database connection services direclOry

malmente utilizables sobre integer noestán disponibles (a menos que lashabilitemos manualmente mediantefunciones definidas por el usuario).De este modo, no será posible calcu­lar Max(Alumnos.ID), lo cual tienebastante sentido.

¡¿¡rector ~.::~c..!!.d:..-.,;Y.",jew"-,!!=::e",-Ip"",-,"""",-"""",,,,,,,,__

B D Database managers

~ Local database direclory

Figura e La nueva herramientade admini~tración, el Databa~eDirector, muy potente y completopero algo lento

Databases

Las funciones definidas por e! usuariotienen dos usos fundamentales: per­mitir que un tipo de datos creado pornosotros vea alguna de las funcionesincorporadas (por defecto no ve nin­guna, como hemos explicado), y real­mente definir nuevas funciones, apli­cables a uno o más valores, ya sean detipos definidos por el sistema o de tiposdefinidos por el usuario. Esto último se

Funciones definidas por el usuario

Figura D El cliente puede acceder a ~er"

vidore~ (nodo~) utilizando diferente~ prolo­colo~ de comunicacione~

IEIMSRV

Commenl c= _~Local

:,jAPpe

.:.; IPX/SPX

• t"iETBios~ uTCP/IP

Tipos definidos por el usuario

Los tipos definidos por el usuario(user-defined types) permiten partirde un tipo definido por el sistema ycrear un nuevo tipo, con un nombredefinido por nosotros; SQL tratará apartir de entonces e! nuevo tipo comoun tipo más, permitiéndonos crearcolumnas de ese tipo, y además reali­zará verificaciones strongly-typedsobre los valores correspondientes.

Supongamos, por ejemplo, quedeseamos construir una tabla de alum­nos y otra de cursos, ambas con cla­ves primarias enteras. Definiremosprimero dos tipos:

de! servidor al cliente puede ser muycostoso, y que en muchos casos sólointeresa obtener una parte del valor,DB2/2 2.1 implementa el concepto delocalizador LOB, que permite obte­ner un apuntador al valor de un obje­to grande y utilizar después ese apun­tador para efectuar operaciones sobreel valor, obteniendo al final sólo laparte resultante de la operación, queposiblemente será mucho más peque­ña que e! valor inicial, y por tanto car­gará menos la máquina cliente. Porejemplo, un BLOB que sea un vídeopuede fácilmente ocupar muchos MBde memoria, pero si pedimos sólo undeterminado frame la memoria reque­rida es mucho más pequeña.

A continuación podemosdefinir las tablas:

... )

. .. )

Create Table Alumnos (ro Alumno,

Create Distinc~ 'fype ALm~,o asIl,rrEGER Tl'Jith ComparisonsCreate Distinct Type CURSO asINTEGER With Comparisons

Create Table Cursos (ID Cu~so,

en las que hemos utilizadoalumno y curso como tipos,respectivamente, en vez de inte­ger. De este modo, si intenta­mos comparar Alumnos.IDcon Cursos.ID, el sistema detec­tará el error a nivel sintáctico.Además, las funciones nor-

sultas SQL usuales- hemos de poderconsultar los valores de esos camposen cuanto a su subestructura. Poiejemplo, si disponemos de una basede datos con campos de autor, fechay texto estructurado, hemos de poderpreguntar ¿cuáles son los documen­tos del autor X escritos antes del 15de Diciembre que contienen la pala­bra "cristalografía" en la bibliografíadel documento? La segunda parte dela pregunta se refiere a la estructurainterna de! campo de texto estructu­rado. O bien, si disponemos de unabase de datos de imágenes, hemos deser capaces de buscar imágenes pare­cidas a una tomada como referencia,consistiendo e! parecido en determi­nados criterios de color, sombreadoo textura que nosotros especificare­mos.

DB2/2 2.1 incorpora algunas de lasextensiones del SQL3, y permite defi­nir tipos definidos por el usuario basa­dos en tipos existentes, incluyendo losobjetos largos, y asociados a funcio­nes definidas por el usuario, ademásde triggers ("gatillos" o "disparado­res"). Mediante todo ello es posibledefinir objetos en SQL, almacenarlosen tablas, y manipularlos mediante lasinstrucciones usuales de SQL, ademásde mediante las que el propio objetodefine. Estudiaremos primero cadauna de estas extensiones, para comen­tar después cómo pueden utilizarsepara implementar extensiones rela­cionales.

Objetos grandes

Los objetos grandes (Large Objects, oLOBs) son nuevos tipos de datos bási­cos que se pueden utilizar para alma­cenar cualquier tipo de información.Hay de tres tipos: CLOBs, o tiras decaracteres largas, asociados con unapágina de códigos y con una longitudmáxima de 2 gigabytes; DBCLOBs, otiras de caracteres de doble byte, conuna longitud máxima de 1 GB; YBLOBs, objetos binarios largos, sinpágina de códigos y de hasta 2 GB.

Dado que transferir un objeto largo

RPP NQ 16

41

Page 8: HERRAMIENTAS OS/2 - EPBcn · Bases de datos relacionales no . Novedades en versión 2.1 2:/2 IBM DATABASE 2" v.","" forOSf2° ~) Hace relativamente poco que ha aparecido en el mercado

HERRAMIENTAS OS/2

Conclusión

miten la adición de nuevos tipos dedatos orientados a objeto a nuestrabase de datos. Un nuevo tipo stronglytyped accesible mediante funciones eslo más parecido que conocemos a unobjeto. IBM dispone de extensionesrelacionales para imágenes, audio,vídeo y texto estructurado, que seincorporan a DBl y permiten utilizaresos nuevos tipos como si fuesen nati­vos, manipulando cada uno de ellosde acuerdo con sus características.

Por ejemplo, la extensión de textopermite definir campos de texto, quepodrán después buscarse por contex­to, por sinónimos en 17 idiomas, porproximidad, o por contenido, sin másque instalar la extensión. En realidad,lo que IBM ha hecho ha sido conver­tir su producto SearchManager/2, quees una evolución OS/2 del antiguoSTAIRSNS, en una extensión relacio­nal que permite la extracción de infor­mación de documentos estructurados(por ejemplo, en SGML).

la extensión para imágenes queincorpora la tecnología QBIC (QueryBy Image Contents), que permite bus­car imágenes por forma, color o tex­tura (el anuncio de las botellas que seestá publicando actualmente).

Hemos intentado cubrir las novedadesde DB2/2 2.1 que nos hanparecido más llamativas enlos primeros meses de con­tacto; obviamente, nohemos podido explicarlastodas. El producto ha cre­cido mucho, y para bien,de modo que no tiene nadaque envidiar a los sistemasdel mainframe. Esto se ha

conseguido mediante mejoras en laadministración, extensiones de usabi­lidad del lenguaje SQL que lo hacenmucho más potente, y una primeraaproximación a las bases de datos rela­cionales orientadas a objeto que -esta­mos seguros- es sólo un primer pasoy abre un futuro que promete ser apa-sionante. P

y

Create Trigger Desp dirAfter Dele ,e On PersonalFor Each Row Mode DB2SQLUpda e Estadisticas Set Emp eados o

Empleados - 1

Su significado es bastante evidente.Los triggers funcionan del modo ató­mico a que estamos acostumbrados conDB2: si una instrucción SQL activa untrigger y por alguna razón éste no seejecuta con éxito, la operación entera sedeshace por completo (rollback). Estoquiere decir que, siguiendo con nues­tro ejemplo, Estadisticas.Empleadoscontendrá el número de filas de Personalexactamente, con el mismo grado defiabilidad a que estamos acostumbra­dos cuando empleamos la integridadreferencial o las unidades lógicas de tra­bajo. O sea que, efectivamente, esta­mos añadiendo integridad estructurala nuestra base de datos a unos nivelesimpensables antes de la aparición de lostriggers. Naturalmente, un trigger, alser activado, puede a su vez activar unoo más triggers suplementarios, y asísucesivamente. Además, las restriccio­nes (constraints) correspondientes severificarán. La operación que estamosrealizando seguirá siendo para noso­tros atómica, o se ejecuta todo bien, ono se ha ejecutado nada.

Las extensiones relacíonales

Los mecanismos que hemos descritoconstituyen una arquitectura bastantecompleta para la implementación deextensiones relacionales. Una exten­sión relacional es un paquete de tiposy funciones definidos por el usuario,junto con algunos triggers, que per-

Si una instrucción SQL activa un triggery éste no se ejecuta con éxito,

la operación entera se deshacepor completo (rollback)

Empleados

"Triggers"

hace escribiendo código en lenguaje C,que, una vez compilado, se añade a ladefinición de la base de datos. De estemodo, es la base de datos y no la apli­cación la que contiene la definición dela función, de modo que la posibilidadde errores (accidentales o intenciona­dos) se ve muy reducida, y el manteni­miento de múltiples aplicaciones sobrela misma base de datos muy simplifica­da. No reproducimos aquí nada del dia­grama sintáctico para las funciones defi­nidas por el usuario, aunque indicaremQsdos cosas: que es posible definir atribu~

tos que indican cosas como si una fun­ción tiene o no efectos laterales, y que,dado que escribimos nuestras funcionesen lenguaje C, es posible que, de haberefectos laterales, éstos tengan efecto sobreuniversos distintos al SQL: por ejemplo,podemos escribir una función que envíecorreo electrónico.

Create Trigger ContratarAfter lnsert O PersonalFor Eac Row Mode DB2SQLU date Estadisticas Set

Empleados + 1

Los triggers ("gatillos" o "disparado­res") son mecanismos que son activa­dos ("disparados") cuando se produceuna determinada modificación en unatabla. Por ejemplo, podemos tener uncontador de personal en una tabla decontadores que se incremente automá­ticamente cada vez que se añade una filaa la tabla de personal y se decrementeautomáticamente cuando se suprimauna fila. O podemos man-tener automáticamente unatabla de seguridad con losvalores suprimidos omodi­ficados en otra tabla quecontenga datos altamentesensibles. La idea de lostriggers es a la vez muy sen-cilla yextraordinariamen-te potente (especialmentesi los combinamos con las restriccio­nes ("constraints") y con las funcionesdefinidas por el usuario. Como ejem­plo" escribiremos los triggers para man­tener el contador de personas.

RPP Nº 16

42