Kapitel1_SQL_Zusatzfolien

Transcription

Kapitel1_SQL_Zusatzfolien
Kapitel 1.5 (Zusatzfolien)
INTERNA DES BETRIEBS VON
DATENBANKEN
WI
Vorlesung "Data and Knowledge Management" (MW31.6) | Prof. Dr. J. Ruhland | SS2016
154
Lehrvideos
• https://www.youtube.com/watch?v=DoUWf3ASwpQ
• https://infosys.uni-saarland.de/datenbankenlernen/ Ein
excellentes Kompendium aller Aspekte der Datenbanktechnik auf
Folien
WI
Vorlesung "Data and Knowledge Management" (MW31.6) | Prof. Dr. J. Ruhland | SS2016
165
partial indices
•
Tabellenspalten werden manchmal von wenigen Einträgen dominiert
–
–
–
•
•
nordkoreanischer Bücher: 90% haben (vermutlich) in Autorenspalte „Kim Jong-un“
Tabelle mit Artikeln zu Gleichberechtigung: 90% haben in Themenspalte „Frau“
in allen Fällen gilt aber: die restlichen Anteile verteilen sich auf viele Einträge
in einem realen Buch hätten wir zu den derart dominanten Einträgen keine Indexeinträge
aber: ein sinnvoller Index kann alle anderen Autoren umfassen
–
–
select …. where autor = „Pak Pong-ju“
select … where thema = „Senioren“
CREATE INDEX mypartial ON buchtabelle (autor) WHERE autor <> „Kim Jong-un“
CREATE INDEX indAus ON buchtabelle (ausleiher) WHERE ausleiher IS NOT NULL
CREATE INDEX partSalary ON employee(age) WHERE salary > 2100
•
WI
DBMS entscheidet wie üblich autonom, ob es in der Anfrage den Index verwenden will
SELECT … WHERE autor LIKE „Kim%“
 Index eher nicht verwenden
SELECT … WHERE autor LIKE „Pak%“
 Index eher schon verwenden
Vorlesung "Data and Knowledge Management" (MW31.6) | Prof. Dr. J. Ruhland | SS2016
30
aktuelle „vendor-specific“ extensions
In memory tables ergänzen das Index-Konzept
• manche Tabellen sind vergleichsweise klein und sollten am besten dauernd im
Hauptspeicher gehalten werden (Beispiel: (EAN,Produktname) oder (Kundennr,
Adresse, KdName) aber nicht jede Zeile aller Kassenzettel)
• … und ein gelegentliches update sollte auch besonders schnell erfolgen (kein
Ausbremsen durch locking!)
•  SQLServer® ab 2014: ein Tabelle kann (bei gewissen Vors) als inMemory
deklariert werden und wird dann entsprechend verwaltet
http://sqlmag.com/sql-server-2014/application-performance-inmemory-oltpdatabase-engine als gute Einstiegsreferenz
WI
Vorlesung "Data and Knowledge Management" (MW31.6) | Prof. Dr. J. Ruhland | SS2016
4
Ein umfassendes Beispiel
In einem Tanzclub ist der Aufmarsch zu planen; bei den Paaren soll immer der Mann größer sein (u:U. können nicht alle Mitglieder
mit aufmarschieren)
1.
2.
3.
4.
5.
6.
7.
create view paare as
select mann.id as mannID, frau.id as frauID, mann.groesse as mGroe , frau.groesse as fGroe http://www.stuttgarter-nachrichten.de/inhalt.tanz-meisterschaft-in-der-formationfrom mitglieder as mann, mitglieder as frau where mann.sex='m' and frau.sex='f' and zaehlt-nur-das-wir.de33ae2e-7533-46df-9151-c9db0dbbea58.html
mann.groesse > frau .groesse
------ ein Theta Join; ein sortierter Index auf m1 (oder m2, aber das ist die gleiche Tabelle) kann helfen:
------ Query optimizer: wenn ganz wenig männer, dann männer(via IndexNachgechlecht) raussuch und dann die ganze m2 lesen
------ bei etwa gleich großer Besetzung mit Mann und Frau: Nimm einen Mann und suche nach (3), wobei ein doublylinkedB+ Tree
hier im Vorteil ist
8.
------------------Aber: alle diese Paarungen kann ich nicht gleichzeitig auf die Tanzfläche lassen kann, da zB der größte Mann mit der
zweit -und drittgrößten Frau gelistet ist und ich jedes Mitglied in der Paarung nur 1 Mal gleichzeitig verwenden kann
9.
10.
11.
12.
13.
with temPaarung (mannID,frauID) as (
select top 1 from paare oder by mGroe Desc , fGroe Desc ----- gardemaß geht voraus
UNION ALL
select top 1 from paare oder by mGroe Desc , fGroe Desc
WHERE paare.mannID NOT IN (select temPaarung.mannID from temPaarung) and paare.frauID NOT IN
(select temPaarung.mannID from temPaarung)
)
select mannName …..from temPaarung inner join detailTabelle ,,,
14.
15.
16.
17.
----N.B.: statt TOP 1 ORDER BY könnte ich auch nach anderen Kriterien sortieren !!!
---- zu einem select DISTINCT ist mir (JR) nicht Operationales eingefallen
http://www.ms-neutraubling.de/archiv/15_archiv/2004_2005_jahresbericht/
WI
Vorlesung "Data and Knowledge Management" (MW31.6) | Prof. Dr. J. Ruhland | SS2016
5
WI
Vorlesung "Data and Knowledge Management" (MW31.6) | Prof. Dr. J. Ruhland | SS2016
6
und wenn größter Mann mit größter Frau tanzen soll, zweitgrößter
mit zweitgrößter …
1. select id, sex, rank() Over (partition by sex order by groesse DESC) as rang
into m1 from mitglieder
2. select mann.id frau.id as frauID
from m1 as mann, m2 as frau where m1.sex=‘m’ and m2.sex=‘f’
3.
and m1.rang=m2.rang
siehe auch das sehr gute http://www.postgresql.org/docs/9.1/static/tutorial-window.html
WI
Vorlesung "Data and Knowledge Management" (MW31.6) | Prof. Dr. J. Ruhland | SS2016
7
http://www.bo.de/sites/default/files/field/image/tanzsportclub.jpg
und eine pragmatische Lösung
WI
Vorlesung "Data and Knowledge Management" (MW31.6) | Prof. Dr. J. Ruhland | SS2016
8
planare (ebene Karten)
• besser ist es, ebene Koordinaten (x,y)
zu haben, aus denen dann in ebener
Geometrie (z.B.
Abstand² = (x1-x2)² + (y1-y2)²
die Informationen abgegriffen werden
• Mathematisches Theorem: für die
Kugel als Ganzes und beliebige x und y
unmöglich
• für lokale Streifen (z.B.) aber (fast
perfekt) schon: „UTM Koordinaten“
• UTM /CZ Straße
UTM 681437, 5645077, 32, U
WI
http://map.sdsu.edu/geog104/lecture/unit-3.htm
https://www.youtube.com/watch?v=wXHwfTchLaE
Vorlesung "Data and Knowledge Management" (MW31.6) | Prof. Dr. J. Ruhland | SS2016
9
WI
Vorlesung "Data and Knowledge Management" (MW31.6) | Prof. Dr. J. Ruhland | SS2016
10
http://www.landesvermessung.sachsen.de/inhalt/etrs/grund/grun
d.html
WI
Vorlesung "Data and Knowledge Management" (MW31.6) | Prof. Dr. J. Ruhland | SS2016
11
WI
Vorlesung "Data and Knowledge Management" (MW31.6) | Prof. Dr. J. Ruhland | SS2016
12
https://de.wikibooks.org/wiki/Kartenprojektionen:_Klassifizierung
:_Abbildungseigenschaften
UTM @ 0E
über die
ganze Welt
aus dem gänzlich ausgezeichneten http://www.boehmwanderkarten.de/kartographie/is_netze.html
WI
Vorlesung "Data and Knowledge Management" (MW31.6) | Prof. Dr. J. Ruhland | SS2016
13
aktuelle „vendor-specific“ extensions
geospatial indices(Überblick)
Problem (1): „finde die Kunden, die maximal 5 km vom Standort weg sind“
– erfordert z.B. 2 Indizes im „AND“ (laut Längengradindex möglicherweise benachbart UND laut
Breitengradindex möglicherweise benachbart)
– und Nachbearbeitung (siehe gelbe Punke, die viele sein können)
–
und ist bei großen Quadraten (500 km statt 5 km) nicht exakt
Problem (2): „gegeben ein Punkt, was sind meine 10 nächstgelegenen
Kunden“?
– erstaunlich schwieriges Problem
– erst seit etwa 2015 schnelle Indexzugriffe via spezialisiertem Index (Z-Curves, Hilbert Curves ,….) kommerziell
realisiert
– wesentlich einfacher ist übrigens: „gib mir 100 Kunden unter denen höchstwahrscheinlich die 98 nächsten
Nachbarn sind“) (Grund ist im Groben: gelegentlich Punkte der Art
stören nicht)
– mit diesen Indizes wird Problem 1 mit gelöst
– siehe z.B. http://www.win.tue.nl/~hermanh/stack/dagstuhl08-talk.pdf und
http://www.vision-tools.com/h-tropf/multidimensionalrangequery.pdf
NNsuche
WI
Vorlesung "Data and Knowledge Management" (MW31.6) | Prof. Dr. J. Ruhland | SS2016
14
z-Kurven im Überblick: bilde ein 2 dim
Problem in einen 1-dim sorted Index ab
ein idealer 1-dim Index würde die Lokalität im 2-dim perfekt bewahren
(1dim benachbart  2dim benachbart, immer)
mathematisches Theorem belegt Unerfüllbarkeit dieser Forderung
•
 verlange die Erfüllung nur „meist in hohem Umfang“, so dass je nach
Operationalisierung dieser Begriffe unterschiedliche Lösungsideen gut
sind
Z-Kurven als bedeutendes Beispiel
a) normalerweise granulare Auflösung (auf einem Gitter)
1. codiere Bit0 = 0/1, wenn W oder E codiere Bit1 = 0/1 wenn N oder S
2. anwende diese Idee rekursiv für bits 2 und 3, 4 und 5 …
3. baue mit den so entstehenden skalaren Werten einen B-Baum
10110010 NE Quadrant dessen SE dessen NW dessen NE
4.
Methode enthält wenige „long jumps“ (d.h. indexbenachbarte Punkte
sind in 2d weit entfernt)
bei der Suche nach den nächsten Nachbarn … muss man u.U. mehrere Felder
kombinieren (kein reiner „range“ Query; siehe vorherige Folie) oder man
akzeptiert die approximative Natur des Ergebnisses und kann dann einen zIndex verwenden
Es exstieren zig Varianten zum Thema spacefilling curves
WI
Vorlesung "Data and Knowledge Management" (MW31.6) | Prof. Dr. J. Ruhland | SS2016
http://www.win.tue.nl/~hermanh/stack/dagstuhl08-talk.pdf
•
15
Anwendung im Detail
•
Konzept
–
–
für die Bewohner des roten query-rechtecks brauchen wir …
den kompletten NE
•
–
und im SE dessen N
•
•
10 ** ** ** **
11 *0 ** ** **
Anwendung
–
„People near me“ als Anfrage, die für jeden Smartphonekunden alle 10 Sek
gestellt wird
http://www.cs.cmu.edu/~christos/courses/721.S03/LECTURES-PDF/0230-z-ordering.PDF
WI
Vorlesung "Data and Knowledge Management" (MW31.6) | Prof. Dr. J. Ruhland | SS2016
16
Exkurs: google® Fusiontables
•
•
•
•
•
WI
Spreadsheetartige Datenverwaltung für größte Datenmengen
mit eingebauter „mapping“-Visualisierung
https://support.google.com/fusiontables/answer/2527132?hl=en&topic=2573107&ctx=topic
https://support.google.com/fusiontables/answer/2571232#play
(ggf muss man nach dem „connect to fusionTables den Gdrive neu starten)
Vorlesung "Data and Knowledge Management" (MW31.6) | Prof. Dr. J. Ruhland | SS2016
17