Documente Academic
Documente Profesional
Documente Cultură
Horizontal
Parte de una relación entre tuplas (condición)
Vertical
De una relación R produce fragmentos R1, R2, .. Rn <<llave primaria>>
Replicación
Incrementa la disponibilidad de la información
Strict Replica Control Protocol
son los que obligan tener una copia equivalente en cada nodo.
El protocolo ROWA (Read One Write All)
es el que convierte una lectura lógica a una lectura en cualquiera de sus replicas y
convierte una escritura lógica a una escritura en todas sus replicas. Esto se realiza
cuando la transacción de update realiza el commit, todas las replicas tienen el mismo
valor.
Lazy Replica Control Protocol
realizan la actualización de una o mas copias y después propagan los cambios en
todas las copias
Control de concurrencia
Varios usuarios conectados al mismo tiempo; pueden hacer mas de una transacción
al mismo tiempo.
Mecanismo
Ser tolerante a fallas / permite paralelismo para satisfacer requerimientos de
desempeño.
Transacciones rapidas poco tiempo
Tipos de concurrencia
Distribuida / serializable
Datos multidimensionales
Datos que pueden moldearse como atributos de dimensión y medida
DataMart
esta construido para soportar los requerimientos analíticos de un grupo en particular
de usuarios y proporcionando este soporte,
el data mart solo almacena un subconjunto de información corporativa.
Razones para crear
Para proporcionar acceso a los usuarios a la información que necesitan analizar mas
frecuentemente.
Para proporcionar información de forma que iguale la vista colectiva de la información por
un grupo de usuarios en el departamento, o grupo de usuarios interesados en un proceso de
negocio en particular.
Modelo de dimensionalidad
Técnica de diseño lógico que tiene como objetivo presentar la información de
manera estándar, intuitiva que proporciona el acceso de alto desempeño
Tipos : estrella, starflake schema, copo de nieve
Beneficios de DWH
Alto retorno de inversión potencial.
Ventaja competitiva.
Incrementa la productividad de los tomadores de decisiones.
Metadata
Descripción de los datos, nos dice de donde viene la información
Asegura la integración exitosa del DWH
Tecnologías para DWH/Herramientas
Extracción
Transformación
Carga (ETL)
Procesos
4. Crear un tipo de datos cliente con las columnas id, nombre, dirección y fecha de
nacimiento:
CREATE TYPE Cliente AS(id VARCHAR(8), nombre VARCHAR(32),
dirección VARCHAR(64), fechaNacimiento DATE)
NOT FINAL
Después crear una tabla de clientes con este tipo de dato más la columna
fechaIngreso:
CREATE TABLE clientes (x Cliente, fechaIngreso DATE)
8. Realice un query con xQuery o Flwor expression que haga los siguiente
TEMA
BASES DE DATOS XML
AGENDA
Introducción
Elementos XML, Atributos XML
Documentos XML
Datos semi-estructurados
Definiciones de tipo de documento (DTD)
Lenguajes de Consulta para XML
Introducción
<banco xmins:BP=“http://www.bancoprincipal.com”>
...
<BP:sucursal>
<BP:nombre_sucursal> Centro </BP:nombre_sucursal>
<BP:ciudad_sucursal> Capital >/BP:ciudad_sucursal>
...
</banco>
Estructura de datos XML
Algunas veces es necesario almacenar valores que contienen etiquetas
XML. Para ello XML permite esta construcción:
Simplicidad
Open estándar y de plataforma independiente.
Extensible
Reutilizable
Separación de contenido y presentación
Mejora el balanceo de cargas
Soporte para la integración de información de múltiples
fuentes
Habilidad para describir información desde gran variedad
de aplicaciones
Avanzados motores de búsqueda
Nuevas oportunidades
Resumen de características XML
Característica Ejemplo
Datos Semi-estructurados
Son datos que pueden ser irregulares o incompletos y tienen
una estructura que puede cambiar rápidamente o
impredeciblemente.
Los datos semi-estructurados son datos que tienen una
estructura, pero la estructura puede no ser rígida, regular o
completa y generalmente los datos no conforman un
esquema fijo (algunos términos para definir estos datos son
schema-less o self-describing). En los datos semi-
estructurados, la información que es normalmente asociada
con un esquema esta contenida en los datos en si. En algunas
formas de datos semi-estructurados, no hay un esquema
separado; en otros, este existe pero coloca solo limitaciones
sueltas en la información.
Datos semi-estructurados
STAFFL
IST
STAFF STAFF
STAFFN POSITI
NAME DOB SALARY
O ON
FNAME LNAME
John White
Figura B representación de un documento XML de la figura A
Tecnologías relacionadas con XML
XSL y XSLT
En HTML el estilo por defecto esta construido dentro de los
browsers puesto que el conjunto de etiquetas para HTML
esta predefinido y fijo. Cascading Stylesheet
Specification (CSS) permite al desarrollador proveer una
representación alternativa para las etiquetas. CSS puede
también ser utilizado para representar un documento XML
en un browser pero no tiene la habilidad de hacer
alteraciones estructurales en el documento. XSL
(eXtensible Stylesheet Language es una recomendación
formal de W3C que ha sido creada específicamente para
definir como los datos de un documento XML son entregados
y para definir como un documento XML puede
transformarse en otro documento (W3C, 2001 a). Es similar
a CSS, aunque mas poderoso.
Tecnologías relacionadas con XML
XSLT (XSL Transformations) forma un subconjunto de XSL
(W3C, 2007a). Es un lenguaje en sentido de marcas y
programación, proporciona un mecanismo para transformar la
estructura XML en otra estructura XML, HTML o cualquier otro
formato basados en texto (tal como SQL). Aunque puede ser
utilizado para crear la salida de una pagina web, la principal
característica de XSLT es la de cambiar las estructuras en lugar de
solo cambiar la representación de estas. como en el caso de CSS.
XSLT es importante pues proporciona un mecanismo para
cambiar en forma dinámica la vista del documento y para filtrar
información. Es también lo suficientemente robusto para codificar
reglas de negocio y puede generar graficas (no solo documentos)
de la información. También puede tener comunicación entre
servidores – especialmente en conjunción con módulos scripting
que se pueden integrar dentro de XSLT- y también puede generar
los mensajes apropiados dentro del cuerpo de XSLT por si mismo.
Outline XSL stylesheet para el documento del ejemplo 1
XHTML
XHTML (eXtensible HTML) 1.0 es una reformulación de
HTML 4.01 en XML 1.0 y fue realizado para ser la nueva
generación de HTML (W3C, 2002a) básicamente es una
versión mas estricta y limpia de HTML. Por ejemplo:
tags y atributos deben ser en minúsculas;
Todos los elementos XHTML deben tener una tag al final;
Los valores de los atributos deberán estar entre comillas y
no se permite la minimización
El atributo ID reemplaza al atributo name
Los documentos deberán cumplir con las reglas XML
Tecnologías relacionadas con XML
Mensajes
endpoints
uri uri uri
bindings
interface interface
operation operation
operation operation
service
Resource
Tecnologías relacionadas con XML
Universal Discovery, Description and Integration (UDDI)
La especificación UDDI define SOAP basados en servicios Web para la
localización de protocolos de formato WSDL de servicios web. Este
esencialmente describe un registro electrónico en línea que sirve como electronic
Yellow Pages, proporcionando una estructura de información donde varios
registros de negocios y servicios ofrecen sus definiciones WSDL. Esto esta
basado en estándares de la industria incluyendo HTTP, XML, esquema XML,
SOAP y WSDL. Hay dos tipos de registros UDDI: registros públicos los cuales
sirven como puntos de agregación para una variedad de negocios publiquen sus
servicios y registros privados que tienen un rol similar interno en las
organizaciones. Existe un esfuerzo entre la industria conducido a todas las
plataformas principales y vendedores de software, incluyendo Fujitsu, HP,
Hitachi, IBM, Intel, Microsoft, Oracle/Sun, SAP así como otros contribuyentes
dentro del consorcio OASIS (Organization for the Advancement of Structured
Information Standards). La siguiente figura muestra la relación entre WSDL y
UDDI.
Relación entre WSDL y UDDI
Web Services
Web Service directory (UDDI)
2. Publish WSDL
XML interface
(WSDL) Documents
1. Generate
SOAP
internet 3. Find
XML interface
4. Invoke (WSDL)
Client application
UDDI
La especificación UDDI 3.0 define un modelo de información
compuesto de instancias de estructuras de datos persistentes
llamadas entities, las cuales son expresadas en XML y
almacenadas persistentemente por nodos UDDI. Están soportados
los siguientes tipos de entity (UDDI.org, 2004):
businessEntity, el cual describe una organización que
típicamente proporciona servicios web, incluyendo su nombre,
descripción del negocio, lista de contactos y una lista de
categorizaciones tales como industria, categoría de producto o
localización geográfica.
businessService, la cual describe una colección de servicios de
web ofrecidos por una businessEntity, que contiene información
descriptiva del servicio de negocio sobre un grupo o servicios
técnicos relacionados incluyendo el nombre del grupo, breve
descripción, información de enlace de soporte técnico, e
información de categorías o procesos de negocio que permiten a
UDDI buscar y descubrir servicios de web mas eficientemente.
UDDI
bindingTemplate, el cual describe la información técnica necesaria para
utilizar un businessService particular. Esto incluye un accessPoint
utilizado para transmitir la dirección de red correcta para invocar el
servicio web siendo descrito, la cual puede ser una URL, dirección de
correo, o inclusive un numero de teléfono.
tModel (technical model), el cual representa un concepto reutilizable, tal
como el tipo de servicio web, un protocolo utilizado por los servicios
web, o una categoría o un sistema, haciendo mas fácil para los
consumidores del servicio web encontrar estos servicios que sean
compatibles con una especificación técnica en particular. Cada
especificación distinta, transporte, protocolo o namespace esta
representado por el tModel. Ejemplos de tModel son definiciones de
esquema WSDL y XML (XDS) y otros documentos que perfilan y
especifican el contrato y comportamiento que un servicio web puede
cumplir. Por ejemplo, para enviar una orden de compra, el servicio que
se debe llamar debe conocer no solo la URL de el mismo, también que
formato deberá tener la orden de compra a ser enviada, que protocolos
son apropiados, que seguridad es requerida y que forma de respuesta
resultará después de enviar la orden.
UDDI
publisherAssertion, el cual describe la relación de un businessEntity con otro
businessEntity.
subscription, la cual describe un requerimiento estándar a hacer un seguimiento
a los cambios de las entities descritas por los subscription.
Entities pueden opcionalmente firmarse utilizando firmas digitales XML. Esta
información proporcionada por el registro UDDI puede ser utilizada para
realizar tres tipos de búsquedas:
White Pages search conteniendo direcciones, contacto e identificadores
conocidos. Por ejemplo, la búsqueda de un negocio por su nombre o un
identificador único.
Yellow Pages search contiene categorizaciones industriales basadas en
taxonomías estándar, tales como the North American Industry Classification
(NAICS), United Nations Standard Products and Services Code System
(UNSPSC), o the ISO Country codes classification systems (ISO 3166).
Green Pages search contiene información técnica sobre servicios web que
están expuestos por una organización, incluyendo referencias a
especificaciones de interfaces para servicios web, así como soporte para
apuntadores a varios archivos y mecanismos de descubrimiento basado en
URL.
Ejemplo de entrada UDDI
<businessEntity xmlns=“urn:uddi-org:api”
businessKey=“AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA”>
<name>Dream Home Estate Agents</name>
<description xml:lang=“en”>Estate Agents</description>
<businessServices>
<businessService
businessKey=“AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA”
serviceKey=“BBBBBBBB-BBBB-BBBB-BBBB-BBBBBBBBBBB”
<name>Credit Bank</name>
<bindingTemplates>
<bindingTemplate
serviceKey=“BBBBBBBB-BBBB-BBBB-BBBB-BBBBBBBBBBB”
bindingKey=“CCCCCCCC-CCCC-CCCC-CCCC-CCCCCCCCCC”
<accessPoint URLType=“https”>https://dreamhome.com.uk/credit.aspx</accessPoint>
<tModelInstanceDetails>
<tModelInstanceInfo>tModelKey=“UUID:XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX”/>
</tModelInstanceDetails>
</bindingTemplate>
</bindingTemplates>
</businessService>
</businessServices>
<categoryBag>
<keyedReference tModelKey=“UUID:MK12345-678ª-9123-B456-/ABCDEFG8901”
keyName=“Credit check service”keyValue=“12.34.56.01.00”/>
</categoryBag>
</businessEntity>
XML Schema
Aunque XML 1.0 proporciona mecanismos DTD para la definición del modelo
contenido (el orden valido y el anidado de elementos) y en un alcance limitado,
los tipos de datos de los atributos del documento XML tienen algunas
limitaciones:
Están escritos con diferente sintaxis (no XML)
No tiene soporte para namespaces
Solo ofrece tipos de datos muy limitados.
Por lo tanto se necesita un método de definición de modelo contenido de un
documento XML mas exhaustivo y riguroso. El esquema W3C XML supera estas
limitantes y es mas expresivo que DTD (W3C, 2004a, b). La expresividad
adicional proporciona intercambio de información mas robusto entre
aplicaciones web y datos XML sin confiar demasiado en herramientas de
validación externas. Un esquema XML es la definición (en términos de
organización y tipo de datos) de una estructura especifica XML. El lenguaje W3C
XML schema especifica como cada tipo de elemento en el esquema esta definido
y que tipo de dato esta asociado a el. El esquema es por si mismo, un documento
XML, usando elementos y atributos para expresar la semántica del esquema.
Como es un documento XML puede editarse y procesarse por las mismas
herramientas que leen XML.
XML Schema
Tipos de datos incorporados en el esquema XML
El esquema XML incorpora los siguientes tipos de datos:
boolean, el cual contiene uno de dos valores true o false.
string, el cual contiene cero o mas caracteres Unicode, string tiene los
siguientes subtipos:
- normalizedString, para cadenas de caracteres que no contienen
caracteres en blanco excepto el carácter de espacio;
- token, un subtipo de normalizedString, para cadenas de caracteres
que no tienen espacios al inicio ni al final y no tienen dos o mas
espacios en un renglón;
- Name, un subtipo de token, el cual representa nombres XML, con
subtipos NCName, el cual representa un nombre XML sin dos puntos
y NMTOKEN;
- ID, IDREF e IDENTITY, subtipos de NCName, para los
correspondientes tipos de atributo;
- IDREF, NMTOKEN
XML Schema
• decimal, el cual contiene números reales en base 10 con subtipo
integer, para valores sin parte fraccional. Este subtipo tiene subtipos
de nonPositiveinteger, long y negativeInteger. Otros tipos dentro de
esta jerarquía incluyen int, short, y byte.
• float, para números binarios IEEE de 32 bits de punto flotante y
double, para números binarios IEEE de 64 bits de punto flotante.
• date, el cual contiene fechas en el formato yyyy-mm-dd; time, el cual
contiene hora en formato de 24 horas; dateTime, la combinación de
los dos antriores, por ejemplo 1945-10-01T23:10.
• Otros tipos de datos relacionados con fechas son duration, gDay,
GMonth, gYear. para calendario.
• QName, un nombre consistente en un namespace y un nombre local.
• anySimpleType el cual es la unión de todos los tipos primitivos.
• AnyType, el cual es la unión de todos los tipos (simples y complejos).
XML Schema
Tipos simples y complejos
Aun cuando es fácil crear un esquema XML, este sigue una estructura de
documento y define cada elemento como se encuentra. Elementos que
contienen otros elementos son de un tipo complexType. Para el elemento
raíz de nuestro ejemplo STAFFLIST, podemos definir un elemento
STAFFLIST para que sea un complexType. La lista de hijos del elemento
STAFFLIST, esta descrita por un elemento sequence (un compositor que
define una secuencia ordenada de elementos):
Cardinalidad
El W3C XML Schema proporciona la cardinalidad de un elemento a ser
representado utilizando atributos minOccurs (el mínimo numero de
ocurrencias) y maxOccurs (el máximo numero de ocurrencias). Para
representar a un elemento opcional, colocamos maxOccurs en 0; para
indicar que no hay un numero máximo de ocurrencias, colocamos
maxOccurs con el termino unbounded. Si no se especifica, el valor por
default de cada atributo es 1. Por ejemplo, como DOB es un elemento
opcional, se representa de la siguiente manera:
References
Un enfoque alternativo el cual esta basado en utilizar referencias a los elementos
y las definiciones de los atributos que necesitan estar dentro del alcance del
referenciador. Por ejemplo, podemos definir a STAFFNO como:
<xs:element name = “STAFFNO” type = “xs:string”/>
Y utilizar esta definición en la siguiente forma en el esquema cuando se requiera
el elemento STAFFNO:
<xs:element ref = “STAFFNO”/>
Si hay muchas referencias a STAFFNO en el documento XML, utilizando
referencias se colocará la definición una vez y por lo tanto mejorar el
mantenimiento del esquema.
XML Schema
Grupos
El W3C XML Schema proporciona la definición de
grupos de elementos o atributos. Un grupo no es un tipo
de datos pero actúa como un contenedor con un
conjunto de elementos o atributos. Por ejemplo:
Constraints
El W3C XML Schema también proporciona características XPath para
uniqueness constraints específicos. Revisaremos dos tipos de contraints:
uniqueness constraints y key constraints
Uniqueness constraints
Para definir un uniqueness constraint, se debe especificar un elemento
unique que defina los elementos o atributos que son únicos. Por ejemplo se
puede definir un uniqueness constraint con nombre, apellido y fecha de
nacimiento:
XML Schema
<xs:unique name = “NAMEDOBUNIQUE”>
<xs:selector xpath = “STAFF”/>
<xs:field xpath = “NAME/LNAME”/>
<xs:field xpath = “DOB”/>
</xs:unique>
Key constraints
Es similar al uniqueness constraint excepto que el valor debe ser no nulo.
Este tambien proporciona la llave a ser referenciada. Por ejemplo:
XML Schema
<rdf:RDF xmlns:rdf=http://www.w3.org/1999/02/22-rdf-syntax-ns#”
xmlns:rdf=“http://www.dreamhome.com.uk/schema/”>
<rdf:Description about =
http://www.dreamhome.com.uk/staff_list.xml>
<s:Author> John White </s:Author>
</rdf:Description>
</rdf:RDF>
Se puede representar esto en un diagrama utilizando la grafica etiquetada
mostrada en la siguiente figura. Si se quisiera almacenar información
descriptiva sobre el autor, se tiene el siguiente fragmento XML
Resource Description Framework (RDF)
<rdf:RDF xmlns:rdf=http://www.w3.org/1999/02/22-rdf-syntax-ns#”
xmlns:rdf=“http://www.dreamhome.com.uk/schema /”>
<rdf:Description about = http://www.dreamhome.com.uk/staff_list.xml>
<s:Author
rdf:resource=http://www.dreamhome.com.uk/Author_001”/>
</rdf:Description>
<rdf:Description about =http://www.dreamhome.com.uk/Author_001”>
<s:Name>John White</sName>
<s:e-mail>white@dreamhome.com.uk</s:e-mail>
<s:position>Manager</s:position>
</rdf:Description>
</rdf:RDF>
Resource Description Framework (RDF)
Author
staff_list.xml “John White”
Author Author_001
staff_list.xml position
Name Manager
e-mail
RDF Schema
Especifica información sobre las clases en el esquema incluyendo propiedades y atributos
y la relación entre recursos (clases). Más específicamente, el mecanismo de Esquema RDF
proporciona un tipo básico system para el uso de modelos RDF análogo al esquema XML.
Este define recursos y propiedades tales como rdfs:Class y rdfs:subClassOf que son
utilizados en aplicaciones especificas con esquemas específicos. Esto también proporciona
una facilidad para especificar un pequeño numero de constraints tales como de
cardinalidad requeridos y permiten las propiedades de instancias de clases.
Resource Description Framework (RDF)
Ejemplo 3:
SELECT ?name
FROM
<http://www.dreamhome.com.uk/staff_list.rdf>
WHERE {
?x ?s:Name ?name.
?x ?s:position ?position.
FILTER { ?position = “Manager” || ?position =
“Assistant”. }
}
XML Query Languages
Answer
PropertyForRent &5
street &11 “2 Manor Rd”
type &12 “Flat”
monthlyRent &13 375
OverseenBy &4
PropertyForRent &6
street &14 “18 Dale Rd”
type &15 1
annualRent &16 7200
OverseenBy &4
Este resultado es empacado dentro de un solo objeto complejo con la etiqueta default Answer. El
objeto Answer se convierte en un nuevo objeto en la base de datos, el cual puede ser consultado en la
forma normal.
Extensiones Lore y Lorel para manejar XML
En Lore basado en el modelo XML, un elemento XML es un par (eid, value)
donde eid es un identificador de un elemento único y value es una cadena de
caracteres o un valor complejo conteniendo uno de los siguientes:
una etiqueta correspondiente a una etiqueta XML para ese elemento;
una lista ordenada de nombres de atributos y valores pares, con el valor
un tipo base (por ejemplo, integer, string) o un ID, IDREF o IDREFS;
una lista ordenada de elementos entrelazados de la forma (label, eid)
donde label es una cadena (los subelementos entrelazados son
introducidos utilizando IDREF o IDREFS);
una lista normal de subelementos de la forma (label, eid) donde label es
un string (subelementos normales que son introducidos utilizando
anidamiento léxico dentro del documento XML)
Los comentarios y espacios en blanco entre elementos etiquetados son
ignorados y la sección de CDATA son trasladados dentro de elementos
atómicos de texto. En la siguiente figura se ilustra el mapa del documento
XML de la pagina 33.
Un documento XML en Lore
DREAMHOME
&1 BRANCH
STAFF
STAFF
{staffNo=“ SL21”}
staff
&2 {staffNo=“ SL41”} &3 &4 {staff=“SL21 SL41”}
staff
NAME NAME BRANCHNO
&9 &10
&8 &11
text text
B005
“John White”
&12 &13
“Julie” “Lee”
Lorel
Lorel
El concepto de path expression ha sido extendido en la versión
XML de Lorel que permite la navegación de ambos atributos y
subelementos distinguiéndose por un calificador de expresión
path (“>” solo para emparejar subelementos y “@” para atributos).
Cuando no se da un calificador ambos atributos y subelementos
son emparejados. En resumen, Lorel ha sido extendido para que
las expresiones [range] puedan opcionalmente ser aplicadas a
cualquier componente o variable de expresión path (range es una
lista números simples y/o range, tales como [1-3, 7].
SELECT s.NAME.LNAME
FROM DREAMHOME.STAFF s
WHERE s.SALARY > 30000
XML Query Working Group
Path expressions
Xquery Path expressions usan la sintaxis de XPath. En XQuery el
resultado de una path expression esta a razón de una lista de nodos,
incluyendo sus nodos descendientes. El resultado de los nodos al nivel
superior en la path expression son ordenados de acuerdo a su posición
en la jerarquía original en orden top-down, left-to-right. El resultado
de una path expression puede contener valores duplicados, esto es,
nodos múltiples con el mismo tipo y contenido.
Cada step en el path expression representa movimientos a través del
documento en una dirección en particular y cada step puede eliminar
nodos aplicando uno o mas predicados. El resultado de cada step es
una lista de nodos que sirven como un punto inicial para el siguiente
step. Una expresión path puede iniciar con una expresión que
identifica un nodo, tale como la función doc(string), la cual regresa
XQuery A Query Language for XML
FLWOR expressions
Una expresión FLWOR esta construida por clausulas FOR, LET, WHERE, ORDER
BY y RETURN. La sintaxis de la expresión FLWOR es la siguiente:
Una expresión FLWOR inicia con una o mas clausulas FOR o LET en cualquier
orden, seguido por una clausula WHERE opcional, una clausula ORDER BY
también opcional y una clausula requerida RETURN. Como en un query SQL estas
clausulas deben aparecer en orden, como se muestra en la siguiente figura. Una
expresión FLWOR une valores a una o mas variables y entonces utiliza estas variables
para construir un resultado. Una combinación de variables enlaza clausulas creadas
por FOR y LET la cual es llamada tupla.
Flujo de datos en una expresión FLWOR
FOR / LET
clauses
list of tuples of bound variables
WHERE clause
(optional)
restricted list of tuples of bound variables
ORDER BY clause
(optional)
RETURN clause
En este ejemplo la simple extensión de una expresión path con una variable utilizada
para representar el valor del sueldo que se quiere restringir. Para el ejemplo 1 solo un
elemento STAFF satisface el predicado, así que el resultado es el siguiente:
xs:decimal(SALARY) gt $SAL
FLWOR Expressions
Si tratamos de comparar un valor atómico con una expresión que regrese
nodos múltiples, entonces un general comparison operator regresa “true” si
cualquier valor satisface al predicado; sin embargo, un value comparison
operator podría generar un error para este caso.
2. Liste el personal (staff) en la sucursal B005 con un salario mayor a
£15,000
FOR $S IN doc(“staff_list.xml”)//STAFF
WHERE $S/SALARY > 15000 AND $S/@branchNo = “B005”
RETURN $S/STAFFNO
En este ejemplo utilizamos la clausula FOR para esta repetición sobre los
elementos de STAFF en el documento y para cada uno, realizar la
comparación del elemento SALARY y el atributo branchNo. el resultado del
query será el siguiente:
<STAFFNO>SL21</STAFFNO>
FLWOR Expressions
FOR $S IN doc(“staff_list.xml”)//STAFF
ORDER BY $S/STAFFNO
DESCENDING
RETURN $S/STAFFNO
FLWOR Expressions
4. Liste cada sucursal y el promedio del sueldo de los empleados que trabajan
de la misma
FOR $B IN distinct-values(doc(“staff_list.xml”)//@branchNo)
LET $avgSalary := avg(doc(“staff_list.xml”)//STAFF[@branchNo = $B]/SALARY)
RETURN
<BRANCH>
<BRANCHNO>{$B/text()}</BRANCHNO>
<AVGSALARY>$avgSalary</AVGSALARY>
</BRANCH>
FLWOR Expressions
<LARGEBRANCHES>
FOR $B IN distinct-values(doc(“staff_list.xml”)//@branchNo)
LET $S := doc(“staff_list.xml”)//STAFF[@branchNo = $B]
WHERE count($S) >20
RETURN
<BRANCHNO>{$B/text()}</BRANCHNO>
</LARGEBRANCHES>
FLWOR Expressions
6. Liste las sucursales que tienen al menos un miembro del staff con un
sueldo mayor a £15,000
<BRANCHESWITHLARGESALARIES>
FOR $B IN distinct-values(doc(“staff_list.xml”)//@branchNo)
LET $S := doc(“staff_list.xml”)//STAFF[@branchNo = $B]
WHERE SOME $sal IN $S/SALARY
SATISFIES ($sal > 15000)
RETURN
<BRANCHNO>{$B/text()}</BRANCHNO>
</BRANCHESWITHLARGESALARIES >
FLWOR Expressions
En este ejemplo se utiliza el existential quantifier SOME dentro de la
clausula WHERE para localizar las sucursales con al menos un empleado
que gane mas de £15,000. Tambien podemos utilizar el existential quantifier
EVERY.
<NOKLIST>
<NOK>
<STAFFNO>SL21>/STAFFNO>
</NOK>
</NOKLIST>
FLWOR Expressions
FOR $S IN doc(“staff_list.xml”)//STAFF,
$NOK IN doc(“nok.xml”)//NOK
WHERE $S/STAFFNO = $NOK/STAFFNO
RETURN <STAFFNOK> {$S, $NOK/NAME}</STAFFNOK>
<STAFFNOK>
<STAFF branchNo = “B005”>
<NAME>
<FNAME>John</FNAME><LNAME>White</LNAME>
<NAME>
<POSITION>Manager</POSITION>
<DOB>1945-10-01</DOB>
<SALARY>30000</SALARY>
</STAFF>
<NAME>Mrs. Mary White</NAME>
</STAFFNOK>
FLWOR Expressions
(2) Liste todo el staff con los detalles de sus parientes
FOR $S IN doc(“staff_list.xml”)//STAFF,
RETURN
<STAFFNOK>
{ $S
FOR $NOK IN doc(“nok.xml”)//NOK
WHERE $S/STAFFNO = $NOK/STAFFNO
RETURN $NOK/NAME
}
</STAFFNOK>
En este ejemplo se requiere listar los detalles de cada miembro del staff
independientemente que tenga parientes o no. En el modelo relacional, esto es
conocido como un Left Outer join
Resultado del XQuery del ejemplo anterior
<STAFFNOK>
<STAFF branchno = “B005”>
<STAFFNO>SL21</STAFFNO>
<NAME>
<FNAME>John</FNAME><LNAME>White</LNAME>
</NAME>
<POSITION>Manager</POSITION>
<DOB>1945-10-01</DOB>
<SALARY>30000</SALARY>
</STAFF>
<NAME>Mrs Mary White>/NAME>
</STAFFNOK>
<STAFFNOK>
<STAFF branchno = “B003”>
<STAFFNO>SG37</STAFFNO>
<NAME>
<FNAME>Ann</FNAME><LNAME>Beech</LNAME>
</NAME>
<POSITION>Asistant</POSITION>
<SALARY>12000</SALARY>
</STAFF>
</STAFFNOK>
FLWOR Expressions
(3) Liste cada sucursal y el staff que trabaja en la misma
<BRANCHLIST>
{
FOR $B IN distinct-values(doc(“staff_list.xml”)//@branchNo)
ORDER BY $B
RETURN
<BRANCHNO>{$B/text()}
{
FOR $S IN doc(“staff_list.xml”)//STAFF
WHERE $S/@branchNo = $B
ORDER BY $S/STAFFNO
RETURN $S/STAFFNO, $S/NAME, $S/POSITION, $S/SALARY
}
</BRANCHNO>
}
</BRANCHLIST>
XML Query Languages
Ejemplo:
Esta función esta basada en el loop interno de uno de los ejemplos anteriores, ahora
el codigo se puede reemplazar por la función
staffABranch($B)
XML Query Languages
Asi XML permite estructuras recursivas. Esto se ilustra en la siguiente figura:
Module declaration
Library
declaration
Prolog Module
declaration
Query body
MODULE “https://www.dreamhome.com.uk/library/staff_list”
XML Query Languages
El modulo puede importarse para consultas especificando el URI del mismo y
opcionalmente la localidad donde el modulo será encontrado, por ejemplo:
IMPORT MODULE “https://www.dreamhome.com.uk/library/staff_list”
AT file://C:/xroot/lib/staff_list.xq
La siguiente tabla muestra algunos ejemplos de como se pueden referenciar los tipos
importados por el XML Schema así como las funciones que regresan tipos,
parámetros de funciones, y funciones ligadas utilizando la clausula LET que también
puede ser declarada con un tipo de secuencia. Si el tipo de argumento o variable no
XML Query Languages
coincide y no puede ser convertida, se genera un error. Hay varios tipos de
operaciones útiles en tipos:
La función incorporada instance-of() puede utilizarse para probar si un
elemento es de un tipo dado.
La expresión TREAT AS puede utilizarse para asegurar que el valor es de un tipo
especifico durante el análisis estatico de otro modo se genera un error al tiempo
de ejecución.
La expresión TYPESWITCH es similar a la declaración CASE en ciertos lenguajes
de programación, seleccionado una expresión a evaluar basados en el tipo de un
valor de entrada.
La expresión CASTABLE la cual prueba si un valor dado puede ser emitido dentro
de un tipo objetivo dado.
La expresión CAST AS para convertir un valor a un tipo especifico resultado, el
cual debe ser un tipo atómico nombrado, por ejemplo:
IF $x CASTABLE AS xs:string
THEN $x CAST AS xs:string ELSE
XML Query Languages
TEMA
BASES DE DATOS XML
PARTE 2
AGENDA
El XQuery 1.0 and XPath 2.0 Data Model (XDM) (el cual
mencionaremos de aquí en adelante solo como “Data
model”) define la información contenida en la entrada XSLT
o procesador XQuery así como todos los valores posibles de
expresiones en los lenguajes XSLT, Xquery y XPath
(W3C,2007h). El modelo de datos esta basado en XML
Infoset, el cual tiene las siguientes características nuevas:
soportado para tipos XML Schema;
representación de colección de documentos y de valores
complejos;
soportado para tipos de valores atómicos;
soportado para secuencias heterogéneas ordenadas.
XQuery 1.0 and XPath 2.0 Data Model (XDM)
Constraints
El modelo de datos especifica un numero de constraints tales como:
El hijo del nodo documento o elemento debe consistir exclusivamente del
elemento, instrucción de procesamiento, comentario, y nodos texto si no
están vacíos. Atributos, namespace y nodos documento pueden nunca
aparecer como hijos.
La secuencia de nodos en la propiedad children de un documento o nodo
elemento no debe contener dos nodos texto consecutivos.
La propiedad children de un documento o nodo elemento no debe contener
dos nodos texto consecutivos.
La propiedad children de un nodo no debe contener nodos texto vacíos.
Los atributos de un nodo elemento deben tener distintos xs:QNames
(qualifier name)
Los nodos elemento pueden existir sin padres (para representar resultados
parciales durante el procesamiento de la expresión, por ejemplo). Tales nodos
elemento no deben aparecer entre hijos de cualquier otro nodo.
Nodos atributo y nodos namespace pueden existir sin padres. Tales nodos no
deben aparecer sobre los atributos de cualquier nodo elemento.
XML y Bases de Datos
XML y SQL
Se tienen algunos mecanismos para potenciar
completamente a XML. Los estándares SQL:2003 y
SQL:2008 tienen extensiones definidas para que SQL
habilite la publicación de XML, se refiere comúnmente como
SQL/XML (ISO, 2008c). En particular, SQL/XML contiene:
un nuevo tipo de datos nativo XML, el cual proporciona
que los documentos XML sean tratados como valores
relacionales en columnas de tablas, atributos en tipos de
datos definidos por usuarios, variables y parámetros de
funciones;
un conjunto de operadores para este tipo;
un conjunto implícito de mapeos desde datos relacionales
hacia XML.
XML y Bases de Datos
2) Para cada sucursal, liste los nombres de todo el staff cada uno representado como un
elemento XML
SELECT XMLELEMENT(NAME”BRANCH”,
XMLATTRIBUTES(branchNo AS “branchNumber”),
XMLAGG(XMLELEMENT(NAME “STAFF”,fName||’ ‘||lName)
ORDER BY fName ||’ ‘||lName)
) AS “branchXMLCol”
FROM Staff
GROUP BY branchNo;
XML y Bases de Datos
En este caso, se quiere agrupar la tabla Staff por branchNo y entonces listar el staff
dentro de cada grupo. Se utiliza la función XMLAGG aggregate para hacerlo.
Nótese la utilización de la clausula GROUP BY para listar los elementos
alfabéticamente por nombre de staff. El resultado es el siguiente:
branchXMLCol
<BRANCH branchNumber = “B003”>
<STAFF> Ann Beech</STAFF>
<STAFF> Susan Brand</STAFF>
<STAFF> David Ford</STAFF>
</BRANCH>
<BRANCH branchNumber = “B005”>
<STAFF>Julie Lee </STAFF>
<STAFF> John White</STAFF>
</BRANCH>
<BRANCH branchNumber = “B007”>
<STAFF> Mary Howe</STAFF>
</BRANCH>
XML y Bases de Datos
SELECT
XMLQUERY(‘FOR $S IN /STAFF/SALARY WHERE $S>$SAL
AND $S/@branchNo = “B005” RETURN $S”
PASSING BY VALUE ‘15000’ AS $SAL, staffData
RETURNING SEQUENCE BY VALUE
NULL ON EMPTY) AS highSalaries
FROM XMLStaff;
La declaración XQuery donde la clausula WHERE ha sido parametrizada utilizando
la variable $SAL. La clausula PASSING proporciona un valor para $SAL (15000) y
también especifica el articulo contexto staffData. La clausula RETURNING especifica
que la salida será una secuencia XQuery
Bibliografía
Program 2 Redundant
Data
Data File 2
Description
File 3
Program 3
Data
Description
Figura 1
Program 1 Database
Data Description
Program 2
Data Description
Database
…
Program 3
Figura 2
Uno de las principales motivaciones de la
utilización de DDBS es el deseo de integrar la
información operacional de una empresa y de
proporcionar el acceso centralizado a esto. Por
otro lado la tecnología de redes computacionales
promociona un modo de trabajo que esta en
contra de los esfuerzos de centralización. Al
principio es difícil de entender como estas dos
formas de hacer las cosas tan contrastantes
pueden ser sintetizadas para producir una
tecnología que es mas poderosa y promisoria que
cada una por separado.
La clave de esto es integración no centralización. Es
importante enfatizar que uno de estos términos no
necesariamente implica el otro. Es posible lograr
integración sin necesidad de centralizar y es
exactamente lo que trata de lograr la tecnología de
DDBS.
Los sistemas de computo distribuidos son un numero
de elementos de procesamiento autónomos (no
necesariamente homogéneos) que están
interconectados por medio de una red de computo y
que cooperan para realizar sus tareas asignadas.
El principio fundamental de las bases de datos distribuidas
es: Ante el usuario un sistema distribuido debe lucir
exactamente igual que un sistema que no es distribuido.
El principio fundamental identificado anteriormente nos
conduce a doce reglas complementarias u objetivos:
1. Autonomía local
2. No dependencia de un sitio central.
3. Operación continua.
4. Independencia de ubicación.
5. Independencia de fragmentación.
6. Independencia de replicación.
7. Procesamiento de consultas distribuidas
8. Administración de transacciones distribuidas
9. Independencia de hardware
10. Independencia de sistema operativo
11. Independencia de red
12. Independencia de DBMS
UAEM: Cuenta con escuelas preparatorias, Facultades con licenciaturas y post grados
Dentro de las Facultades tenemos en especifico la Facultad de Ingeniería
Dentro de la FI existen las carreras de I. Mecánica, I. Civil, I.
electrónica, I. En Computación
Específicamente la licenciatura de I. en Computación tiene
las siguientes asignaturas: …
La descomposición de una relación en fragmentos
cada uno tratado como una unidad permite un
numero de transacciones a ejecutar
concurrentemente. En resumen la fragmentación
de relaciones resulta en ejecuciones en paralelo
de un query simple dividido en un conjunto de
subqueries que operan como fragmentos. Esta
fragmentación típicamente incrementa el nivel de
concurrencia y por lo tanto el desempeño del
sistema. Algunas desventajas son si la relación es
mutuamente exclusiva, si tienen mas de un
fragmento pueden sufrir degradación en su
desempeño
Horizontal
Vertical
Parten una relación entre tuplas. Estos fragmentos forman un
subconjunto de tuplas de una relación. Hay dos versiones de
particiones horizontales primaria y derivada. La fragmentación
primaria horizontal de una relación es desarrollada usando
predicados que están definidos en esa relación. Por otro lado
fragmentación derivada horizontal es el particionamiento de la
relación que resulta de los predicados siendo definidos en otra
relación
Requerimientos de información para fragmentación horizontal:
La información incluida en el esquema conceptual global. En
este contexto es importante notar como las relaciones dentro de
la base de datos están conectadas unas con otras, especialmente
joins. En el modelo relacional estas relaciones son representadas
explícitamente.
La fragmentación vertical de una relación R
produce fragmentos R1, R2, …, Rn cada uno de los
cuales contiene un subconjunto de R’s atributos
así como la llave primaria de R. El objetivo de la
fragmentación vertical es el de partir la relación
dentro de un conjunto de relaciones mas
pequeñas tantas como aplicaciones de usuarios
sean ejecutadas en solo un fragmento. En este
contexto una fragmentación “optima” es una que
produce un esquema fragmentado el cual
minimiza el tiempo de ejecución de una
aplicación de usuario que es ejecutada en esos
fragmentos.
EMP ASIG
ENO ENAME TITLE
ENO PNO RESP DUR
E1 J. Doe Elect. Eng
E1 P1 Manager 12
E2 M. Smith Syst. Analyst
E3 A. Lee Mech. Eng. E2 P1 Analyst 24
E6 P4 Manager 48
PROJ PAY
E7 P3 Enginner 36
PNO PNAME Budget LOC Title SAL
E8 P3 Manager 40
P1 Instrumentation 150000 Montreal Elect. Eng 40000
P4 Maintenance Paris
Replication and replica control protocols
Como ya lo habíamos mencionado tener replicas incrementa
la disponibilidad de la información si se hace correctamente
se eliminan los SPF (single point of failure)
Strict Replica Control Protocol son los que obligan tener
una copia equivalente en cada nodo. El protocolo ROWA
(Read One Write All) es el que convierte una lectura lógica a
una lectura en cualquiera de sus replicas y convierte una
escritura lógica a una escritura en todas sus replicas. Esto se
realiza cuando la transacción de update realiza el commit,
todas las replicas tienen el mismo valor.
Cuando alguna de las replicas no esta disponible, la
transacción no se puede terminar. Entonces ROWA falla en
cumplir con un objetivo fundamental de la replicación la de
proporcionar alta disponibilidad. una variación de ROWA es
ROWA-A (Read One Write All Available). La idea general es
que los comandos de escritura se ejecutan en las copias
disponibles y la transacción termina. Las copias que no están
disponibles tienen que actualizarse en cuanto lo estén.
Lazy Replica Control Protocol no permiten realizar
las operaciones de escritura en todas las copias del
data item dentro del contexto de la transacción que
actualiza al data item. En lugar de esto, realizan la
actualización de una o mas copias y después
propagan los cambios en todas las copias. Un
esquema de replicación lazy puede caracterizarse
usando cuatro parámetros básicos: El parámetro
ownership define los permisos para actualizar las
copias en la replica. Si la replica es actualizable se
llama primary copy, en otro caso es llamada
secondary copy.
El nodo que almacena la primary copy de un objeto es
llamada master para este objeto mientras que los nodos
que almacenan las copias secundarias son llamados
slaves. El parámetro propagation define cuando las
actualizaciones a una replica deben realizarse hacia los
nodos que almacenan otras replicas del mismo objeto. El
parámetro refreshment define la calendarización de las
transacciones de refresh. Si una transacción refresh es
ejecutada tan pronto como se recibe por algún nodo, la
estrategia se realizará de manera inmediata
(immediate). La yuxtaposición de los parámetros de
propagation y refreshment determinan una estrategia
de propagación de actualización . Por ejemplo una
estrategia de propagación de actualización deferred-
immediate tiene una propagación aplazada (deferred
propagation) y un refreshment immediate.
El parámetro de configuration caracteriza a los
nodos y a las redes.
Basado en esta caracterización, los protocolos de
replicación lazy se pueden clasificar en dos grupos.
El primer grupo consiste en métodos de replicación
lazy donde todas las copias de las replicas son
actualizables (update anywhere). En este caso hay
un group ownership en las replicas. La estrategia
común de propagación implementado para este
esquema es deferred-immediate. Un conflicto
aparece si dos o mas nodos actualizan el mismo
objeto en la replica. Hay varias políticas de
detección y resolución de conflictos que pueden ser
basados en ordenamiento “timestamp”, prioridad
de los nodos, entre otros.
El problema con la resolución de conflictos es que durante cierto
periodo de tiempo la base de datos puede estar en estado
inconsistente. Los conflictos no pueden evitarse pero su detección
puede minimizarse por medio de una immediate propagation.
La segunda clase consiste en los protocolos donde hay un solo
master que es el que se actualiza (llamado lazy master method).
Hay varias estrategias de refreshment para este esquema de
replicación. Con un on-demand refreshment, cada vez un query se
manda ejecutar. Copias secundarias que son leídas por el query
son refrescadas cuando se recibe el refresh de todas las
transacciones. Por lo tanto un atraso puede introducirse en los
tiempos de respuesta del query. Cuando se utiliza un group
refresh las transacciones de refresh se ejecutan en grupos de
acuerdo con los requerimientos de la aplicación. Con un periodic
approach el refreshment es calendarizado en intervalos fijos.
Todos los tiempos de refreshment y las transacciones de refresh
son ejecutadas. Finalmente con la periodic propagation los
cambios son realizados por las transacciones de actualización y
son almacenados en el master y propagados periódicamente.
Nótese que se utiliza la immediate propagation con todas las
estrategias de refreshment.
Full replication Partial Partitioning
replication
OLAP
Considérese una aplicación en que una tienda desea averiguar las prendas que son
mas populares. Supóngase que las prendas están caracterizadas por nombre de
articulo, color y talla y que se tiene la relación ventas con el esquema
ventas(nom_art, color, talla, num)
all color
Talla:
Oscuro pastel blanco Total
Falda 8 35 10 53
Vestido 20 10 5 35
nom_art Camisa 14 7 28 49
Pantalón 20 2 5 27
Total 62 54 48 164
8 20 14 16
Oscuro 20 62
4
34
35 10 54
color
7 2 18
Pastel 9
21
45
Blanco 10 8 28 5 48 42 pequeña
77 mediana
grande talla
all 53 35 49 27 164
falda Vestido camisa all all
Nom_articulo
Nom_articulo color talla Numero
Falda oscuro all 8
Falda pastel all 35
Falda blanco all 10
falda all all 53
vestido oscuro all 20
vestido pastel all 10
vestido blanco all 5
vestido pastel all 35
camisa blanco all 14
camisa all all 7
pantalón oscuro all 28
pantalón pastel all 49
pantalón blanco all 20
En la siguiente figura se muestra la arquitectura simplificada del data warehouse.
Una o mas bases de datos origen, conteniendo información operacional actualizada por
aplicaciones OLTP integradas en una base de datos destino, o data warehouse.
La base de datos destino es accesada a través de queries por aplicaciones de escritorio
tales como herramientas de análisis y consultas, reporteo y data mining. Aplicaciones
de escritorio populares para análisis de datos son hojas de calculo.
El repositorio de metadatos que mantiene la huella de toda la información actualmente
almacenada en el data warehouse. Metadata típica incluye descripciones de tablas
Destino con sus definiciones del origen. El repositorio de metadata es útil para aislar
El data warehouse de cambios en el esquema de las bases de datos fuente, por consiguiente,
cuando ocurre un cambio en el esquema origen de la DB, el administrador del DWH puede
simplemente actualizar el repositorio y el cambio automáticamente es propagado a la DB
destino y a las aplicaciones OLAP.
La integración de múltiples DB fuente en el DWH provoca diferentes situaciones:
El tiempo de diseño, un esquema integrado debe definirse. Integración del esquema en el
DWH es similar a la integración del esquema en sistemas múltiples de DB y debe lidiar con
conflictos de semántica a través de distintos DB fuentes autónomas. La integración del
Esquema en data warehousing típicamente asume que cada DB fuente proporciona una
Interface relacional. Esta integración del esquema puede ser hecha definiendo vistas
Relacionales sobre las tablas fuente.
Cargar el DWH depende de la extracción de la información y utilerías de limpieza y carga.
La extracción de información se implementa utilizando gateways que soportan interfaces
estándar.
tales como ODBC (Open Database Conectivity). Los datos usualmente son limpiados para
reducir inconsistencias, como entradas omitidas o valores inválidos. Después de la
extracción y limpieza la información es cargada en el DWH con procesos adicionales tales
como sumarización o agregación (aggregation). El cargado de la información esencialmente
significa materializar las vistas relacionales del esquema integrado. Por lo tanto la información
en el DWH esta organizada para un procesamiento de consultas eficiente con varios tipos de
índices.
Después de que fue cargado, el DWH debe ser refrescado de vez en vez para reflejar las
actualizaciones de las fuentes. El refreshing es usualmente hecho periódicamente, por
ejemplo diariamente o cada semana. Esto puede ser realizado inmediatamente después de
cada actualización de las aplicaciones OLAP que necesitan ver los datos actuales. Para evitar
cargar tablas enteras, solo actualizaciones de los datos fuente podría propagarse en el DWH.
Esto se realiza usando técnicas de replicación asíncronas que realizan mantenimientos
incrementales de replicas desde copias primarias. OLTP
OLAP
Metadata
Query/Analysi Repository
s Reporting Queries Integrate
OLAP Queries
Datamart
Central
Data
Warehouse
OLAP Queries
Datamart
Global DWH
Data
Gateway Warehouse
En algunos casos el warehouse manager también genera query profiles para determinar
que índices y aggregations son apropiados. Un query profile puede generarse para cada
usuario, grupo de usuarios o el DWH y esta basado en la información que describe las
características de los queries tales como su frecuencia, tablas que consulta y tamaño del
resultado obtenido.
Query Manager
Realiza todas las operaciones asociadas con la administración de los queries de los
usuarios. La complejidad del query manager esta determinada por la infraestructura
proporcionada por las herramientas de acceso de usuarios finales y la base de datos. Las
operaciones realizadas por este componente incluyen direccionamiento de queries a las
tablas apropiadas y calendarizan la ejecución de estos. En algunos casos, el query
manager también genera query profiles para ayudar al warehouse manager a
determinar que índices y aggregations son apropiados.
Detailed Data
Es un área del warehouse que almacena toda la información detallada en el esquema de
la DB. en la mayoría de los casos, detailed data no esta almacenada en línea pero esta
disponible por medio de agregar información al siguiente nivel de detalle. Sin embargo,
en bases regulares, detailed data es agregada al DWH para complementar información
adicional.
Lightly and Highly Summarized Data
Esta área del DWH almacena toda la información predefinida resumida generada por el
warehouse manager. Esta área del warehouse es transitoria, esto será sujeto a cambio
en el transcurso de la operación a razón de responder los cambios a los query profiles.
Archive/Backup Data
Esta área del warehouse almacena información detallada y resumida para propósitos de
archivado y respaldo. Aun cuando la información resumen es generada a partir de la
información detallada, esto puede ser necesario para respaldos en línea de información
resumida si esta información es mantenida mas allá de su periodo de retención por la
información detallada.
Metadata
Esta área del DWH almacena toda las definiciones de metadata (la definición de la
información) utilizada por todos los procesos en el DWH. La metadata es utilizada para:
• Procesos de extracción y carga – metadata es utilizada para “mapear” recursos de
datos en una vista en común de la información dentro del DWH.
• El warehouse management process – metadata se utiliza para automatizar la
producción de tablas sumarizadas.
• Como parte del query management process –metadata se utiliza para direccionar un
query a su fuente de datos asociada correcta.
La estructura de metadata difiere entre cada proceso, puesto que el propósito es
diferente. Esto significa que múltiples copias de metadata describen el mismo data item
contenido en el DWH. En resumen, la mayoría de las herramientas para administración
de copias y acceso a usuarios finales utiliza estas versiones de metadata.
Específicamente herramientas de administración de copias utilizan metadata para
entender el mapeo de las reglas para aplicar a razón de convertir los datos fuente dentro
de una forma común. Las herramientas de acceso para usuarios finales utilizan metadata
para entender como construir un query. La administración de metadata dentro del DWH
es una tarea complicada que no debe ser sobre estimada.
Herramientas para usuarios finales
El propósito principal de un DWH es el de ayudar a los tomadores de decisiones. Estos
usuarios interactúan con el DWH utilizando herramientas de acceso para usuarios
finales. El DWH deberá soportar eficientemente análisis personalizado y rutinario. Se
logra un alto desempeño realizando pre-planeación de los requerimientos para joins,
summations y reportes periódicos para usuarios finales.
Aunque las definiciones de herramientas de acceso a usuarios finales pueden diferir las
podemos catalogar en cuatro grupos principales:
• Herramientas de reporteo y consulta
Incluyen herramientas production reporting tools y report writers. Production reporting
tools son utilizadas para generar reportes operacionales regulares o soportan alto
volumen de batch jobs, tales como ordenes de clientes / facturas y pago a empleados.
Report writers por el otro lado, son herramientas de escritorio sin costo diseñadas para
usuarios finales.
• Herramientas de desarrollo de aplicaciones
• Herramientas OLAP
• herramientas data mining
Herramientas para consultas tenemos al Query By Example (QBE)
• Herramientas de desarrollo de aplicaciones
Estas herramientas pueden accesar a la mayoría de las bases de datos comerciales como
Oracle, Sybase, DB2 e Informix.
• Herramientas OLAP
Están basadas en el concepto de DBs multidimensionales y proporcionan a usuarios
avanzados analizar la utilización compleja de información, vistas multidimensionales.
Aplicaciones típicas de negocios para estas herramientas incluyen medir la efectividad
de una campaña de marketing, proyección de venta de productos y análisis de
capacidades. Estas herramientas asumen que la información esta organizada en un
modelo multidimensional soportado por una base de datos multidimensional especial
(MDDB) o por una base de datos relacional diseñada para habilitar consultas
multidimensionales.
• herramientas data mining
Data mining es el proceso de descubrimiento del significado de nuevas correlaciones,
patrones y tendencias por medio de la extracción de grandes cantidades de información
utilizando técnicas estadísticas, matemáticas y de inteligencia artificial. Data mining
tiene el potencial de reemplazar las capacidades de herramientas OLAP, como su
característica principal, el data mining es capaz de construir modelos predictivos en
lugar de retrospectivos.
ETL en Oracle:
https://docs.oracle.com/cd/B19306_01/server.102/b14223/ettover.htm
https://docs.oracle.com/cd/B19306_01/server.102/b14223/extract.htm
Physical Extraction Methods
Depending on the chosen logical extraction method and the capabilities and
restrictions on the source side, the extracted data can be physically extracted by two
mechanisms. The data can either be extracted online from the source system or
from an offline structure. Such an offline structure might already exist or it might be
generated by an extraction routine.
There are the following methods of physical extraction:
• Online Extraction
• Offline Extraction
Online Extraction
The data is extracted directly from the source system itself. The extraction process can
connect directly to the source system to access the source tables themselves or to an
intermediate system that stores the data in a preconfigured manner (for example, snapshot
logs or change tables). Note that the intermediate system is not necessarily physically
different from the source system.
With online extractions, you need to consider whether the distributed transactions are
using original source objects or prepared source objects.
Offline Extraction
The data is not extracted directly from the source system but is staged explicitly outside the
original source system. The data already has an existing structure (for example, redo logs,
archive logs or transportable tablespaces) or was created by an extraction routine.
You should consider the following structures:
• Flat files
Data in a defined, generic format. Additional information about the source object is
necessary for further processing.
• Dump files
Oracle-specific format. Information about the containing objects may or may not be included,
depending on the chosen utility.
• Redo and archive logs
• nformation is in a special, additional dump file.
• Transportable tablespaces
A powerful way to extract and move large volumes of data between Oracle databases. A
more detailed example of using this feature to extract and transport data is provided
in Chapter 13, "Transportation in Data Warehouses". Oracle recommends that you use
transportable tablespaces whenever possible, because they can provide considerable
advantages in performance and manageability over other extraction techniques.
La implementación exitosa de DWH puede traer enormes beneficios a la organización incluyendo:
• Alto retorno de inversión potencial. Una organización puede comprometer una alta cantidad de
recursos para asegurar la implementación exitosa del DWH y el costo puede variar enormemente
de decenas a millones de USD dependiendo de la variedad de soluciones técnicas disponibles.
Sin embargo, un estudio de IDC (International Data Corporation) reportó que los proyectos de DWH
entregados en un promedio de tres años el retorno de inversión (ROI) es del 401% (IDC 1996).
Además, un estudio mas reciente de IDC en análisis financiero (que son herramientas analíticas que
accesan a un DWH) entregas de en promedio un año dan un ROI del 431% (IDC, 2002).
• Ventaja competitiva. El alto retorno en inversión para estas compañías que tienen
implementaciones exitosas de un DWH es evidente en la enorme ventaja competitiva que
acompañan estas tecnologías. La ventaja competitiva es ganada por medio de los tomadores de
decisiones que accesan la información que puede revelar previamente no disponibilidad,
desconocimiento, información no explotada, con por ejemplo clientes, tendencias y demandas.
Time 2008
2007
Skateboard 50 75 25
Inline roller 75 50 75
Location
La mayoría de los queries OLAP pueden ser expresados en SQL utilizando (SUM, AVG, etc.)
y agrupándolos (GROUP BY). Sin embargo, algunos queries no pueden ser directamente
expresados y requieren extensiones significativas. Este es el caso para queries los cuales
involucran rangos (por ejemplo las diez ciudades con las ventas mas altas).
Hay dos enfoques principales para implementar servidores DWH [Colliant, 1996]. Multidimensional
OLAP (MOLAP) los servers directamente soportan operaciones OLAP en estructuras de datos
multidimensionales, mientras que Relational OLAP (ROLAP) servers, extienden DB relacionales para
soportar operaciones OLAP.
Los servers MOLAP almacenan la información en estructuras de datos multidimensionales que están
dedicadas a operaciones OLAP. La estructura de datos típicamente tiene dos niveles para tratar con
grandes conjuntos de datos que no caben en la memoria principal. Con esta estructura de datos las
operaciones OLAP se pueden procesar mas eficientemente en memoria [Finkelstein, 1995]. Sin
embargo, cambiando el arreglo multidimensional, por ejemplo agregando otra dimensión, requiere una
reconstrucción completa del arreglo. Además, MOLAP servers no pueden escalarse a very large
Databases (VLDB) puesto que el índice principal debe poder estar en memoria principal. Un problema
final es que no hay un modelo de datos multidimensional estándar y los servers MOLAP son
substancialmente diferentes en el direccionamiento de los requerimientos OLAP.
Servidores ROLAP son una extensión de RDBMS o servers intermedios enfrente de RDBMS que
almacenan la información en relaciones. Un arreglo multidimensional es representado por dos tipos de
relaciones. La tabla fact relaciona las dimensiones de las medidas con una relación cuyo primary key es
el conjunto de identificadores de la dimensión. Por ejemplo, el arreglo multidimensional de la figura 4
produce la tabla fact(location_id, time_id, product_id, sales) con la key location_id, time_id, product_
id. Cada dimensión es representada por una tabla de dimensión la cual su llave es el identificador de la
dimensión. Por ejemplo, la dimensión de tiempo produce la relación (time-id, date, week, month,
quarter, year).
Las operaciones OLAP están mapeadas dentro de queries SQL complejos en las tablas fact y dimensión,
las cuales pueden involucrar muchos joins con las operaciones de aggregate y group by. Por lo tanto son
necesarios métodos de acceso eficientes y procesamiento de queries para tratar son relaciones muy
grandes.
Los índices en las tablas de fact y dimensión son importantes. Por lo tanto join indices y sus extensiones
recientes tales como bit-mapped join indices e índices variant son mas eficientes para relacionar
directamente los valores de los atributos en la tabla de dimensiones con las tuplas que se relacionan en
la tabla fact. Como los índices las vistas materializadas son útiles para pre calcular información de
resumen y aggregates. Los temas mas importantes la eficiencia en actualizar las vistas materializadas
usando técnicas incrementales y la transformación de queries en términos de vistas materializadas. Otra
solución complementaria para procesamiento eficiente OLAP es el paralelismo.
• Habilitación de información fuente de ETL RT. El problema para RT DWH es reducir el la ventana de
ETL para permitir la carga RT/NRT con el mínimo tiempo fuera para los usuarios DWH.
• El modelado de las tablas fact RT. Este problema con modelado de datos RT dentro del DWH es
conocido como integrar la información RT con la otra información variada agregada contenida
previamente en el DWH.
• OLAP queries versus changing data. El problema es que las herramientas OLAP asumen que la
información es estática y no tiene cambios. Las herramientas no tienen protocolos para tratar con
información que esta siendo actualizada durante el ciclo de vida del query.
• Scalability and query contention. El problema con la escalabilidad y la contención de queries fue
una de las razones principales de separar sistemas operacionales de sistemas analíticos.
En esta sección examinaremos herramientas y tecnologías asociadas con la construcción y
administración de un DWH, en particular nos enfocaremos en los temas asociados con la integración de
estas herramientas.
Transformation
El paso de transformación aplica una serie de reglas o funciones para información extraída, la cual
determina como será utilizada esta información para analizarla y pueda involucrar transformaciones
tales como sumarizado, codificación, fusiones, división, calculo de datos y creación de llaves sustitutas
(surrogate keys) la salida de las trasformaciones es información limpia y consistente con la información
dentro del warehouse, y además esta en una forma lista para ser analizada por los usuarios en el
warehouse. Aunque la información resumida esta mencionada como posible transformación, es
recomendado comúnmente que la información dentro del warehouse tenga el menor grado de
granularidad posible. Esto proporciona a los usuarios que puedan realizar consultas en la información
del EDW que sean capaces de profundizar con la información mas detallada.
Loading
La carga de la información dentro del warehouse puede ocurrir después de todas las transformaciones o
una parte de ellas. Como la información se carga dentro del warehouse, se activan restricciones
adicionales definidas en el esquema de la base de datos (por ejemplo unicidad, integridad referencial, y
campos obligatorios) los cuales también contribuyen al buen desempeño del proceso ETL.
En el warehouse la información puede estar sujeta a sumarizaciones y enviada después a otras bases de
datos asociadas tales como data marts o para alimentar aplicaciones particulares como Customer
Resource Manager (CRM). Temas importantes en el paso de carga son determinar la frecuencia de la
carga y establecer como la carga afectará la disponibilidad del DWH.
Hay bastantes temas asociados a la integración del DWH.
La administración de la metadata es una tarea extremadamente compleja y difícil. Metadata es utilizada
para una variedad amplia de propósitos y su administración es un tema critico para asegurar la
integración exitosa del DWH.
El propósito principal de metadata es el de mostrar la trayectoria de donde vienen los datos, así el
administrador del DWH conoce la historia de cualquier item en el warehouse. Sin embargo, el problema
es que metadata tiene varias funciones dentro del warehouse que relaciona a los procesos asociados
con la trasformación y carga de la información, la administración y generación de consultas del DWH. La
metadata asociada con la transformación y carga de datos debe describir los datos origen y cualquier
cambio que fuera hecho en la información.
Sincronización de metadata
El mayor tema de integración es como sincronizar varios tipos de metadata utilizados a través del DWH.
Las herramientas tan variadas de la generación del DWH y el uso de su propio metadata y para alcanzar
la integración se requiere que esas herramientas sean capaces de compartir la metadata. El desafío es
sincronizar metadata entre diferentes productos de diferentes vendedores utilizando almacenes de
metadata diferente. Por ejemplo si es necesario identificar el item correcto al nivel adecuado de detalle
en otro producto y mapearlo a un item apropiado en el nivel adecuado de otro producto y entonces
resolver cualquier diferencia en el código entre ellos. Esto se repetirá para toda la metadata que tengan
mas de dos productos en común. Además, cualquier cambio a la metadata (inclusive metadata) de un
producto necesita ser transmitido al otro producto. La tarea de sincronización de dos productos es
altamente compleja y por lo tanto repetir continuamente este proceso para todos los productos que
conforman el DWH puede utilizar muchos recursos. Sin embargo se tiene que realizar la integración del
warehouse.
Un data warehouse requiere herramientas para soportar la administración y manipulación de tan
complejo medio ambiente. Estas herramientas son capaces de soportar las siguientes tareas:
Kimball’s Business Proyectos a escala reducida Como los data marts pueden
Dimensional significa que es mas valioso desarrollarse potencialmente en
Lifecycle demostrar valor dentro del secuencia por diferentes equipos
periodo de tiempo permitido de desarrollo utilizando diferentes
o presupuestado sistemas, la tarea principal de
proporcionar una vista consistente
y exhaustiva de la información
corporativa puede no ser alcanzada
nunca
Modelado de dimensionalidad una técnica de diseño lógico que tiene como objetivo presentar la
información de manera estándar, intuitiva que proporciona el acceso de alto desempeño.
Cada modelo dimensional (DM) esta compuesto de una tabla con una llave primaria compuesta,
llamada la tabla fact y un conjunto de tablas mas pequeñas llamadas tablas de dimensión. Cada tabla
de dimensión tiene una simple (no compuesta) llave primaria que corresponde exactamente a uno de
los componentes de la llave compuesta en la tabla fact. En otras palabras la llave primaria de la tabla
fact esta hecha hasta de dos o mas llaves externas. Esta característica en forma de “estrella” es llamado
el esquema estrella o star join.
Esquema estrella Un modelo de datos dimensional que tiene una tabla fact en el centro rodeada por
tablas “desnormalizadas” de dimensión.
El esquema estrella explota las características de las tablas factual tales como estar generadas por
eventos que ocurrieron en el pasado, y que no son muy comúnmente actualizadas, sin embargo tienen
que ser analizadas. Como la mayor parte de los datos en el warehouse esta representada como facts, las
tablas fact pueden ser extremadamente grandes relativamente comparadas con las tablas dimensión.
Como tal es importante tratar la información fact como de solo lectura lo cual no la cambiará a lo largo
del tiempo. Las tablas fact mas útiles contienen una o mas medidas numéricas o “facts” que ocurren
para cada registro. En la figura de la siguiente pagina las facts son offerPrice, sellingPrice,
saleCommission y saleRevenue. Las facts mas útiles en la tabla fact son numéricas y additive, puesto
que las aplicaciones warehouse casi nunca accesan a un solo registro, al contrario accesan a cientos,
miles o inclusive millones de registros a la vez y la cosa mas importante que hacer es la mayor parte de
registros agregarlos (aggregate).
Las tablas de dimensión generalmente por el contrario, generalmente contienen información descriptiva
textual. Los atributos de las dimensiones son utilizadas como restricciones en los queries del data
warehouse. Por ejemplo el esquema estrella mostrado puede soportar queries que requieren acceso a
ventas de propiedades en Glasgow usando el atributo city de la tabla PropertyForSale.
Dimension Tables
Dimension Tables Property/ForSale
Time
----------------------------
----------------------------
propertyID(FK)
timeID (FK)
proportyNo
day
type
week
street
month
city
year
postcode
Fact Table region
country
Property Sale
--------------------------------
Branch timeID (FK)
---------------------------- propertyID(FK) ClientBuyer
branchID(FK) branchID(FK) ----------------------------
branchNo clientID(FK) clientID(FK)
branchType PromotionID(FK) clientNo
city staffID(FK) clientName
region ownerID(FK) clientType
country otherPrice city
sellingPrice region
saleCommission country
saleRevenue
Promotion
---------------------------- Staff
promotionID(FK) Owner ----------------------------
promotionNo ---------------------------- staffID(FK)
promotionName ownerID(FK) staffNo
promotionType ownerNo staffName
ownerName position
ownerType sex
city city
region region
Star schema (dimensional model) country country
Snowflake schema. un modelo dimensional de datos que tiene una tabla fact en el centro, rodeada de
tablas de dimensión normalizada. Esta es una variación del esquema estrella llamado snowflake schema
el cual proporciona que las dimensiones tengan otras dimensiones. Por ejemplo podemos normalizar la
información de la localidad (atributos de city, región y país) en la tabla de dimensión Branch para crear
dos nuevas tablas de dimensión llamadas City y Region, esto se muestra en la siguiente figura
Fact Table
Dimension Tables Property Sale
--------------------------------
Branch timeID (FK)
---------------------------- propertyID(FK)
branchID(FK) branchID(FK)
branchNo clientID(FK)
branchType PromotionID(FK)
city (FK) staffID(FK)
ownerID(FK)
otherPrice
sellingPrice
saleCommission
City saleRevenue
----------------------------
city (FK)
region(FK)
Region
----------------------------
region(PK)
country
Parte del Star schema (dimensional model) con la versión normalizada de la tabla Branch
Starflake schema. un modelo dimensional de datos que tiene una tabla fact en el centro, rodeada de
tablas de dimensión normalizadas y desnormalizadas.
Algunos modelos dimensionales usan una combinación de esquemas estrella desnormalizados y
snowflake normalizado. Esta combinación de esquemas estrella y snowflake es llamado esquema
starflake. Algunas dimensiones pueden representarse en ambas formas para abastecer requerimientos
para distintos tipos de queries. Cuando el esquema es star, snowflake o starflake las formas predecibles
y estándar de los modelos dimensionales ofrecen ventajas importantes dentro del medio ambiente del
data warehouse incluyendo:
Eficiencia. La consistencia de estructura de base de datos subyacente permite un acceso mas eficiente a
la información por varias herramientas incluyendo report writers y query tools.
Habilidad para manejar requerimientos cambiantes. El modelo dimensional puede adaptarse a los
cambios en los requerimientos de los usuarios, como todas las dimensiones son equivalentes en
términos de proporcionar acceso a la tabla fact. Esto significa que el diseño es mejor capaz de soportar
consultas de usuarios personalizadas.
Extensibilidad. El modelo dimensional es extensible, por ejemplo cambios típicos soportados por el
modelo deben incluir: a) agregar nuevos facts, tanto como sean consistentes con la granularidad
fundamental de la tabla fact existente; b) agregar nuevas dimensiones, tantas como sean valores
simples de una dimensión definida por cada registro fact existente; c) agregar nuevos atributos de
dimensión y d) detallar los registros existentes de dimensión en un menor nivel de granularidad de
cierto punto en el tiempo en adelante.
Habilidad de modelar situaciones de negocio comunes. Hay una gran crecimiento de la cantidad de
enfoques para manejar situaciones en el modelado común en el mundo de los negocios. Cada una de
estas situaciones tienen un conjunto de alternativas bien conocidas que pueden ser programados
específicamente en report writers, query tools y otras interfaces de usuario; por ejemplo, dimensiones
de cambio lento son dimensiones constantes como Branch o Staff.
Procesamiento de queries predictivo. Aplicaciones de Data warehouse que realizan drill down
simplemente agregan mas atributos de dimensión en un solo modelo dimensional.
ROLLUP crea subtotales que se enrollan desde el nivel mas detallado hacia un gran total, siguiendo la
lista de columnas especificadas en la clausula ROLLUP. El ROLLUP primero calcula los valores estándares
del aggregate especificado en la clausula GROUP BY entonces crea subtotales progresivos llegando hasta
el gran total.
ROLLUP crea subtotales por nivel n+1, donde n es el numero de columnas agrupadas. Por ejemplo si el
query especifica un conjunto de columnas agrupado por ROLLUP de propertyType, yearMonth y city
(n=3), el resultado es el conjunto que incluirá renglones en 4 niveles de aggregation.
Ejemplo:
Muestre los totales de ventas de casas y pisos por sucursal localizadas en Aberdeen, Edinburgh, o
Glasgow, para los meses de septiembre y octubre del 2008
En términos de análisis multidimensional CUBE genera todos los subtotales que pueden ser calculados
por el cubo de datos con las dimensiones especificas. Por ejemplo si el cubo especifico
CUBE(propertyType, yearMonth, city), el resultado serán todos los valores incluidos en la sentencia
ROLLUP mas combinaciones adicionales. Para el ejemplo anterior los totales para city para tipos de
propiedad combinados no son calculados por la clausula ROLLUP(propertyType, yearMonth, city), pero
son calculados para CUBE(propertyType, yearMonth, city). Si n columnas están especificadas por un
CUBE serán 2n combinaciones de los subtotales.
Cuando utilizar CUBE. CUBE puede ser utilizado en cualquier situación que requiera utilizar reportes
tabulares cruzados estos se pueden generar con un sola sentencia SELECT utilizando CUBE. Como
ROLLUP, CUBE puede ser útil en la generación de tablas sumarizadas.
CUBE es típicamente mas utilizado en queries que usan columnas de múltiples dimensiones en lugar de
columnas representando diferentes niveles en una sola dimensión. Por ejemplo un reporte requerido
tabulador cruzado común puede necesitar subtotales para todas las combinaciones de propertyType,
yearMonth y city. Estas son tres dimensiones independientes y el análisis de todas las posibles
combinaciones de subtotales es trivial. En contraste un tabulador cruzado que muestre todas las
combinaciones posibles del year,Month y day podrían tener bastantes valores de interés limitado,
puesto que hay una jerarquía natural en la dimensión de tiempo (time).
Muestre todas los subtotales posibles para ventas de propiedades por sucursal (branch) en Aberdeen,
Edinburgh y Glasgow para los meses de agosto y septiembre del 2008
Los renglones mostrados en negritas son comunes a los resultados producidas por ambas funciones
ROLLUP y CUBE. Sin embargo la clausula CUBE(propertyType, yearMonth, city), donde n = 3 produce 23
= 8 niveles de aggregation.
propertyType yearMonth city sales
flat 2008-08 Aberdeen 115432
flat 2008-08 Edinburgh 236673
flat 2008-08 Glasgow 7664
flat 2008-08 359669
flat 2008-09 Aberdeen 123780
flat 2008-09 Edinburgh 233100
flat 2008-09 Glasgow 8755
flat 2008-09 455635
flat Aberdeen 239212
flat Edinburgh 559673
flat Glasgow 16419
flat 815304
house 2008-08 Aberdeen 77987
house 2008-08 Edinburgh 135670
house 2008-08 Glasgow 4765
house 2008-08 218422
house 2008-09 Aberdeen 76321
house 2008-09 Edinburgh 166503
house 2008-09 Glasgow 4889
house 2008-09 247713
propertyType yearMonth city sales
house Aberdeen 154308
house Edinburgh 302173
house Glasgow 9654
house 466135
2008-08 Aberdeen 193419
2008-08 Edinburgh 372243
2008-08 Glasgow 12429
2008-08 578091
2008-09 Aberdeen 200101
2008-09 Edinburgh 489603
2008-09 Glasgow 13644
703348
Aberdeen 393520
Edinburgh 861846
Glasgow 26073
Grand Total 1281439
Operaciones elementales OLAP
Las operaciones elementales OLAP del paquete OLAP del SQL estándar soportan una variedad de
operaciones tales como clasificación y calculo de ventanas. Funciones de rango incluyen distribuciones
cumulativas, rango de porcentaje, y N-tiles. Ventanas proporcionan los cálculos de aggregations
acumulados y en movimiento usando funciones tales como SUM, AVG, MIN y COUNT.
Funciones de clasificación
Una función de clasificación calcula el rango de un registro comparado con otros registros en el conjunto
de datos basados en los valores del conjunto de medidas. Hay varios tipos de funciones de clasificación,
incluyendo RANK y DENSE_RANK. La sintaxis para cada función de clasificación es como sigue:
La diferencia entre RANK y DENSE_RANK es que DENSE_RANK no deja ningún hueco en la clasificación
secuencial cuando hay ligas para la clasificación. Por ejemplo, si tres sucursales ligan para un segundo
lugar en términos de las ventas totales de propiedades, DENSE_RANK identifica todas las tres en
segundo lugar con la siguiente sucursal en tercer lugar. La función RANK también identifica tres
sucursales en segundo lugar, pero la siguiente sucursal esta en quinto lugar.
Ejemplo:
Clasifique las ventas totales de propiedades por sucursal en Edinburgh
Primero calculamos las ventas totales para las propiedades en cada sucursal en Edinburgh y entonces se
clasifican los resultados. Este query accesa las tablas Branch y PropertySale.
SELECT branchNo, SUM(saleAmount) AS sales
RANK() OVER (ORDER BY SUM(salesamount)) DESC AS ranking,
DENSE_RANK() OVER (ORDER BY SUM(salesamount)) DESC AS dense_ranking
FROM Branch, PropertyForSale
WHERE Branch.branchNo = PropertySale.branchNo
AND Branch.city = ‘Edinburgh’
GROUP BY (BranchNo)
Por ejemplo
Muestre las cifras mensuales y los promedios móviles y sumas de tres meses para la venta de
propiedades en la sucursal B003 para los primeros seis meses del 2008
Note que los primeros dos renglones para los cálculos de las columnas 3-month moving average y sum
en la tabla de resultado están basados en un tamaño de intervalo menor que el especificado puesto que
la ventana de calculo no puede accesar la información de antes del 2008-01. Esto es por lo tanto,
necesario considerar los diferentes tamaños de la ventana encontrados en los bordes del resultado
dependiendo el query proporcionado. En otras palabras se tiene que modificar el query para lograr los
resultados requeridos.
Oracle SQL analytical functions
Type USED FOR
Ranking Calculating ranks, percentiles and N-tiles of the values in a result set
Windowing Calculating cumulative and moving aggregates. Works with these
functions: SUM, AVG, MIN, MAX, COUNT, VARIANCE, STDDEV,
FIRST_VALUE, LAST_ VALUE and new statistical functions.
Reporting Calculating shares, for example market share. Works with these
functions: SUM, AVG, MIN, MAX, COUNT (with/without DISTINCT),
VARIANCE, STDDEV, RATIO_TO_REPORT and new statistical functions.
LAG/LED Finding a value in a row specified number of rows from a current row
Linear Calculating linear regression and other statistics (slope, intercept and so
Regression on)
Inverse The value in a data set that corresponds to a specified percentile
Percentile
Hypothetical The rank or percentile that a row would have if inserted into a specified
Rank and data set.
Distribution
Procesamiento de objetos del modelo multidimensional
El procesamiento es el paso, o serie de pasos, en los que Analysis Services carga
datos de un origen de datos relacional en un modelo multidimensional. Para los
objetos que utilizan el almacenamiento MOLAP, los datos se guardan en el disco en la
carpeta de archivos de base de datos. Para el almacenamiento ROLAP, el
procesamiento se produce a petición, en respuesta a una consulta MDX en un objeto.
Para los objetos que utilizan el almacenamiento ROLAP, el procesamiento hace
referencia a la actualización de la memoria caché antes de devolver los resultados de
la consulta.
De forma predeterminada, el procesamiento aparece cuando se implementa una
solución al servidor. También puede procesar toda o parte de una solución, ya sea de
modo ad hoc mediante herramientas como Management Studio o SQL Server Data
Tools, o según una programación utilizando Integration Services y el Agente SQL
Server. Al realizar un cambio estructural en el modelo, como quitar una dimensión o
cambiar el nivel de compatibilidad, deberá procesarse de nuevo para sincronizar los
aspectos físicos y lógicos del modelo.
Procesamiento y modos de almacenamiento de particiones SQL Server 2014
Una partición puede utilizar uno de estos tres modos de almacenamiento básicos:
Ventajas Desventajas
Debilidades
Representación pobre de entidades “del mundo real”
Semántica sobrecarga
Soporte pobre para integridad y constraints empresariales
Estructura de datos homogénea
Operaciones limitadas
Difícil manejo de consultas recursivas
Falta de concordancia
Otros problemas con RDBMS asociados con concurrencia,
cambios en el esquema, y acceso navegacional pobre
DEBILIDADES DE LAS RDBMS
Semántica sobrecargada
Cuando se tiene una relación muchos a muchos se tienen que
crear tres relaciones para poder soportarla. No hay un
mecanismo para distinguir entre entidades y relaciones o para
distinguir diferentes tipos de relaciones que existen entre las
entidades.
DEBILIDADES DE LAS RDBMS
Operaciones limitadas
El modelo relacional solo tiene un conjunto fijo de
operaciones tales como conjuntos y operaciones
relacionadas con tuplas, operaciones que son
proporcionadas en la especificación SQL. Sin embargo
SQL no permite nuevas operaciones a especificar. Otra
vez es muy restrictivo el comportamiento de este modelo
para muchos objetos del mundo real.
SELECT managerStaffNo
FROM Staff
WHERE staffNo = “S005”
UNION
SELECT managerStaffNo
FROM Staff
WHERE staffNo =
(SELECT managerStaffNo
FROM Staff
WHERE staffNo = “S005”)
DEBILIDADES DE LAS RDBMS
Falta de concordancia
El SQL-92 tiene una falta de computational completeness. Esto
es cierto con la mayoría de los DMLs y DDLs para RDBMS. Para
superar este problema y mejorar flexibilidad adicional, el
estándar SQL proporciona SQL integrado para ayudar al
desarrollo complejo de aplicaciones. Sin embargo este
enfoque produce falta de concordancia pues estamos
mezclando paradigmas diferentes:
• SQL es un lenguaje declarativo que maneja renglones de
información, mientras lenguajes tales como C es un lenguaje
procedural que puede manejar solo un renglón de datos a la
vez.
• SQL y 3GL usan diferentes modelos para representar datos.
DEBILIDADES DE LAS RDBMS
Otros problemas con RDBMS
• Las transacciones en procesamiento de negocios son
generalmente de vida corta y las primitivas de control de
concurrencia y protocolos tales como two-phase locking no
son particularmente adecuados para transacciones de larga
duración.
• Los cambios en el esquema son difíciles. Los administradores
de bases de datos deben intervenir para cambiar las
estructuras de las bases de datos y típicamente a los
programas que accesan estas estructuras. Estos son procesos
lentos e incomodos aun con las tecnologías actuales.
• RDBMS fueron diseñados basados en contenido para utilizar
acceso asociativo (esto es enunciados declarativos con
selección basados en uno o mas predicados) y son pobres
para acceso navegacional (acceso basado en movimientos
entre registros individuales)
MODELO ORIENTADO A OBJETOS
En respuesta al incremento de la complejidad de aplicaciones
de bases de datos surgieron dos modelos nuevos: el Object-
Oriented Data Model (OODM) y el Object-Relational Data
Model (ORDM), previamente definido como un Extended
Relational Data Model (ERDM). Sin embargo, a diferencia de
otros modelos la composición actual de estos modelos no esta
muy clara. La evolución representa la tercera generación de
DBMS y se ilustra en la siguiente figura.
Hay un debate entre los que proponen OODM y los que
defienden el modelo relacional, la cual se asemeja al debate
de redes/relacional de los 70s. Ambos lados están de acuerdo
en que RDBMS tradicionales son inadecuadas para cierto tipo
de aplicaciones. Sin embargo, los dos lados difieren en la mejor
solución. Los que proponen OODM reclaman que RDBMS son
satisfactorias para aplicaciones de negocio estándar, pero le
falta la capacidad de soportar mas aplicaciones complejas.
Los que defienden el modelo relacional reclaman que la
tecnología relacional es una parte necesaria de cualquier
DMBS real y que las aplicaciones complejas pueden ser
manejadas por extensiones del modelo relacional.
MODELO ORIENTADO A OBJETOS
Hierarchical
Data Model Historia de los Data Models
Network Data
Model
Relational
Data
Model
ER Data Model
Semantic
Data
Model
Object-Relational Object-oriented
Data Model Data Model
MODELO ORIENTADO A OBJETOS
En la actualidad el modelo de DBMS objeto-relacional es el sistema
dominante y el modelo de DBMS orientado a objetos tiene su
propio nicho de mercado.
• Un modelo de datos
• Persistencia de la información
• Compartir información
• Confiabilidad
• Escalabilidad
• Seguridad e integridad
• Distribución
PERSISTENCIA EN OODBMS
Memoria principal o
virtual
Transformación y
validación de tipo
SQL
Almacenamiento
secundario
FIGURA 2. MODELO DE ALMACENAMIENTO DE UN SOLO NIVEL
Memoria principal o
virtual
Almacenamiento
secundario
PERSISTENCIA EN OODBMS
No swizzling
La implementación mas fácil de faulting objects dentro y
fuera de memoria es no hacer ningún swizzling. En este
caso, los objetos son faulted dentro de la memoria por el
administrador de objetos adyacente y un handle es
pasado de regreso a la aplicación que contiene los OIDs
de los objetos. El OID es utilizado cada vez que el objeto
es accesado. Este requiere que el sistema mantenga
algún tipo de la tabla de búsqueda así que el apuntador
en memoria virtual del objeto puede ser localizado y
entonces utilizado para accesar al objeto. Como la
búsqueda es requerida para cada acceso de objetos,
este enfoque puede ser ineficiente en el caso de que
algún objeto sea accesado repetidas veces.
PERSISTENCIA EN OODBMS
Si hay una extensión de clase para una clase dada, siempre que se
crea un objeto de la clase ese objeto se inserta en la extensión de
la clase de manera automática; y siempre que se borra un objeto,
este se elimina de la extensión de la clase. Las extensiones de
clases permiten que las clases se traten como relaciones en el
sentido de que es posible examinar todos los objetos de una clase,
igual que se pueden examinar todas las tuplas de una relación.
La mayor parte de OODBMS soportan las tres maneras de acceso
a los objetos persistentes. Dan identificadores a todos los objetos.
Generalmente solo dan nombre a las extensiones de las clases y a
otros objetos del tipo conjunto y, quizás, a otros objetos
seleccionados, pero no a la mayor parte de los objetos. Las
extensiones de las clases suelen conservarse para todas las clases
que puedan tener objetos persistentes pero, en muchas de las
implementaciones, las extensiones de las clases solo contienen los
objetos persistentes de cada clase.
TIPOS DE DATOS COMPLEJOS
Las aplicaciones de bases de datos tradicionales consisten en
tareas de procesamiento de datos, tales como aplicaciones
bancarias y gestión de nominas. Dichas aplicaciones presentan
conceptualmente tipos de datos simples. Los elementos básicos
son registros bastante pequeños y cuyos campos son atómicos, es
decir no contienen estructuras de datos adicionales.
En los últimos años, ha crecido la demanda de formas de abordar
tipos de datos mas complejos. Considérese, por ejemplo, las
direcciones. Mientras que una dirección completa se puede
considerar como un elemento de datos atómico del tipo cadena
de caracteres, esa forma de verlo esconde detalles como la calle,
población, estado y código postal, que pueden ser interesantes
para la consulta. Por otra parte si una dirección se representa
dividiéndola en sus componentes (calle, población, estado,
código postal) la escritura de las consultas será mas complicada,
pues tendrían que mencionar cada campo. Una alternativa mejor
es permitir tipos de datos estructurados, que admiten el tipo
dirección con las subpartes calle, población, estado y codigo
postal.
TIPOS DE DATOS COMPLEJOS
• Titulo de libro
• Lista de autores
• Editor
• Conjunto de palabras clave
TIPOS DE DATOS COMPLEJOS
Es evidente que, si se define una relación para esta
información varios dominios no son atómicos.
• Autores. Cada libro puede tener una lista de autores, que
se pueden representar como array. Pese a todo, puede
que se desee averiguar todos los libros de los que es autor
“Santos”. Por lo tanto, lo que interesa es una subparte del
elemento del dominio “autores”.
• Palabras clave. Si se almacena un conjunto de palabras
clave incluyan uno o mas términos dados. Por tanto se
considera el dominio del conjunto de palabras clave como
no atómico.
• Editor. A diferencia de palabras clave y autores, editor no
tiene un dominio que se evalué en forma de conjunto. No
obstante, se puede considerar que editor consta de los
subcampos nombre y sucursal. Este punto de vista hace
que el dominio de editor no sea atómico.
TIPOS DE DATOS COMPLEJOS
(nombre. sucursal)
Tipos estructurados
Los tipos estructurados permiten representar directamente los
atributos compuestos de los diagramas E-R. Por ejemplo, se puede
definir el siguiente tipo estructurado para representar el atributo
compuesto nombre con los atributos componentes nombredepila
y apellidos:
Herencia de Tablas
Las subtablas de SQL se corresponden con el concepto de
especialización/generalización de E-R. Por ejemplo, supóngase
que se define la tabla personas de la manera siguiente:
Los tipos de las subtablas deben ser subtipos del tipo de la tabla
padre. Por tanto, todos los atributos presentes en personas también
están presentes en las subtablas.
Además, cuando se declaran estudiantes y profesores como
subtablas de personas, todas las tuplas presentes en estudiantes o
profesores pasan a estar también presentes de manera implícita en
personas. Por lo tanto, si una consulta usa la tabla personas, no solo
encuentra tuplas directamente insertadas en esta tabla, sino también
tuplas insertadas en sus subtablas, es decir, estudiantes y profesores.
No obstante, esa consulta solo puede tener acceso a los atributos que
están presentes en personas.
HERENCIA DE TABLAS
(nombre. sucursal)
SELECT titulo,
ARRAY(SELECT autores FROM autores AS A WHERE A.titulo=L.titulo
ORDER BY a.posicion) AS array_autores,
Editor(nombre_editor, sucursal_editor) AS Editor
MULTISET(SELECT palabra_clave FROM palabras_clave AS P
WHERE P.titulo=L.titulo) AS conjunto_palabras_clave
FROM libros_plana AS L
GROUP BY titulo, editor
FIGURA 6. UNA VERSIÓN PARCIALMENTE ANIDADA DE LA
RELACIÓN LIBROS_PLANA
persona
Calificacio
sueldo E n_crediticia
S
empleado cliente
E
S
¿QUE ES JDBC?
"Es el acrónimo de Java Database Connectivity: Es una interfaz de programación
que permite la ejecución de operaciones sobre la Base de datos desde el
lenguaje de programación JAVA independientemente del sistema operativo
donde se ejecute o de la base de datos a la cual se accede utilizando el
dialecto SQL del modelo de la base de datos que se utilice".
"JDBC Es también una alternativa a ODBC.
JDBC la interfaz es más cómoda a los programadores Java que ODBC de interfaz
de lenguaje C".
"JDBC sirve para conectarse a una base de datos, y para cada base de datos
hay un driver JDBC diferente. Si la base de datos es remota, y el driver permite
conectar a una base de datos remota, por supuesto que se puede acceder a la
base de datos a través de Internet o de cualquier red, teniendo en cuenta
siempre firewall, proxy, etc., que pueden cerrarnos los puertos de conexión".
BIBLIOGRAFIA
1. Conectarse a sqlplus
C:\Users\root>sqlplus “/ as sysdba”
SQL*Plus: Release 11.2.0.1.0 Production on Mar Ago 25 23:04:02 2015
C:\Users\root>sqlplus / as sysdba
SQL> startup
Instancia ORACLE iniciada.
Tabla borrada.
Tabla creada.
1 fila creada.
SQL> ed
Escrito file afiedt.buf
1 fila creada.
1 fila creada.
1 fila creada.
1 fila creada.
1 fila creada.
6 filas seleccionadas.
4300
12 filas seleccionadas.
SQL> ed
Escrito file afiedt.buf
27 filas seleccionadas.
SQL> ed
Escrito file afiedt.buf
Utilizar DENSE RANK
Table1
C:\Users\root>sqlldr
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights
reserved.