ORM & OLAP. Object-oriented Enterprise Application Programming Model for In-Memory Databases. Sebastian Oergel

Ähnliche Dokumente
Dynamisches SQL. Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München

SQL für Trolle. mag.e. Dienstag, Qt-Seminar

Whitepaper. Produkt: combit Relationship Manager. Datensatzhistorie mit dem SQL Server 2000 und combit GmbH Untere Laube Konstanz

Nachtrag: Farben. Farbblindheit. (Light und Bartlein 2004)

105.3 SQL-Datenverwaltung

PostgreSQL in großen Installationen

SQL (Structured Query Language) Schemata Datentypen

Informatik 12 Datenbanken SQL-Einführung

Oracle 12c: Neuerungen in PL/SQL. Roman Pyro DOAG 2014 Konferenz

php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick Parameterübergabe...

Oracle: Abstrakte Datentypen:

6. Sichten, Integrität und Zugriffskontrolle. Vorlesung "Informa=onssysteme" Sommersemester 2015

desk.modul : WaWi- Export

IV. Datenbankmanagement

NoSQL mit Postgres 15. Juni 2015

Interaktive Webseiten mit PHP und MySQL

JDBC. Es kann z.b. eine ODBC-Treiberverbindung eingerichtet werden, damit das JAVA-Programm auf eine ACCESS-DB zugreifen kann.

Universität Augsburg, Institut für Informatik WS 2006/2007 Dr. W.-T. Balke 27. Nov M. Endres, A. Huhn, T. Preisinger Lösungsblatt 5

Log Parser 2.0 HackerScan.js. Beschreibung. Anforderungen. Unterstützte Plattformen. Script-Code. Zurück zur Übersichtsseite

S A P B W O N H A N A P R O O F O F C O N C E P T B E I S. O L I V E R

2. Datenbank-Programmierung

SQL. strukturierte Datenbankabfragesprache eine Datenbanksprache zur. Structured Query Language:

Dipl. Inf. Dipl. Math. Y. Orkunoglu Datum:

UNIVERSITÄT ULM Fakultät für Ingenieurswissenschaften und Informatik Institut für Datenbanken und Informationssysteme

3.17 Zugriffskontrolle

SQL und MySQL. Kristian Köhntopp

Whitepaper. Produkt: combit Relationship Manager. Einbindung externer FiBu-/Warenwirtschaftsdaten. combit GmbH Untere Laube Konstanz

Universität Duisburg-Essen Informationssysteme Prof. Dr.-Ing. N. Fuhr. Praktikum Datenbanken / DB2 Woche 8: Trigger, SQL-PL

Übersicht über Datenbanken

MIN oder MAX Bildung per B*Tree Index Hint

Professionelle Seminare im Bereich MS-Office

LINQ to SQL. Proseminar Objektorientiertes Programmieren mit.net und C# Christoph Knüttel. Institut für Informatik Software & Systems Engineering

arlanis Software AG SOA Architektonische und technische Grundlagen Andreas Holubek

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Mengenvergleiche: Alle Konten außer das, mit dem größten Saldo.

Business-Rule-Management als Instrument des Software-Reengineering

Hochschule Karlsruhe Technik und Wirtschaft Anhänge: Fakultät für Informatik und Wirtschaftsinformatik SS 2013 Prof. Schmidt.

Steffen Hofmann Freie Universität Berlin ZEDAT Identity and Customer Management (ICM) Aktueller Stand Shibboleth IdP3

Beispiel 1: Filmdatenbank

Datenbanktechnologie mit praktischen Übungen in MySQL und PHP

Datenbanken für Online Untersuchungen

HaskellDB. Datenbank-Features in Haskell Johannes Reiher

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.

Grundlagen der Informatik 2

Aktuelle Entwicklungen

10.6 Programmier-Exits für Workitems

Taylorentwicklung der k ten Dimension

Backup and Recovery. Der Abschnitt beschreibt Vorgehensweisen zur Sicherung und Wiederherstellung der Daten mit Applikationsmitteln.

Nathan Burgener. Design by Contract. Modul SWE

seit Java 1.1 Bestandteil der API: packages java.sql, javax.sql

Kurzanleitung für Umsteiger von DataEase.

MySQL 101 Wie man einen MySQL-Server am besten absichert

Fachhochschule Deggendorf Platzziffer:...

7. Datenbank-Zugriff. Vorlesung und Übung Dr. Peter Pfahler Institut für Informatik Universität Paderborn. Zum Beispiel aus PHP-Skripten: Client 7-2

Datenbankadministration

Sage 200 BI Häufige Fehler & Lösungen. Version

MySQL: Einfaches Rechnen.

if ($rows == 0) { save_new(); } }

Architekturen. Von der DB basierten zur Multi-Tier Anwendung. DB/CRM (C) J.M.Joller

Zugriff auf Firebird-Datenbanken mit PHP. Daniel de West DB-Campus-Treffen 15. Januar 2004

Erstellen einer Datenbank. Datenbankabfragen

Prozedurale Datenbank- Anwendungsprogrammierung

ZENTRALER INFORMATIKDIENST DER JOHANNES KEPLER UNIVERSITÄT LINZ Abteilung Kundendienste und Dezentrale Systeme. PPP für Windows 3.

MySQL Installation. AnPr

MySQL Cluster und MySQL Proxy

SQL. Fortgeschrittene Konzepte Auszug

Sructred Query Language

Referenzielle Integrität SQL

Für AX 4.0, den letzten Hotfix rollup einspielen. Der Hotfix wurde das erste Mal im Hotfix rollup eingeschlossen:

DBS ::: SERIE 5. Join Right Semi- Join Left Semi-Join Projektion Selektion Fremdschlüssel. Kreuzprodukt

Verteidigung gegen SQL Injection Attacks

Model Klausel - Der Excel-Killer von Oracle?

Objektorientierte Datenbanken

Ein Ausflug zu ACCESS

SQL-INJECTIONS. N E T D E V E L O P E R S G R O U P B E R L I N B R A N D E N B U R G,

Whitepaper. Produkt: combit Relationship Manager. Einbindung externer FiBu-/Warenwirtschaftsdaten. combit GmbH Untere Laube Konstanz

Handbuch. Artologik EZ-Equip. Plug-in für EZbooking version 3.2. Artisan Global Software

Übung - Erstellen von Benutzerkonten in Windows 7

XING und LinkedIn-Integration in das erecruiter-bewerberportal

AJAX Implementierung mit Joomla!

Datenbanksysteme I. Klausur zum Praktikum. Mehrere Professoren prüfen mit genau einem Beisitzer genau einen Studenten.

SAP NetWeaver Gateway. 2013

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

Abbildung 1: Das ERM. Nun zu den Tabellen: Zunächst wird aus jeder Entity eine Tabelle, d.h. wir erhalten:

Username and password privileges. Rechteverwaltung. Controlling User Access. Arten von Rechten Vergabe und Entzug von Rechten DBS1 2004

Universität Stuttgart Abteilung Anwendersoftware Steht für Embedded SQL in Java. - Java-Methoden als SQL Stored-Procedures

Mit Legacy-Systemen in die Zukunft. adviion. in die Zukunft. Dr. Roland Schätzle

Von ODBC zu OLE DB. Neue Möglichkeiten der Datenintegration. Harald Gladytz, Team Vertrieb ESRI Niederlassung Leipzig

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java

Fachhochschule Kaiserslautern Labor Datenbanken mit MySQL SS2006 Versuch 1

Data Cube. Aggregation in SQL. Beispiel: Autoverkäufe. On-line Analytical Processing (OLAP) 1. Einführung. 2. Aggregation in SQL, GROUP BY

Index- und Zugriffsstrukturen für. Holger Brämer, 05IND-P

Das Compare-, Merge- und Versionierungstool für Microsoft Dynamics NAV. NAVObjectEditor RECY CLE

Technical Support Information No. 123 Revision 2 June 2008

SEMINAR Modifikation für die Nutzung des Community Builders

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

Hinweise zur Installation von MySQL

Therefore the respective option of the password-protected menu ("UPDATE TUBE DATA BASE") has to be selected:

SAP HANA als In-Memory-Datenbank-Technologie für ein Enterprise Data Warehouse

Transkript:

ORM & OLAP Object-oriented Enterprise Application Programming Model for In-Memory Databases Sebastian Oergel

Probleme 2 Datenbanken sind elementar für Business-Anwendungen Gängiges Datenbankparadigma: relational Ausgereift, bewährt Gängige Programmiersprachen & -paradigmen basieren auf Objekten (OO) Entwickler agieren auf Business Objects OR-Mapper wollen Welten miteinander verbinden Viele Probleme Identität von Objekten, Vererbung, Data Retrieval (CRUD),...

ORM & OLAP 3 ORM beherrschen Create, Update, Delete recht gut Bieten oft auch verschiedene Data-Retrieval-Möglichkeiten (Read) an Oft nicht optimal (OLAP) Beispiel:

ORM & OLAP 4 ORM beherrschen Create, Update, Delete recht gut OLTP-Query (Login) Bieten oft auch verschiedene Data-Retrieval-Möglichkeiten (Read) an SQL Oft nicht SELECT optimal (OLAP) `hash_password` FROM `user` WHERE `user`.`id` = 324 Beispiel: OO: User user = User.findById(324); user.hash_password; SQL: INSERT INTO `user` VALUES ( Eric Miller,...) OO: User user = new User( Eric Miller,...); user.save();

ORM FROM & OLAP ( OLAP-Query (Dunning) SQL: SELECT gbi.customerid AS customerid, COUNT(gbi.invoiceid) AS numberofinvoices, AVG(DSO) AS averagedso ( SELECT so.customerid AS customerid,iv.id AS invoiceid, ORM pr.paymentdate beherrschen Create, AS paymentdate, Update, iv.billingdate Delete recht AS gut billingdate, AVG(DATEDIFF(paymentdate, OLTP-Query billingdate)) (Login) AS DSO Bieten oft auch verschiedene Data-Retrieval-Möglichkeiten (Read) an FROM SalesOrder SQL AS so, SalesOrderLineItem AS soli, Invoice AS iv, Oft PaymentReceipt nicht SELECT optimal AS pr (OLAP) `hash_password` FROM `user` WHERE WHERE so.customerid = 1 AND `user`.`id` so.id = soli.salesorderid = 324 AND OO: soli.outboundid = iv.outboundid Beispiel: AND User iv.id user = pr.invoiceid = User.findById(324); AND iv.billingdate BETWEEN '2000-01-01' AND '2013-01-01' user.hash_password; AND pr.paymentdate BETWEEN '2000-01-01' AND '2013-01-01' GROUP BY iv.id ) AS gbi # grouped by invoices ) GROUP BY gbi.customerid SQL: INSERT INTO `user` VALUES ( Eric Miller,...) OO: OO: List<SalesOrder> salesorder = SalesOrder.all();... User user = new User( Eric Miller,...); Einige Probleme: user.save(); (meist) keine Unterstützung für Aggregate (Summen,...) Eigene Implementierung notwendig Keine Join-Optimierung wie SQL SQL: deklarativ (was?), OO: imperativ (was? wie?) 5

Problematische Verbindungen 6

Evaluierte Open-Source-ERP-Systeme 7

Evaluierte Open-Source-ERP-Systeme 8

OpenERP Verfügbarkeitsprüfung 9 Codeauszüge:

OpenERP Mahnungen 10 Codeauszüge:

Lösungsansätze 11 Existieren Bringen aber oft neue Probleme mit sich Z.B.: ORM-Query-Languages Erlauben mehr Kontrolle über das Verhalten des ORM Code wird sehr schnell wieder technisch verpacktes SQL Kein reines Arbeiten auf Objekten User.select( name, password ).where( login_number > 100 ).fetchfirst(5) ORM.execute( FIND user.{name, password} OF User WHERE user.login_number > 100 FETCH FIRST 4 )

Future Work 12 Weitere Evaluierung anhand von OpenERP Alternative Implementierung von SQL-Queries über ORM/Objekte Vergleiche: Laufzeit Code Wie technisch? Wie fehleranfällig? Wie kann man gängige ORM zur Umgehung einiger businessrelevanter Probleme erweitern? Arbeit auf Objekten Weniger technischer Code Bessere Laufzeiten als bisherige reine ORM-Lösungen StoredProcedures?

Übersicht 13 Code OLTP OLAP ORM DB Use Case: Business-Anwendungen, Analytics

Übersicht 14 Code OLTP OLAP ORM DB Use Case: Business-Anwendungen, Analytics

Weitere Beispielqueries 15 Forecast

Weitere Beispielqueries 16 MRP

Weitere Beispielqueries 17 Geo-Location

Future Work: Evaluierung Squeryl ORM 18 Sieht sich selbst als alternativen ORM-Ansatz Kein JPA

// Equivalent JPA query Query q = entitymanager.createquery( //We'll get an SQLException if there's a typo here : "SELECT AVG(g.scoreInPercentage) FROM Grades g where g.subjectid = :subjectid"); Future Work: Evaluierung Squeryl ORM 19 // a runtime exception if mathid is of the wrong type q.setparameter(1, Sieht sich mathid); selbst als // alternativen or if 1 is not ORM-Ansatz the right index Kein JPA // ClassCastExeption possible Number avg = (Number) q.getsingleresult(); // NullPointerException if the query returns null //(ex.: if there are no math Grades in the table) avg.floatvalue(); Squeryl JPA //All is validated at compile time here : var avg: Option[Float] = // The compiler 'knows' that this query returns an Option[Float] from(grades)(g => // mathid has to by type compatible with g.subjectid to compile where(g.subjectid === mathid) compute(avg(g.scoreinpercentage)) )

Future Work: Evaluierung Squeryl ORM 20 Sieht sich selbst als alternativen ORM-Ansatz Kein JPA Wie technisch ist der Code wirklich? Werden die Versprechungen eingehalten? Auf welche Kosten? Lassen sich die Konzepte auf große (Enterprise-)ORM (Hibernate,...) anwenden? Warum? Warum nicht? Mit welchen Einschränkungen?