Transcription

Chancen undWachstumsfelder fürPostgreSQLbyHarald Armin MassaDeutschsprachige PostgreSQL Konferenz 2013Oberhausen

Harald Armin Massa2ndQuadrantDatenbanken seit 1984Position – ValueDatenbank aufC64 / VC1541

ca. 1995.

member ofPython Software Foundation

ich hätte mal eine ketzerische Frage an denPostGreSQL-Experten, wenn es recht ist? Ichwürde gern gelegentlich eine der zahllosenFunktionen von PostGIS benutzen, ohne dafür ersteine leere Datenbank anlegen zu müssen. Ist daszu viel verlangt?

. Ausführung von Testscripts .will ich eigentlich auf gar keinenFall vorher erst einen DB-Benutzeroder irgendwelche Rechte anlegenmüssen.

from pymongo import MongoClientclient MongoClient()post {"author": "Mike","text": "My first blog post!","tags": ["mongodb", "python", "pymongo"],}posts db.postspost id posts.insert(post)

Wachstum – warum?Quelle: http://simplydv.biz/Quelle: emsps.com

wo wachsen?Quelle: elefanten-news.deQuelle nten/

„große Nutzer“„kleine Nutzer“Einsteiger, neue Projekte

Große Nutzer, viele DatenUnterbrechung richtig teuer MinMax Indizes Logical Changeset Replication Barman (Backup & Disaster Revocery) RLS

Row Level SecurityColumn Level SecurityRow Level Securitydarf Strasse, PLZ, Ort änderndarf alles fürKunden Huberdarf nicht ändern Vorname, Namedarf alles fürKunden Müller

RLS von Hand (Beispiele)1) per Viewcreate table kunden(id kunde, namentext, adresstext);create table kunden mueller (id kunde);create view kunden je mitarbeiteras selectk.namentext, k.adresstextfromkunden kjoin kunden mueller km on (k.id kunde km.id kunde);2) Zugriff auf Daten nur über Stored Procedures3) Zugriff nur über Anwendung

SzenarioWebdesignerin, macht hübsche Seite beginnt, HTML zu schreiben findet PHP „Serienbriefe für Website“ Und speichert dann irgendwas in irgendeiner Datenbank

connect zu PostgreSQLKonfigurationsdatei an unterschiedlichstenStellen, je nach Paketierung Defaults der Distrubition? oft "kein listen an TCP-Ports" Einstellung in pg hba.conf: Kenntnisse in CIDR Networking-kenntnisse Authentifiziereung jenseits von Passwort?

IdeenBeginner-Modus?VirtualMachine Imagemit PostgreSQL, Python, Ruby, PHP.?

Zugriff ohne Nutzer ?Applikations-Usersession-pooling pg bouncer– Mirror der Nutzertabelle

from pymongo import MongoClientclient MongoClient()post {"author": "Mike","text": "My first blog post!","tags": ["mongodb", "python", "pymongo"],}posts db.postsposts.find one({"author": "Mike"})

Verbindung . DatenbanktreiberMongoDB / Python:Query in der MongoDB-Consolewar gültiger Python-Codefür den pyMongo-Treiber

Verbindung. DatenbanktreiberMongoDBHerrschaft über DatenbanktreiberPostgreSQLODBC, JDBC – Seitenprojektepsycopg2Datenbankunabhängige Programmierung?ORM

DatenbankschemaQuele: Wikipedia

DatenbankschemaEinzig PostgreSQL kannBEGIN;DROP TABLE ALLERWICHTIGSTEDATEN;ROLLBACK;(transactional DDL)

Datenbankschema

Datenbankschemaalter table person drop column myspace;(gab es bei 7.2 noch nicht!)

Datenbankschemaalter table person add column facebook(text);

DatenbankschemaDeployment?Development Test Staging Production?Änderungen als SQL Statements in DateienDateien in RCS

Datenbankschema - jsonCREATE TABLE tuwienosql(id t serial NOT NULL,dokument json,CONSTRAINT tuwienosql pkey PRIMARY KEY (id t));INSERT INTO tuwienosql(dokument)VALUES ('{"tiername":"Goofy", "ohren":"lang"}');[ ]CREATE FUNCTION xtraktname (mydokument json) returns text [.];CREATE INDEX tuwieno idx ON tuwienosql(xtraktname (dokument));[ ]ALTER TABLE tuwienosql ADD COLUMN tiername text;

IdeenVersions-Handling von Schematain der Datenbank (Diff, Revision, Set to Revision)multiple Schema-Varianten parallel:connect to database personal with version versionskennung

Wachstumsfeld

quelle: theverge.com

Erst wenn alle Software frei ist,alle Marketing AbteilungenGNU/Linux statt Linux sagenund EMACs der einzige Editor istwird Richard Stallmann den Cheatcode für denWeltfrieden rausrücken.

weg dorthin?technische Herausforderungen Windowssoziale Herausforderungen?2nd Class ?

PostgreSQL on WindowsPython-Windows-Installercode 600 Zeilen Python füreinen Windows-Installer

Zeit für Fragenund AnregungenHarald Armin Massa2ndQuadrant

eine leere Datenbank anlegen zu müssen. Ist das . Änderungen als SQL Statements in Dateien Dateien in RCS. Datenbankschema - json CREATE TABLE tuwienosql (id_t serial NOT NULL, dokument json, . in