Preview only show first 10 pages with watermark. For full document please download

Drei Implementierungen Der Relationalen Algebra In Clojure

   EMBED


Share

Transcript

Drei Implementierungen der relationalen Algebra in Clojure Sören Gutzeit Fachbereich MNI Gliederung ● Relationale Algebra und Clojure ● Auf Basis von Clojure Maps ○ ● Binary associated table Algebra ○ ● Vorlage: Bader und Incanter Vorlage: Martin Kersten Transrelational Model ○ Vorlage: Chris Date Relationale Algebra und Clojure Anforderungen der relationalen Algebra Relation und RelVar Warum Clojure? Anforderung der relationalen Algebra ● Relation != Tabelle ○ ○ Ein Tupel ist in der Relation, oder nicht. Keine vorgeschriebene Reihenfolge. ● Eine Relation ist ein Wert. ● (Hauptspeicher-orientiert) Anforderung der relationalen Algebra ● Operationen ○ ○ ○ ○ ○ ○ ○ ● Mengenoperationen Umbenennen Projektion Restriktion Verbundsoperation Gruppierung Aggregatfunktionen Relation als Ergebnis. ○ Ausnahme: Aggregatfunktionen int x = 5 Typ - Variable - Wert Relation und RelVar ● Eine Relation ist ein Wert. ○ ○ ● Relation werden nicht verändert. Durch Operationen entstehen neue/andere Werte. Eine RelVar ist eine Variable. ○ RelVars können Relationen halten. Warum Clojure? ● Wunderschöne Sprache. ● Immutable Data Stuctures ○ ○ ○ ● (fast) alles ist ein Wert. Werte werden nicht verändert. Operationen erstellen neue Werte. refs ○ ○ Variablen in Clojure. Durch Transaktionen veränderbar. Clojure Maps Basis (hashRel) Vorlage: Bader und Incanter Datentyp Verwendung von clojure.set Vorlage: Bader und Incanter ● Core.relational ○ ○ ○ ● Masterthesis von Markus Bader, MNI, 2014. Darstellung von Tupeln durch Vektoren. umfangreiche Operationenmenge. Dataset ○ ○ ○ ○ Incanter, R-like Statistik und Grafik Plattform. Darstellung von Tupeln durch Maps. mäßige Operatonsmenge. sehr performante Mengenoperationen. xrel und clojure.set ● Datenformat auch xrel genannt. ● Einige Mengenoperstoren darauf ausgelegt. ○ index. (clojure.set/index p #{ :gender }) Index Beispiel Verbundoperator ● Klassische Doppelschleife. ○ ○ ● Äußere und Innere Schleife für n*m Vergleiche. Sehr aufwendig. Verwendung von index und HashMaps. ○ ○ Indizierung einer Relation mit n Tupeln plus m Hash-Aufrufe. Sehr effizient. Demo 1 Binary associated table Algebra Vorlage: Kersten Vertikale Fragmentierung Höhere und niedere Algebra Binary associated table ● Kurzform BAT Algebra. ● Martin Kersten, Centrum Wiskunde & Informatica Amsterdam, 1970. ● Spalten / Attribute -orientiert. ○ Vertikale Fragmentierung. Vertikale Fragmentierung Vertikale Fragmentierung ● Teilung der Relation in BATs. ○ ● Jedes Attribute eine Tabelle. Objekt-IDs als Fixpunkte. ○ jedes Tupel eine eindeutige oID. BAT in Clojure ● Menge statt Multimenge. ○ ● Binary Unit ~ BAT-Tupel. ○ ● Duplikate in BATs. Bestehend aus :head und :tail. Grundlegend alle Datentypen als Wert erlaubt. ○ Auch BATs. Demo 2 BAT Algebra ● Algebra bezogen auf Binäre Tabellen. ○ ○ ● Operationen im kleinen. Blick auf das Wesentliche. Algebra niederer Stufe. ○ Übersetzung in höher Algebra Operatoren Vergleich SQL - BAT Demo 3 Verbund-Operationen ● Spielen (wie gesehen) eine große Rolle. ● Freie Wahl der Vergleichsoperationen. ○ ● Konzept wie in hashRel auf Gleichheit ausgelegt. ○ ● =, !=, <, >=, ... , (fn[x] true) wird dafür auch verwendet. Für andere Vergleichsoperationen: Doppelschleife mit index. ○ minimiert Vergleiche. 100 Vergleiche 9 Vergleiche Transrelational Model Vorlage: Chris Date Trennung von Werten und Struktur Transrelational Model ● Kurzform TR. ● Vorlage: Chris Date ○ ● Ursprung Stephen A. Tarin, US Patent, 1999 Trennung von Wert und Struktur in einer Relation S# SNAME STATUS CITY 1 S4 Clark 20 London 2 S5 Adams 30 Athens 3 S2 Jones 10 Paris 4 S1 Smith 20 London 5 S3 Blake 30 Paris S# SNAME STATUS CITY 1 S4 Clark 20 London 2 S5 Adams 30 Athens 3 S2 Jones 10 Paris 4 S1 Smith 20 London 5 S3 Blake 30 Paris Original S# SNAME STATUS CITY 1 S1 Adams 10 Athens 2 S2 Blake 20 London 3 S3 Clark 20 London 4 S4 Jones 30 Paris 5 S5 Smith 30 Paris Sortierte Werte S# SNAME STATUS CITY 1 S1 Adams 10 Athens 2 S2 Blake 20 3 S3 Clark 4 S4 5 S5 SNAME STATUS CITY 1 5 4 4 5 London 2 4 5 2 4 20 London 3 2 2 3 1 Jones 30 Paris 4 3 1 1 2 Smith 30 Paris 5 1 3 5 3 Field Value Table (FVT) S# Record Reconstruction Table (RRT) S# SNAME STATUS CITY S# 1 S1 1 5 2 2 3 20 3 STATUS CITY 3 1 4 4 5 London SNAME Smith Field Value Table (FVT) 5 3 Record Reconstruction Table (RRT) Transrelational Model ● Traversieren durch beide Tabellen. ○ ● ZigZag-Algorithmus Tupel von beliebigen Punkt rekonstruierbar. ○ geschlossener Kreis. ● “Schnelles Suchen, aufwendiges Schreiben.” ● Duplikate schwer zu identifizieren. ● Viel Spielraum für Optimierungen. S# SNAME STATUS CITY 1 S1 Adams 10 Athens 2 S2 Blake 20 London 3 S3 Clark 20 London 4 S4 Jones 30 Paris 5 S5 Smith 30 Paris S# Optimierung: Konservierte Spalten SNAME STATUS CITY 1 S1 Adams 10 Athens 2 S2 Blake 20 London 3 S3 Clark 30 Paris 4 S4 Jones 5 S5 Smith S# SNAME STATU S CITY 1 S1 Adams [1:1] 10 [1:1] Athens [1:1] 2 S2 Blake [2:2] 20 [2:3] London [2:3] 3 S3 Clark [3:3] 30 [4:5] Paris [4:5] 4 S4 Jones [4:4] S5 Smith [5:5] 5 Optimierung: Konservierte Spalten S# SNAME STATUS CITY 1 5 1∎4 1∎4 1∎5 2 4 2∎5 2∎2 2∎4 3 2 3∎2 2∎3 2∎1 4 3 4∎1 3∎1 3∎2 5 1 5∎3 3∎5 3∎3 Demo 4 Operationen ● TR Basis. ○ ● Relationale Algebra. ○ ● Lesen, Einfügen, Löschen, Bearbeiten. Projektion, Restriktion, Mengenoperationen. Problem: Restriktion mit mehrfachen Bedingungen. ○ ○ Sehr aufwendige Implementierung. Optimierung der Operation. Prädikat: (= S# “S3”) S# SNAME STATUS CITY 1 S1 Adams 10 Athens 2 S2 Blake 20 3 S3 Clark 4 S4 5 S5 SNAME STATUS CITY 1 5 4 4 5 London 2 4 5 2 4 20 London 3 2 2 3 1 Jones 30 Paris 4 3 1 1 2 Smith 30 Paris 5 1 3 5 3 Field Value Table (FVT) Restriktion-Beispiel 1 S# Record Reconstuction Table (RRT) Prädikat: (and (>= STATUS 20) (or (= CITY “LONDON”) (= NAME “ADAM” ))) S# SNAME STATUS CITY 1 S1 Adams 10 Athens 2 S2 Blake 20 3 S3 Clark 4 S4 5 S5 SNAME STATUS CITY 1 5 4 4 5 London 2 4 5 2 4 20 London 3 2 2 3 1 Jones 30 Paris 4 3 1 1 2 Smith 30 Paris 5 1 3 5 3 Field Value Table (FVT) Restriktion-Beispiel 2 S# Record Reconstuction Table (RRT) Restriktion-Lösungsansätze (and (intersection ( > :status 10) ( > :status 10) (or (union (<= :status 30) (<= :status 30) (= :city London))) (= :city London))) Restriktion-Lösungsansätze (intersection (intersection ( > :status 10) (area-search > :status 10) (union (union (<= :status 30) (area-search <= :status 30) (= :city London))) (point-search :city London))) Demo 5 Fazit Fazit ● HashRel ○ ○ ○ ● BAT ○ ○ ● Einfaches Konzept. Unterstützung durch Clojure-Mechaniken. wenig weitere Optimierungsmöglichkeiten. Operieren im kleinen. Viel Optimierungsmöglichkeiten. ■ Oberschicht für höhere Algebra. ■ Auch für größere Verwendung. TR ○ ○ ○ Komplexes Konzept. ■ umfangreiche Operationen. Viel Optimierungsmöglichkeiten. ■ siehe Restriktion. Von große Datenmengen auf kleine schließen Vielen Dank für Ihre Aufmerksamkeit! https://github.com/seegy/more.relational Fragen?