CREATE OR REPLACE FUNCTION presentation() RETURNS void AS $$

-- Marc Balmer, Vera Hardmeier, micro systems
-- Swiss Postgres Conference 2014
CREATE OR REPLACE FUNCTION
presentation()
RETURNS void AS
$$
BEGIN
RAISE NOTICE ‚Die Verwendung von PostgreSQL im
arcapos Kassensystem';
END;
$$ LANGUAGE plpgsql
micro systems
[Wer wir sind und was wir tun]
Erfahrung
PostgreSQL seit Postgres95
Unix (BSD) und C seit 4.3 BSD
Linux seit 0.99
Lua seit 5.1
Erfahrung
Auch: Sybase, MySQL, Oracle,
Faircom, SQLite
Im HR eingetragen seit 1990
My SQL is PostgreSQL!
Angebot
Beratung
Schulung
Entwicklung
Projekt(beg)leitung
… im Unix-, Linux-, BSD-Umfeld
Freie Software, kommerzielle
Anwendungen
micro
systems
Open Source Engagement
Komponenten teilw. Open Source
*BSD Entwicklung, NetBSD commit
access, code in allen „grossen“ BSDs
X.Org Entwicklung mit commit access
Organisation von Konferenzen und
„Hackathons“, häufige Referate
PostgreSQL @ micro systems
Softwareentwicklung: client- und
serverseitig, C, Lua und PL/PgSQL
Schulung: Administration usw.
Refactoring, Einbinden von
PostgreSQL, Migration
PostgreSQL @ micro systems
Auf PostgreSQL basierende
kommerzielle Produkte
Individuelle und Standard- resp.
Branchen-Lösungen
arcapos - Ein micro systems Produkt
[PostgreSQL in einer kommerziellen
Standard-Anwendung]
arcapos?
[Was ist arcapos und wo wird es
angewendet]
Ein Kassensystem für Ticketing und Retail
Zutaten
*BSD, Linux, X.Org, Motif, Firefox,
PostgreSQL, lighttpd, ClearSilver,
FastCGI, LaTeX, Lua und eigener
Code
Übersicht
BSD
Firefox
lighttpd
X11/Motif
xpos
Lua
libpq
arcapos-fcgi
libpq
ClearSilver
Lua
PostgreSQL
psql
make
pg driver
LibreOffice
Frontend (Kasse)
BSD
Firefox
lighttpd
X11/Motif
xpos
Lua
arcapos-fcgi
libpq
libpq
Lua
PostgreSQL
psql
make
ClearSilver
jdbc:postgresql
Libre
Entwickelt für Touchscreens
Hauptbildschirm
Volltextsuche
SDK für Erweiterungen
Backoffice (Web-Anwendung)
BSD
Firefox
lighttpd
X11/Motif
xpos
Lua
arcapos-fcgi
libpq
libpq
Lua
PostgreSQL
psql
make
ClearSilver
jdbc:postgresql
Libre
Benutzer ist eine PostgreSQL Rolle
Rollen-Mitgliedschaft definiert
Anwendungsbereiche
Eingesetzte PostgreSQL-Features
(Auszug)
SQL
Stored Procedures: PL/pgSQL, C
libpq, LuaPgSQL
Asynchrone Benachrichtigung
Schemas, Rollen, Security
PostgreSQL & arcapos
[Beispiele von
PostgreSQL
in arcapos]
Beispiel 1: Sicherheit Webanwendung
[inject your SQL code here]
Szenario einer Webanwendungen
Browser
Anwendung
PostgreSQL
Sicherheit auf Anwendungsebene
Browser
Anwendung
PostgreSQL
Sicherheit auf Datenbankebene
Browser
Anwendung
PostgreSQL
Kombiniertes Sicherheitsmodell:
Sicherheit auf allen Ebenen
Browser
Anwendung
PostgreSQL
Kombiniertes Sicherheitsmodell:
Die Anwendung
Browser
Anwendung
PostgreSQL
Kombiniertes Sicherheitsmodell:
Die Datenbank
Browser
Anwendung
PostgreSQL
Beispiel 2: Grafische Kundenanzeige
Direkte Kommunikation?
Entkopplung durch
„Asynchrone Benachrichtigung“
PostgreSQL
Interesse an Ereignis anmelden
LISTEN „VERKAUF“
Kasse verändert Daten...
INSERT, UPDATE
DELETE
... Auslösen einer Trigger-Funktion
TRIGGER-FUNKTION
Tigger-Funktion „meldet“ Ereignis
NOTIFY „VERKAUF“
TRIGGER-FUNKTION
Display zeigt aktualiserte Daten an
SELECT
Asynchrone Benachrichtigung
INSERT, UPDATE
DELETE
LISTEN, SELECT
TRIGGER: NOTIFY
Warum aber PostgreSQL?
[Ja, warum eigentlich?]
Gründe für PostgreSQL
Stabilität, Datenintegrität
Standard-Konform
Umfangreiche Funktionen
Funktionale Indices
Erweiterbarkeit
Open Source Komponenten
Diverse Lua Bindings:
JSON (luajson)
Motif (luamotif)
PostgreSQL (luapgsql)
PL/Lua Maintainership, …
Wake-on-LAN in BSD, mqLua
Verfügbarkeit
github.com/mbalmer/
micro systems & die pgdg
[Warum direkte Kontakte so wichtig
sind]
Erfahrungen
[Was PostgreSQL uns und unseren
Kunden bisher gebracht hat]
Kontakt
[Wie Sie uns bei Bedarf erreichen]
In god we trust, in C we code!
micro systems
Landstrasse 66
CH-5073 Gipf-Oberfrick
+41 62 871 45 65
[email protected]
www.msys.ch
www.arcapos.ch