Kein Folientitel

Werbung
Oracle's Data Warehousing Features
1
DOAG - Regionaltreffen
Hannover
Donnerstag, 06.03.2003
Oracle 9i Data Warehousing Features
Henrik Rünger
Thales-IS
[email protected]
Thales Information Systems GmbH
Im Team
für Ihren
Erfolg
© Thales IS GmbH 2002
External Tables
Forall- und Bulk-Collect
Oracle's Data Warehousing Features
2
Agenda EXTERNAL TABLES
© Thales IS GmbH 2002
• Was sind external Tables?
• Beispiele
• technischer Aufbau
• Einschränkungen beim Gebrauch
• Performance Hints
• Vergleich SQL*Loader und external Tables
• Ausblick
Thales Information Systems GmbH
Im Team
für Ihren
Erfolg
Oracle's Data Warehousing Features
3
Was sind external Tables?
• Pendant zum SQL*Loader
• Datei befindet sich physisch im Filesystem
• Aussehen z.B. CSV Dateien
• Die Dateien werden innerhalb der DB durch ein
logisches Verzeichnis erkannt
© Thales IS GmbH 2002
• Tabellen können abgefragt und gejoined werden (auch
parallel Benutzung mit SQL)
Thales Information Systems GmbH
Im Team
für Ihren
Erfolg
Oracle's Data Warehousing Features
4
Anwendungsgebiete
• Alternative zum konventionellen Datenladen
> da Datenzugriff ohne langwierige Ladeprogramme
> Änderung der Daten ohne Commit/Rollback abwarten zu müssen
• Data Warehouses
© Thales IS GmbH 2002
> grosse Datenlieferungen
> viele Schnittstellen
Thales Information Systems GmbH
Im Team
für Ihren
Erfolg
Oracle's Data Warehousing Features
5
© Thales IS GmbH 2002
Beispiele _traditionell
Thales Information Systems GmbH
Im Team
für Ihren
Erfolg
Oracle's Data Warehousing Features
6
Traditionelles Laden
• Verarbeitungstabellen
• Arbeitstabellen
• SQL*Loader Konfigurationen
• Ladescripte z.B. PL/SQL
LOAD DATA
INFILE sh_sales.dat
APPEND INTO TABLE sales
( PROD_ID, CUST_ID, TIME_ID, CHANNEL_ID, PROMO_ID, QUANTITY_SOLD, AMOUNT_SOLD)
$ sqlldr sh/sh control=sh_sales.ctl direct=true
Thales Information Systems GmbH
Im Team
für Ihren
Erfolg
© Thales IS GmbH 2002
FIELDS TERMINATED BY "|"
Oracle's Data Warehousing Features
7
© Thales IS GmbH 2002
Beispiel _als external Table
Thales Information Systems GmbH
Im Team
für Ihren
Erfolg
Oracle's Data Warehousing Features
8
Laden als external Tabelle
• Flat-Files == Verarbeitungstabellen
• Datensatzdefinitionen werden auf Minimum reduziert
• Zwischenschritte bei der Verarbeitung entfallen
• Pflegeaufwand wird weitaus geringer
CREATE TABLE sales_transactions_ext
( PROD_ID NUMBER(6), CUST_ID NUMBER, TIME_ID DATE, CHANNEL_ID
CHAR(1), PROMO_ID NUMBER(6), QUANTITY_SOLD NUMBER(3),
AMOUNT_SOLD NUMBER(10,2), UNIT_COST NUMBER(10,2), UNIT_PRICE
NUMBER(10,2) )
ORGANIZATION external
INSERT /*+ APPEND */ INTO COSTS (
TIME_ID, PROD_ID, UNIT_COST,
UNIT_PRICE )
DEFAULT DIRECTORY data_file_dir
SELECT TIME_ID, PROD_ID,
SUM(UNIT_COST), SUM(UNIT_PRICE)
FROM sales_transactions_ext
ACCESS PARAMETERS
GROUP BY time_id, prod_id;
( TYPE oracle_loader
© Thales IS GmbH 2002
( RECORDS DELIMITED BY NEWLINE CHARACTERSET US7ASCII BADFILE
log_file_dir:'sh_sales.bad_xt' LOGFILE log_file_dir:'sh_sales.log_xt' FIELDS
TERMINATED BY "|" LDRTRIM )
location
( 'sh_sales.dat' )
)REJECT LIMIT UNLIMITED;
Thales Information Systems GmbH
Im Team
für Ihren
Erfolg
Oracle's Data Warehousing Features
9
technischer Aufbau
CREATE TABLE sales_transactions_ext (
PROD_ID NUMBER(6), CUST_ID
NUMBER, TIME_ID DATE,
CHANNEL_ID CHAR(1), PROMO_ID
NUMBER(6), QUANTITY_SOLD
NUMBER(3), AMOUNT_SOLD
NUMBER(10,2), UNIT_COST
NUMBER(10,2), UNIT_PRICE
NUMBER(10,2) )
ORGANIZATION external (
TYPE oracle_loader
DEFAULT DIRECTORY data_file_dir
ACCESS PARAMETERS (
BADFILE log_file_dir:'sh_sales.bad_xt' LOGFILE
log_file_dir:'sh_sales.log_xt' FIELDS TERMINATED BY "|" LDRTRIM )
location ( 'sh_sales.dat' )
)REJECT LIMIT UNLIMITED;
Thales Information Systems GmbH
Im Team
für Ihren
Erfolg
© Thales IS GmbH 2002
RECORDS DELIMITED BY NEWLINE CHARACTERSET US7ASCII
Oracle's Data Warehousing Features
10
technischer Aufbau
• Zusätzlich lässt sich beim Insert 9i MERGE verwenden
• Unterschiede zwischen Definition und Daten erlaubt
• geklärt sein muss:
> Datei Format der Quell-Datei
> Datenformat innerhalb dieser Datei
© Thales IS GmbH 2002
• Unterschiede zwischen Definition und Daten werden
über AccessDriver ausgeglichen versucht
Thales Information Systems GmbH
Im Team
für Ihren
Erfolg
Oracle's Data Warehousing Features
11
Einschränkungen beim Gebrauch
• Read-Only (kein DML)
• Column processing
• Indexe sind nicht möglich
> Schnelligkeit durch Betriebssystem (RAID, caching)
© Thales IS GmbH 2002
• keine Constraints möglich
Thales Information Systems GmbH
Im Team
für Ihren
Erfolg
Oracle's Data Warehousing Features
12
Performance Hints
• vorgegebene Längen in Datensätzen werden schneller
verarbeitet
© Thales IS GmbH 2002
• Joins und Unions sind möglich
• Datentyp-Konvertierung erfordert mehr Zeit
• Condition Clauses (WHEN,NULLIF,DEFAULTIF)
vermindert Ausführungsgeschwindigkeit
• insert as select ist möglich  parallel load
Thales Information Systems GmbH
Im Team
für Ihren
Erfolg
Oracle's Data Warehousing Features
13
Vergleich SQL*Loader und external Tables
Discard; Bad File für jedes Datenfile
Für alle Datendateien zusammen nur
jeweils eins
Client NLS Umgebung
Server NLS Umgebung
1/3/5 Sequence
1/2/3 laufende Rejected Auflistung
ContinueIF Concatenate
Werden nicht unterstützt
Graphic, Graphic external, Vargraphic
Werden nicht unterstützt
Leistungsfähigkeit SQL*Loader
Alle Register des Filesystems
Thales Information Systems GmbH
Im Team
für Ihren
Erfolg
© Thales IS GmbH 2002
 Achtung! Parallel Load
Oracle's Data Warehousing Features
14
Ausblick
• Reduzierung von Stellen zur Anpassung
• Geschwindigkeitsvorteile beim Massendatenladen
• Vorteile des Filesystems
Zwischenschritt auf dem Weg zur XML-DB
© Thales IS GmbH 2002
> Ablage von XML-Dateien in der DB möglich
> Definition dynamischer als in external Table Definition
Thales Information Systems GmbH
Im Team
für Ihren
Erfolg
Oracle's Data Warehousing Features
15
Ende Teil 1
© Thales IS GmbH 2002
Ihre Fragen bitte
Thales Information Systems GmbH
Im Team
für Ihren
Erfolg
Oracle's Data Warehousing Features
16
Agenda FORALL- und BULK-Collect
• Einführung
• Begriffserklärung
• Beispiel
• Praxisbeispiel forall & bulk
• Bulk Binding
© Thales IS GmbH 2002
• Deklaration
• Ausblick auf 9i
Thales Information Systems GmbH
Im Team
für Ihren
Erfolg
Oracle's Data Warehousing Features
17
Einführung
• PL/SQL greift bei SQL
Anweisungen auf SQL-Engine zu
3x
• SQL-Engine liefert u.U. Daten
zurück
© Thales IS GmbH 2002
• jede Konversation erzeugt
einen Overhead
Thales Information Systems GmbH
Im Team
für Ihren
Erfolg
Oracle's Data Warehousing Features
18
Einführung (2)
• Zuweisen von Werten in
PL/SQL Variablen in SQL
Statements = Binding
• Binding einer ganzen
Collection = Bulk Binding
1x
© Thales IS GmbH 2002
• Durch Bulk Binding werden
Kontext Switches minimiert
Thales Information Systems GmbH
Im Team
für Ihren
Erfolg
Oracle's Data Warehousing Features
19
© Thales IS GmbH 2002
Beispiel
Thales Information Systems GmbH
Im Team
für Ihren
Erfolg
Oracle's Data Warehousing Features
20
Praxisbeispiel forall & bulk
srec sammlung_rec;
CURSOR c_sammlung
IS
select *
from sammlung;
Thales Information Systems GmbH
BEGIN
OPEN c_sammlung;
FETCH c_sammlung BULK COLLECT INTO
srec.nr,srec.bez;
CLOSE c_sammlung;
FORALL k IN 1 .. srec.nr.COUNT
insert into sammlung_forall (nr, bez)
values
(srec.nr(k)
,srec.bez(k));
COMMIT;
END;
Im Team
für Ihren
Erfolg
© Thales IS GmbH 2002
declare
TYPE numarray IS TABLE OF NUMBER;
TYPE varchararray IS TABLE OF
VARCHAR2 (2000);
TYPE datearray IS TABLE OF DATE;
TYPE sammlung_rec IS RECORD (
nr numarray
,bez VARCHARARRAY);
Oracle's Data Warehousing Features
21
Bulk Binding
• SQL Engine wird angewiesen, Daten zu sammeln, ehe
sie an die PL/SQL Engine zurückgeliefert werden
© Thales IS GmbH 2002
• Ziel muss immer eine Collection sein
• Collection von Records ist nicht möglich
• stark in Kombination mit FORALL
Thales Information Systems GmbH
Im Team
für Ihren
Erfolg
Oracle's Data Warehousing Features
22
Deklaration
DECLARE
TYPE NumTab IS TABLE OF emp.empno%TYPE;
BEGIN
SELECT empno, ename BULK COLLECT INTO enums,
names FROM emp;
...
END;
Thales Information Systems GmbH
Im Team
für Ihren
Erfolg
© Thales IS GmbH 2002
TYPE NameTab IS TABLE OF emp.ename%TYPE;
enums NumTab;
names NameTab;
Oracle's Data Warehousing Features
23
Ausblick auf 9i
• bei forall schlägt nicht mehr das ganze Statement fehl
• sql%bulk_exceptions collection
© Thales IS GmbH 2002
• Multilevel Collection syntax
• native dynamic SQL ist möglich
• bulk-collect ist mit %ROWTYPE Collection möglich
Thales Information Systems GmbH
Im Team
für Ihren
Erfolg
Oracle's Data Warehousing Features
24
Ende Teil 2
© Thales IS GmbH 2002
Ihre Fragen bitte
Thales Information Systems GmbH
Im Team
für Ihren
Erfolg
Herunterladen