SQL vs. NoSQL

Werbung
Aktuelle SE Praktiken für das
WWW
‚SQL vs. „NoSQL“„
W. Mark Kubacki
23.06.2010
Gliederung
•
•
•
•
•
Zusammenfassung
Entstehungsgeschichte ‚SQL vs. „NoSQL“„
Systemarchitekturen und Wachstumsmuster
SQL
„NoSQL“
– Überblick und Einsatzbeispiele
– Verteilte Datenbanken
• SE Praktiken
W. Mark Kubacki: „SQL vs. NoSQL“
23.06.2010
2
Zusammenfassung
• ‚SQL vs. „NoSQL“„ ist eine Bewegung
– Unzufriedener
– Ignoranten?
•
•
•
•
•
Kritik an SQL und an relationalen DBMS
„die“ Datenbank gibt es nicht
aber mehr Auswahl
spezielle Einsatzgebiete
DB für eine Datenstruktur wählen,
nicht umgekehrt.
W. Mark Kubacki: „SQL vs. NoSQL“
23.06.2010
3
Entstehungsgeschichte
• „NoSQL“ ist nicht neu, SQL ist es
• 90„er: „SQL vs. Objektorientierte“
• dedizierte Datenbanken Schlüssel/Wert
Speicher
• 1979: „dbm“, „sdbm“, BerkeleyDB
• neu:
– hauptspeicherbasierte DBs
– verteilte DBs
W. Mark Kubacki: „SQL vs. NoSQL“
23.06.2010
4
Entstehungsgeschichte
•
•
•
•
•
•
•
•
•
Webanwendungen
große Datenmengen
„heiße“ Daten
‚response time„
(günstige) Skalierbarkeit
einfache Einbindung
Cloud Computing
 Grenzen von MySQL, PostgreSQL und Co.
Rackspace 2009: Was machen wir?
W. Mark Kubacki: „SQL vs. NoSQL“
23.06.2010
5
Systemarchitekturen
• Skalierbarkeit – Skalabilität
• Horizontale
• Vertikale
W. Mark Kubacki: „SQL vs. NoSQL“
23.06.2010
6
Systemarchitekturen - 1:1
Anwendungsserver
Frontend
Backend
Datenbank
W. Mark Kubacki: „SQL vs. NoSQL“
23.06.2010
7
Systemarchitekturen – n:1
Datenbank
W. Mark Kubacki: „SQL vs. NoSQL“
23.06.2010
8
Systemarchitekturen – n:m(1)
Master
3 Spiegel
(nur Lesen)
W. Mark Kubacki: „SQL vs. NoSQL“
23.06.2010
9
Systemarchitekturen - Verbesserungsideen
• Daten aufteilen
– „Partitionieren“
– „Sharding“
• Verteilte Datenbank nutzen
• Backend von Frontend entkoppeln
– Lastkurve glätten
W. Mark Kubacki: „SQL vs. NoSQL“
23.06.2010
10
Partitionierung
Server A
Server B
ID
1
2
3
4
5
6
Vertikale ~
Name
Alpha
Beta
Gamma
Delta
Epsilon
Zeta
Alter
25
26
27
28
29
30
Abteilung
A
A
B
A
B
B
ID muss ergänzt werden
Horizontale ~
ID
1
Name
Alpha
Alter
25
2
3
Gamma
A
Beta
27
4
5
Epsilon
26
A
28
A
30
B
B
Delta
29
6
Abteilung
B
Zeta
W. Mark Kubacki: „SQL vs. NoSQL“
23.06.2010
11
Datenaufteilung
• Horizontale Partitionierung  Sharding
• SQL so nicht mehr möglich
• Datenverwaltung in Anwendung
•
•
•
•
Weiteres Wachstum?
Mehr DB-Server?
Schemaänderungen?
Konfigurationen?
W. Mark Kubacki: „SQL vs. NoSQL“
23.06.2010
12
Systemarchitekturen
• Warum nicht gleich eine bessere Lösung?
W. Mark Kubacki: „SQL vs. NoSQL“
23.06.2010
13
SQL
• Relationale Datenbanken
• SQL
– Verwaltung
– Abfrage
– Transformation
• Programme in PL/SQL
– etwa PostgreSQL: andere Sprachen
W. Mark Kubacki: „SQL vs. NoSQL“
23.06.2010
14
SQL
• „SQL ist…
– kompliziert“
– eine zusätzliche Sprache“
•
•
•
•
„Wir brauchen keine Transaktionen.“
„Funktioniert jetzt nicht mehr.“
„JOIN, JOIN, LEFT JOIN – was mit wem?“
„Sowieso nicht einheitlich, Sprache X schon.“
W. Mark Kubacki: „SQL vs. NoSQL“
23.06.2010
15
RDBMS – sind langsam?
• Datenorganisation
– festes Schema
– Speicherung in Zeilen (?)
• Row- ./. Column(ar)- ./. Correlation-Stores
Person
100
101
OID
1
2
Person
100
101
Name
Alpha
Beta
OID
1
2
Abteilung
A
A
Name
Alpha
Beta
W. Mark Kubacki: „SQL vs. NoSQL“
OID
1
2
Abteilung
A
A
23.06.2010
16
RDBMS – sind unflexibel?
•
•
•
•
•
Schemaänderungen bei Columnar schnell
DBMS = DB + Management System
Storage kann getauscht werden
SQL bleibt
RDBMS bedeutet nicht zwingen auch SQL!
– MonetDB: SQL, MAL, MIL, Xpath…
W. Mark Kubacki: „SQL vs. NoSQL“
23.06.2010
17
Eigene Erfahrungen
• Amazon Xlarge, MySQL:
– 8.000 – 12.000 Zeilen/s
– 50ms mindestens pro Leseoperation
• mit Schlüssel/Wert Speicher (Tokyo Cabinet):
– „SQL in die Anwendung schieben“
– 200.000 Zeilen/s
– <<1ms pro Leseoperation
– Komprimierung möglich
W. Mark Kubacki: „SQL vs. NoSQL“
23.06.2010
18
NoSQL
W. Mark Kubacki: „SQL vs. NoSQL“
23.06.2010
19
NoSQL
• Datenstruktur?
– O(1), O(log N), O(N²)?
•
•
•
•
•
Verteilt?
Schema-Äquivalenz?
Foreign Keys, Trigger?
Abfragesprache?
Schnittstellen zur primären Sprache?
W. Mark Kubacki: „SQL vs. NoSQL“
23.06.2010
20
NoSQL
• Demo: Datenstrukturen
W. Mark Kubacki: „SQL vs. NoSQL“
23.06.2010
21
NoSQL - Datentransformation
Mitarbeiter
ID
1
2
3
4
Name
Alpha
Beta
Gamma
Delta
Alter
25
26
27
28
Mitarbeiter_1
Mitarbeiter_2
Mitarbeiter_3
Mitarbeiter_4
Mitarbeiter_1:Name
Mitarbeiter_2:Name
Mitarbeiter_3:Name
Mitarbeiter_4:Name
Name
Name
Name
Name
W. Mark Kubacki: „SQL vs. NoSQL“
Alpha
Beta
Gamma
Delta
Alpha
Beta
Gamma
Delta
23.06.2010
22
A1
A4
NoSQL – Einsatzbeispiele (1)
Redis oder MySQL
Nginx
Q3
A2
A3
GET
Queue
Q1
Q2
Kommentar-Handler
Kommentar-Prozessor(en)
A – Kommentare werden mit einem konstanten Text beantwortet.
Q – Sie werden in die Queue geschrieben, aus der sich die Prozessoren bedienen.
Q3 – Im Erfolgsfall wird die Seite ergänzt, gerendert und in die DB geschrieben.
GET – Nginx bedient sich bei Lesezugriffen direkt aus der Datenbank.
W. Mark Kubacki: „SQL vs. NoSQL“
23.06.2010
23
NoSQL – Einsatzbeispiele (2)
Static Cache / Memcachedb / Redis / Terracota Ehcache
gewöhnliches Backend
W. Mark Kubacki: „SQL vs. NoSQL“
23.06.2010
24
6.
1
1
4,
9
NoSQL – Einsatzbeispiele (2)
Nginx
Schritte 5-10 nur wenn 3
keine Seite. Schritt 10
liegt außerhalb des
kritischen Pfades.
Nginx
3
2
2
5
8
5
4
Anwendung
3
Redis
oder
MySQL
Redis
oder
MySQL
Anwendung
10
1 – Anfrage
2 – Anfrage weitergereicht
3 – Anwendung an DB
4 – Rohdaten
5 – gerenderte Seite
6 – Antwort auf Anfrage
1 – Anfrage
2 – Nginx liest Redis
3 – gerenderte Seite direkt aus Redis
4 – Antwort auf Anfrage
5 – Anfrage weitergereicht
6-7 – (nicht abgebildet) Anwendung kommuniziert mit Datenbank
8 – gerenderte Seite
9 – Antwort auf Anfrage
10 – gerenderte Seite wird in Redis gespeichert
W. Mark Kubacki: „SQL vs. NoSQL“
23.06.2010
25
NoSQL – Einsatzbeispiele (2)
• Datenstrukturen:
– Queue
– Schlüssel/Wert – Hashliste
• Effizienz:
– Zugriff in O(1) statt O(log N)
– Kapazität Frontends ≤ KVS
W. Mark Kubacki: „SQL vs. NoSQL“
23.06.2010
26
NoSQL – Verteilte Datenbanken
Es gibt auch verteilte RDBMS mit SQL!
– eigentliche Verteilung
– Föderation
• Man zahlt pro CPU oder Rechner.
W. Mark Kubacki: „SQL vs. NoSQL“
23.06.2010
27
NoSQL – Verteilte Datenbanken
Brewer‟s Cap Theorem:
“Consistency, Availability, Tolerance to network
Partitions. Theorem: You can have at most
two of these properties for any shared-data
system.”
W. Mark Kubacki: „SQL vs. NoSQL“
23.06.2010
28
NoSQL – Verteilte Datenbanken
Consistency
Availability
Partition
Tolerance
Nicht: System – Sondern: Algorithmus!
W. Mark Kubacki: „SQL vs. NoSQL“
23.06.2010
29
NoSQL – Verteilte Datenbanken
0-0
1-0
0-1
1-1
W. Mark Kubacki: „SQL vs. NoSQL“
23.06.2010
30
SE Praktiken
• Objekt-Relational Mapper
• Model strikt von anderem trennen
– strikt!
• Mehr als eine DB/DBMS?
• Wo liegt die Hauptlast?
– Kritischer Pfad!
W. Mark Kubacki: „SQL vs. NoSQL“
23.06.2010
31
SE Praktiken
• Requirements Engineering:
– Was erfordern die Geschäftsprozesse des
Kunden?
– „Eventual Consistent Business?“
W. Mark Kubacki: „SQL vs. NoSQL“
23.06.2010
32
SE Praktiken
W. Mark Kubacki: „SQL vs. NoSQL“
23.06.2010
33
SQL vs. „NoSQL“
• Webanwendungen
– Last, Interaktivität
• SQL
– langsam?, kann viel, RDBMS
• „NoSQL“
– Datenstrukturen, Optimierungen
– mehr Aufwand in der „Anwendung“
– leichter einfache Operationen umzusetzen
• Programmierer
– Ausbildung, Fähigkeiten
W. Mark Kubacki: „SQL vs. NoSQL“
23.06.2010
34
Herunterladen