nosql mit postgresblogs.gm.fh-koeln.de/faeskorn/files/2015/05/c2b_fh... · 2020-03-12 · nosql mit...
TRANSCRIPT
Tag der Datenbanken
NoSQL mit Postgres15. Juni 2015
Damian GawendaDipl.-Wirt.-Inform.
NoSQL mit Postgres
Damian Gawenda 15.06.15 Seite: 2
Agenda
l Vorstellungl Marktübersichtl Warum PostgreSQL?l Warum NoSQL?l Beispielanwendung
NoSQL mit Postgres
Damian Gawenda 15.06.15 Seite: 3
Vorstellung
Damian GawendaDipl.-Wirt.-Inform.
[1990] Erste Programmiererfahrung[seit 2004] Software Entwickler[seit 2007] Dozent für IT-Themen[seit 2009] Unternehmensberater[Feb.2015] Gründung City2Be GmbH
www.city2be.net
NoSQL mit Postgres
Damian Gawenda 15.06.15 Seite: 4
NoSQL mit Postgres
Damian Gawenda 15.06.15 Seite: 5
Marktübersicht – Top10
Ranking Methode nach „current popularity“ vial Google Trends, Bing, Stack Overflow, DBA Stack Exchange, Twitter, LinkedIn, Indeed u.a.
l Quelle: http://db-engines.com/en/ranking
NoSQL mit Postgres
Damian Gawenda 15.06.15 Seite: 6
Trend – OpenSource vs. Commercial
l Quelle: http://db-engines.com/en/ranking_osvsc
NoSQL mit Postgres
Damian Gawenda 15.06.15 Seite: 7
Warum PostgreSQL?
lFree und Open-Source (ORDBMS)l Keine Lizenzkosten
lEnterprise-Features, vergleichbar mit Oracle und DB2l "Best Kept Enterprise Database Secret."
lZuverlässig, stabil und sehr performantl „companies report that PostgreSQL has never, ever crashed for them in several years“
lCross platforml Läuft auf Linux, Windows, FreeBSD, Solaris und Mac OS
lCustom Languages, Extensions und NoSQL-Featuresl Python, Ruby, R, PLV8 uva.
NoSQL mit Postgres
Damian Gawenda 15.06.15 Seite: 8
Warum NoSQL?
lNoSQL bedeutet „Not-Only SQL“Gemeint sind: cloud databases, non-relational databases, Big Data databases
lBestens geeignet für große, unstrukturierte Datenmengen l Schnelles Design > Fehlertoleranzl Wachsende Strukturen > horizontale u. Vertikale Skalierungl Sehr viele Clients > Verfügbarkeitl Echtzeit-Verbindungen > Performance
l“If your data isn’t growing then neither is your business”
NoSQL mit Postgres
Damian Gawenda 15.06.15 Seite: 9
Wer nutzt NoSQL?
NoSQL mit Postgres
Damian Gawenda 15.06.15 Seite: 10
SQL vs. NoSQL
Relationales SQL Not-Only SQL
+ Konsistenz + Skalierbarkeit
+ Sicherheit + Performance
+ Etabliert + Verfügbarkeit
+ Transaktionssicher + Fehlertoleranz
Wir wollen alle Vorteile!
NoSQL mit Postgres
Damian Gawenda 15.06.15 Seite: 11
Lösung: Relationale DB + NoSQL
NoSQL mit Postgres
Damian Gawenda 15.06.15 Seite: 12
Postgres 9.4: JSON Datentyp
l JavaScript Object Notation (JSON), also JavaScript Syntaxl Data Interchange Format: RFC 7159
lBasic Elements:Object {“key“: “value“, “key2“: “value2“ }List [“string“, 5, 3.14, true, “noch eine Zeichenkette“]
lBeispiel:[{
"id": 1, "name": "Peter"}, { "id": 2, "name": "Susi"
}]
NoSQL mit Postgres
Damian Gawenda 15.06.15 Seite: 13
Relational + NoSQL (Implementierung)
/* DDL EXAMPLE RELATIONAL TABLE */CREATE TABLE my_REL_data (
company_id SERIAL CONSTRAINT myRELdata_pk PRIMARY KEY,company TEXT NOT NULL, street TEXT NOT NULL, zip TEXT NOT NULL, place TEXT NOT NULL, phone TEXT NOT NULL, email TEXT NOT NULL, homepage TEXT NOT NULL,created TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);
/* DDL EXAMPLE WITH JSON*/CREATE TABLE my_API_data (
data_id INTEGER CONSTRAINT myAPIdata_pk PRIMARY KEY,raw_data JSON, /* or JSONB */created TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);
NoSQL mit Postgres
Damian Gawenda 15.06.15 Seite: 14
NoSQL Tabelle befüllen
/* DML/DQL EXAMPLE WITH JSON*/INSERT INTO my_API_data (data_id, raw_data)
SELECT id, row_to_json(d)FROM (
SELECT company_id AS id, company, street, zip, place, phone, email, homepageFROM my_REL_data
) d ;
NoSQL mit Postgres
Damian Gawenda 15.06.15 Seite: 15
Befüllen automatisieren/* TRIGGER */CREATE TRIGGER my_copy_TRGAFTER INSERT OR UPDATE ON my_REL_data FOR EACH ROW EXECUTE PROCEDURE my_copy_FUNC(); /* TRIGGER FUNCTION TO FILL TO API */CREATE OR REPLACE FUNCTION my_copy_FUNC() RETURNS trigger AS $$BEGIN
IF (TG_OP = 'INSERT') THENinsert into my_API_data (data_id, raw_data)select id, row_to_json(d)From (
select company_id as id, company, street, zip, place, phone, email, homepage
from my_REL_data where company_id = NEW.company_id) d ;ELSE /* UPDATE .. */END IF;RETURN NEW;
END;$$ LANGUAGE plpgsql;
NoSQL mit Postgres
Damian Gawenda 15.06.15 Seite: 16
Zusammenfassung
lPostgreSQL als die Alternative zu kommerziellen DBMS
lNot-Only SQL als Lösung für das heutige u. zukünftige Daten-Zeitalter
lEs lassen sich Vorteile aus beiden Welten (Relationale DB + NoSQL) vereinen.
Vielen Dank für Ihre Aufmerksamkeit!
Damian GawendaDipl.-Wirt.-Inform.
City2Be GmbHMartinstr. 5a51645 Gummersbach
Tel. 02261-609 [email protected]
www.city2be.net