Foreign Data Wrappers



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

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

MySQL Queries on "Nmap Results"

Datenmanagement in Android-Apps. 16. Mai 2013

SQL structured query language

PostgreSQL in großen Installationen

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

Datenbanktechnologie mit praktischen Übungen in MySQL und PHP

PostgreSQL auf Debian System

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

PostgreSQL unter Debian Linux

Options- und Freitext-Modul Update-Anleitung

Interaktive Webseiten mit PHP und MySQL

DB2 SQL, der Systemkatalog & Aktive Datenbanken

Arbeiten mit einem lokalen PostgreSQL-Server

105.3 SQL-Datenverwaltung

Upgrade auf TYPO3 6.2

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

Informatik 12 Datenbanken SQL-Einführung

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

Configuration Management mit Verbosy OSDC Eric Lippmann

desk.modul : WaWi- Export

Partitionieren über Rechnergrenzen hinweg

Verbinden von IBM Informix mit Openoffice mittels JDBC

Java Application 1 Java Application 2. JDBC DriverManager. JDBC-ODBC Br idge. ODBC Driver Manager. Dr iver C. Dr iver D.

CLR-Integration im SQL-Server. Alexander Karl

MySQL 101 Wie man einen MySQL-Server am besten absichert

Übung: Verwendung von Java-Threads

MySQL: Einfaches Rechnen.

OP-LOG

Websites mit Dreamweaver MX und SSH ins Internet bringen

1. Zusammenfassung der letzten Vorlesung

Referenzielle Integrität SQL

Teamschool Installation/ Konvertierungsanleitung

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

SQL und MySQL. Kristian Köhntopp

IV. Datenbankmanagement

MySQL Installation. AnPr

Indexing und Performance Tuning

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

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

NoSQL mit Postgres 15. Juni 2015

Dokumentation für das Web-basierte Abkürzungsverzeichnis (Oracle mod_plsql / Apache)

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

PostgreSQL Wartungsstrategien

SQL, MySQL und FileMaker

Aktualisierung zum Buch Windows und PostgreSQL

Grundlagen der Informatik 2

Bearbeitung und Download von grossen Datenmengen in STAT-TAB

Darüber hinaus wird das Training dazu beitragen, das Verständnis für die neuen Möglichkeiten zu erlangen.

Datenbanken für Online Untersuchungen

Mapbender-Installation

SQL. Fortgeschrittene Konzepte Auszug

TUSReport Installationsanleitung

SQL-Injection. Seite 1 / 16

XQuery Implementation in a Relational Database System

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

Kaspersky Labs GmbH Kaspersky Anti-Virus für Windows Datei Server v6.0

Benutzer- und Rechte-Verwaltung Teil 2

MySQL Replikation. Erkan Yanar linsenraum.de linsenraum.de

PHP und MySQL. Integration von MySQL in PHP. Zellescher Weg 12 Willers-Bau A109 Tel Michael Kluge (michael.kluge@tu-dresden.

Administrator-Anleitung

Masterplan Link. Technische Dokumentation. ASEKO GmbH. Version 1.0

Remedy-Day Innovative ITSM Lösungen von NTT Data. Machen wir es uns besser, schöner und leichter. Thomas Rupp Alexander Lyer Lukas Máté

Installationsanleitung für DoRIS unter Linux Inhaltsverzeichnis

Relationale Datenbanken in der Praxis

Corporate Documents. Technische Implementierung. 8. Dezember 2012

SQL Tutorial. SQL - Tutorial SS 06. Hubert Baumgartner. INSO - Industrial Software

WinCVS Version 1.3. Voraussetzung. Frank Grimm Mario Rasser

Verbinde die Welten. Von Oracle auf MySQL zugreifen

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

MOUNT10 StoragePlatform Console

4D Server v12 64-bit Version BETA VERSION

Technote - Installation Webclient mit Anbindung an SQL

Oracle: Abstrakte Datentypen:

Fakultät für Informatik & Wirtschaftsinformatik DB & IS II - SS Metadaten

Database Change Management für Continuous Delivery. Diana Lander und Andreas Falk NovaTec Consulting GmbH

Benutzer und Rechte Teil 1

Django - ein Python Web-Framework

Installation Microsoft SQL Server 2008 Express

Dokumentenorientierte Datenbanken - MongoDB

Kurzanleitung für Umsteiger von DataEase.

Übung Datenbanken in der Praxis. Datenmodifikation mit SQL

Übungen zu Datenbanksysteme

Hadoop Demo HDFS, Pig & Hive in Action. Oracle DWH Konferenz 2014 Carsten Herbe

DE... Guldmann Service and Information Console SW v Bedienungsanleitung - Version 6

SSH Authentifizierung über Public Key

Die bisher bereits bekannten Aggregatsfunktionen MIN, MAX, SUM, AVG, COUNT, VARIANCE und STDDEV wurden um FIRST und LAST erweitert.

XAMPP-Systeme. Teil 3: My SQL. PGP II/05 MySQL

GITS Steckbriefe Tutorial

Information zum SQL Server: Installieren und deinstallieren. (Stand: September 2012)

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Allgemeines. veröffentlicht unter lizensiert unter. Creative Commons BY-SA 3.0. XQuery in MS SQL Server 2005

Nutritioner V2.0: Lokaler, Synchronisations- und Servermodus

Vielen Dank an Dennis Riehle für die Bereitstellung dieser Folien

Entwicklungsumgebung für die Laborübung

Funktionsübersicht. Beschreibung der zentralen Funktionen von PLOX

XPERT.NET REPORTING CLIENT INSTALLATION. Einrichten von Visual Studio 2005 und 2008 für die Reporting-Erstellung

Skalierbare Webanwendungen mit Python und Google App Engine

Transkript:

-Angebot Foreign Data Wrappers Postgres ITos GmbH, CH-9642 Ebnat-Kappel Swiss Postgres Conference 26. Juni 2014

Foreign Data Wrapper Postgres -Angebot Foreign Data Wrapper? Transparente Einbindung (art-)fremder Daten mit und in Postgres

Wer bin ich? -Angebot, ITos GmbH Web-(GIS)-Lösungen Postgres Django Systembetreuung

Weblösungen 2005 -Angebot

Anfragen 2015 -Angebot

Web API -Angebot

Application API -Angebot

Database API -Angebot

Postgres -Angebot

Sicherheit -Angebot Fremde Daten sind grundsätzlich als unsicher zu betrachten! Daten auf Konformität prüfen Zugriffsmöglichkeiten auf das erforderliche Minimum beschränken (Anwender/Daten) Zugriffe auf Anwendung oder Datenbank absichern

Gestern -Angebot SQL2003 definiert SQL/MED (Management of External Data) Contrib-Module DBlink: Standardisierter Zugriff auf Potgres-DBs Contrib Modul DBI-Link: SQL/MED Teilimplementation erlaubt Zugriff auf unterschiedliche DBs Postgres 9.1: als universelle, lesende SQL/MED-Schnittstelle (API) Postgres 9.3: Foreign Data Wrapper um Schreiboperationen erweitert

Aktueller Stand (PG 9.4) -Angebot Unterschiedlichste Implementierungen spezifischer s verfügbar Jeden Monat eine Neuimplementation Einige noch nicht voll ausgereift Dokumentation & Quellen: https://wiki.postgresql.org/wiki/sql/med http://wiki.postgresql.org/wiki/foreign data wrappers http://pgxn.org/tag/fdw/

file fwd -Angebot PG-Erweiterug, die mit der Postgres -API komuniziert Erlaubt Zugriff auf Dateien des Filesystem file fwd Bestandteil der Postgres Basisinstallation

file fwd Erweiterung laden -Angebot pg: CREATE EXTENSION ; CREATE EXTENSION

file fwd Instanz erstellen -Angebot pg: CREATE SERVER file server FOREIGN DATA WRAPPER ; CREATE SERVER

file fwd Tabelle erstellen -Angebot pg: CREATE FOREIGN TABLE passwd ( username text, pass text, uid int4, gid int4, gecos text, home text, shell text ) SERVER file server OPTIONS (format text, filename /etc/passwd, delimiter :, null ); CREATE FOREIGN TABLE

file fwd Tabelle Anzeigen -Angebot /etc/passwd, delimiter :, pg: \d passwd Fremdtabelle " public.passwd\\ Spalte Typ Attribute -Opt ----------+---------+-----------+-------- username text pass text uid integer gid integer gecos text home text shell text Server: file_server Options: (format text, filename "null" )

file fwd Abfrage -Angebot pg: select username, uid, home from passwd order by uid asc limit 3; username uid home ---------+-----+----------- root 0 /root daemon 1 /usr/sbin bin 2 /bin

file fwd Tabelle kopieren -Angebot pg: CREATE FOREIGN TABLE passwd rw ( like passwd INCLUDING DEFAULTS) Server file server OPTIONS (format text, filename /tmp/passwd, delimiter :, null ); FEHLER: LIKE wird für das Erzeugen von Fremdtabellen nicht unterstützt NB: Schreibende Operationen werden von file fwd unter Postgres 9.4 nicht unterstützt

postgres fwd -Angebot Ermöglicht die Kommunikation zwischen Postgres-Datenbanken postgres fwd Bestandteil der Postgres Basisinstallation

postgres fwd Erweiterung laden -Angebot pg: CREATE EXTENSION ; CREATE EXTENSION

postgres fwd Instanz erstellen -Angebot pg: CREATE SERVER fpg server FOREIGN DATA WRAPPER OPTIONS (host localhost, port 5432, dbname fdb ); CREATE SERVER

postgres fwd Map Roles -Angebot pg: CREATE USER MAPPING FOR local user SERVER fpg server OPTIONS (user foreign user, password password ); pg: CREATE USER MAPPING FOR postgres SERVER fpg server OPTIONS (user postgres, password passwd ); CREATE USER MAPPING

postgres fwd Tabelle erstellen -Angebot pg r : create table orig table as select id, md5(random()::text) from generate series(1,999999) as id; CREATE TABLE pg: CREATE FOREIGN TABLE fpg table ( id serial NOT NULL, md5 text) SERVER fpg server OPTIONS (schema name public, table name orig table ); CREATE FOREIGN TABLE

postgres fwd Tabelle abfragen -Angebot pg r : select * from orig table order by id asc limit 2; id md5 ----+---------------------------------- 1 348a8119a94fcf0fc98160b49f1b9be5 2 f865fe9343e06d8ce7b988d47968ac4e (2 Zeilen) pg: select * from fpg table order by id asc limit 2; id md5 ----+---------------------------------- 1 348a8119a94fcf0fc98160b49f1b9be5 2 f865fe9343e06d8ce7b988d47968ac4e (2 Zeilen)

postgres fwd Tabelle updaten -Angebot pg: UPDATE fpg table SET SET md5 where id = 2; UPDATE 1

postgres fwd Tabelle nach Update abfragen -Angebot pg r : select * from orig table order by id asc limit 2; id md5 ----+---------------------------------- 1 348a8119a94fcf0fc98160b49f1b9be5 2 (2 Zeilen) pg: select * from fpg table order by id asc limit 2; id md5 ----+---------------------------------- 1 348a8119a94fcf0fc98160b49f1b9be5 2 (2 Zeilen)

Ausführungszeiten -Angebot select * from table order by id desc limit 2; orig table ohne Index: 0.4s fpg table ohne Index: 4.2s orig table mit Index: 0.9ms fpg table mit Index: 4.2s select * from table where id = 34567; orig table ohne Index: 0.13s fpg table ohne Index: 0.13s orig table mit Index: 0.05ms fpg table mit Index: 0.6ms EXPLAIN ANALYZE VERBOSE < query > remote query

Zusammenfassung -Angebot Dokumentation lesen! CREATE EXTENSION CREATE SERVER CREATE USER MAPPING CREATE FOREIGN TABLE

-Angebot Übersicht -Angebot Relationale Datenbanken (generisch und spezifisch) Dokumentenorientierte Datenbanken Graphen-Datenbanken WorldWideWeb (generisch und spezifisch) Filesystem Betriebsystem Geodaten

-Angebot Auswahl -Angebot PGStrom (GPU) Neo4j pg dump JSON/GeoJSON Twitter Hadoop IMAP SQL-Alchemy

Einsatzszenarien -Angebot Macht Datenreplikation überflüssig Migration Data Warehouse Reporting

Grenzen -Angebot Viele Lösungen noch alpha oder beta Viele Lösungen nicht von PGDG unterstützt Durchzogene Performance Keine Datenintegrität (Fremddaten) Reduzierte Ausfallsicherheit

C-API -Angebot C-API Generisch Komplex wenig dokumentiert

-Angebot Python-API (Wrapper über C-API) Wrapper um den Wrapper Fokus auf Anwendung Python-Libs lassen sich einbinden Skeleton s Eingebunde : SQLAlchemy, CSV, Filesystem, SQlite, IMAP, RSS, LDAP Dokumentation: http://multicorn.org/documentation/ Bestehende Implementationen

Voraussetzungen -Angebot Postgres 9.1: 0.9.1 Postgres 9.2: > 1.0.0 Postgres ab 9.3: schreibend Postgres Entwicklungsumgebung Python 2.7 oder Python >= 3.3 Python Entwicklungsumgebung

Installation -Angebot Debian-Paketmanager (jessie) aptitude install postgresql-9.4-python-multicorn Python Installer pip install multicorn pgxn-client pgxn install multicorn Quellen git clone git://github.com/kozea/.git cd make && sudo make install

Anwendung -Angebot pg: CREATE EXTENSION multicorn; pg: CREATE SERVER multicorn imap FOREIGN DATA WRAPPER multicorn options (wrapper multicorn.imapfdw.imapfdw ); pg: CREATE FOREIGN TABLE mail (... ) server multicorn imap options (... );

Python Module Setup -Angebot import myfdw.myfdw from myfdw import myfdw

setup.py -Angebot import subprocess from setuptools import setup, find packages, Extension setup ( name= myfdw, version= 0.1.0, author= Monty Python, license= Postgresql, packages=[ myfdw ] )

myfdw.py -Angebot from multicorn import ForeignDataWrapper class ConstantForeignDataWrapper(ForeignDataWrapper): def init (self, options, columns): super(constantforeigndatawrapper, self). init (options, columns) self.columns = columns def execute(self, quals, columns): for index in range(20): line = {} for column name in self.columns: line[column name] = %s %s % (column name, index) yield line

Postgres 9.5 IMPORT FOREIGN SCHEMA -Angebot IMPORT FOREIGN SCHEMA: Importiert Remote-Schema Das Anlegen der lokalen Datenstrukturen entfällt In ab Version 1.2.0 verfügbar

Postgres 9.5 FOREIGN SCHEMA Anwendung -Angebot pg: IMPORT FOREIGN SCHEMA remote schema [LIMITTO EXCLUDE(table 1,...table n )] FROM SERVER remote server INTO local schema;

Postgres -Angebot