Sunteți pe pagina 1din 69

DEPOZITE DE DATE CONCEPTE AVANSATE

Extragerea cunostintelor din baze de date

Obiective / Continut
Tabele partitionate si tehnici de partitionare Operatii cu partitii Indexi: normali, bitmap, B-Tree

Constrangeri de integritate View-uri materializate:


Tipuri de view-uri Creare Operatii Dimensiuni: definitii si operatii
Extragerea cunostintelor din baze de date

Data Warehouse
Data warehouse este o colectie de date orientata pe subiect, integrate, nevolatile, necesara pentru suportul deciziilor in conducere
A Data Warehouse is a subject oriented, integrated, nonvolatile, and time variant collection of data in support of managements decisions.

Sursa: Building the Data Warehouse, 2nd Edition, W.H.Immon, Wiley, 1996, p.33.

Extragerea cunostintelor din baze de date

Trasaturi Data Warehouse

Subject oriented Integrated data Time-variant data (past, present, future)


Nonvolatile data

Data granularity
Extragerea cunostintelor din baze de date

Arhitectura D.W.

Extragerea cunostintelor din baze de date

Scheme D.W.
O schema este o colectie de obiecte ale bazei de date: tabele, indexi, view-uri, sinonime etc. D.W. folosesc scheme dimensionale. Tipuri de scheme:
Scheme relationale in a 3 a forma normala (3NF)
Scheme stea (star schema) centrul consta in una sau mai multe tabele fact, iar colturile sunt tabelele dimensiune. Scheme snowflake schema stea cu normalizarea dimensiunilor intr-o structura arborescenta.

Extragerea cunostintelor din baze de date

Schema D.W. - star

Extragerea cunostintelor din baze de date

Obiecte D.W.
Tabele de fapte (fact tables):

Contin 2 tipuri de coloane: numerice si chei straine spre tabelele de dimensiuni Contin valori detaliate sau valori care au fost agregate
O tabela contine de obicei valori cu acelasi nivel de agregare Cheia primara este una compusa din toate cheile straine spre tabelele dimensiune Tabele de dimensiuni (dimension tables): Structura compusa din mai multe ierarhii care clasifica datele Atributele dimensionale sunt descriptive, de tip text

Datele dimensionale sunt colectate la cel mai detaliat nivel, iar apoi agregate in nivele mai generale, numite si ierarhii.

Extragerea cunostintelor din baze de date

Obiecte D.W.
Ierarhie:

Structura ordonata ce foloseste nivelele pentru organizarea datelor


Poate fi folosita pentru definirea datelor agregate Exemplu: dimensiunea Time cu nivelele day, week, month, quarter, year. Se proiecteaza tinand cont de relatiile din domeniul de implementat. Nivel: O pozitie intr-o ierarhie

Variaza de la detali pana la general (radacina = nivelul cel mai general) Identificatori unici si relatii
Garanteaza integritatea datelor

Implementati prin constrangeri de cheie primara si straina


Extragerea cunostintelor din baze de date

Obiecte D.W.

Extragerea cunostintelor din baze de date

Proiectare fizica D.W.

Extragerea cunostintelor din baze de date

Structuri fizice tabele partitionate


Tabela:
Unitatea de baza pentru stocarea datelor

Tabela partitionata:
Permite stocarea eficienta a volume mari de date prin descompunerea lor in cantitati mai mici, gestionabile Accesul la o tabela partitionata este optimizat

Metode de partitionare:
Pe intervale (range) pe baza unor valori cheie stabilite (ex: vanzari pe luna); Hash pe baza unui algoritm de hashing pentru o cheie

Lista pe baza unei liste discrete de valori


Compusa interval, lista sau hash Extragerea cunostintelor din baze de date

Alte structuri fizice


View:

Definitia interogarilor stocata in baza de date


Constrangeri de integritate: Chei primare, chei straine, NOT NULL, check Indexi simpli si partitionati: Structuri asociate tabelelor

Tipuri: Bitmap, B-Tree, locali sau globali


View materializat:

Rezultatele interogarilor stocate in avans, ce contin agregari si calcule, in vederea optimizarii accesului la date Seamana cu tabelele partitionate si se comporta ca indexii
Dimensiune: Obiect ce defineste o relatie ierarhica intre coloane Extragerea cunostintelor din baze de date

Partitionare
Procesul de impartire a datelor intr-o tabela astfel incat sa se imbunatateasca substantial procesul de acces la date (pentru volume mari = sute de mii, milioane de inregistrari).

Indexarea si partitionarea sunt cele doua tehnici care reduc substantial timpii de lucru cu volume foarte mari de date.
Partitionarea imbunatateste mecanismele de gestiune a bazei de date:
Adaugare de partitii Organizarea unei partitii Mutarea unei partitii Stergerea unei partitii

Partitionarea unei partitii


Extragerea cunostintelor din baze de date

Tipuri de partitionare.
Partitionarea pe intervale (range partitioning)
Partitionarea hash (hash partitioning) Partitionarea dupa liste de valori (list partitioning)

Partitionarea combinata (composite partitioning)

Extragerea cunostintelor din baze de date

Partitionarea pe intervale
Cea mai folosita metoda de partitionare. Datele se impart in partitii in functie de valorile intervalelor definite. Inregistrarile se stocheaza in partitii in functie de valorile unor coloane. Optiunile de partitionare sunt: PARTITION BY RANGE (col_list) si VALUES LESS THAN (val_list): Col_list: lista ordonata de coloane care determina partitia in care intra o linie sau un index (coloane de partitionare) Val_list: lista de valori care determina partitionare (chei de partitionare)

Extragerea cunostintelor din baze de date

Partitionarea pe intervale
Cel mai folosit tip de partitionare este pe date calendaristice.

Exemplu: partitionarea tabelei de vanzari pe luni calendaristice.

Extragerea cunostintelor din baze de date

Partitionarea pe intervale
Recomandari de folosire a partitionarii pe intervale:

Pentru partitionarea datelor istorice Pentru tabele foarte mari scanate dupa o coloana de tip data calendaristica (ex: ORDER_DATE) Cand trebuie mentinuta o fereastra mobila de date Cand trebuie gestionate volume de date grupate pe date calendaristice (adaugare, stergere, mutare, actualizare)
Extragerea cunostintelor din baze de date

Partitionarea hash
Imparte datele in grupuri pe baza unui algoritm de hashing ce ia ca parametru o cheie. Algoritmul de hashing distribuie in mod echilibrat inregistrarile intre partitii, rezultand partitii de aceeasi marime.

Alternativa la partitionarea de tip range atunci cand nu exista date istorice sau o lista de coloane pentru clasificare.

Extragerea cunostintelor din baze de date

Partitionarea hash
Recomandari de folosire a partitionarii hash: Cand datele nu corespund unei vederi logice unitare sau istorice. Pentru imbunatatirea disponibilitatii datelor si prin usurarea gestionarii tabelelor foarte mari Permite instructiuni DML paralele

Permite distribuirea datelor echilibrata a datelor pe dispozitve fizice multiple astfel incat se optimizeaza accesul I/O

Extragerea cunostintelor din baze de date

Partitionarea lista
Imparte datele conform valorilor discrete a unor coloane specificate. Avantajul este ca se pot grupa in mod natural seturi de date neordonate si nerelationate.

Exemplu: partitionarea agentilor in functie de stat.

Extragerea cunostintelor din baze de date

Partitionarea compusa Combina partitioarea pe intervale si partitionarea hash / pe lista de valori Serverul distribuie intai datele in partitii conform valorilor intervalelor. Apoi, tipul pentru range-hash, se aplica algoritmul hash pentru a imparti datele echilibrat in subpartitiile fiecarei partitii. Pentru tipul range-list, datele se impart in subpartitii conform listei de valori alese. Indexarea poate mosteni tipul de partitionare al tabelei de baza.
Extragerea cunostintelor din baze de date

Partitionarea compusa Recomandari de folosire a partitionarii compuse range-hash:


Pentru a suporta date istorice la nivelul partitiei Pentru a suporta operatiile paralele la nivelul subpartitiilor Pentru a usura gestiunea subpartiilor

Cand partitiile trebuie sa aiba o logica istorica Cand continutul unei partitii poate fi distribuit pe mai multe tablespace-uri, dispozitive, noduri.

Extragerea cunostintelor din baze de date

Partitionarea compusa Exemplu partitionare compuse range-hash:


Tabela este partitionata dupa data vanzarii in 4 partitii, fiecare partitie fiind impartita in 8 subpartitii:

Extragerea cunostintelor din baze de date

Partitionarea compusa Exemplu partitionare compuse range-lista:


Tabela este partitionata dupa data (txn_date) in 4 partitii, fiecare partitie fiind impartita in 6 subpartitii dupa state:

Extragerea cunostintelor din baze de date

Partition Pruning
Reducerea partitiilor (partition pruning) este o tehnica de imbunatatirea performantelor interogarilor. Tehnica consta in eliminarea scanarii partitiilor nedorite la o interogare prin analizarea clauzelor FROM si WHERE. Astfel datele sunt extrase doar din partitiile necesare. Optiuni in clauza WHERE:

LIKE, =, IN-List - range partition IN-List list partition =, IN-List hash partition

Extragerea cunostintelor din baze de date

Partition Pruning
Exemplu de eliminarea partitiior pentru o interogare pe o tabela partitionata compus range-hash:

Serverul foloseste tehnice de eliminarea partitiilor astfel:

Partitionare range si acceseaza doar sal99q2 si sal99q3.


Partitionare hash si acceseaza doar subpartitiile din fiecare partitie care contin liniile cu s_productid=1200
Extragerea cunostintelor din baze de date

Adaugarea partitiilor
Adaugarea partitiilor la o tabela :

Partitionata range
Partitionata hash Partitionata lista Exemplu:

Extragerea cunostintelor din baze de date

Stergerea partitiilor
Stergerea partitiilor la o tabela :

ALTER TABLE DROP PARTITION


Stergerea subpartitiilor la o tabela: ALTER TABLE DROP SUBPARTITION

Exemplu:

Extragerea cunostintelor din baze de date

Schimbarea partitiilor
Conversii cu partitiile si subpartitiile:

O partitie intr-o tabela nepartitionata.


O tabela nepartitionata intr-o partitie. O tabela partitionata hash intr-o tabela partitionata range-hash si invers. O tabela partitionata lista intr-una partitionata rangelista si invers.

Extragerea cunostintelor din baze de date

Divizarea / combinarea partitiilor


Divizarea unei partitii in doua prin redistribuirea continutului (cand o partitie devine prea mare):

Combinarea a doua partitii in una singura, cele originale fiind sterse:

Extragerea cunostintelor din baze de date

Stergerea datelor partitiilor


Se pot sterge fizic datele dintr-o partitie prin:

ALTER TABLE TRUNCATE PARTITION


Exemplu:

Extragerea cunostintelor din baze de date

Indexi Structuri asociate tabelelor cu scopul de a imbunatati interogarile pe aceste tabele. Pentru o tabela se pot construi mai multi indexi dupa coloane sau combinatii de coloane diferite. Tipuri de indexi: Indexi simpli, unici, compusi, bazati pe functii Indexi B-Tree Indexi inversi Indexi bitmap
Extragerea cunostintelor din baze de date

Indexi
Nu afecteaza modul se scriere al interogarilor, doar viteza de executie a lor.Avand date indexate, indexul pointeaza direct spre locatia rindurilor ce contin valorile dorite.
Sunt independenti logic si fizic de datele din tabela asociata, necesitand spatiu de stocare propriu. Se pot sterge sau crea indexi fara a afecta datele din tabela, doar timpul de acces la ele.

Serverul gestioneaza automat indexii cand datele sunt create sau modificare. Performantele interogarilor raman optime chiar daca se adauga date noi in tabela.
Prezenta a numerosi indexi pe o tabela deterioreaza performanta operatiilor DML pe tabela
Extragerea cunostintelor din baze de date

Indexi
Indexii unici garanteaza ca nu exista 2 linii intr-o tabela care sa aiba aceleasi valori pentru coloana/coloanele cheie. Indexii neunici nu impun o asemenea restrictie.

Alternativ se pot defini constrangeri de integritate de tip UNIQUE pe coloanele dorite, iar acestea definesc cate un index unic.
Pentru a avea performante optime la interogare, se recomanda construirea manuala a indexilor unici.
Un index compus (concatenat) se creaza pe mai multe coloane din tabela.

Optimizeaza comenzile SELECT cu WHERE pe coloanele din index.


Cele mai accesate coloane trebuie definite primele in cadrul indexului. Extragerea cunostintelor din baze de date

Indexi
Indexi si chei: Indexi sunt obiecte ale b.d. gestionate separat. Cheile sunt concepte logice pentru implementarea constrangerilor de integritate, pentru mentinerea business rule. Valorile NULL in indexi sunt considerate distincte, cu exceptia cazului cand valorile ne-nule din 2 sau mai multe linii ale unui index sunt identice. Astfel, indexii UNIQUE previn ca liniile continand valori NULL sa fie tratate ca identice. Serverul nu indexeaza liniile unui tabel atunci cand toate coloanele cheie sunt NULL, cu exceptia unui index bitmap.

Extragerea cunostintelor din baze de date

Indexi - functie
Indexi bazati pe functii au la baza o expresie sau o functie care implica una sau mai multe coloane din tabela indexata.

Indexul calculeaza valoarea functiei sau expresiei si o stocheaza intern.


Functia utilizata poate fi: expresie aritmetica, expresie ce contine functii PL/SQL, functii impachetate, functii SQL.

Expresiile nu pot contine functii agregat si trebuie sa fie determinate.Nu se pot construi pe baza coloanelor LOB, REG, coloane nested. Indexi functie de tipul UPPER(col_name) / LOWER(col_name) faciliteaza cautarile case-insensitive: CREATE INDEX uppercase_idx ON employees (UPPER(first_name));
SELECT * FROM employees WHERE UPPER(first_name) = 'RICHARD'; Extragerea cunostintelor din baze de date

Stocarea indexilor
Cand se creaza un index, serverul aloca automat un segment de index in tablespace-ul de index pentru a stoca datele.

Tablespace-ul pentru index este fie cel predefinit pentru proprietar, fie cel numit in comanda CREATE INDEX. Acest tablespace poate fi unul diferit fata de cel al tabelei asociate.
Se recomanda ca tabela si indexul sa fie stocati in tablespace-uri diferite pentru obtinerea performantelor optime la interogarile de date.

Extragerea cunostintelor din baze de date

Stocarea indexilor
Cand se creaza un index, serverul extrage si sorteaza coloanele de indexare si stocheaza valoarea coloanei si rowid. Apoi serverul incarca indexul de la sfarsit spre inceput.

Exemplu:
CREATE INDEX employees_last_name ON employees(last_name);

Operatii facute de server in mod automat:


Sorteaza tabela Employees dupa coloana last_name. Incarca valorile ordonate de index impreuna cu rowid-ul corespunzator. Cand se foloseste o anumita valoare indexata, se face o cautare in lista ordonata, se extrage rowid-ul si se localizeaza inregistrarea pe baza acestei chei. Extragerea cunostintelor din baze de date

Structura interna indexi


Serverul Oracle foloseste structuri B-Tree pentru accesul optimizat la date. Fara indexare, cautarea unei valori intr-o lista de n linii parcurge un numar mediu de n/2 linii, valoarea critica daca n creste foarte mult. Daca aceeasi lista de n linii se stocheaza intr-un arbore de valori ordonate, atunci se parcurg log(n) linii, ceea ce imbunatateste timpul de cautare.

Exista doua tipuri blocuri:


Ramuri (branch blocks): date stocate pentru cautare, pointeaza catre frunze

Frunze (leaf blocks): stocheaza perechi de valori si rowid

Extragerea cunostintelor din baze de date

Structura interna indexi


Structura indexului B-Tree:

Extragerea cunostintelor din baze de date

Index B-Tree
Blocuri de tip ramura (branch blocks):

Stocheaza prefixul minim al cheii necesar pentru a lua o decizie intre 2 chei Pointeaza spre blocul frunza care contine cheia.

Blocuri de tip frunza (leaf blocks):

Contine valoarea completa a cheii de indexare pentru fiecare linie


Contine valoarea rowid pentru fiecare linie Fiecare pereche (valoare cheie, rowid) pointeaza spre vecinii din stanga si dreapta Sortarea este facuta dupa perechea (valoare cheie, rowid) Extragerea cunostintelor din baze de date

Index B-Tree
Avantajele folosirii structurii B-Tree:

Toate blocurile frunza sunt la aceeasi adancime, deci extragerea oricarei inregistrari va consuma acelasi timp. Indexii B-Tree sunt echilibrati automat
Toate blocurile din B-Tree sunt in medie pe 3 sferturi ocupate. Ofera performante bune pentru o paleta larga de inteorgari: egalitate de valori, interval de valori, cautare partiala. Operatiile DML sunt eficiente, mentinand si ordinea de indexare in B-Tree. Performantele indexilor B-Tree sunt bune atat pentru tabele mici cat si pentru tabele mari.

Extragerea cunostintelor din baze de date

Index Bitmap
Un index normal stocheaza, pe langa valoarea cheii si o lista de rowiduri pentru acea cheie, cu scopul de a localiza liniile corespunzatoare. La un index bitmap pentru fiecare cheie se stocheaza un harta de biti (bitmap) in loc de lista de rowid-uri. Fiecare bit din harta corespunde cu un posibil rowid. Daca bitul este setat atunci linia cu rowid-ul corespunzator contine valoarea cheie. O functie de mapare converteste pozitia bitului in rowid-ul liniei.

Daca numarul de valori de cheie diferite este mic, atunci spatiul de stocare este redus dramatic. Indexarea de tip bitmap combina indexii care corespund cu diverse conditii din clauza WHERE. Liniile care nu indeplinesc toate conditiile de filtrare sunt eliminate, castigandu-se timp de raspuns.
Extragerea cunostintelor din baze de date

Cardinalitate Index Bitmap


Avantajele folosirii indexului bitmap sunt mai mari pentru coloanele cu o cardinalitate mica: numarul de valori distincte este foarte mic in comparatie cu numarul total de linii din tabel.

Exemplu:
Daca un tabel cu un milion de linii are o coloana cu 10 mii de valori distincte posibile, atunci coloana este un candidat pentru index bitmap.

Indexii B-Tree sunt mai eficienti pentru coloanele cu o cardinalitate mare (nume_client, data vanzare etc)
Pot imbunatati performantele pentru interogari ad-hoc ce includ expresii avand coloane de cardinalitate redusa in clauza WHERE, conectate cu operatorii AND, OR. Daca numarul de linii intoarse este mic, atunci nu este necesara o scanare completa a tabelei. Extragerea cunostintelor din baze de date

Index Bitmap
Exemplu de Index Bitmap:

Cele 4 coloane au cardinalitate mica, deci se recomanda construirea unor indexi bitmap pentru aceste coloane.

Extragerea cunostintelor din baze de date

Index Bitmap
Exemplu de Index Bitmap:

Fiecare intrare in harta de biti corespunde unei linii din tabel.


De exemplu, pentru liniile cu Region=east, in harta au 1 pe coloana respectiva.

Extragerea cunostintelor din baze de date

Index Bitmap
Cati clienti casatoriti locuiesc in regiunile centrale sau de vest:
SELECT COUNT(*) FROM CUSTOMER WHERE MARITAL_STATUS = 'married' AND REGION IN ('central','west');

Indexi Bitmap include valorile NULL, spre deosebire de indexii B-Tree.

Extragerea cunostintelor din baze de date

Index Bitmap
Avantajele folosirii Indexilor Bitmap:

Reduce timpul de raspuns pentru o clasa larga de interogari ce folosesc coloane de cardinalitate redusa. Reduce spatiul de stocare comparativ cu alte tehnici de indexare.
Creste performantele chiar si pentru configuratii hardware slabe. Foarte eficient pentru operatii DML paralele sau pentru incarcari masive de date. Se pot crea indexi locali de tip bitmap pentru tabele partitionate. Se pot crea indexi bitmap pentru un join intre doua sau mai multe tabele (bitmap join index). Exemplu:
CREATE BITMAP INDEX sales_cust_gender_bjix ON sales(customers.cust_gender) FROM sales, customers WHERE sales.cust_id = customers.cust_id LOCAL;

Extragerea cunostintelor din baze de date

Constrangeri
Obiectivele folosirii constrangerilor intr-un depozit de date:
Datele sunt curate si consistente, prevenind posibilitatea de a introduce date incoerente (dirty data). Optimizarea interogarilor: mai ales pentru rescrierea interogarilor la viewurile materializate. Starea unei constrangeri:
Activata (Enabled): toate modificarile pe o tabela satisfac conditiile din constrangeri. Validata (Validate): toate datele din tabela satisfac constrangerile definite De incredere(Rely):se stie ca datele sunt valide si conform constragerilor; afecteaza doar constrangerile care nu au fost validate.

Extragerea cunostintelor din baze de date

Constrangeri
Tipuri de constrangeri intr-un depozit de date:
Chei de tip UNIQUE:
Pot introduce probleme de performanta la interogari si actualizari Se foloseste cu optiunile DISABLE VALIDATE pentru a preveni introducerea incoerentelor. Chei de tip FOREIGN KEY:

Valideaza o realatie intre o tabela Fact si una Dimension


Se foloseste cu optiunile ENABLE NOVALIDATE Constrangeri RELY: Nu verifica constrangerile Permite mecanisme precum rescrierea interogarilor

Extragerea cunostintelor din baze de date

View-uri materializate
Obiecte ale bazei de date folosite cu diverse scopuri:
depozitele de date: precalcularea functiilor agregat si a joinurilor costisitoare, cum ar fi suma vanzarilor; astfel se elimina overheadul asociat cu join-urilor costisitoare si cu aplicarea functiilor agregat;

datele distribuite: ofera o replica locala pentru datele stocate intr-o baza de date la distanta; sunt utile deasemenea pentru data mart-urile de la distanta;
calculul mobil: pentru stocarea unui subset de date pe un client mobil, care nu are acces permanent la baza de date centrala, cu operatii periodice de sincronizare cu serverul.
Extragerea cunostintelor din baze de date

View-uri materializate
Principalul scop al view-urilor materializate este e de a imbunatati timpul de acces la interogarile ce implica volume mari de date.

Exista mai multe tipuri de view-uri materializate in functie de modul de sincronizare cu datele din tabelele sursa.
Un avantaj deosebit al view-urilor materializate il reprezinta mecanismul Oracle de rescrierea interogarilor (query rewrite). Acest mecanism permite utilizatorilor sa lanseze interogari cu volume mari de date, iar serverul decide in mod transparent daca se folosesc tabelele fizice sau se folosesc view-urile materializate special create in baza de date
Extragerea cunostintelor din baze de date

Query rewrite

Serverul genereaza planurile de executie folosind tabelele sursa sau folosind view-urile materializate.
In functie de costuri, serverul alege metoda optima si o executa pentru intoarcerea rezultatelor.
Extragerea cunostintelor din baze de date

View-uri materializate
Tehnica de folosire a view-urilor: mecanisme de definire a view-urilor materializate
un mecanism de sincronizare prin care se asigura ca view-urile materializate contin ultimele date din tabelele sursa; folosirea mecanismului de rescriere a interogarilor, pentru alegerea optima a interogarilor de executat

Extragerea cunostintelor din baze de date

View materializat tip log


Sunt asociate cu tabelele sursa (master) si permit logarea schimbarilor in tabelele sursa, astfel incat sa se poate sincroniza datele cu alte view-uri matarializate. Sincronizare rapida (fast refresh):
Cand se fac operatii DML asupra tabelei master, aceste schimbari sunt stocate si in view-ul de tip log

Sincronizare completa (complete refresh).


Se executa subinterogarea care sta la baza unui view materializat

Extragerea cunostintelor din baze de date

View materializat de tip log

Extragerea cunostintelor din baze de date

View materializat
View-uri materializate sunt create in special pentru a imbunatati timpul de raspuns al interogarilor ce lucreaza pe volume mari de date.

Atunci cand se creaza un view materializat, serverul creaza urmatoarele obiecte: o tabela interna cu cel putin un index si un view.

Extragerea cunostintelor din baze de date

View materializat

Extragerea cunostintelor din baze de date

View materializat
Tipuri de view-uri materializate:

Join are la baza join intre 2 tabele Agregat contine functii agregat
Imbricate (nested) are la baza un alt view Pre-inregistrate are la baza un tabel cu aceeasi structura Gestiune: Modificare prin ALTER Stergere prin DROP

Extragerea cunostintelor din baze de date

View materializat
Activitati referitoare la view-uri materializate:

Identificarea tipurilor de view-uri necesare de creat intial


Indexare view-urilor materializate Verificarea faptului ca view-urile au fost sincronizate dupa fiecare modificare in baza de date Verificarea faptului ca view-urile au fost utilizate Analizarea performantelor

Analizarea spatiului ocupat de view-uri Determinarea a ce view-uri trebuie adaugate, sterse sau modificate Arhivarea view-urilor nefolositoare
Extragerea cunostintelor din baze de date

Dimensiuni
Obiect al bazei de date care clasifica datele cu scopul optimizarii interogarilor complexe: Care sunt vanzarile unui produs inainte si dupa o promotie ? Cum afecteaza o promotie diversele canale de distributie ? Exemple de dimensiuni: produse, clienti, promotii, canale, timp. Dimensiunile se bazeaza pe tabelele de tip dimensiune care sunt asociate unei tabele de fapte, prin intermediul constrangerilor straine, intr-o schema de tip stea. O tabela de tip dimensiune are o ierarhie de coloane, de la nivel general la detaliu. Operatiile specifice pentru generalizare si detaliere sunt rollup si drill down.

Extragerea cunostintelor din baze de date

Dimensiuni
Ierarhiile pentru tabelele: Time: zi,saptamana, luna, trimestru, an, toti anii; Product: produs, subcategorie, categorie, toate produsele; Customer: client, oras, stat, tara, subregiune, regiune.

Extragerea cunostintelor din baze de date

Dimensiuni
Crearea unei dimensiuni:

Extragerea cunostintelor din baze de date

Dimensiuni
Tabela de tip dimensiune trebuie sa existe inainte de a o crea. Fiecare nivel (level) din dimensiune trebuie sa corespunda unei coloane sau mai multe din tabelul corespondent: Nivelul Product ->Prod_id, Subcategory>Prod_subcategory Se definesc relatiile din ierarhie: Product child of Subcategory child of Category Se definesc relatiile 1:1 intre diverse atribute: ATTRIBUTE Category DETERMINES prod_category, prod_cat_desc)
Extragerea cunostintelor din baze de date

Dimensiuni
Cerinte pentru crearea dimensiunilor: Relatie 1:N intre parinte si copil Relatie 1:1 intre dimensiune si atributele dependente Constrangerile la nivel de tabela sunt respectate Daca se construieste o dimensiune pe baza de join atunci nu se poate face self-join.

Extragerea cunostintelor din baze de date

Ierarhii multiple

Extragerea cunostintelor din baze de date

Gestiune dimensiuni
Validare dimensiuni: DBMS_OLAP.VALIDATE_DIMENSION Modificarea dimensiunilor:
ALTER DIMENSION ALTER DIMENSION ALTER DIMENSION ALTER DIMENSION times.fiscal_year; times_dim DROP ATTRIBUTE fis_year; times_dim DROP HIERARCHY fis_rollup; times_dim DROP LEVEL fis_year; times_dim ADD LEVEL f_year IS

Stergerea unei dimensiuni:


DROP DIMENSION times_dim;
Extragerea cunostintelor din baze de date

Concluzii
Tabele partitionate si tehnici de partitionare Indexi: normali, bitmap, B-Tree Constrangeri de integritate

View-uri materializate: Tipuri de view-uri


Creare Operatii Dimensiuni: definitii si operatii
Extragerea cunostintelor din baze de date

S-ar putea să vă placă și