NoSQL mit Postgres

Werbung
Tag der Datenbanken
NoSQL mit Postgres
15. Juni 2015
Damian Gawenda
Dipl.-Wirt.-Inform.
NoSQL mit Postgres
Agenda
l Vorstellung
l Marktübersicht
l Warum PostgreSQL?
l Warum NoSQL?
l Beispielanwendung
Damian Gawenda
15.06.15
Seite: 2
NoSQL mit Postgres
Vorstellung
Damian Gawenda
Dipl.-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
Damian Gawenda
15.06.15
Seite: 3
NoSQL mit Postgres
Damian Gawenda
15.06.15
Seite: 4
NoSQL mit Postgres
Marktübersicht – Top10
Ranking Methode nach „current popularity“ via
l Google Trends, Bing, Stack Overflow, DBA Stack Exchange, Twitter, LinkedIn, Indeed u.a.
l Quelle: http://db-engines.com/en/ranking
Damian Gawenda
15.06.15
Seite: 5
NoSQL mit Postgres
Trend – OpenSource vs. Commercial
l Quelle: http://db-engines.com/en/ranking_osvsc
Damian Gawenda
15.06.15
Seite: 6
NoSQL mit Postgres
Warum PostgreSQL?
l Free und Open-Source (ORDBMS)
l Keine Lizenzkosten
l Enterprise-Features, vergleichbar mit Oracle und DB2
l "Best Kept Enterprise Database Secret."
l Zuverlässig, stabil und sehr performant
l „companies report that PostgreSQL has never, ever crashed for them in several years“
l Cross platform
l Läuft auf Linux, Windows, FreeBSD, Solaris und Mac OS
l Custom Languages, Extensions und NoSQL-Features
l Python, Ruby, R, PLV8 uva.
Damian Gawenda
15.06.15
Seite: 7
NoSQL mit Postgres
Warum NoSQL?
l NoSQL bedeutet „Not-Only SQL“
Gemeint sind: cloud databases, non-relational databases, Big Data databases
l Bestens geeignet für große, unstrukturierte Datenmengen
l
l
l
l
Schnelles Design
Wachsende Strukturen
Sehr viele Clients
Echtzeit-Verbindungen
>
>
>
>
Fehlertoleranz
horizontale u. Vertikale Skalierung
Verfügbarkeit
Performance
l “If your data isn’t growing then neither is your business”
Damian Gawenda
15.06.15
Seite: 8
NoSQL mit Postgres
Wer nutzt NoSQL?
Damian Gawenda
15.06.15
Seite: 9
NoSQL mit Postgres
SQL vs. NoSQL
Relationales SQL
Not-Only SQL
+ Konsistenz
+ Skalierbarkeit
+ Sicherheit
+ Performance
+ Etabliert
+ Verfügbarkeit
+ Transaktionssicher
+ Fehlertoleranz
Wir wollen alle Vorteile!
Damian Gawenda
15.06.15
Seite: 10
NoSQL mit Postgres
Lösung: Relationale DB + NoSQL
Damian Gawenda
15.06.15
Seite: 11
NoSQL mit Postgres
Postgres 9.4: JSON Datentyp
l JavaScript Object Notation (JSON), also JavaScript Syntax
l Data Interchange Format: RFC 7159
l Basic Elements:
Object
List
{“key“: “value“, “key2“: “value2“ }
[“string“, 5, 3.14, true, “noch eine Zeichenkette“]
l Beispiel:
[{
"id": 1,
"name": "Peter"
}, {
"id": 2,
"name": "Susi"
}]
Damian Gawenda
15.06.15
Seite: 12
NoSQL mit Postgres
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
);
Damian Gawenda
15.06.15
Seite: 13
NoSQL mit Postgres
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,
homepage
FROM my_REL_data
) d ;
Damian Gawenda
15.06.15
Seite: 14
NoSQL mit Postgres
Befüllen automatisieren
/* TRIGGER */
CREATE TRIGGER my_copy_TRG
AFTER 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') THEN
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, homepage
from my_REL_data where company_id = NEW.company_id) d ;
ELSE /* UPDATE .. */
END IF;
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
Damian Gawenda
15.06.15
Seite: 15
NoSQL mit Postgres
Zusammenfassung
l PostgreSQL als die Alternative zu kommerziellen DBMS
l Not-Only SQL als Lösung für das heutige u. zukünftige Daten-Zeitalter
l Es lassen sich Vorteile aus beiden Welten (Relationale DB + NoSQL)
vereinen.
Damian Gawenda
15.06.15
Seite: 16
Vielen Dank für Ihre
Aufmerksamkeit!
Damian Gawenda
Dipl.-Wirt.-Inform.
City2Be GmbH
Martinstr. 5a
51645 Gummersbach
Tel. 02261-609 8008
[email protected]
www.city2be.net
Herunterladen