import von massendaten

10
OLIVER WRONKA JANUAR 2014 Import von Massendaten

Upload: axxessio-gmbh

Post on 22-Apr-2015

267 views

Category:

Documents


0 download

DESCRIPTION

In dieser Präsentation befasst sich Oliver Wronka, Principal Architect/ Project Manager bei axxessio, mit dem Import von Massendaten.

TRANSCRIPT

Page 1: Import von Massendaten

OLIVER WRONKA

JANUAR 2014

Import von Massendaten

Page 2: Import von Massendaten

2

Inhalt

» Aufgabenstellung» Einfach, aber langsam» 1. Tuningstufe – Blockweises Commit» 2. Tuningstufe – Wegwerfen / Neu» 3. Tuningstufe – Wegwerfen / Neu» Tablespace, Datafiles, Tables and Partitions

Page 3: Import von Massendaten

3

Aufgabenstellung

» Es liegt eine Textdatei vor, welche eine hohe Anzahl von Datensätzen hat (> 1 Mio.)

» Jeder Kunden hat bereits einen eindeutigen, primary Key in der CSV-Datei (fachlicher Schlüssel)

» Diese soll in eine bestehende Tabelle importiert werden» In der bestehenden Tabelle sind bereits Daten

vorhanden» Die Tabelle soll nach dem Import den Datenbestand der

Textdatei 1:1 wiederspiegeln (Full Import)

Page 4: Import von Massendaten

4

Einfach, aber langsam

Flag löschen, ob Datensatz angefasst wurde:

update KUNDEN set TOUCHED=0;

Datensätze aus Import auf bestehende Datensätze anwenden oder neu einfügen:

insert or update KUNDEN (ANREDE, NAME, …, TOUCHED) values (‚HERR‘, ‚dsfsdfds‘, …, 1) where PK=?;commit;

Alle Datensätze löschen die nicht angefasst wurden:

delete from KUNDEN where TOUCHED=0;

Datei: Kunden.csv Table: KUNDEN

PK ANREDE NAME VORNAME STRASSE PLZ ORT INDEX PK ANREDE NAME VORNAME STRASSE PLZ ORT TOUCHED11 Herr dsfsdfsd dsfsdfsd dsfsdfsd 12323 dsfsdfsd 1 11 Herr dsfsdfsd dsfsdfsd dsfsdfsd 12323 dsfsdfsd 122 Frau ssdfsdf ssdfsdf ssdfsdf 12332 ssdfsdf 2 22 Frau ssdfsdf ssdfsdf ssdfsdf 12332 ssdfsdf 133 Frau sdf sdf sdf 12332 sdf 3 33 Frau sdf sdf sdf 12332 sdf 144 Firma sdfsd sdfsd sdfsd 12332 sdfsd 4 44 Firma sdfsd sdfsd sdfsd 12332 sdfsd 155 Firma fsdf fsdf fsdf 12332 fsdf 5 55 Firma fsdf fsdf fsdf 12332 fsdf 166 Firma sdfsdfsdf sdfsdfsdf sdfsdfsdf 12332 sdfsdfsdf 6 66 Firma sdfsdfsdf sdfsdfsdf sdfsdfsdf 12332 sdfsdfsdf 177 Herr sdfsfsad sdfsfsad sdfsfsad 12332 sdfsfsad 7 77 Herr sdfsfsad sdfsfsad sdfsfsad 12332 sdfsfsad 188 Herr sdf sdf sdf 12332 sdf 8 88 Herr sdf sdf sdf 12332 sdf 199 Frau sdfsdfsdf sdfsdfsdf sdfsdfsdf 12332 sdfsdfsdf 9 99 Frau sdfsdfsdf sdfsdfsdf sdfsdfsdf 12332 sdfsdfsdf 1

Page 5: Import von Massendaten

5

1. Tuningstufe – Blockweises Commit

Flag löschen, ob Datensatz angefasst wurde:

update KUNDEN set TOUCHED=0;

Datensätze aus Import auf bestehende Datensätze anwenden oder neu einfügen, aber nicht jeden Datensatz einzeln committen sondern blockweise:

for (i = 0; i < 1000; i++) { insert or update KUNDEN (ANREDE, NAME, …, TOUCHED) values (‚HERR‘, ‚dsfsdfds‘, …, 1) where PK=?}commit;

Alle Datensätze löschen die nicht angefasst wurden:

delete from KUNDEN where TOUCHED=0;

Performancegewinn hängt von Größe des einzelnen Datensatz ab, aber Faktor 10 ist meistens drin!

Page 6: Import von Massendaten

6

2. Tuningstufe – Wegwerfen / Neu

Tabelle einfach leeren:

truncate table KUNDEN;

Datensätze aus Import neu einfügen:

for (i = 0; i < 1000; i++) { insert KUNDEN (ANREDE, NAME, …, TOUCHED) values (‚HERR‘, ‚dsfsdfds‘, …, 1)}commit;

Es entfällt die TOUCHED-Spalte sowie die beiden Operationen zu Beginn und Ende der Importschleife! Trotzdem nur geringer Performancegewinn gegenüber der ersten Tuningstufe!Klappt dafür aber auch mit eingeschränkten DB-Rechten.

Page 7: Import von Massendaten

7

3. Tuningstufe – Wegwerfen / Neu

Tabelle einfach löschen:

drop table KUNDEN;

Tabelle neu erstellen:

create table KUNDEN { … }

Datensätze aus Import einfügen:

for (i = 0; i < 1000; i++) { insert KUNDEN (ANREDE, NAME) values (‚HERR‘, ‚dsfsdfds‘)}commit;

Index erzeugen:

create index …

Geht nur wenn man create Rechte auf DB hat (häufig nicht der Fall).

Page 8: Import von Massendaten

8

Tablespace, Datafiles, Tables and Partitions

Page 9: Import von Massendaten

9

Tablespace, Datafiles, Tables and Partitions

Partition A Partition B Partition C Partition D

TextFile

Importscript

Page 10: Import von Massendaten

Unsere Standorte

Niederlassung Köln

Wilhelmstraße 351143 KölnTel +49 22 03 – 91 22 0Fax +49 22 03 – 91 22 23

Niederlassung Darmstadt

Kasinostraße 6064293 DarmstadtTel +49 61 51 – 78 90 0Fax +49 61 51 – 78 90 23 0

Hauptsitz Bonn

Kurfürstenallee 553177 BonnTel +49 228 – 76 36 31 0Fax +49 228 –76 36 31 3

Niederlassung Bern

Frohbergweg 73012 BernTel +41 31 – 534 07 06Fax +41 31 – 536 69 78

Consider IT done!