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