Sei sulla pagina 1di 86

Antologa Universidad Tecnolgica de Puebla

Ingeniera en Tecnologas de la Informacin y Comunicacin

Materia:

Bases de datos para aplicaciones


Octavocuatrimestre
EneroAbril2010

Colaboradores:

1.ErikaRodallegasRamos 2.RosarioTitlaFlores 3.GuillermoSnchezFlores 4.GabrielCoronadoGarca

NDICE
Contenido
1.ManipulacinavanzadadedatosconSQL...................................................................................... 5 1.1Introduccin.............................................................................................................................. 5 1.2ConsultasSencillas(Primerasconsultas)................................................................................... 5 1.3ConsideracionesimportantesalhacerconsultasenellenguajeSQL......................................9 1.3.1Unaformadesalvarlasconsultas(querys)..................................................................... 10 1.3.2Especificandocondicionesparaseleccionarrenglones..................................................11 1.3.3Trabajandoconvaloresnulos.......................................................................................... 13 1.3.4ManejodeValoresduplicados......................................................................................... 13 1.3.5SalidaOrdenada............................................................................................................... 15 1.3.6FuncionesdeAgregacin................................................................................................. 15 1.3.7Ejecutandoconteosimple............................................................................................... 16 1.4UnavistarpidadelosJoins.................................................................................................. 16 1.4.1JoinsdentrodellgebraRelacional................................................................................ 16 1.4.2OtrostiposdeJoin ............................................................................................................ 23 2.BasesdeDatosDistribuidas.......................................................................................................... 28 2.1BasesdeDatosHomogneasyHeterogneas........................................................................ 28 2.2AlmacenamientoDistribuidodelosDatos.............................................................................. 29 2.2.1.Rplicadedatos.............................................................................................................. 29 2.2.2.Fragmentacindelosdatos............................................................................................ 30 2.2.3.Transparencia.................................................................................................................. 32 3.Transacciones................................................................................................................................34 3.1Serializacin............................................................................................................................ 34 3.2Atomicidad.............................................................................................................................. 35 3.3Tiposdetransacciones............................................................................................................ 36 3.4NivelRepeatableRead............................................................................................................ 40 3.5NivelReadUncommited.......................................................................................................... 41 3.6Lecturadedatosnoconfirmados ............................................................................................ 42 3


3.7Lecturadedatosconfirmados................................................................................................. 42 3.8Lecturarepetible..................................................................................................................... 42 3.9ControldeConcurrencia......................................................................................................... 43 3.10TransaccionesAbortadas...................................................................................................... 44 3.11.GestindebloqueosenSQLServer..................................................................................... 44 3.11.1Bloqueosyrendimiento................................................................................................. 44 3.11.2Recursosdelosbloqueos.Granularidaddelbloqueo ....................................................45 3.11.3TiposdebloqueoenSQLServer..................................................................................... 45 Compatibilidaddebloqueos..................................................................................................... 46 Bloqueosdendices ................................................................................................................... 47 3.12Conceptodeespaciosdetrabajo(tablespace)..................................................................... 47 3.13Programacindetransacciones............................................................................................. 53 4. 5. Basesdedatosorientadasaobjetos......................................................................................... 69 BusinessIntelligence................................................................................................................. 69 5.1Introduccin............................................................................................................................ 69 5.2.Datawarehouse...................................................................................................................... 69 5.3.BusinessIntelligence.............................................................................................................. 73 5.3.1.Datamarts........................................................................................................................ 74 5.3.2.OLAP................................................................................................................................77 5.3.3.Datamining...................................................................................................................... 80 5.3.4.KPIs.................................................................................................................................83

1.ManipulacinavanzadadedatosconSQL

1.1 Introduccin
Para dar comienzo a este primer tema de la materia de Bases de datos para aplicaciones, se debe detenerencuentaquenoesuncursointroductorioalmanejodebasededatos,sinomsbien,es la continuacin de los cursos anteriores en donde se considera que el alumno ya tiene los conocimientos previos de modelado de datos, caractersticas principales del modelo relacional, y conceptosbsicosdellenguajeSQL. Aunque en algunos temas se dar una breve introduccin a manera de recordatorio prctico, en general se trata de ir ms all de lo bsico y que el alumno se involucre en la resolucin de problemas prcticos orientados al manejo de datos de diversas aplicaciones, as como tambin revisar las tendencias y estrategias que actualmente ofrecen los diferentes productos de administracin de bases de datos (DBMSs) para hacer ms gil todo el manejo de una base de datos.

1.2 Consultas Sencillas (Primeras consultas)


Si una base de datos se ha diseado correctamente, los datos estarn distribuidos en varias tablas diferentes. Recordando que una base de datos con una sola tabla no cumple muchas de las caractersticas obligadas y necesarias en la normalizacin de una base de datos relacional, el mejor diseo de una base de datos es aquel que involucra varias tablas relacionadas a travs de sus llaves primarias y forneas, e incluso con tablas que solamente sirven para definir la relacin entreotrastablas(porejemplounarelacinmuchosamuchos). Porejemplosisequiereimplementarunabasededatosquepermitaalmacenarlainformacinde unclubdegolf,tendrtablasseparadasconinformacindelosmiembros,equipos,ytorneos,as como tambin tablas para conectar esos valores, por ejemplo para relacionar que miembros pertenecenaqueequipos,quemiembrosestnparticipandoencualestorneos,yms.Parahacer el mejor uso de los datos, se necesitarn combinar valores de diferentes tablas. As como trabajar a travs de combinaciones complicadas para obtener el resultado de una consulta, podemos imaginar que el conjunto de renglones resultantes de cada paso se est colocando dentro de una tabla virtual. Se puede pensar que una tabla virtual se construye para el orden que lleva la consultaysoloestemporal.Encadapasodeunaconsultasoloestamosinteresadosenalgunosde los datos dentro de la tabla virtual y de alguna manera se van filtrando dichos datos. A lo largo de este captulo se dar un repaso de las consultas sencillas y se dar una vista a consultas que 5


involucranunpocomsdeanlisis.Losdatossetomarndetablaspermanentesquepertenecena una base de datos, o incluso de tablas virtuales que se han generado temporalmente como parte deunaconsultamscomplicada. Por ejemplo, se podr ver informacin acerca de los miembros que se encuentran contenidos en una tabla de la base de datos del club de golf. En donde a lo mejor se quiere ver informacin acerca de algunos de los miembros (un subconjunto de renglones), o se quieren ver solo algunos valores de cada miembro (un subconjunto de las columnas). O quiz, se quiere una combinacin deambos.Sepuedepensarqueunaconsultaconsisteenobtenerunsubconjuntodeinformacin queescortadadeunsubconjuntoderenglonesycolumnasde unatablayentoncesdespuses pegada dentro de una tabla temporal o virtual, como se muestra de forma grfica en la figura 1.1

Figura1.1Representacingrficadelospasosdeunaconsulta

Consultas sencillas pueden proporcionar informacin para reportes, para subconjuntos de datos para anlisis, y respuestas a preguntas especficas. La figura 1.2 muestra algunos ejemplos de la tablamiembro(Member)delabasededatosClubdeGolf.



Figura1.2ejecucindeconsultassobr relatablamem mbers

El recu uperar renglo ones y colum mnas hace us so de las ope eraciones del algebra rela acional select y proyec ccin. Casi tod das las consu ultas en al me enos una de sus etapas in ncluyen opera aciones select y deproyeccin. La recu uperacin de un subconju unto de renglones es una de las operac ciones ms comunes que se consideran para ha acer una cons sulta. En las siguientes se ecciones, se analizar a la recuperacin de 7


renglones de varias tablas que se encuentran dentro de la base de datos. La misma idea se aplica paralaseleccinderenglonesdetablasvirtualesresultantesdeotrasmanipulacionesdelosdatos correspondientes. AlgebraRelacionalparalarecuperacindeRenglones Laoperacinselectdellgebrarelacionalpermitelarecuperacinuobtencinderenglonesdesde una tabla. Para decidir cuales renglones debe de recuperar, se necesita especificar una condicin para la operacin. Bsicamente, una condicin es una sentencia que puede dar como resultado falso o verdadero al ser evaluada. Se aplica la condicin a cada rengln de la tabla independientemente, y se retienen los renglones para los cuales la condicin es verdadera y se descartanlosdems.Porejemplo,sisequiereobteneratodosloshombresdelclubdegolf,dado que dentro de la tabla miembro (Member) desde su construccin se contemplo una columna Gender,solohayqueindicarquesequiereobtenerelsubconjuntoderenglonesdondeelvalordel campoGenderes`M`,locualllegaaserlacondicindelaoperacinselect. Lanotacinenlgebraparaobteneraloshombresdelclub,semuestraacontinuacin

La letra griega Sigma () representa a la operacin select, y en forma de subndice se estable la condicin. Traduciendo la consulta que recupera informacin acerca de los hombres dentro de la base de datosdelclubdegolfallenguajeSQL,quedaradelasiguienteforma:

Esta consulta se compone de tres partes, o clausulas: la clausula SELECT dice que informacin se va a recuperar. En este caso, * significa que va a recuperar la informacin de todas las columnas. La clausula FROM dice las tablas o tabla en la cual la consulta se desarrolla, y la clausula WHERE describe la condicin para decidir cuando un rengln en particular deber ser incluido en el resultado, para este caso la condicin verifica el valor del campo Gender para que sea igual a M (Men). En el caso de la recuperacin de columnas, se utiliza la operacin proyeccin del lgebra relacional. Para recuperar nombres(Names) y nmeros telefnicos (Phone Numbers) de la tabla miembros (Member) a travs de la sintaxis del algebra relacional quedara expresado de la siguienteforma:


La expresin anterior del algebra relacional al traducirse al lenguaje de consulta SQL, quedara representadomediantelasiguienteconsulta:

Para este caso se van a mostrar las columnas indicadas para todos los renglones, porque no se estdefiniendounacondicinespecficaatravsdelaclausulaWHERE.

1.3 Consideraciones importantes al hacer consultas en el lenguaje SQL


Despusdehaberelaboradoyvalidadocuidadosamenteundiseodebasededatosrelacional,se implementaenalgnDBMSquepermitalarepresentacindelastablas,yelmanejodelosdatosa travsdellenguajeSQL. Puede ser comn que dada la relacin que existe entre diversas tablas de la base de datos, en algn momento campos de distintas tablas pueden llegar a contener el mismo nombre (aunque algunos autores no lo recomiendan, ya en la prctica suele ser comn) , y dejar ambiguo el significado a la hora de definir las columnas que se quieren obtener dentro de una consulta. Por eso es muy sano, desde el momento de definir las columnas a recuperar, poner como prefijo la tabla a la que corresponden, y de esta forma aunque los campos se llamen iguales ya no existe ambigedad porque se define con el prefijo a que tabla corresponde. Las buenas prcticas sugierendefinirlasconsultasdelasiguienteforma:

Aunque de la forma anterior se evitan ambigedades, en la prctica puede llegar a ser muy largo, cansado y hasta poco entendible definir consultas de la forma anterior, sobre todo si se est usando bases de datos con muchas tablas que tengan nombre demasiado largos. Sin embargo para facilitar las cosas, dentro del lenguaje SQL se puede hacer uso de alas sobre las tablas. La consultaanteriorutilizandoalasquedaraas:


EnlaclausulaFROMsehadefinidounalasonombrealternativoparareferirsealatablaMember, que en este caso el alas es m, con lo cual se evita el nombre completo de la tabla y adems se siguenevitandolasambigedadesquepudieranllegaraocurrir. Hastaestemomentolasconsultashansidomuysencillasysehanincluidosolounsubconjuntode renglones, o en otra consulta independiente un subconjunto de columnas, sin embargo en la prcticaescomndefinirconsultasqueinvolucranunacombinacinderenglonesydecolumnaso a la inversa, lo cual indica que se har uso de las operaciones proyeccin y select del lgebra relacional de forma combinada. Un caso explcito de este tipo de combinaciones es la que se muestra en la Figura 1.2 c). La cual estara representada en la siguiente expresin del lgebra relacional. Nuevamente recordemos que el lgebra relacional nos dice como obtener el resultado que se quiere. Para este caso, primero obtiene el subconjunto de renglones, y despus las columnas requeridas. Traducida la expresin de lgebra relacional anterior al lenguaje SQL se hara de la formasiguiente:

1.3.1 Una forma de salvar las consultas (querys)


Se ha estado hablando de que las consultas devuelven u obtienen informacin de las tablas contenidas en una base de datos, sin embargo surge la pregunta obligada, Qu pasa con los renglones resultantes de una consulta? En realidad no solo se est obteniendo informacin y se coloca en cualquier lugar; lo que se ve como el resultado de una consulta es un subconjunto de informacin obtenido de las tablas que estn en la base de datos. SI los datos de la base cambian, entonces los resultados de las consultas tambin deben de cambiar, es aqu en donde entra el concepto de tabla virtual, que es la tabla en donde se almacenan los resultados de una consulta y es virtual porque solo es temporal para la ejecucin de una consulta determinada, adems la tablavirtualsertangrandecomoloseaelsubconjuntodedatosobtenidos.

10


Para mantener los resultados de una consulta en una nueva tabla permanente (algunas veces llamada fotografa), que no es muy recomendable porque no mantendra los datos actualizados sobre todo si la informacin de la base original cambia. Por ejemplo si se almacena en una tabla permanente los datos de la lista de telfonos de los miembros, y despus de agregar nuevos miembros, la tabla permanente que se haba generado anteriormente ya no estara actualizada con los nuevos telfonos. En todo caso sera ms conveniente volver a ejecutar la consulta que genera la lista de telfonos , pero sera muy molesto tener que escribir cada rato la misma consulta,enlugardehaceresto,sepuedenalmacenarlasinstruccionesdelaconsultadentrodelo que se conoce como una vista (view),la cual al ser invocada reejecuta las instrucciones de la consultasobrelaqueestconstruidalavista,ymantendrlosdatossiempreactualizados,porque en realidad es una consulta disfrazada de vista. El siguiente ejemplo muestra la creacin de una vista(view).

Para el ejemplo anterior PhoneList es una tabla virtual, que se puede utilizar como una de las tablas reales de la base de datos, e incluso puede ser parte de otras consultas, solo se debe de tenerencuentaquelasvistaescreadaalvuelo.

1.3.2 Especificando condiciones para seleccionar renglones


Como ya se ha ilustrado en diferentes ejemplos, el filtrado o seleccin de renglones est basado en una condicin lgica o boleana, la cual se evala o ejecuta sobre cada uno de los renglones de la tabla o tablas sobre las que se est trabajando. Para determinar la condicin es necesariohacerusodediferentesoperadores,dentrodeloscualesseencuentranlossiguientes: Operadoresdecomparacin Operador = < <= > >= <> Significado Igualdad Menorque MenoroIgualque Mayorque Mayoroigualque Diferente Ejemplo 11


EjemplosdeexpresionesbooleanasquesepuedenejecutarsobrelatablaMember Expresin Renglonesrecuperados TodoslosmiembrosJunior Todoslosmiembrosconhndicapde12omenor Cualquieraqueseamiembrodesdeantesdelinicio del2000 Todaslasmujeres

OperadoresLgicos

Tambinsepuedencombinarexpresionesbooleanasparacrearcondicionesmsinteresantes.Por ejemplo, se pueden especificar que dos expresiones deben ser ambas verdaderas antes de regresarunrenglnenparticular.Porejemplosiqueremosobteneratodoslosmiembrosqueson mujeryquesontipoJunior,quedaradelasiguienteforma:

Algunosejemplosdelosoperadoreslgicossemuestranacontinuacin Expresin Descripcindelosdatos recuperados Seniors que tienen un hndicapmenora12 Diagramadedatos recuperados

Todos los miembros senior o cualquiera que tenga un hndicapmenora12

12


Todos los miembros excepto los que sean de tiposocial

1.3.3 Trabajando con valores nulos


Desde que se va construyendo la definicin de cada tabla, se puede restringir a que un campo pueda o no aceptar valores nulos, un valor nulo significa que para un campo de cualquier tipo de los que se permiten definir (int, char, varchar, etc.) no se le asigne valor alguno (como si se quedara vacio), aunque el campo no tenga valor asignado se puede tomar en cuenta para bsquedas.Porejemplo,considerelasiguienteconsulta

La cual va a devolver a todos los renglones que no se les haya asignado un valor en su campo MemberType. Para devolver a todos los renglones que si tengan definido un valor para su campo Handicap, se ejecutaraunaconsultacomolasiguiente

1.3.4 Manejo de Valores duplicados


En muchas ejecuciones que se ejecutan consultas que devuelven una sola columna, y dicha columna puede contener un dato que se puede repetir para diferentes renglones, al generar el resultado de la consulta, se van a obtener varios valores duplicados. Por ejemplo si se quiere obtener solo la columna PrimerNombre (FirstName) de la tabla Member. El resultado obtenido puedesercomoeldelafigura1.3. 13


Comosepuedever,seobtienenvaloresduplicadosdebidoaquevariaspersonaspuedenllamarse igual, y no es un error de la consulta, de hecho para obtener el resultado de la Figiura 1.3 es simplemente ejecutar la consulta SELECT FirstName FROM Member, si se quiere obtener el resultado sin que aparezcan valores duplicados, se puede usar la palabra clave DISTINCT, como se muestraacontinuacin. SELECTDISTINCTm.FirstName FROMMemberm

14

Figura1.3ResultadodeejecutarlaconsultaquesolodevuelveFirstName

1.3.5 Salida Ordenada


Es muy comn que dentro del contexto de diferentes problemas sea necesario presentar los resultados de una consulta de forma ordenada, de acuerdo al criterio definido por un campo determinado.Parahaceresto,sepuedeutilizarlafraseclaveORDERBY.Porejemplo,lasiguiente consultamuestracmorecuperarinformacindelosmiembrosordenadaalfabticamenteporel campoLastName

Tambinsepuedehacerlaordenacinpordosomsvalores.Porejemplo,sisequiereordenarlos miembrostipoSeniorporsuLastNameysuFirstName,laconsultaSQLseracomolasiguiente:

1.3.6 Funciones de Agregacin


Las funciones de agregacin son funciones que toman una coleccin (un conjunto o multiconjunto) de valores como entrada y producen u nico valor como salida. SQL proporciona cincofuncionesdeagregacinprimitivas: Promedio:avg Mnimo:min Mximo:max Total:sum Cuenta:Count

La entrada a sum y avg debe ser una coleccin de nmeros, pero los otros operadores pueden operarsobrecoleccionesdedatosdetipononumrico,talescomolascadenas. 15

1.3.7 Ejecutando conteo simple


As como se puede recuperar un subconjunto de renglones y columnas de una tabla, tambin se puedenusarconsultasSQLparaobteneralgunasestadsticas.ExistenfuncionesSQLquepermiten contarregistros,valorestotalesovalorespromedio,encontrarvaloresmximosymnimos,yms. Elconteomssimpleeselquedevuelveelnmerototalderenglonesdeunatabla.Porejemplo Tambin se puede contar un subconjunto de renglones agregando una clausula WHERE para especificarloquedebendecumplirlosrenglones.Porejemplo

Adems la funcin COUNT se puede combinar con otras palabras claves como el DISTINCT, y generarconsultascomolasiguiente La cual va a devolver solo el nmero de renglones que tienen un valor definido en el campo Handicapynovaatomarencuentaalosvaloresduplicados. Paraejemplosdelasdemsfuncionesdeagregacinsesugiereconsultar[2]ensutema4.4

1.4 Una vista rpida de los Joins 1.4.1 Joins dentro del lgebra Relacional
El join es una de las operaciones del lgebra relacional, que primero se definir en trminos de lgebra. Recordando que el lgebra dice el cmo obtener los resultados de lo que se est viendo, y un join consiste de dos pasos. El primer paso involucra una operacin llamada Producto Cartesiano. ProductoCartesiano

16


Se define como la operacin ms verstil entre dos tablas, porque puede ser aplicado a cualquierasdostablasdecualquierforma. Unproductocartesianoesalgocomoponerdostablasespaldaconespalda.Sepuedeecharun vistazoalasdostablasenlaFigura1.4:unaabreviacindelatablaMemberylatablaType.

Figura1.4AbreviacindelatablaMemberydelatablaType

Figura1.5Algunosrenglonesresultantesdelproductocartesiano

La tabla virtual resultante del producto cartesiano tendr una columna para cada una de las columnasdelasdostablascontribuyentes.Losrenglonesenlatablaresultanteconsistendetodas las combinaciones de los renglones de las tablas originales. La figura 1.5 muestra unos cuantos renglonesdelproductocartesiano. En la figura 1.5 se puede notar que se encuentran las cuatro columnas de la tabla Member y las dos columnas de la tabla Type, lo cual produce seis columnas en total. Y cada rengln es una combinacin de el rengln de una tabla con todos los renglones de la otra tabla. El producto cartesiano puede producir tablas muy largas, por lo cual se dice que en realidad no nos 17


proporciona mucha informacin til. La expresin del algebra relacional para el producto cartesianoeslasiguiente: InnerJoin Si se observa detenidamente la tabla de la figura 1.5, la mayora de los renglones carecen de bastante sentido, porque de una persona se est diciendo que puede ser de varios tipos, sin embargo,sitomamossoloelsubconjuntoderenglonesdondeelvalordelacolumnaMemberType empateconelvalordelacolumnaTypedelaotratabla,entoncesseobtendrvaliosainformacin acerca de los honorarios para cada uno de nuestros miembros. Esta combinacin de un producto cartesiano seguida de una operacin select es conocida como un inner join (comnmente llamado solamente join). La condicin para los renglones que se quieren recuperar es conocida como la condicin join la expresin del lgebra que recupera a los miembros con su honorario (fee) apropiadoeslasiguiente

Del lado izquierdo de la ecuacin anterior la x entre barras (que parece a una pequea corbata) representa el join entre las dos tablas, y la expresin join se expresa como subndices. En el lado derecho de la ecuacin, se ejecuta una operacin select sobre el resultado del producto cartesiano.Lafigura1.6describeelprocesodelinnerjoindeformagrfica. Las dos columnas que se estn comparando para cumplirlaigualdad (MemberTypeyType)deben cumplir lo que algunas veces se refiere como un join compatible. Dentro de la teora relacional pura, esto significa que ambas deben llegar a tener el mismo conjunto de posibles valores (lo que formalmente se define como el dominio). En trminos prcticos la compatibilidad del join usualmente significa que las columnas en cada una de las tablas tengan el mismo tipo de datos. Diferentes productos de bases de datos pueden interpretar la compatibilidad del join diferente. Algunos pueden permitir ejecutar join sobre un nmero flotante dentro de una tabla y un entero en otra tabla, esto puede llegar a ser confuso en algunos casos, como cuando se quiere hacer join entrecadenasyvalorescarcter.Portodoestoserecomiendaquenoseintentehacerjoinsobre campos de diferentes tipos de datos, a menos que se tenga muy claro lo que va a devolver tu productoparticular.

18

Figura1.6Unjoinesunproductocartesianoseguidoporunselect

Para ejecutar producto cartesiano y join dentro del lenguaje SQL, es importante resaltar que no todas las versiones de SQL tienen las mismas palabras clave (keywords) para implementar dichas operaciones. Desde 1992 palabras clave representaban algunas de las operaciones del lgebra fueron agregadas al estndar de SQL, y desde entonces se han realizado muchas actualizaciones desdeentonces,sinembargonotodoslosproveedoresincorporantodaslaspartesdelestndar,e incluso muchos hacen sus propias versiones del lenguaje (como TSQL para Microsoft o PSQL para Postgress). Tambin puede ser probable que algunas versiones de SQL no implementen todaslasfuncionesdelalgebraqueseestndefiniendoenestostemas. LafraseclavedentrodelSQLparaelproductocartesianoesCROSSJOIN,porejemplo

LafraseSQLparaunjoinesINNERJOIN.LAformadeindicarlacondicindeljoinvadespusdela palabraclaveON,comosemuestraacontinuacin

Otra forma alternativa SQL para obtener un join que produzca la tabla de la figura 1.6 b), es de la siguienteforma 19

Ahoraquesehanagregadojoinsanuestroarsenaldeoperacionesrelacionalessepuedenejecutar numerosos tipos de consultas. Porque el resultado de un join (como el de cualquier otra operacin) es otra tabla, por lo que se puede juntar el resultado a una tercera tabla (y a otras ms) y despus aplicar operaciones select o de proyeccin para algn resultado que se requiera. Paramostrarunejemplocompleto,sevanautilizarlastablasdelafigura1.7.LastablasMiembro (Member), torneo (Tournament) proporcionan detalles acerca d elos miembros y los torneos, y la tabla Entrada (Entry) tiene informacin acerca de los miembros que han participado en los diferentestorneos.EnlatablaEntry,setienenlosnmerosdeIDdelosmiembrosydelostorneos como claves forneas, y si se quiere agregar informacin adicional (digamos el nombre del miembro o tipo de torneo), se necesita encontrar esto de la tabla Member y de la tabla Tournament respectivamente. Digamos que se quiere encontrar los nombres de l cualquiera que haparticipadoenuntorneoabiertoenel2006.

Figura1.7trestablasaconsiderar

Podemos enfocarnos a la pregunta Cules son los nombres de la gente que participo en un torneoabiertoenel2006? 20


Usando el enfoque de algebra , se puede comenzar con las tres tablas, as que se necesita alguna operacin relacional que combine datos de ms de una tabla. Comenzando con Member y la Entry,sepuederealizarlasiguienteoperacin

Locualvaaproducirlodelafigura1.8

Figura1.8eljoindeMemberylaEntry

Despus se tendra que hacer el join de Tournament con el resultado de la figura 1.8, y eso se puedelograrconlasiguienteexpresinalgebraica 21


Loquevaaprovocarelresultadodelafigura1.9

Figura1.9joindelatablaTorunamentconlatabladelafigura1.8

Obteniendo el resultado de la Figura 1.9, ya se puede contestar la pregunta planteada, sin embargo, si queremos ejecutar varias veces la consulta, se tendra que estar escribiendo toda la sentencia SQL cada vez que se quiera obtener el resultado. Sin embargo, en temas anteriores se recomend el uso de una vista para no tener que escribir todo y ya se menciono como funcionan lasvistas,porlotantolaconsultayaenellenguajeSQLseradelasiguienteforma:

22

Para este caso la vista que almacena todo el resultado de la figura 1.9, se va a llamar AllTourInfo, sin embargo la tabla resultante que genera la vista, va a devolver ms informacin que lo que pregunta solicitaba, as que sobre lo que devuelve la vista se puede hacer select y proyeccin y obtenersololoquerealmentepidelapregunta.Laexpresinenlgebraquedaraas YyatraducidaaSQLseraas

Para este caso se construyo primero la vista, aunque no es necesario, eso fue solo para recordar quesisevaarequerirejecutarvariasvecesunaconsultaesprcticodefinirunavista,perosinose quiereusarlavista,laconsultaSQLcompletaseracomolaquesigue

1.4.2 Otros tipos de Join


Los Join que se han visto en este tema son del tipo equijoin. Un equijoin es un join donde las condicionestienenunaigualdadcomoenm.MemberID=e.MemerID.Esteeselmscomntipode condicin, pero se pueden tener distintos operadores. Recordemos que por definicin un join es solo el producto cartesiano seguido por una operacin select, y la condicin del select puede consistir de diferentes operadores de comparacin, y tambin puede incluir operadores lgicos,. Estetipodejoinnodevuelvecomnmentetodo. Ascomoexistenlosllamadosinnerjoinquesehanutilizadoparafiltrarunproductocartesiano, tambinexistenlosllamadosouterjoi.Lamejorformadeentenderunouter joinesverendonde sonutiles.Deunvistazoalafigura1.10quemuestraalastablasMember(modificada)ylaType. 23

Figura1.10lastablasMemberyType

Supongas e que se quiere producir diferentes listas de la tabla Member, como son nmeros y nombres,nombresytiposdemembresia,yms.Enestaslistasseesperaveratodoslosmiembros (usando las tablas de la figura 1.10 que podran tener nueve renglones). Entonces probablemente se puede pensar que tambin se pueden ver los nmeros y nombres en tu lista de miembros, y se podra llegar a incluir tambin el honorario (fee). Entonces se decide hace join de las dos tablas (conlacondicinMembeType=Type)yseencuentraqueseperdiounadelosmiembrosquees BarbaraOlson,comolomuestralafigura1.11

Figura1.11InnerJoinendondeseperdialmiembroBarbaraOlson La razn es que Barbara Olson no tiene un valor para MemberType dentro de la tabla Member. Supngasequealverelproductocartesianoqueeselprimerpasoalejecutareljoin,seobtienelo delafigura1.12.

24


Despusdelproductocartesiano,setienequerealizarlapartefinaldelaoperacinjoin,lacuales aplicar la condicin (MemberType = Type). Como se ve en la Figura 1.12, no existe rengln para Barbara Olson que satisfaga la condicin porque tiene un valor nulo (Null) o vacio en la columna MemberType.

Figura1.12PartedelproductocartesianoentrelastablasMemberyType

Considereahoralassiguientesdospreguntasenlenguajenatural.Obtenerloshonorarios(fees) de los miembros y Solo obtener los miembros que tienen honorarios. La primera tiene una implicacindeSoloobtenerlosmiembrosquetienenhonorarios,mientrasquelasegundatiene ms de un sentido Devolver todos los miembros e incluir los honorarios para aquellos que los tengan. Una de las ms grandes dificultades acerca de escribir consultas es intentar decidir exactamente qu es lo que se quiere. Supongamos que lo que se quiere es una lista de todos los miembros, y luego de donde se encuentre la informacin de los honorarios agregrsela. En este caso se quiere ver a Barbara Olson incluida en el resultado aunque ella no despliegue sus honorarios. Es aqu en donde se usa un outer join. Los outer join pueden venir en tres tipos: izquierda (left), derecha (right), y outer join completo (full). Por ejemplo observe detalladamente el siguiente left outer join entre la tabla Member y la tabla Type, que generan el resultado de la figura1.13

Loqueelleftouterjooinhaceesrecuperartodoslosrenglonesdelatablaizquierda,aunaquellos quetenganunvalornuloenelcampodeljoin(delacondicin),assepuedeverqueseobtuvieron todos los renglones del inner join de la figura 1.11 para los cuales se cumpli la condicin, ms el rengln de Barbara, pero adems los campos del rengln que vinieron de la tabla derecha (Type) tienevaloresnulos. AcontinuacinsemuestrayaenlenguajeSQL,elresultadoqueseobtuvoenlafigura1.13,quees lomismoqueeljoinordinario,soloqueahoraseusalafraseclaveINNERJOIN

25

Figura1.13ResultadodelleftouterjoindeMemberyType

Podra ser bastante razonable decir que no habra necesidad de tener un outer join si todos los miembros tienen un valor para su campo MemberType, lo cual es cierto para ese caso, sin embargo como ya se menciono anteriormente los valores nulos son una propiedad que se le puede definir a cada campo desde que se construye la tabla, sin embargo puede ocurrir que para un determinado problema se permitan valores nules y depues al hacer join se obtenga menos informacindelaquedebedeser,yesahendondesenecesitasuuso. Y que hay acera del right y full outer join? El Left y Right son lo mismo y solo depende sobre cual orden se pungan las tablas en la sentencia del join. La siguiente sentencia SQL devolver la misma informacin que la del left outer join, sin embargo las columnas se presentarn en un orden diferente.

Delamismaformaqueelleftouterjoindevolvercualquierrenglnquetengaunvalornuloene campo join d ela tabal derecha (Member). Un full outer join retendr los renglones con un valor nulo en el campo join de ambas tablas. El SQL es el mismo que el anterior solo se cambia la frase claveFULLOUTERJOIN,yproducirelresultadodelafigura1.14 Nota importante. No todas las implementaciones de SQL tienen un full outer join implementado explcitamente,sinembargopuedencontenerequivalenciasquerealizanlamismaoperacinypor tanto dan el mismo resultado, tal es el caso de Access 2007 que no incluye el full outer join, sin embargoenelcaptulo7del[1]semuestralosequivalentes.

26

Figura1.14ResultadodelFullOuterJoinentrelatablaMemberyType.

En el captulo 4 de [1] se muestran varios ejemplos con la ejecucin de consultas anidadas. Tambin del captulo 1 al 3 de la referencia [3] se muestran como ejecutar diferentes consultas usando un enfoque un tanto diferente orientado al DBMS SQL Server 2008 y un poco ms de programacin. 27

2.BasesdeDatosDistribuidas
A diferencia de los sistemas paralelos, en los que los procesadores se hallan estrechamente acoplados y constituyen un nico sistema de bases de datos, lossistemas distribuidos de bases de datos consisten en sitios dbilmente acoplados que no comparten ningn componente fsico. Adems, puede que los sistemas de bases de datos que se ejecutan en cada sitio tengan un grado sustancialdeindependenciamutua. Cada sitio puede participar en la ejecucin de transacciones que tienen acceso a los datos de uno o varios de los sitios. La diferencia principal entre los sistemas de bases de datos centralizados y losdistribuidosesque,enlosprimeros,losdatosresidenenunanicaubicacin,mientrasqueen los segundos los datos residen en varias ubicaciones. La distribucin de los datos es causa de muchas dificultades en el procesamiento de las transacciones y de las consultas. En este captulo secomentanalgunasdeesasdificultades. Se comienza por clasificar las bases de datos distribuidas en homogneas y heterogneas. Luego se aborda el problema del almacenamiento de los datos en las bases de datos distribuidas. Despus se comenta un modelo de procesamiento de las transacciones en bases de datos distribuidas.

2.1 Bases de Datos Homogneas y Heterogneas


En las bases de datos distribuidas homogneas todos los sitios tienen idntico software de sistemas gestores de bases de datos, son conscientes de la existencia de los dems sitios y acuerdan cooperar en el procesamiento de las solicitudes de los usuarios. En estos sistemas los sitios locales renuncian a una parte de su autonoma en cuanto a su derecho a modificar los esquemas o el software del sistema gestor de bases de datos. Ese software tambin debe cooperar con los dems sitios en el intercambio de la informacin sobre las transacciones para hacerposibleelprocesamientodelastransaccionesentrevariossitios. A diferencia de lo anterior, en las bases de datos distribuidas heterogneas sitios diferentes puede que utilicen esquemas diferentes y diferente software de gestin de sistemas de bases de datos. Puede que unos sitios no sean conscientes de la existencia de los dems y puede que solo 28


proporcionen facilidades limitadas para la cooperacin en el procesamiento de las transacciones. Las diferencias en los esquemas suelen constituir un problema importante para el procesamiento de las consultas, mientras que la divergencia del software supone un inconveniente para el procesamientodetransaccionesquetenganaccesoavariossitios. Eneste temalaatencinsecentrarenlasbasesde datosdistribuidashomogneas.Noobstante, sediscutirnbrevementelosaspectosdelprocesamientodelasconsultasenlossistemasdebases dedatosdistribuidasheterogneas.

2.2 Almacenamiento Distribuido de los Datos


Considrese una relacin r que hay que almacenar en la base de datos. Hay dos enfoques del almacenamientodeestarelacinenlabasededatosdistribuida: Rplica. El sistema conserva replicas (copias) idnticas de la relacin y guarda cada replica en un sitio diferente. La alternativa a las replicas es almacenar solo una copia de la relacinr. Fragmentacin. El sistema divide la relacin en varios fragmentos y guarda cada fragmentoenunsitiodiferente.

La fragmentacin y la rplica pueden combinarse: Las relaciones pueden dividirse en varios fragmentos y puede haber varias replicas de cada fragmento. En los subapartados siguientes se profundizaraencadaunadeestastcnicas.

2.2.1. Rplica de datos


Silarelacinrserplica,seguardaunacopiadedicharelacinendosomssitios.Enelcasoms extremosetieneunarplicacompleta,enlaqueseguardaunacopiaencadasitiodelsistema. Hayvariasventajasydesventajasenlasrplicas. Disponibilidad.Sialgunodelossitiosquecontienelarelacinrfalla,larelacinpuede hallarse en otro sitio distinto. Por tanto, el sistema puede seguir procesando las consultasqueimpliquenar,pesealfallodelsitio. Paralelismo incrementado. En caso de que la mayora de los accesos a la relacin r solo resulten en la lectura de la relacin, varios sitios pueden procesar en paralelo las lecturas que impliquen a r. Cuantas ms rplicas de r haya, mayor ser la posibilidad 29


de que los datos necesarios se hallen en el sitio en que se ejecuta la transaccin. Por tanto,larplicadelosdatosminimizaelmovimientodelosdatosentrelossitios. Sobrecarga incrementada durante la actualizacin. El sistema debe asegurar que todas las rplicas de la relacin r sean consistentes; en caso contrario pueden producirse cmputos errneos. Por eso, siempre que se actualiza r hay que propagar la actualizacin a todos los sitios que contienen replicas. El resultado es una sobrecargaincrementada.Porejemplo,enunsistemabancario,enelquesereplicaen varios sitios la informacin de las cuentas, es necesario asegurarse de que el saldo de cadacuentaconcuerdeentodoslossitios.

Engeneral,larplicamejoraelrendimientodelasoperacionesleeryaumentaladisponibilidadde los datos para las transacciones solo de lectura. No obstante, las transacciones de actualizacin suponen una mayor sobrecarga. El control de las actualizaciones de actualizacin realizadas por varias transacciones en los datos replicados resulta ms complicado que en los sistemas centralizados. Se puede simplificar la gestin de las rplicas de la relacin r escogiendo una de ellascomocopiaprincipalder.Porejemplo,enunsistemabancario,lascuentaspuedenasociarse conelsitioenqueseabrieron.Demaneraparecida,enunsistemadereservadeboletosdeavin, los vuelos pueden asociarse con el sitio en que se origina el vuelo. Se examinar el esquema de copiasprincipalesyotrasopcionesdelcontroldelaconcurrenciadistribuida.

2.2.2. Fragmentacin de los datos


Si la relacin r se fragmenta, r se divide en varios fragmentos r1, r2, . . . , rn. Estos fragmentos contienen suficiente informacin como para permitir la reconstruccin de la relacin original r. Hay dos esquemas diferentes ce fragmentacin de las relaciones: fragmentacin horizontal y fragmentacinvertical.Lafragmentacinhorizontaldividelarelacinasignandocadatupladeren unoomsfragmentos.LafragmentacinverticaldividelarelacindescomponiendoelesquemaR delarelacinr. Estosenfoquesseilustrarnfragmentandolarelacincuenta,conelesquema esquemacuenta=(numerocuenta,nombresucursal,saldo) En la fragmentacin horizontal la relacin r se divide en varios subconjuntos, r1, r2, . . . , rn. Cada tupla de la relacin r debe pertenecer como mnimo a uno de los fragmentos, de modo que se puedareconstruirlarelacinoriginal,sifueranecesario. A modo de ejemplo, la relacin cuenta puede dividirse en varios fragmentos, cada uno de los cuales consiste en tuplas de cuentas que pertenecen a una sucursal concreta. Si el sistema bancariosolotienedossucursales(GuadarramayCercedilla)habrdosfragmentosdiferentes: 30

Cuenta1=nombresucursal,=Guadarrama(cuenta) Cuenta2=nombresucursal=Cercedilla(cuenta)
La fragmentacin horizontal suele utilizarse para conservar las tuplas en los sitios en que ms se utilizan,paraminimizarlatransferenciadedatos. En general, los fragmentos horizontales pueden definirse como una seleccin de la relacin global r.Esdecir,seutilizaunpredicadoPi,paraconstruirfragmentosri:

ri=Pi(r)
Sereconstruyelarelacinrtomandolaunindetodoslosfragmentos;esdecir, r=r1Ur1U.Ur1 En el ejemplo los fragmentos son disjuntos. Al cambiar los predicados de seleccin empleados para crear los fragmentos se puede hacer que una tupla concreta de r aparezca en ms de uno de losfragmentosri. En su forma ms sencilla la fragmentacin vertical es igual que la descomposicin. La fragmentacin vertical de r(R) implica la definicin de varios subconjuntos de atributos R1, R2,..., RndelesquemaRdemodoque R=R1UR2UURn Cadafragmentori,dersedefinemediante ri=URi(r) La fragmentacin debe hacerse de modo que se pueda reconstruir la relacin r a partir de los fragmentostomandolareuninnatural Una manera de asegurar que la relacin r pueda reconstruirse es incluir los atributos de la clave principal de R en cada uno de los fragmentos Ri. De manera ms general, se puede utilizar cualquiersuperclave.Sueleresultarconvenienteaadirunatributoespecial,denominadoidtupla, alesquemaR.Elvaloridtupladeunatuplaesunvalornicoquedistinguecadatupladetodaslas dems. El atributo idtupla, por tanto, sirve como clave candidata para el esquema aumentado y se incluye en cada uno de los fragmentos La direccin fsica o lgica de la tupla puede utilizarse comoidtupla,dadoquecadatuplatieneunadireccinnica. Para ilustrar la fragmentacin vertical considrese una base de datos universitaria con una relacin infoempleado que almacena, para cada empleado, idempleado, nombre, puesto y salario. Por motivos de preservacin de la intimidad puede que esta relacin se fragmente en una 31


relacin empleadoinfoprivada que contenga idempleado y salario, y en otra relacin empleado infopblica que contenga los atributos idempleado, nombre y puesto. Puede que las dos relacionessealmacenenensitiosdiferentes,nuevamente,pormotivosdeseguridad. Se pueden aplicar los dos tipos de fragmentacin a un solo esquema; por ejemplo, los fragmentos obtenidos de la fragmentacin horizontal de una relacin pueden dividirse nuevamente de manera vertical. Los fragmentos tambin pueden replicarse. En general, los fragmentos pueden replicarse,lasreplicasdelosfragmentospuedenfragmentarsemas,etctera,etctera.

2.2.3. Transparencia
No se debe exigir a los usuarios de los sistemas distribuidos de bases de datos que conozcan la ubicacin fsica de los datos ni el modo en que se puede tener acceso a ellos en un sitio local concreto. Esta caracterstica, denominada transparencia de los datos, puede adoptar varias formas: Transparencia de la fragmentacin. No se exige a los usuarios que conozcan el modo en quesehafragmentadolarelacin. Transparencia de la rplica. Los usuarios ven cada objeto de datos como lgicamente nico. Puede que el sistema distribuido replique los objetos para incrementar el rendimiento del sistema o la disponibilidad de los datos. Los usuarios no deben preocuparseporlosobjetosquesehayanreplicadoniporlaubicacindeesasreplicas. Transparencia de la ubicacin. No se exige a los usuarios que conozcan la ubicacin fsica de los datos. El sistema distribuido de bases de datos debe poder hallar los datos siempre quelatransaccindelusuariofaciliteelidentificadordelosdatos.

Los elementos de datos (como las relaciones, los fragmentos y las replicas) deben tener nombres nicos. Esta propiedad es fcil de asegurar en una base de datos centralizada. En las bases de datos distribuidas, sin embargo, hay que tener cuidado para asegurarse de que dos sitios no utilicenelmismonombreparaelementosdedatosdiferentes. Una solucin a este problema es exigir que todos los nombres se registren en un servidor de nombrescentral.Elservidordenombresayudaaasegurarqueelmismonombrenoseutilicepara elementos de datos diferentes. Tambin se puede utilizar el servidor de nombres para ubicar un elemento de datos, dado el nombre del elemento. Este enfoque, sin embargo, presenta dos inconvenientes principales. En primer lugar, puede que el servidor de nombres se transforme en un cuello de botella para el rendimiento cuando los elementos de datos se ubican por sus nombres, lo que da lugar a un bajo rendimiento. En segundo lugar, si el servidor de nombres que da fuera de servicio, puede que no sea posible que siga funcionando ningn otro sitio del sistema distribuido.

32


Un enfoque alternativo ms utilizado exige que cada sitio anteponga su propio identificador de sitio a cualquier nombre que genere. Este enfoque asegura que dos sitios no generen nunca el mismo nombre (dado que cada sitio tiene un identificador nico). Adems, no se necesita ningn control centralizado. Esta solucin, no obstante, no logra conseguir la transparencia de la ubicacin,dadoqueseadjuntanalosnombreslosidentificadoresdelossitios.As,sepuedehacer referencia a la relacin cuenta como sitio17.cuenta, o cuenta@sitio 17, en lugar de meramente cuenta. Muchos sistemas de bases de datos utilizan la direccin de internet de los sitios para identificarlos. Para superar este problema el sistema de bases de datos puede crear un conjunto de nombres alternativos o alias para los elementos de datos. As, los usuarios se pueden referir a los artculos de datos mediante nombres sencillos que el sistema traduce en los nombres completos. La asignacin de los alias a los nombres reales puede almacenarse en cada sitio. Con los alias el usuariopuedeignorarlaubicacinfsicadeloselementosdedatos.Adems,elusuarionosever afectadosieladministradordelabasededatosdecidetrasladarunelementodedatosdeunsitio aotro. Losusuariosnodebentenerquehacerreferenciaaunarplicaconcretadeunelementodedatos. En vez de eso, el sistema debe determinar la rplica a la que hay que hacer referencia en las solicitudes leer, y actualizar todas las replicas en las solicitudes escribir. Se puede asegurar que Io haga manteniendo una labia de catalogo que el sistema utiliza para determinar todas las replicas delelementodedatos. Paraverlareplicacindesdeunpuntodevistaprcticoparapensarensuimplementacinatravs de programacin, se sugiere el captulo 17 de la referencia [4]. Porque lo que vendra a continuacineslapartedetransaccionesdistribuidas,peroprimeroesconvenientecubrireltema de transacciones. Las transacciones distribuidas vienen documentadas en la seccin 19.3 de la referencia[2].

33

3.Transacciones
Hasta ahora el modelo de operacin en las bases de datos ha sido o de consultas, o de modificacionesalaBasededatos. Hemos siempre supuesto que las acciones se ejecutan una a la vez y que cada una se lleva a cabo completamente. Hemossupuestoquenielsoftwarenielhardwarepuedenfallarenelintertantodeunaoperacin. Lavidarealesmuchsimomscompleja. No slo el hardware o el software pueden fallar dejando a la BD en un estado inexplicable a partir deoperaciones. Elsistemadebasededatosnormalmenteestsiendoaccedidosimultneamentepormuchos usuariostantoparahacerconsultascomoactualizaciones. AlgunasejecucionesparalelaspuedenintercalarsedemanerataldedejaralaBDenunestado inconsistente.

3.1 Serializacin
Supongamosqueenunaaplicacindereservadepasajesparaunvueloexisteunprocedimiento que: buscaunasientolibre lomarcacomoocupado asignaelasientoalpasajeroqueejecutlallamada Es totalmente posible que al mismo tiempo dos pasajeros ejecuten el procedimiento simultneamenteydejenlaBDenunestadoindeseable. P1 P1llamaalprocedimiento Seencuentraasiento10libre P2 P2llamaalprocedimiento Seencuentraasiento10libre

34


Semarca10ocupado Seasigna10aP1 Semarca10ocupado Seasigna10aP2

Ambospasajerosquedanconelmismoasientoasignado,laBDquedaenunestadoindeseable. Nosgustaraqueseacualseaelordendeejecucin,elestadodelaBDquedaracomosise hubieseejecutadounprocedimientoprimeroyluegoelotro. Aestoselellamaunaejecucinserializable. Si cualquier ejecucin de los procedimientos anteriores fuese serializable entonces nunca se le asignaraadospasajeroselmismoasiento. IMPORTANTE: NO queremos que los procedimientos siempre se ejecuten uno tras otro, slo necesitamosqueelresultadoseaserializable.

3.2 Atomicidad
Supongamos que tenemos una aplicacin bancaria y un procedimiento para transferir fondos entrelascuentasA1yA2: 1.SeverificaqueA1tengasuficientedinero. 2.SeaumentaelsaldodeA2enelmontoespecificado. 3.SedisminuyeelsaldodeA1enelmontoespecificado. Supongamosqueelsistemafallajustoantesdecomenzaraejecutarlalnea3. LaBDquedaenunestadoindeseable(almenosparaelbanco). Enelejemploanteriornosgustaraquelasoperacionesseejecutarantodasoqueningunadeellas seejecutara.

35


La ejecucin de una operacin es atmica si el estado de la BD luego de la operacin es como si todossuscomponentessehubiesenejecutadoocomosiningunodeelloslohubiesehecho. Losproblemasdeserializacinyatomicidadpuedenserresueltosusandotransacciones. Una transaccin est compuesta por un grupo de instrucciones de SQL que se ejecutan atmicamente(seejecutantodasoninguna). Pordefectoadems,unatransaccinexigeejecucionesserializables. En SQL2 se puede especificar ms libertad en la ejecucin que simplemente serializable, esto se hacemodificandolosnivelesdeaislamientoqueveremosmsadelante. Una transaccin se comienza con una instruccin begin transaction (no es necesario en algunos DBMS). La instruccin commit termina la transaccin en forma exitosa y hace permanente cualquier cambiorealizadoalaBDdurantelatransaccin. Loscambiossehacenpermanentesslodespusdeuncommit. La instruccin rollback aborta la transaccin y la hace terminar en forma no exitosa, cualquier cambioquelatransaccinpudohaceralaBDsedeshace. En general se puede hacer rollback para cualquier conjunto de instrucciones no necesariamente dentrodeunatransaccin. Paraelejemplodetransferenciadefondos: 1.begintransaction 2.SiA1notienesuficientedinerorollback. 3.SeaumentaelsaldodeA2enelmontoespecificado. 4.SedisminuyeelsaldodeA1enelmontoespecificado. 5.commit.

3.3 Tipos de transacciones


SQLpermitedefinirdistintostiposdetransacciones. Cada uno de ellos define las posibilidades de accesos y enmallado de instrucciones que se pueden dardurantelaejecucindetransaccionesenparalelo. 36


Sepermitenlossiguientesnivelesdeaislamiento: serializable(pordefecto) repeatableread readcommited readuncommitted Parasetearlosseusasettransaction,porejemplo settransactionrepeatableread. SQLServerrealizaymantieneunaseriedebloqueosdurantelatransaccin.Existendosformasde modificareltratamientodelosbloqueos. La primera de ellas consiste en introducir clusulas en las sentencias select. Estas clusulas modificarn el tratamiento de los bloqueos de las unidades afectadas (filas, tablas, pginas; la granularidadtambinesseleccionableysetratarmsadelante)porlasentenciaysemantendrn hastalafinalizacindelatransaccin. La segunda, se mantiene durante toda la sesin. Para modificar la forma en que una sentencia select gestiona una transaccin y sus bloqueos se utiliza la sentencia set transaction isolation levelquetienelassiguientesopcionesonivelesdeaislamiento,mutuamenteexcluyentes:

readcommitted:Eselcomportamientopredeterminado.Latransaccinmantiene bloqueoscompartidosduranteeltiempoquedurelalectura.Latransaccinpuede encontrarseconlecturasnorepetiblesodatosfantasmadadoqueelbloqueonoimpidea otrastransaccionesmodificarlosdatosquesehanledo. readuncommitted:Conesteniveldeaislamientounatransaccinpuedeleerdatossucios deotrastransacciones.Eselniveldeaislamientomenosrestrictivo.Estaopcintieneel mismoefectoqueusarlaopcinnolockenunasentenciaselect. repeatableread:Amedidaqueseleendatosseestablecenbloqueosdeformaqueotra transaccinnopuedamodificardatosledos.Esteniveldeaislamientoesmsrestrictivoy puedehacerqueotrastransaccionessebloqueen.Noevitaquesepuedanaadirnuevas filas. snapshot:Conesteniveldeaislamientolasconsultasdelatransaccinencursoslo leernlosdatosconfirmadosantesdelcomienzodelamisma.Dadoquelatransaccinen cursotrabajaconunainstantneadelosdatos,capturadaenelmomentodeiniciodela transaccin,laslecturasdedatosdeestatransaccinno solicitanbloqueosyotras transaccionesquerealicenoperacionesdeescrituranobloquearnasta. serializable:Niveldeaislamientomsrestrictivoyaqueaplicaunbloqueoalrangode datosledos.Proporciona,portanto,proteccinantelecturadefilasfantasma. 37


Veremosunejemploparadejarclarocadaunodelosniveles. Supongamos una base de datos con una relacin con esquema vende (bar, cerveza, precio) que indicaqueciertacervezasevendeaciertoprecioenciertobar. SupongamosqueelbardePepevendesloCristala$450yEscudoa$400. JuanquierepreguntarporlacervezamscaraymsbaratadelbardePepe. AlmismotiempoPepeeliminaaCristalyEscudoycomienzaavendersloKunstmannen$500. EnSQL,Juanejecutalasinstrucciones selectmax(precio)fromvendewherebar=Pepe selectmin(precio)fromvendewherebar=Pepe quellamaremos(max)y(min)respectivamente. PorsupartePepeejecuta deletefromvendewherebar=Pepe insertintovendevalues(Pepe,Kunstmann,500) quellamaremos(del),e(ins)respectivamente. Supongamos que se ejecutan simultneamente en la base de datos los dos grupos de instrucciones. Lo nico que podemos asegurar con certeza es que (max) se ejecuta antes de (min), y que (del) se ejecutaantesde(ins),peronadams. Unaposibleejecucinpodraserlasiguiente: Juan:(max)(min) Pepe:(del)(ins) Juan lee como mximo el precio de Cristal que es $450 y finalmente lee como precio mnimo el preciodeKunstmannquees$500...elmximoesmenorqueelmnimo!!!! Si Juan ejecuta sus instrucciones en una transaccin con nivel de aislamiento serializable entonces ver la basede datos antes o despusde la ejecucin de las instrucciones de Pepe pero nunca en elmedio. 38


DependedelDBMScmoaseguraesto,lonicoqueinteresaesquelavistadelosdatosporparte de Juan es como si uno de los grupos de instrucciones (de Juan o de Pepe) se ejecute antes que el otro. La eleccin de nivel serializable afecta slo a quien la elige... por ejemplo, si Pepe ejecuta con nivel serializable pero Juan no, Juan perfectamente podra ver los datos como si ejecutara en la mitaddelatransaccindePepe. Supongamos que Pepe ejecuta (del) e (ins) pero luego lo piensa mejor, se arrepiente y hace rollbackparadeshacerloscambios. SiJuanejecutasutransaccindespusdel(ins)peroantesdelrollbacksetiene Juan:(max)(min) Pepe:(del)(ins)rollback EntoncesJuanleereldato$500comopreciomximoymnimo,sinembargo$500esundatoque nuncaexistirarealmenteenlabasededatos,aestoselellamaLecturaSucia. LecturaSucia:transaccinT1actualizadatosqueT2lee,luegoT1seaborta)T2haledodatos inexistentes. El nivel read commited evita la lectura sucia ya que como su nombre lo dice la transaccin solo podrleerdatosquehansidoreafirmadosporelcommitdeotratransaccin. De alguna forma el DBMS se las debe arreglar para que Juan no pueda leer el valor $500 si es que Pepehacerollback. Elnivelreadcommitedesmspermisivoqueelserializabledehechoenlaejecucin Juan:(max)(min) Pepe:(del)(ins)

estotalmentefactibleenreadcommitedsiemprequePepehagacommit,yJuanverqueel mximoes$450yqueelmnimoes$500.

39

3.4 Nivel Repeatable Read


Estenivelevitaloqueseconocecomolecturanorepetible. Lectura No Repetible: transaccin T1 lee los mismos datos dos veces, entre ambas lecturas una transaccinT2eliminaalgunosdatos)enlasegunda lecturadeT1sepierdendatosconrespectoa laprimera. El nivel repateable read es similar a read commited adicionando la restriccin de que en una transaccin, todo lo que se vio en una lectura inicial debe ser visto si se ejecuta la misma lectura posteriormente. La segunda y siguientes lecturas pueden tener ms datos que la primera pero nunca se pueden perderdatos. SupongaqueJuanejecutaconnivelrepeatablereadyelordendelasinstruccioneses: Juan:(max)(min) Pepe:(del)(ins) Dadoquedurantelalectura(max)Juanleylosvalores$400y$450,elsistemadebeasegurarque durante (min) se vean adicionalmente a $500, los valores $400 y $450 ya que estos fueron vistos enlalecturaanterioren(max). EnestecasolosdatossernconsistentesenlalecturaparaJuan(comparadosconreadcommited) ya que ver que el mximo precio es $450 y el mnimo es $400, a pesar de que esto no refleje el estadorealdelabasededatosluegodelastransacciones. Estenivelsiguesiendomspermisivoqueserializable. Supongamos que Juan intenta leer dos veces el precio mximo de las cervezas y en el intertanto Pepeactualizalosprecios Juan:(max)(max) Pepe:(del)(ins) Si ejecuta en repeatable read se asegura que todo lo que lee en el primer (max) lo lee tambin en el segundo (max), sin embargo en un caso obtiene que el mximo es $450 y luego $500, esto se conocecomovalorfantasma. Fantasmas: T1 lee datos que cumplen cierta condicin, T2 inserta un dato que cumple la condicin,siT1vuelvealeerencontrarunanuevatuplafantasma. 40

3.5 Nivel Read Uncommited


Eselnivelmspermisivo. Unatransaccinqueseejecutaconnivelreaduncommitedpuedevervaloresqueotratransaccin ha escrito, o dejar de ver valores que otra transaccin haya borrado, a pesar de que esta no haya hechocommityposiblementenuncalohaga. Por ejemplo Juan podra perfectamente ver el valor $500 como precio mximo o mnimo a pesar quePepeposteriormentealainsercinaborteloscambios(rollback). readuncommitedpermiteentonceslecturassucias,lecturasnorepetiblesylecturasfantasmas. Utilizacindelosnivelesdeaislamientodelastransacciones Los niveles de aislamiento determinan el grado en que los datos incoherentes de una transaccin estn protegidos frente a otras transacciones. En teora, toda transaccin debe estar completamente aislada de otras transacciones, pero en la realidad, por razones prcticas, esto puedenoserciertosiempre.Elusodeunniveluotroestarcondicionadoporlanaturalezadelos procesosdetratamientodedatosdecadaaplicacinenparticular. Para establecer el grado de aislamiento de las transacciones durante toda una conexin, en SQL Serverseutilizalasentenciasettransactionisolationlevel. En un entorno multiusuario, pueden darse cuatro situaciones: actualizacin perdida, lecturas sucias,lecturasnorepetibles,lecturasfantasma.

Actualizacinperdida:Noproporcionaningnaislamiento.Laltimatransaccinen modificarelconjuntodedatosprevaleceryloscambiosrealizadosporotrastransacciones seperdern. Lecturassucias:Unatransaccinpuedeleerdatosqueestnsiendomodificadosporotras transacciones.Estosdatossonincoherentesporquelasotrastransaccionespuedendecidir cancelarloscambios. Lecturasnorepetibles:Enestasituacinunatransaccinleelosmismosdatosdosveces, peroentreunalecturayotra,otratransaccinhamodificadolosdatos.As,losdatos obtenidosenlaprimeralecturaserndistintosalosobtenidosenlasegunda. Lecturasfantasma:Enestasituacin,latransaccin1leelosdatosenunrangodeclavesdel 1al8,existiendolasfilas1,3y5.Unasegundatransaccininsertaenlamismatablauna filaconlaclave2.Cuandolatransaccin1realiceunanuevaconsultasobredichorangode clavesseencontrarconunafilaqueantesnoexista.

41


Idealmente, un SGBD debe proporcionar niveles de aislamiento para evitar todas estas situaciones. A veces, por razones de rendimiento y siempre condicionado por la naturaleza de los procesosquemanejanlainformacin,puedenpermitirsealgunasdeestassituaciones. ANSIdefinelossiguientescuatroestndaresparaelaislamientodetransacciones:lecturadedatos no confirmados (N0), lectura de datos confirmados (N1), lectura repetible (N2) y serializable (N4). SQLServerproporcionasoporteparatodosestosniveles.

3.6 Lectura de datos no confirmados


Si se selecciona el modo de lecturas no confirmadas no se proporciona ningn aislamiento a las transacciones. Una transaccin que se ejecute con este nivel de aislamiento no ser inmune a las lecturas sucias, lecturasnorepetiblesnilecturasfantasma. LainstruccinTSQLqueseleccionaesteniveldeaislamientoes: SETtransactionisolationlevelREADuncommitted

3.7 Lectura de datos confirmados


EselcomportamientopredeterminadodeSQLServer. En este modo no se ejecutan inicios de transacciones implcitas. Durante la ejecucin de una sentencia se establece un bloqueo de actualizacin sobre el recurso a modificar. En cuanto termineestasentencia,seliberarelbloqueo. En este nivel de aislamiento se protege a la transaccin contra lecturas sucias, pero las transacciones no son inmunes a la prdida de actualizaciones, las lecturas no repetibles ni a las lecturasfantasma. SETtransactionisolationlevelREADcommitted

3.8 Lectura repetible


SQL Server da inicio a una transaccin de manera implcita al ejecutar una sentencia de modificacin de datos, por lo que ser necesaria una sentencia commit o rollback para terminarla. Este modo permite a las transacciones establecer bloqueos compartidos y exclusivos sobrelosrecursosamodificar. Bajoesteniveldeaislamiento,lastransaccionesestnprotegidascontraprdidadeatualizaciones, las lectruras sucias y las lecturas no repetibles. Sin embargo, dichas transacciones s pueden sufrir problemasdelecturasfantasma. 42


SETtransactionisolationlevelrepeatableREAD Podemos finalmente definir los distintos niveles de aislamiento a partir de si cada uno de ellos permiteonolecturassucias,lecturasnorepetibles,y/olecturasfantasmas. Nivel Serializable Repeatableread Readcommited Readuncommited Sucia NO NO NO SI NoRepetible NO NO SI SI Fantasma NO SI SI SI

Entoncespodemosconcluirdeloanteriorqueunatransaccinesunaunidadlgicadetrabajoque tiene ciertas propiedades conocidas como propiedades ACID: atomicidad, coherencia, aislamiento ypermanencia. Es responsabilidad del sistema gestor de bases de datos el asegurar que se cumplan estas propiedades. Sin embargo, el programador dispone de un cierto grado de control sobre la forma enqueSQLServergestionaalgunasdeestaspropiedades.

3.9 Control de Concurrencia


FormaenqueelDBMSmanejalasejecucionesparalelasenlaBD. Principalmentedosenfoques: Optimista: supone que los conflictos son escasos ) permitir acceso concurrente y deshacer las accionesproblemticas. Pesimista:asumequeesmuyprobablequeocurranproblemas)actaaladefensivaimpidiendo laaparicindeconflictosusandolocks.

43


Un lock es una estructura que slo puede ser adquirida por una hebra de ejecucin (thread) a la vez. Sidosejecucionestratandeobtenerunlockparaactualizarunatabla,laprimeraquetratede obtenerlotendraccesoexclusivoalatabla,lasegundadebeesperaraquelaprimeralosuelte paraobtenerelacceso. Loslockspuedentenerdistintasgranularidades:BasedeDatos,Tabla,Tupla,Atributo. Ademsdeloslocksexclusivosexistenlocksdesololecturaolockscompartidosquepuedenestar simultneamentesiendoutilizadospordistintasejecuciones.

3.10 Transacciones Abortadas


Unatransaccinpuedenollegarasutrminodebidoamuchasrazones: situacinexcepcionaldetectadaquehacequeelprogramanopuedacontinuar. falladelprograma falladelsoftwaredeBD falladelSistemaOperativo falladelhardware falladeenergaelctrica controldeconcurrenciahadetectadounconflicto controldeconcurrenciahadetectadoundeadlock

3.11. Gestin de bloqueos en SQL Server


Elcorrectofuncionamientoylaeficienciadenuestraaplicacinquemanejausuariosconcurrentes accediendo a nuestra base de datos dependen de la configuracin de SQL Server y de la programacin de la aplicacin, as que, tanto para una cosa como para la otra, debemos comprenderymanejarestosconceptos.

3.11.1 Bloqueos y rendimiento


Los bloqueos son los encargados de hacer que las transacciones tengan la propiedad de aislamiento.Larealizacindebloqueosenunentornoconcurrenteproporcionaaislamientoenlos siguientescasos:

Mltiplestransaccionesintentanmodificarlamismafila. Datosnoconfirmadosporunatransaccinsonledosporotrastransacciones.Estose conocecomolecturassucias. 44

Losdatosledosconlamismaclusulaselectdurantevariasetapasdelatransaccindan lugaravaloresdiferentesconelmismoconjuntodedatos.Conocidocomolecturasno repetibles. Losdatosledosconlamismaclusulaselectdurantevariasetapasdelatransaccindan lugaradiferentesconjuntosdedatos.Esloqueseconocecomolecturasfantasma.

El establecimiento de los bloqueos es automtico en SQL Server, no tenindose que preocupar, por tanto, el programador directamente por ellos, aunque debe tener en cuenta qu tipo de bloqueos establece cada operacin atendiendo a las clusulas incluidas, etc., para minimizar los interbloqueos.

3.11.2 Recursos de los bloqueos. Granularidad del bloqueo


El establecimiento de bloqueos es automtico en SQL Server. El gestor de bloqueos es el encargadodedecidireltipoylagranularidaddelbloqueo. Los bloqueos se pueden producir tanto a nivel de pgina de datos como a nivel de pgina de ndice. El gestor de bloqueo puede decidir bloquear los recursos: tabla, extensin, pgina, fila y rangodeclave. La granularidad del bloqueo incide de forma directa sobre la concurrencia y el rendimiento del sistema. El optimizador de consultas decide la granularidad del bloqueo automticamente. No obstante, SQL Server proporciona extensiones de TSQL que proporcionan un mecanismo para controlarlagranuralidaddelosbloqueos.

3.11.3 Tipos de bloqueo en SQL Server


El procedimiento almacenado sp_lock proporciona los bloqueos activos en el sistema gestor de bases de datos. Tambin ofrecen informacin sobre bloqueos el administrador corporativo, el monitorderendimiento,eladministradordememoriayelobjetodeSQLServerbloqueos. Dependiendodeltipodetransaccin,elgestordebloqueosestablecedistintostiposdebloqueos.

Bloqueoscompartidos
Seestablecenparaoperacionesdeslolectura,porejemploselect. Varias transacciones pueden mantener varios bloqueos compartidos simultneamente sobre el mismorecursoyaquedichastransaccionesnointerfierenentres. Si una transaccin intenta modificar un dato de un recurso sobre el que se ha establecido un bloqueocompartido,sebloquearhastaquetodoslosbloqueoscompartidosseliberen. Un bloqueo compartido se libera en cuanto se finaliza la operacin de lectura de datos, es decir, no permanece a lo largo de la transaccin. Existen clusulas de las que se hablar ms adelante paramodificarestecomportamiento. 45

Bloqueosdeactualizacin
Losbloqueosdeactualizacinseusanparainstruccionesquemodificandatos. Cuando una transaccin intenta actualizar una fila primero ha de leerla para asegurarse de que la fila en cuestin es realmente la que se quiere modificar. En este momento establece un bloqueo compartido. Una vez se ha asegurado que es la fila correcta proceder a modificarla, para lo que necesita establecer un bloqueo exclusivo que ser liberado al terminar la transaccin. Los bloqueos de actualizacin se emplean como bloqueo intermedio entre los dos anteriores para evitarinterbloqueos.

Bloqueosexclusivos
Se concede un bloqueo de este tipo a una transaccin cuando sta est lista para modificar los datos. Un bloqueo exclusivo sobre un recurso asegura que ninguna otra transaccin pueda interferirlasaccionesllevadasacaboporlaprimeratransaccinsobrelosrecursosbloqueados. SQLServerliberaelbloqueoalfinalizarlatransaccin.

Bloqueosdeintencin
El bloqueo de intencin es un mecanismo que utilizan las transacciones para declarar su intencin deobtenerunbloqueocompartido,deactualizacinoexclusivosobreunrecurso. No establece ningn bloqueo en si, excepto por el hecho de que otra transaccin no podr adquirir un bloqueo de actualizacin sobre un recurso sobre el que se haya establecido un bloqueodeintencin.

Bloqueosdeesquema
Se utilizan para mantener la integridad estructural de las tablas SQL Server. A diferencia de otros bloqueos, que proporcionan aislamiento para los datos, los bloqueos de esquema proporcionan aislamientoparaelesquemadeobjetosdelabasededatos.

Compatibilidaddebloqueos
En la siguiente lista se muestra la compatibilidad entre los distintos tipos de bloqueo. Para cada bloqueo que puede llegar a estar activo sobre una conexin al sistema gestor de bases de datos SQL Server se lista qu tipos de bloqueo pueden solicitarse concurrentemente (por ejemplo, si existe un bloqueo de modificacin de esquema no puede solicitarse ningn otro tipo de bloqueo, talycomomuestraelltimoelementodeestalista).

Deintencincompartido:deintencincompartido,compartido,deactualizacin,de intencinexclusivo,compartidodeintencinexclusivoydeestabilidaddeesquema. Compartido:deintencincompartido,compartido,deactualizacinydeestabilidadde esquema. Deactualizacin:deintencincompartido,compartidoydeestabilidaddeesquema. Deintencinexclusivo:deintencincompartido,deintencinexclusivoydeestabilidadde esquema. 46

Compartidodeactualizacinexclusivo:deintencincompartidoydeestabilidadde esquema. Exclusivo:estabilidaddeesquema. Estabilidaddeesquema:deintencincompartido,compartido,deactualizacin,de intencinexclusivo,compartidodeintencinexclusivo,exclusivoydeestabilidadde esquema. Modificacindeesquema:ningnbloqueoescompatibleconelbloquedemodificacinde esquema.

Bloqueosdendices
De forma similar a los bloqueos de pginas de datos, SQL Server gestiona los bloqueos de las pginasdendicesinternamente. Conelcomandosp_indexoptionsepuedemodificarelgestorpermitiendoonobloqueosanivel defilas. Se recomienda no realizar modificaciones sobre el comportamiento por defecto del gestor de bloqueosenloreferentealaspginasdendicesyaquesuelehacerbuenaselecciones.

3.12 Concepto de espacios de trabajo (tablespace)


Untablespaceeselarchivodondesealmacenarnlastablasydatosdeusuario. Esunpuenteentreelsistemadeficherosdelsistemaoperativoylabasededatos. Cada tablespace se compone de, al menos, un datafile y un datafile solo puede pertenecer a un tablespace. Cada tabla o ndice de pertenece a un tablespace, es decir cuando se crea una tabla o ndice se creaenuntablespacedeterminado. Sintaxis:
CREATE [UNDO] TABLESPACE tablespace_name DATAFILE Datafile_Options Storage_Options ;

47


CaractersticasdelEspaciodetrabjajo

En los tablespaces se almacenan los objetos del esquema de la BD (tablas, ndices, etc.),pudindoserepartirporvariosficheros. UnaBDtienevariostablespaces. Untablespacetienevariosdatafiles. UndatafilesloperteneceauntablespaceyuntablespacesloperteneceaunaBD. Estructuradelostablespace Tabla Tabla 48 ndice ndice Tabla ndice ndice Tabla ndice Tabla Tabla

TABLESPACE

Tiposdetablespaces
TablespaceSYSTEM SecreaautomticamentealhacerlainstalacindeSQLServer,oalcrearunaBD. Contieneeldiccionariodedatos. o Tablespacestemporales Esaqulenelquesolamentepuedehaberobjetostemporales.Nosepuedencrear objetospermanentescomopuedenserlosndices,lastablas,operacionesde ordenacin,segmentosderollbacketc. o Detipodeshacercambios Seutilizanparagestionarpoderdeshacerlastransaccionesincompletas.En Rollbackversionesanteriores o Contamaodebloquevariable DetipoBigFile
o

Estadodeltablespace Untablespacepuedeestarendosestados:OnlineyOffline.. o Existeunavistaquenosdainformacinsobrelostablespacesdenuestrabasededatos. selecttablespace_name,statusfromdba_tablespaces;


o

Estadodeltablespace.Modooffine. Parapoderhacerunacopiadeseguridaddeltablespaceestandocompletamenteseguros dequenadieestmodificandolosobjetosdeltablespace. o Parapoderactualizarunaaplicacinquesebasaenlosobjetosdeestetablespacesinque ningnusuariopuedamodificarlosdatosenmediodelaactualizacin.


o

Estadodeltablespace.Modoonline.
o

Locontrarioalastablespaceenmodooffline.

CREACCIONDEESPACIOSDETABLASYARCHIVOSDEDATOS Comosetratanteriormente,elespaciovirtualdondesedistribuyenlastablasydemsobjetosse denomina TABLESPACE, un tablespace puede ocupar fsicamente varios archivos distribuidos en todalareddeordenadores. 49


Unarchivofsicosolopuedeperteneceraunnicotablespace. Paracrearuntablespacebastacon: CREATETABLESPACEmi_clase DATAFILEoracle1.oraSIZE1M; Esta sentencia, crea un espacio para las tablas llamado mi_clase, que fsicamente va ocupar el archivooracle1.orade1Megabytedeespacio. CREATETABLESPACEmi_clase DATAFILEoracle1.oraSIZE1M,oracle2.oraSIZE100K; Esta sentencia, crea un espacio para las tablas llamado mi_clase, que fscamente va ocupar dos archivos, el archivo oracle1.ora de 1 Megabyte de espacio y el archivo oracle2.ora de 100 Kilobytes. LosDatafilespordefectosecreanenlacarpeta: Siqueremoscrearlosenotracarpetaomquina,bastaconponerlarutacompleta: CREATETABLESPACEmi_clase DATAFILEc:\documentsandsetting\admin\misdocumentos\oracle1.oraSIZE1M, \192.168.0.33\d:\datos\oracle2.oraSIZE100K; Obviamente si se crea un datafile en otra mquina debemos tener permisos de escritura en la misma,otorgadosporelsistemaoperativoenred. Laextensindelarchivonoesrelevante: CREATETABLESPACEmi_clase DATAFILEoracle1.datSIZE1M,oracle2.tabSIZE100K; LaClusulaREUSEsirveparacrearelarchivosinoexisteysinoredefinirlo. CREATETABLESPACEmi_clase2 DATAFILEoracle1.datSIZE2MREUSE; El archivo oracle1.data si no existe se crea, si existe y era de otro tablespace o de otro tamao se redefineypasaaserdeltablespacemi_clase2yde2megabytesdetamao. 50


Los archivos pueden crearse autoextendibles, es decir que si se ocupa todo el tamao especificado, se aumenta automticamente, lo malo que tiene este sistema es que se particiona mucholainformacinfsicamenteyelaccesoalosdatospuederalentizarse. CREATETABLESPACEmi_clase2 DATAFILEoracle1.datSIZE2M AUTOEXTENDON; Si no ponemos nada ms, se autoextiende en mltiplos de 4kb (tamao del cluster de oracle) lo necesario en el momento del uso. Se puede especificar otra unidad diferente, es decir que cada vezquepreciseaumentarloharencomomltiplodelosqueespecifiquemos: CREATETABLESPACEmi_clase2 DATAFILEoracle1.datSIZE2M AUTOEXTENDONNEXT1M; Siqueremosqueseextiendaperosolohastaunlmite: CREATETABLESPACEmi_clase2 DATAFILEoracle1.datSIZE2M AUTOEXTENDONNEXT1M MAXSIZE20M; Deestaformaeltablespacetiene2Mdetamaoinicial,crecerenmultiplosde1Mhastallegara 20M. Pordefectolosdatafilesnosonautoextendibles,perosiqueremospodemosespecificrselo: CREATETABLESPACEmi_clase2 DATAFILEoracle1.datSIZE2M AUTOEXTENDOFF; Si hacemos un datafile autoextendible, pero no especificamos la clusula MAXSIZE, se autoextenderadeformailimitada,perosiqueremosasegurarnosdeelloescribiremos: CREATETABLESPACEmi_clase2 DATAFILEoracle1.datSIZE2M AUTOEXTENDON 51


MAXSIZEUNLIMITED; Sepuedecrearuntablespacebloqueado,esdecirenelquenosepuedaescribirenl: CREATETABLESPACEmi_clase2 DATAFILEoracle1.datSIZE2M OFFLINE; Pordefectosecreadesbloqueado,perosiqueremosasegurarnos: CREATETABLESPACEmi_clase2 DATAFILEoracle1.datSIZE2M ONLINE; CAMBIOSDELOSTABLESPACES SerealizamediantelasentenciaALTERTABLESPACE,mslaclausulaquequeramoscambiar: ALTERTABLESPACEMi_clase ADDDATAFILEoracle_adicional.oraSIZE3M AUTOEXTENDUNLIMITED ONLINE; BORRARTABLESPACES Lasentenciasiguienteborraraeltablespaceylosarchivosytodoloquecontiene: DROPTABLESPACEmi_clase INCLUDINGCONTENTSANDDATAFILESCASCADECONSTRAINTS;

52

3.13Programacin de transacciones
Definicinyestructuradeunatransaccin. y y Una transaccin es un conjunto de operaciones que se realizan en la base de datos, o es un conjunto de rdenes que se ejecutan formando una unidad de trabajo, es decir, en formaindivisibleoatmica. Para que una transaccin tenga xito en su ejecucin todas la operaciones que la conforman deben de finalizar adecuadamente, si de todo el conjunto de operaciones una sola llega a fallar, se considera que toda la transaccin ha fallado y es necesario regresar labasededatosaunestadoanterioralcomienzodelaejecucindelatransaccin,yaque las operaciones que se han completado exitosamente pueden llegar a daar la integridad delainformacin. Una de las herramientas muy tiles en el desarrollo de aplicaciones de negocios (Bussinesapplications),sonlastransacciones.

y y Suponga que se necesita transferir $1000 de una cuenta A hacia una cuenta B. Esta operacininvolucradospasos: y $1000sedebenreducirdelacuentaA. y $1000sedebenagregaralacuentaB. Unejemplotradicionaldeunatransaccineselsiguiente:

y Suponga que se cumple satisfactoriamente el paso 1, pero por alguna razn ocurre un error en el paso 2 y falla esta parte, esto lograra no tener bien actualizada la informacin.

y y Ya que las operaciones en la misma transaccin deben de completarse todas con xito para considerar que la transaccin finaliz satisfactoriamente, en caso de que una sola operacinnohallatenidoxito,latransaccincompletaseconsideracomonocompletada ysedejalabasededatosjustocomoelestadoanterioralaejecucindelatransaccin. Unatransaccinayudaaevitaresto.

53


y y y y y Atomicidad: es la propiedad que asegura que la operacin se ha realizado o no, y porlotantoanteunfallodelsistemanopuedequedaramedias. Consistencia: es la propiedad que asegura que slo se empieza aquello que se puede acabar. Por lo tanto se ejecutan aquellas operaciones que no van a romper lareglasydirectricesdeintegridaddelabasededatos. Aislamiento: es la propiedad que asegura que una operacin no puede afectar a otras. Esto asegura que la realizacin de dos transacciones sobre la misma informacinnuncagenerarningntipodeerror. Durabilidad: es la propiedad que asegura que una vez realizada la operacin, sta persistirynosepodrdeshaceraunquefalleelsistema. En concreto ACID es un acrnimo de Atomicity, Consistency, Isolation and Durability: Atomicidad,Consistencia,AislamientoyDurabilidadenespaol. Las transacciones usualmente siguen ciertas guas conocidas como las propiedades ACID, lascualesaseguranquesiempretransaccionescomplejasseanconfiables. As en el ejemplo anterior si falla el paso 2, los cambios realizados por el paso 1 no afectarnalabasededatos.

y y

A diferencia de otros elementos que se han definido (como los procedimientos almacenados), las transacciones no forman parte de la base de datos como tal, ya que como solo son un conjunto de operaciones, las operaciones pueden incluir a los elementosdelabasededatosperolaejecucinesindependientealasoperaciones.

y Por ejemplo, en el caso anterior, el deducir de la cuenta A y la agregacin a la cuenta B, pueden ser procedimientos almacenados que forman parte de la base de datos, que se considerancomooperacionesindependientesdentrodeunatransaccin.

y y Se debe de tener un enfoque procedural de las operaciones que van a formar la transaccin. Por ejemplo la transaccin Retirar_Dinero_de_Cajero es un proceso que se componedelassiguientesoperaciones: Paraobtenerlaestructuradeunatransaccin,esnecesarioidentificarlasoperacionesque intervienenentodoelprocesoquevaarepresentardichatransaccin.

54


y Retirar_Dinero_de_Cajero y Validaralusuario y Consultarsaldoactualdelusuario y Confirmarqueelretiroesmenoroigualalsaldo y Consultarsieldineroalcanzaparaelmontodelretiro y Deducirelretirodelsaldoactual y Entregardinero y Detectarquesehaentregadoeldinero

y y Si se cumplen todas las operaciones de la transaccin, entonces se hacen los cambios de todas las operaciones, si alguna de las operaciones no se cumple satisfactoriamente, se considera como una transaccin errnea y es necesario reestablecer los datos a su estado anterior. Findelatransaccin

Utilidadsqlcmd Las bases de datos de Microsoft SQL Server 2005 Express Edition (SQL Server Express) se pueden administrar ejecutando la utilidad sqlcmd desde el smbolo del sistema. Con esta utilidad vamos a ejecutaralgunasconsultasparavercomotrabajanlastransacciones. Utilizaremos para los ejemplos la base de datos Autores manejada en el apartado de El lenguajeSQLatravsdeC#.Netvistoanteriormente.Recordemoslaestructura:

Estossonlospasosparausarlastransacciones:

IniciarunatransaccinconelusodelasentenciaBEGINTRANSACTION. Actualizar,insertaroeliminarregistrosenlabasededatos.

55

Si se quieren los cambios a la base de datos, completar la transaccin con el uso de la sentencia COMMIT. nicamente cuando se procesa un COMMIT los cambios hechos por lasconsultassernpermanentes. Si sucede algn problema, podemos hacer uso de la sentencia ROLLBACK para cancelar los cambios que han sido realizados por las consultas que han sido ejecutadas hasta el momento.

Cuando se establece una conexin con un servidor SQL Server Express, es necesario especificar el nombredelservidory,siSQLServerExpresssehainstaladoenunainstanciaconnombre,tambin el nombre de la instancia. De manera predeterminada, sqlcmd utiliza la autenticacin de Windows. EjecutarlaconsolasmbolodesistemadeWindowsparaestablecerlaconexinconelservidory labasededatosAutores,comosemuestraacontinuacin:

Paraqueveamosmsclaramentelasecuenciadecomandoslimpiemosloscomandosanteriores conlasentencia:!!cls:

MostremosahoraloscamposIdyNombredelatabla: 56

Ahora,comousartransacciones,eliminemosunregistro:

SeeliminelregistroconId678.

57


Ahora bien, si en este momento ejecutamos un ROLLBACK, la transaccin no ser completada, y loscambiosrealizadossobrelatablanotendrnefecto.

Ahora vamos a ver que sucede si perdemos la conexin al servidor (comando exit) antes dequelatransaccinseacompletada.

58


Cuandoobtengamosdenuevolaconexin,podemosverificarqueelregistronoseelimin,yaque latransaccinnofuecompletada.

VamosarepetirlasentenciaDELETEejecutadaanteriormente,peroharemosunCOMMITantesde perderlaconexinalservidoralsalirdelautilerasqlcmd.

UnavezquehacemosunCOMMIT,latransaccinescompletada,ytodaslassentencias SQLquehansidoejecutadaspreviamenteafectandemanerapermanentealastablasde labasededatos.

59

Creacindetransaccionesdesdeelcdigo. y y Despus se establece la propiedad transaction de un objeto Command para el objeto de transaccin. As es como ADO sabe que accin se tiene que deshacer cuando se haga un rollback(transaccinerrnea). Para crear un objeto de transaccin. Se crea sobre un objeto de conexin, llamando al mtodobegintrasaction,estasentenciamarcaeliniciodelatransaccin.

SqlTransactionmyTrans; myTrans=myConnection.BeginTransaction(); myCommand.Transaction=myTrans; y Ya que se estableci el inicio de la transaccin, se debe de crear un manejador de excepciones para atrapar algn error que ocurra durante el procesamiento de la transaccinydeestaformadetectarelerrordeunaoperacindelatransaccin.

y Todas las sentencias presentadas deben de aparecer en la clusula Try del manejador de excepciones,serealizaunrollbackllamandoalmtodoRollbackdelobjetotransaccinen caso de ocurrir un error. Si la transaccin ocurre sin problemas, entonces se realiza un commitconelmtododelmismonombre. 60


y y y Se inserta el cdigo para todas las acciones que involucran la transaccin, y al final se realiza un commit de la transaccin. Una vez que la transaccin ha sido ejecutada y aceptada,otrosusuariospuedenversusefectos. Si la transaccin falla, la base de datos debe de restaurarse al estado anterior que se encontraba,justoantesdeiniciarlatransaccin. Paraimplementarunatransaccin,sedebedemarcareliniciodelamisma.

y y y BeginTransaction Try {Sentenciasqueconformanlatransaccin} CommitTransaction CatchException RollbackTransaction EndTry y Los siguientes cdigos en C# muestran la insercin de un registro, la eliminacin de un registroconunprocedimientoalmacenadoyporltimoladevolucindeunparmetrode un procedimiento almacenado mediante el mtodo ExecuteScalar del objeto command conlaestructuradeunatransaccin. Si un error provoca que se complete la transaccin, se debe de hacer un rollback , el siguienteseudocdigoeselesqueletodeunatransaccin: Enotraspalabras,noexistentransaccionesparciales. Hastaentonces,otrosusuariosnopuedenverlosefectosdealgunodelospasos.

61


privatevoidInsertar_Click(objectsender,EventArgse) { SqlConnectioncnn; SqlCommandocmd; StringsCnn=@"DataSource=ARIES\SQLEXPRESS;InitialCatalog=Autores;Integrated Security=True"; cnn=newSqlConnection(sCnn); cnn.Open(); //IniciandotransaccinLocal SqlTransactionsqltran=cnn.BeginTransaction(); //Asociarelobjetocommandalatransaccin ocmd=cnn.CreateCommand(); ocmd.Transaction=sqltran; try { //Ejecutarelcomando ocmd.CommandText="InsertintoAutoresvalues('678','LuisJuarez Artega','PHP','GTH678','Colombiana')"; ocmd.ExecuteNonQuery(); sqltran.Commit(); MessageBox.Show("Insercinexitosa","Transaccin"); } catch(Exceptionex) { //Manejadordeexcepcionsilatransacinfallaenelcommit

62


MessageBox.Show(ex.Message.ToString(),"Transaccin"); try { //Sedeshacelatransaccin sqltran.Rollback(); } catch(Exceptionrollback) { //Porejemplo,lanzarunInvalidOperationExceptionsilaconexin //conlabaseestcerrada } } }

privatevoidEliminar_Click(objectsender,EventArgse) { SqlConnectioncnn; SqlCommandocmd; StringsCnn=@"DataSource=ARIES\SQLEXPRESS;InitialCatalog=Autores;Integrated Security=True"; cnn=newSqlConnection(sCnn); cnn.Open(); ocmd=newSqlCommand(); 63


ocmd.CommandType=CommandType.StoredProcedure; ocmd.CommandText="Eliminar"; SqlParameterpara1=newSqlParameter("@p1",SqlDbType.NVarChar); //parametrogeneradoensql@p1 para1.Size=7;//tamaodecaracteresharecibirelparametro para1.Value="678";//valordelparmetro para1.Direction=ParameterDirection.Input; ocmd.Parameters.Add(para1);//Agregaelparmetroalobjetocommand //IniciandotransaccinLocal SqlTransactionsqltran=cnn.BeginTransaction(); //Asociarelobjetocommandalatransaccin ocmd.Transaction=sqltran; ocmd.Connection=cnn; try { //Ejecutarelcomando ocmd.ExecuteNonQuery(); sqltran.Commit(); MessageBox.Show("Eliminacinexitosa","Transaccin"); }

64


catch(Exceptionex) { //Manejadordeexcepcionsilatransacinfallaenelcommit MessageBox.Show(ex.Message.ToString(),"Transaccin"); try { //Sedeshacelatransaccin sqltran.Rollback(); } catch(Exceptionrollback) { //Porejemplo,lanzarunInvalidOperationExceptionsilaconexin //conlabaseestcerrada } } } privatevoidbutton1_Click(objectsender,EventArgse) { SqlConnectioncnn; SqlCommandocmd; StringsCnn=@"dataSource=PowerToolkit;initialcatalog=Northwind;integrated security=SSPI"; 65


cnn=newSqlConnection(sCnn); cnn.Open(); SqlCommandmyCommand=newSqlCommand(); myCommand.Connection=myConnection; SqlTransactionmyTrans; myTrans=myConnection.BeginTransaction(); myCommand.Transaction=myTrans; try { myCommand.CommandText="NewOrder"; myCommand.CommandType=CommandType.StoredProcedure; SqlParameterp=newSqlParameter(); p.ParameterName="@CustID"; p.Direction=ParameterDirection.Input; p.SqlDbType=SqlDbType.Char; p.Value="BLAUS" myCommand.Parameters.Add(p); p=newSqlParameter(); p.ParameterName="RETURN"; p.Direction=ParameterDirection.ReturnValue; p.SqlDbType=SqlDbType.Int; myCommand.Parameters.Add(p);

66


myCommand.ExecuteScalar(); intorderID=CType(myCommand.Parameters("RETURN").value); //Setupparameterscollectionandaddfirstitem myCommand.CommandText="NewOrderLine"; myCommand.CommandType=CommandType.StoredProcedure; myCommand.Parameters.Clear(); p=newSqlParameter(); p.ParameterName="@OrderID"; p.Direction=ParameterDirection.Input; p.SqlDbType=SqlDbType.Int; p.Value=orderID; myCommand.Parameters.Add(p); p=newSqlParameter(); p.ParameterName="@ProductID"; p.Direction=ParameterDirection.Input; p.SqlDbType=SqlDbType.Int; p.Value=15; myCommand.Parameters.Add(p); p=newSqlParameter(); p.ParameterName="@Quantity"; p.Direction=ParameterDirection.Input; p.SqlDbType=SqlDbType.Int; p.Value=1; myCommand.Parameters.Add(p);

67


myCommand.ExecuteNonQuery(); //Addseconditem p=myCommand.Parameters("@ProductID"); p.Value=25; p=myCommand.Parameters("@Quantity"); p.Value=2; myCommand.ExecuteNonQuery(); //Addthirditem p=myCommand.Parameters("@ProductID"); p.Value=35; p=myCommand.Parameters("@Quantity"); p.Value=3; myCommand.ExcuteNonQuery(); myTrans.Commit(); MessageBox.Show("Orderwrittentodatabase","Transaccin"); } catch(Exceptionexc) { myTrans.Rollback(); MessageBox.Show(exc.Message.ToString(),"Transaccin"); } finally {

68


myConnection.Close(); } }

4. Basesdedatosorientadasaobjetos

5. BusinessIntelligence

5.1 Introduccin
Algo peor que no tener informacin disponible es tener mucha informacin y no saber qu hacer con ella. La Inteligencia de Negocios o Business Intelligence (BI) es la solucin a ese problema, pues por medio de dicha informacin puede generar escenarios, pronsticos y reportesqueapoyenalatomadedecisiones,loquesetraduceenunaventajacompetitiva.La clave para BI es la informacin y uno de sus mayores beneficios es la posibilidad de utilizarla en la toma de decisiones. En la actualidad hay una gran variedad de software de BI con aplicaciones similares que pueden ser utilizados en las diferentes reas de la empresa, tales como, ventas, marketing, finanzas, etc. Son muchas las empresas que se han beneficiado por la implementacin de una sistema de BI, adems se pronostica que con el tiempo se convertirenunanecesidaddetodaempresa. En este nuevo mundo, la informacin reina afirma Geoffrey A. Moore, Director de Chasm Group. Vivimos en una poca en que la informacin es la clave para obtener una ventaja competitiva en el mundo de los negocios. Para mantenerse competitiva una empresa, los gerentes y tomadores de decisiones requieren de un acceso rpido y fcil a informacin til y valiosa de la empresa. Una forma de solucionar este problema es por medio del uso de BusinessIntelligenceoInteligenciadeNegocios.

5.2. Datawarehouse
La idea de la integracin de mltiples bases de datos ha dado lugar a la tecnologa de almacenes de datos ( datawarehousing ). Este trmino, tan popular actualmente, hace referencia a la tendencia actual en las empresas e instituciones de coleccionar datos de las bases de datos 69


transaccionales y otras fuentes diversas para hacerlos accesibles para el anlisis y la toma de decisiones.

Fig.5.1Esquemaparalacreacindeundatawarehouse

Los almacenes de datos se utilizan para poder agregar y cruzar eficientemente la informacin de maneras sofisticadas. Por ello, los datos se modelan con una estructura de base de datos multidimensional, donde cada dimensin corresponde a un atributo o conjunto de atributos en el esquemaentornoaunoshechosque almacenanelvalordealgunamedidaagregada,comopor ejemplo la cantidad vendida de un producto en un da concreto en una tienda. Esta visin multidimensional hace a los almacenes de datos adecuados para el procesamiento analtico en lnea(onlineanalyticalprocessingOLAP) La mayora de sistemas comerciales de gestin de bases de datos incluyen herramientas de informes avanzados, inteligencia de negocios, Sistemas de informacin ejecutivos ( EIS ) y otras, que pese a sus nombres variados intentan realizar un procesamiento analtico de la informacin, mas que el procesamiento transaccional habitual realizado por las aplicaciones del da a da de la organizacin. Por lo tanto, cada da es mas necesario distinguir dos usos diferentes delsistemadeinformacin:elprocesamientotransaccionalyelprocesamientoanaltico. ConlassiglasOLTPyOLAPsedenominandostiposdeprocesamientobiendiferentes: OLTP ( OnLine Transactional Processing ). El procesamiento transaccional en tiempo real constituye el trabajo primario en un sistema de informacin. Este trabajo consiste en 70


realizar transacciones, es decir, actualizaciones y consultas a la base de datos con un objetivo operacional: hacer funcionar las aplicaciones de la organizacin, proporcionar informacin sobre el estado del sistema de informacin y permitir actualizarlo conforme va variando la realidad del contexto de la organizacin. Es el trabajo diario y para el que inicialmentesehadiseadolabasededatos. OLAP ( OnLine Analytical Processing ). El procesamiento analtico en tiempo real engloba un conjunto de operaciones, exclusivamente de consulta, en las que se requiere agregar y cruzar gran cantidad de informacin. El objetivo de estas consultas es realizar informes y resmenes , generalmente para el apoyo en la toma de decisiones. Ese tipo de consultas suelen emanarse de los departamentos de direccin, logstica o prospectiva y requieren muchosrecursos.

Una caracterstica de ambos procesamientos es que se pretende que sean online, es decir que sean relativamente instantneos y se pueden realizar en cualquier momento ( en tiempo real ). Esto parece evidente e imprescindible para el OLTP, pero no est tan claro que esto sea posible paraalgunasconsultasmuycomplejasrealizadasporelOLAP. Laprcticageneral,hastahacepocosaos,ytodavaexisteenmuchasorganizacionesyempresas, es que ambos tipos de procesamiento ( OLTP y OLAP ) se realizaran sobre la misma base de datos transaccional. De hecho, una de las mximas de la tecnologa de bases de datos era la eliminacin deredundancia,conloqueparecalomaslgicoqueambosprocesamientostrabajaransobreuna nicabasededatosgeneral. Estaprcticaplanteadosproblemasfundamentales: Las consultas OLAP perturban el trabajo transaccional diario de los sistemas de informacin originales al ser consultas complejas que agrupan muchas tablas y agrupaciones,estoresientealastransaccionesnormales(OLPT),hacindolasmaslentas. Labasededatosestadiseadaparaeltrabajotransaccional,noparaelanlisisdedatos.

Ambos problemas implican que va a ser prcticamente imposible realizar un anlisis complejo de lainformacinentiemporealsiambosprocesamientosserealizansobrelamismabasededatos. Afortunadamente, debido a que los costos de almacenamiento masivo y conectividad se han reducido drsticamente en los ltimos aos, parece razonable recoger ( copiar ) los datos en un sistema unificado y diferenciado del sistema tradicional transaccional u operacional. Aunque esto vaya contra la filosofa general de bases de datos, son muchas mas las ventajas que los inconvenientes.Nacenlosalmacenesdedatos. A partir de ahora, por tanto, diferenciaremos claramente entre bases de datos transaccionales y almacenesdedatos. Las diferencias mostradas en la tabla, distinguen claramente la manera de estructurar y disear almacenesdedatosrespectoalaformatradicionaldehacerloconbasesdedatostransaccionales. 71


Propsito Basededatostransaccional Almacndedatos Operaciones diarias. Soporte a Recuperacin de informacin, lasaplicaciones informes, anlisis y minera de datos Datos de funcionamiento de la Datos tiles para el anlisis, la organizacin sumarizacin,etc. Datos de funcionamiento, Datos histricos, datos cambiantes, internos, internos y externos, datos incompletos descriptivos Datosnormalizados Datos en estrella, en copo de nieve, parcialmente desnormalizados, mutidimensionales Cientos/miles: aplicaciones, Decenas: directores, operarios, administrador de la ejecutivos, analistas ( basededatos granjeros,mineros) SQL.Lecturayescritura SQL y herramientas propias ( slice & dice, dril, roll, pivot ) Lectura

Tipodedatos Caractersticasdelosdatos

Modelodedatos

Nmeroytipodeusuarios

Acceso

Aunque ambas fuentes de datos ( transaccional y almacn de datos ) estn separadas, es importante destacar que gran parte de los datos que se incorporan en un almacn de datos provienen de la base de datos transaccional. Esto supone desarrollar una tecnologa de volcado y mantenimiento de datos desde la base de datos transaccional al almacn de datos. Adems el almacn de datos debe integrar datos externos, con lo que en realidad debe estar actualizndose frecuentementede diferentesfuentes. Elalmacndedatospasaaserunintegradororecopilador deinformacindediferentesfuentes,comoseobservaenfigura5.1 La organizacin y el mantenimiento de esta informacin plantea cuestiones tcnicas, fundamentalmente sobre como disear el almacn de dato, cmo cargarlo inicialmente, como mantenerlo y preservar su existencia. No obstante, son muchas ms las ventajas de esta separacin que sus inconvenientes. Adems esta separacin facilita la incorporacin de fuentes externas,que,enotrocaso,seramuydifcildeencajarenlabasededatostransaccional. Lacargaymantenimientodeunalmacndedatosesunodelosaspectosmsdelicadosyquemas esfuerzo requiere ( alrededor de la mitad del esfuerzo necesario para implementar un almacn de datos ) y, de hecho, suele existir un sistema especializado para realizar estas tareas, denominado, sistema ETL ( Extraction, Transformation, Load ) Dicho sistema no se compra en el supermercado

72


ni se descarga de internet, sino que es responsabilidad del equipo de desarrollo del almacn y se realizaespecficamenteparacadaalmacndedatos. ElsistemaETLseencargaderealizarmuchastareas: Lectura de datos transaccionales: Se trata generalmente de obtener datos mediante consultasSQLsobrelabasededatostransaccional. Incorporacin de datos externos: Generalmente aqu se deben de incorporar otro tipo de herramientas como wrappers, para convertir texto, hojas de clculo HTML en XML o en tablasdebasededatosquesepuedanintegraralalmacndedatos. Creacindeclaves Integracindedatos Obtencindeagregaciones Limpieza y transformacin de datos: evita datos redundantes, inconsistentes, estandarizar medidas,formatos,fechas,tratarvaloresnulos,etc. Creacinymantenimientodemetadatos Identificacindecambios Planificacindelacargaymantenimiento Indizacin Pruebasdecalidad

5.3. Business Intelligence


La Inteligencia de Negocios o Business Intelligence (BI) se puede definir como el proceso de analizar los bienes o datos acumulados en la empresa y extraer una cierta inteligencia o conocimientodeellos.Dentrodela categoradebienesseincluyenlasbasesdedatosde clientes, informacin de la cadena de suministro, ventas personales y cualquier actividad de marketing o fuentedeinformacinrelevanteparalaempresa. BI apoya a los tomadores de decisiones con la informacin correcta, en el momento y lugar correcto,loquelespermitetomarmejoresdecisionesdenegocios.Lainformacinadecuadaenel lugarymomentoadecuadoincrementaefectividaddecualquierempresa. La tecnologa de BI no es nueva, ha estado presente de varias formas por lo menos en los ltimos 20aos,comenzandoporgeneradoresdereportesysistemasdeinformacinejecutivaenlos80s Afirma Candice Goodwin . Entindase como sinnimos de tecnologa de BI los trminos aplicaciones,solucionesosoftwaredeinteligenciadenegocios. Para comprender mejor el concepto se sita el siguiente ejemplo. Una franquicia de hoteles a nivel nacional que utiliza aplicaciones de BI para llevar un registro estadstico del porcentaje promedio

73


deocupacindelhotel,ascomolosdaspromediodeestanciadecadahusped,considerandolas diferenciasentretemporadas.Conestainformacinellospueden: Calcularlarentabilidaddecadahotelencadatemporadadelao. Determinarquinessusegmentodemercado. Calcularlaparticipacindemercadodelafranquiciaydecadahotel. Identificaroportunidadesyamenazas. Estassonsloalgunasdelasformasenqueunaempresauorganizacinsepuedebeneficiarporla implementacin de software de BI, hay una gran variedad de aplicaciones o software que brindan a la empresa la habilidad de analizar de una forma rpida por qu pasan las cosas y enfocarse a patronesyamenazas.

5.3.1. Datamarts
La duplicacin en otro entorno de datos es un trmino que suele ser mal interpretado e incomprendido. As es usado por los fabricantes de SGBD en el sentido de simple rplica de los datos de un sistema operacional centralizado en sistemas distribuidos. En un contexto de Data Warehouse,eltrminoduplicacinserefierealacreacindeDataMartslocalesodepartamentales basadosensubconjuntosdelainformacincontenidaenelDataWarehousecentralomaestro. Segn define Meta Group, "un Data Mart es una aplicacin de Data Warehouse, construida rpidamente para soportar una lnea de negocio simple". Los Data Marts, tienen las mismas caractersticas de integracin, no volatilidad, orientacin temtica y no volatilidad que el Data Warehouse.Representan unaestrategiade"divideyvencers"parambitosmuygenricosdeun DataWarehouse. Esta estrategia es particularmente apropiada cuando el Data Warehouse central crece muy rpidamente y los distintos departamentos requieren slo una pequea porcin de los datos contenidos en l. La creacin de estosData Marts requiere algo ms que una simple rplica de los datos:senecesitarntantolasegmentacincomoalgunosmtodosadicionalesdeconsolidacin. La primera aproximacin a una arquitectura descentralizada de Data Mart, podra ser venir originadadeunasituacincomoladescritaacontinuacin.

74

Fig.5.2Esquemadeundatamart

El departamento de Marketing, emprende el primer proyecto de Data Warehouse como una solucindepartamental,creandoelprimerDataMartdelaempresa. Visto el xito del proyecto, otros departamentos, como el de Riesgos, o el Financiero se lanzan a crearsusDataMarts.Marketing,comienzaausarotrosdatosquetambinusanlosDataMartsde RiesgosyFinanciero,yestoshacenlopropio. Estopareceserunadecisinnormal,puestoquelasnecesidadesdeinformacindetodoslosData Marts crecen conforme el tiempo avanza. Cuando esta situacin evoluciona, el esquema general deintegracinentrelosDataMartspasaaser,ladelgrficoanterior. En esta situacin, es fcil observar cmo este esquema de integracin de informacin de los Data Marts, pasa a convertirse en un rompecabezas en el que la gestin se ha complicado hasta convertirestaansiadeinformacinenunautnticoquebraderodecabeza.Noobstante,loqueha falladonoeslaintegracindeDataMarts,sinosuformadeintegracin.

75

Fig.5.3DataWarehousecorporativo

En efecto, un enfoque ms adecuado sera la coordinacin de la gestin de informacin de todos losDataMartsenunDataWarehousecentralizado. En esta situacin los Data Marts obtendran la informacin necesaria, ya previamente cargada y depurada en el Data Warehouse corporativo, simplificando el crecimiento de una base de conocimientosaniveldetodalaempresa. Esta simplificacin provendra de la centralizacin de las labores de gestin de los Data Marts, en el Data Warehouse corporativo, generando economas de escala en la gestin de los Data Marts implicados. Segn un estudio de IDC (International Data Corporation) tras analizar 541 empresas, la distribucin de las implantaciones de Data Warehouse y Data Marts en la actualidad, y sus opinionesrespectoaestadistribucinenelfuturo,nosmuestralossiguientesdatos: En la grfica, observamos, cmo en la actualidad, de las empresas consultadas, un 80% de ellas cuentanconimplantacionesdeDataWarehouseoDataMarts.

76

Fig.5.4Proporcindeusoactualyfuturo

LaproporcinactualdeimplantacionesdeDataWarehouseescasieldoblequeeldeDataMart. No obstante, seguramente tras la andadura inicial de alguno de estos proyectos de Data Mart, se vecomomsadecuadoparaelfuturoesteenfoque"divideyvencers",previndoseunainversin deestospapelesyduplicandolaimplantacindeDataMartsalosDataWarehouse. Probablemente, el 5% de usuarios que disponen de tecnologa de Data Warehouse y piensan renunciar a ella en el futuro, no han realizado previamente un estudio de factores implicados en un Data Warehouse, o han pasado por la situacin inicial de partida, y no se han planteado una reorganizacindelmismo.

5.3.2. OLAP
Como se mencion en el tema de almacenes de datos OLAP es el procesamiento analtico en tiemporealenelqueseenglobanunconjuntodeoperaciones,exclusivamentedeconsulta,enlas que se requiere agregar y cruzar gran cantidad de informacin. El objetivo de estas consultas es realizar informes y resmenes , generalmente para el apoyo en la toma de decisiones. Ese tipo de consultas suelen emanarse de los departamentos de direccin, logstica o prospectiva y requieren muchosrecursos. Como parte de los servicios de explotacin de una arquitectura de anlisis de informacin, los datos tienen que ser modelados multidimensionalmente para satisfacer los requerimientos de desempeodeestetipodeconsultasenlnea.

77

Cuando el nmero de dimensiones no excede de tres podemos representar cada combinacin de niveles de agregacin como un cubo. El cubo esta formado por casillas, con una casilla para cada valor entre los posibles para cada dimensin a su correspondiente nivel de agregacin. Sobre esta vista,cadacasillarepresentaunhecho.

Fig.5.5ModeloMultidimensional

Fig.5.6Ejemplodeunmodelomultidimensional

78


Por ejemplo, en la figura se representa un cubo tridimensional donde las dimensiones producto, mercado y tiempo se han agregado por artculo, ciudad y aos. La representacin de un hecho correspondeporlotantoaunacasilladedichocubo.Elvalordelacasillaeslamedidaobservada( enestecaso,importedelasventas). Esta visualizacin hace que, incluso, cuando tengamos mas de tres dimensiones, se hable de un cubo ( o mas propiamente de hipercubo ) como un conjunto de niveles de agregacin para todaslasdimensiones. Estaestructurapermiteverdeunamaneraintuitivalasumarizacin/agregacin(variascasillasse fusionan en casillas mas grandes ), la disgregacin ( las casillas se separan en casillas con mayor detalle)ylanavegacinsegnlasdimensionesdelaestrella. Operadores El modelo multidimensional se basa en un conjunto de datamarts, que, generalmente, son estructuras de datos en estrella jerrquica. Para completar el modelo multidimensional debemos definir una serie de operadores sobre la estructura. Los operadores1 ms importantes asociados a estemodeloson: Drill: Se trata de disgregar los datos ( mayor nivel de detalle o desglose, menos sumarizacin)siguiendoloscaminosdeunoomsdimensiones. Roll:Se trata deagregarlosdatos( menornivelde detalleodesglose,mssumarizacino consolidacin)siguiendoloscaminosdeunaomsdimensiones. Slice&Dice:Seleccionayseproyectandatos. Pivot:Sereorientanlasdimensiones. Normalmente, estos operadores se llaman operadores OLAP, operadores de anlisis de datos u operadores de almacenes de datos. Estos operadores bsicos permiten realizar las mismas consultas de proyeccin, seleccin y agrupamiento que se pueden hacer con SQL. En muchos casos, de hecho, se puede editar la consulta SQL correspondiente. El primer paso para poder utilizar los operadores propios del modelo multidimensional es definir una consulta. En realidad, los operadores dril, roll, slice&dice y pivot son modificadores o refinadores de consulta y slo puedenaplicarsesobreunaconsultarealizadapreviamente.
HernndezOralloJos(2007).Introduccinalamineradedatos,PearsonPrenticeHall.Ejemplos operadorespag5355
1

79

5.3.3. Datamini ng
La min nera de datos puede de efinirse como o la extracci in no trivia al de informa acin implcita, previam mente desconocida y potencialmente til, a partir de los datos s. Para conseguirlo hace uso u de dif ferentes tecnologas que e resuelven problemas tpicos de agrupamient to automtic co, clasific cacin,asociacindeatributosydetecc cindepatronessecuenciales.Lamine eradedatoses, en prin ncipio, una fa ase dentro de e un proceso global denom minado descu ubrimiento de conocimien nto enbasesdedatos(KnowledgeDiscovery D inDatabases D oKDD K ),aunquefinalmentehayaadquiri ido elsigni ificadodetod doelprocesoenlugardelafasedeextraccindeco onocimiento.

Fig.5.7EsquemadelKDD K

80


Es habitual que los expertos en estadstica confundan la minera de datos con un anlisis estadstico de stos ( afirmaciones de este tipo pueden encontrarse en documentacin de empresas dedicadas al procesamiento estadstico que venden sus productos como herramientas de minera de datos ). La diferencia fundamental entre ambas tcnicas es muy clara: para conseguir una afirmacin como esta: Mas del 60% de las personas que adquieren queso fresco compran tambin algn tipo de mermelada , utilizando un paquete estadstico, es necesario conocer a priori que existe una relacin entre el queso fresco y la mermelada, y lo que realizamos connuestroentornoestadsticoesunacuantificacindedicharelacin. Enelcasodelamineradedatoselprocesoesmuydistinto:laconsultaqueserealizaalabasede datos(DataWarehouse)buscarelacionesentreparejasdeproductosquesonadquiridosporuna misma persona en una misma compra. De esa informacin, el sistema deduce, junto a otras muchas, la afirmacin anterior. Como podemos ver, en este proceso se realiza un acto de descubrimiento de conocimiento real, puesto que no es necesario ni siquiera sospechar la existenciadeunarelacinentreestosdosproductosparaencontrarla. Los sistemas de ayuda a la decisin ( DSS ) son herramientas sobre las que se apoyan los responsablesdeunaempresa,directoresygestores,enlatomadedecisiones.Paraelloutilizan: Undatawarehouse,enelquesealmacenalainformacindeintersparalaempresa,y Herramientasdeanlisismultidimensional(OLAP)

Las herramientas OLAP permiten navegar a travs de los datos almacenados en el datawarehouse yanalizarlosdinmicamentedesdeunaperspectivamultidimensional,esdecir,considerandounas variables en relacin con otras y no de forma independiente entre s y permitiendo enfocar el anlisisdesdedistintospuntosdevista. Los DSS permiten al responsable de la toma de decisiones consultar y utilizar de manera rpida y econmica las enormes cantidades de datos operacionales y de mercado que se generan en una empresa. El anlisis OLAP depende de un usuario que plantee una consulta o hiptesis. Es el usuario el que lo dirige y, por tanto, el anlisis queda limitado por las ideas preconcebidas que aquel pueda tener. La minera de datos constituye un paso ms en el anlisis de los datos de la empresa para apoyar latomadedecisiones.NosetratadeunatcnicaquesustituyalosDSSnielanlisisOLAP,sinoque los complementa, permitiendo realizar un anlisis ms avanzado de los datos y extraer ms informacindeellos. Como ya se ha comentado anteriormente, utilizando minera de datos es el propio sistema el que descubre nuevas hiptesis y relaciones. De este modo, el conocimiento obtenido con estas tcnicasnoquedalimitadoporlavisinqueelusuariotienedelproblema.

81


Las diferencias entre minera de datos y OLAP radican esencialmente en que el enfoque desde el queseabordaelanlisisconcadaunadeellasescompletamentedistinto.Fundamentalmente: El anlisis que realizan las herramientas OLAP es dirigido por el usuario, deductivo, parte de una hiptesis o de una pregunta del usuario y se analizan los datos para resolver esa consulta concreta. Por el contrario, la minera de datos permite razonar de forma inductivaapartirdelosdatosparallegaraunahiptesisgeneralquemodeleelproblema. Adems, las aplicaciones OLAP trabajan generalmente con datos agregados, para obtener una visin global del negocio. Por el contrario, la minera de datos trabaja con datos individuales, concretos, descubriendo las regularidades y patrones que presentan entre s ygeneralizandoapartirdeellos.2

Razonamiento Trabajacondatos OLAP Deductivo Agregados MD Inductivo Concretos/individuales

Fig.5.8Importanciaycomplejidaddelossistemasdeinformacin

El objetivo de la minera de datos es producir nuevo conocimiento que pueda ser utilizado por el usuario.Estoserealizaconstruyendounmodelobasadoenlosdatosrecopiladosparaesteefecto. El modelo es una descripcin de los patrones y relaciones entre los datos que pueden usarse para hacer predicciones, para entender mejor los datos o para explicar situaciones pasadas. Para ello esnecesariotomarunaseriededecisionesantesdeempezarelproceso:
2

DaedalusWhitePaper,(2002),MineradedatosDocumentoBsicoDaedalus,Pag.10.Diferenciasentre OLAPyMD.Ejemplos

82


Determinar que tipo de tarea de minera es el mas apropiado. ( clasificacin, regresin, agrupamiento,reglasdeasociacin,anlisiscorrelacional) Elegireltipodemodelo(rbolesdedecisin,redesneuronales) Elegir el algoritmo de minera que resuelva la tarea y obtenga el tipo de modelo que estamos buscando ( por ejemplo para rboles de decisin existen los algoritmos CART, C4.5)

5.3.4. KPIs
QuesunDashboard? El nombre Dashboard se refiere al tablero de un automvil, el cual ofrece al conductor informacin permanente sobre el estado del vehculo. El mundo de los negocios toma la palabra con un sentido similar pero en lugar de aplicarlo a los automviles lo refiere a la empresa. As Dashboard es una pgina desarrollada en base a tecnologa web mediante la cual se despliega en tiempo real informacin de la empresa extrada de varias fuentes o bases de datos. Su caracterstica de tiempo real otorga a los usuarios un conocimiento completo sobre la marcha de la empresa y permite hacer anlisis instantneos e inteligencia de negocios. MtricasyKPI:LasMtricasylosKPIssonlabaseparaconstruirunDashboarddegrandespliegue visual, ya que son las herramientas ms eficaces para alertar a los usuarios en cuanto a donde se encuentran parados en relacin a los objetivos. Por ello es importante contar con una clara definicin de estos elementos que constituyen la base del diseo del Dashboard. Mtrica: Cuando utilizamos el trmino mtrica nos referimos a una medida numrica directa, que representa un conjunto de datos de negocios en la relacin a una o ms dimensiones. Un ejemplo sera: "las ventas brutas por semana." En este caso, la medida sera de pesos (ventas brutas) y la dimensin sera el tiempo (semana) Para una medida dada, es posible que tambin se quiera ver los valores a travs de diferentes jerarquas dentro de una dimensin. Por ejemplo, al ver las ventas brutas por da, semana o mes se mostrar la medida de pesos (ventas brutas) por diferentesjerarquas(da, semanaymes)dentrodeladimensintemporal.Hacerlaaperturams detallada de una medida dentro de un determinado nivel jerrquico de una dimensin es perseguir un objetivo de gran detalle para la mtrica estudiada. Mirando una medida a travs de ms de una dimensin, como las ventas brutas por el territorio y el tiempo se denomina anlisis multidimensional. La mayora de los Dashboards slo hace anlisis 83


multi dimensionales en una forma limitada dependiendo de la herramientas BI (Business Intelligence) que utilice para ello. Esto es importante de tener en cuenta, porque si en su proceso de definicin de la informacin que quiere ingresar al Dashboard descubre una necesidad multidimensionalimportantesernecesarioentoncesqueestudielaposibilidaddecomplementar sus tableros con algn tipo de herramienta de anlisis multidimensional. Indicadores clave de rendimiento (KPI): Un KPI es simplemente un indicador que est vinculado a un objetivo. En la mayora de los casos, un KPI el estado del un indicador, es decir si est por encimaopordebajodeunametapredeterminada.LosKPI'sgeneralmentesemuestrancomouna tasa o porcentaje y estn diseados para permitir que un usuario de negocios pueda saber instantneamente si estn dentro o fuera de su plan sin que tenga que buscar informacin adicional. Por ejemplo, podemos decidir que, a fin de lograr nuestro objetivo de ventas trimestrales tenemos que vender 10000 dlares de dispositivos por semana. La mtrica sera venta de dispositivos por semana, la meta sera de $ 10000. Si se utiliza un porcentaje de visualizacin para representar este KPI y se hubiera vendido 8000 dispositivos el da mircoles, el usuario podra ver al instante que estaran en el 80% de su objetivo. Tarjetas de puntajes, Dashboards e Informes: La diferencia entre una tarjeta de puntaje, el Dashboard y el informe puede ser muy sutil. Cada una de estas herramientas puede combinar elementos de las otras, pero a un nivel elevado todas apuntan a distintos objetivos y niveles separados del proceso de toma de decisiones de la empresa. Tarjetasdepuntaje:Apartirdelamsalta,lamayoradelosespectrosdelosnivelesestratgicos de la toma de decisiones de la empresa utiliza tarjetas de puntaje. Se utilizan principalmente para ayudar a alinear la ejecucin operacional con la estrategia empresarial. El objetivo de una tarjeta de puntaje es mantener el negocio focalizado en un plan estratgico comn mediante el control de la ejecucin del mundo real y organizar los resultados de dicha ejecucin para una estrategia especfica. Las tarjetas de puntaje son ideales para representar objetivos que se forman con mtricas de distinta magnitud y que por ello no se pueden sumar y obtener una medida comn. Un ejemplo de una tarjeta de puntaje KPI sera un indicador llamado "Crecimiento de Ventas rentable", que combina varias mtricas tales como: la captacin de nuevos clientes (cantidad de clientes), el volumen de ventas (dlares), y la rentabilidad bruta (porcentaje) en una puntuacin final. Como estas mtricas no se pueden sumar se les asigna un puntaje segn su cumplimiento del objetivo y este puntaje se suma para otorgar una medida cuantitativa al KPI "Crecimiento de Ventas rentable". Paneles: El propsito de un tablero es proporcionar al usuario informacin de la empresa en un formatoqueesalavezintuitivoyperspicaz.Lospanelesenfatizandatosoperativossobretodoen forma de cifras y KPI. Los paneles permiten descomponer una meta estratgica general en determinadas metas operacionales. Las metas operacionales aportan valor para el cumplimiento de la meta estratgica general. 84


Informes: Probablemente la herramienta BI ms vista en los negocios de hoy es el tradicional informe. Los informes pueden ser muy simples y estticos en su naturaleza, como una lista de ventas por un determinado perodo de tiempo, o un informe mas avanzado con agrupacin, resmenes, dinmica de exploracin de datos o vinculacin. Los informes son los ms utilizados cuando elusuarionecesitaverdatosenbrutoenunformatofcildeleer.Cuandosecombinacon tableros y tarjetas de puntaje, los informes ofrecen un medio ideal para permitir a los usuarios analizar los datos concretos destacando su mtrica y los indicadores clave de rendimiento. RecoleccindeKPIyRequisitosdeMtricasparaunDashboard:ProyectosBItradicionalessuelen usar un enfoque de abajo hacia arriba en la determinacin de necesidades, donde la atencin se centra en el dominio de los datos y las relaciones que existen dentro de esos datos. Al relacionar las Mtricas y los KPI para un proyecto de Dashboard es preferible tomar un enfoque de arriba hacia abajo. Un enfoque de arriba hacia abajo comienza con las decisiones empresariales que deben ser puestas en primer lugar y luego se desciende hacia los datos necesarios para apoyar esas decisiones. Con el fin de adoptar un enfoque de arriba hacia abajo usted DEBE involucrar al usuario actual quien utilizara estos paneles, ya que son los nicos que pueden determinar la relevancia de los datos especficos de las empresas con respecto a sus procesos de toma de decisiones.

BIBLIOGRAFA
Autor:Clare Churcher Ttulo:Beginning SQL Queries From Novice to Professional
Editorial: Apress ISBN-13: 978-1-59059-943-3

Autor:SilberschatzKorthSudarshan Ttulo:DatabaseSystemConcepts,FourthEdition Autor:TobiasThernstrom,AnnWeber,MikeHotek Ttulo:MicrosoftSQLServer2008DatabaseDevelopmentTrainingkit Autor:RobVieira,PublishedbyWileyPublishing Ttulo:ProfessionalMicrosoftSQLServer2008Programming ISBN: 9780470257029 Autor:Abraham Silberchatz, Henry F. Korth Ao:2006 Ttulo:Fundamentos de bases de datos
85

Ciudad:Madrid Pas:Espaa Editorial:McGraw Hill/Iberoamericana Autor:Adoracin de Miguel Castao, Mario Piattini Ao:1999 Ttulo:Fundamentos y modelos de bases de datos Ciudad:Madrid Pas:Espaa Editorial:RA-MA Autor: Carlo Batini, Shamkant B Navathe, Stefano Ceri, Antonio Vctor Martn Garca, Diego Romero Ibancos Ao:2004 Ttulo:Diseo conceptual de bases de datos Ciudad:Massachussets/Madrid Pas:USA/Espaa Editorial:Addison-Wesley / Daz De Santos Autor:Peter Rob, Carlos Coronel Ao: 2004 Ttulo:Sistemas de bases de datos: diseo, implementacin y administracin
Ciudad: Mxico, D.F. Pas: Mxico

Editorial:Cengage Learning Editores

Autor:Hernndez Orallo Jos, Ramrez Quintana Ma. Jos, Ferri Ramrez Csar Ao:2007 Ttulo:Introduccin a la minera de datos Editorial:Pearson Prentice Hall Autor:Daedalus White Paper Ao:2002 Ttulo:Minera de datos
Ciudad: Madrid Pas: Espaa Ciudad: Madrid Pas: Espaa

86

Potrebbero piacerti anche