Datenbanken - Eine kurze Einführung
- Objektrelationales Datenbankmodell
- Nicht-Relationales Datenbankmodell
- NoSQL
- Relationales Datenbankmodell
MySQL und Varianten
Ein paar Worte zur Performance
WordPress und Datenbanken
2. Datenbanken – Eine Übersicht
Übersicht von Datenbankmanagementsystemen im Hosting-Umfeld
Fokus auf MySQL und MySQL-nahen Datenbanktypen sowie Blick auf NoSQL
Auf/mit welchen Systemen läuft WordPress
4. Datenbanken - Inhalt
Datenbanken - Eine kurze Einführung
Objektrelationales Datenbankmodell
Nicht-Relationales Datenbankmodell
NoSQL
Relationales Datenbankmodell
MySQL und Varianten
Ein paar Worte zur Performance
WordPress und Datenbanken
5. Datenbanken - Eine kurze Einführung
Eine Datenbank speichert große Datenmengen
Aufgaben bei der Speicherung:
Effizient (z.B. platzsparend)
Widerspruchsfrei
Dauerhaft
In passender Darstellung für Benutzer und Anwendungen (Format)
6. Datenbanken - Eine kurze Einführung
Besteht aus zwei Teilen: DB + DBMS
1) Verwaltungssoftware =
Datenbankmanagementsystem (DBMS)
2) Menge der zu verwaltenden Daten
(Datensätze) =
Datenbank (DB)
Bildquelle: http://www.datenbanken-verstehen.de/wordpress/dbv/uploads/datenbank.jpg
7. 1) Datenbankmanagementsystem
Interne Organisation der Speicherung der Daten
Kontrolle aller lesenden und schreibenden Zugriffe (Benutzer und
Zugriffsverwaltung)
Datenbanksprache zur Abfrage und Verwaltung der Daten
nutzt ein Datenbankmodell das bestimmt, auf welche Art und Weise Daten in
einem Datenbanksystem gespeichert und bearbeitet werden können:
Hierarchisches Datenbankmodell
Netzwerkdatenbankmodell
Objektrelationales Datenbankmodell
Objektorientiertes Datenbankmodell
Nicht-Relationales Datenbankmodell, NoSQL
Relationales Datenbankmodell
8. Eine Auswahl
Liste bei Wikipedia:
https://de.wikipedia.org/wiki/Liste_der_Datenbankmanagementsysteme
Ranking:
https://db-engines.com/de/ranking/relational+dbms
10. PostgreSQL
PostgreSQL, kurz Postgres
Seit 1997 Open-Source
Aktueller Versionszweig: 10.x
Galt lange Jahre als „das fortschrittlichste Open-Source-Datenbanksystem“
Einsatz bei großen Datensätzen:
unbegrenzte Größe der Datenbank
einzelne Tabelle bis 32 TB
Einzelner Datensatz bis 1,6 TB
Bildquelle: https://www.postgresql.org
12. NoSQL-Datenbanken
MongoDB
von "huMONGOus", sprich "extrem groß"
2009, Open-Source seit 2012
aktueller Versionszweig: 3.4.x
In C++ geschrieben, kann mit allen JSON-ähnlichen Dokumenten arbeiten
am weitesten verbreitete NoSQL-Datenbank; „Allzweck-Datenbank“
Direkte MongoDB-Alternativen
ArangoDB (2011 AvocadoDB)
Percona Server for MongoDB (seit v3.0 - 2015)
Bildquelle: https://webassets.mongodb.com
13. NoSQL-Datenbanken
CouchDB
Erlang (Ericsson) & Javascript - Apache Foundation
2005
Zuverlässigkeit
Cassandra
Java - Apache Foundation
Bei Facebook entwickelt und 2008 veröffentlicht
Beteiligungen von IBM, Rackspace und Twitter in den Jahren danach
Ausfallsicherheit
14. NoSQL-Datenbanken
Riak
2009 – Basho Technologies
Setzt auf den Veröffentlichungen von DynamoDB auf
Key-Value-Store
Amazon DynamoDB
Von AWS entwickelt (ca. 2007)
Auch lokal einsetzbar
Hochgradig skalierbar durch Einsatz im AWS
Key-Value-Store oder dokumentenorientiert
15. NoSQL-Datenbanken
Begriffserklärung: Key-Value-Store
Key-Value Stores können lediglich Paare von Schlüsseln und Werten abspeichern, sowie
die Werte anhand des Schlüssels wieder zurückliefern. Ressourcenschonend, dafür
meist weniger komplex.
Begriffserklärung: Dokumentenorientiert
Daten werden in Dokumenten anstelle von Tabellen gespeichert. Ein Dokument ist in
diesem Zusammenhang eine strukturierte Zusammenstellung bestimmter Daten also
keine „Datei“. Durch die kaum vorhandenen Einschränkung beim Aufbau der
Dokumente ergeben sich umfassende Gestaltungsfreiheiten.
16. NoSQL-Datenbanken
Redis
Einfacher Key-Value-Store
2009 - Salvatore Sanfilippo & Redis Labs & Sponsors
In-Memory-Datenbank
SQLite
zählt streng genommen nicht zu den NoSQL-Datenbanken
Reine "In-Memory-Datenbank". Keine Installation oder Konfiguration. SQLite lädt
alle Daten aus einer Datendatei in den Speicher (Daten weg bei Crash, wenn nicht
gespeichert).
17. Am Rande: Elasticsearch und Solr
Elasticsearch
Keine Datenbank!
Suchmaschine auf Basis von Lucene*
In Java geschrieben
speichert Suchergebnisse in JSON,
Ausgabe erfolgt über ein RESTful-
Webinterface
Solr
Keine Datenbank!
Ein in Lucene* enthaltenes Servlet
älter als EL und "näher" / direkter
an Lucene
kommuniziert mittels HTTP und
kann verschiedene Dateiformate
wie z.B. XML, JSON oder PDF.
Bezeichnung stand für „Search on
Lucene and Resin“
* Apache Lucene ist eine in Java geschriebene Volltextsuchmaschine
20. Relationale Datenbanken
MySQL
Seit 1994
gekauft 2010 von Oracle
MySQL Community Edition (frei verfügbar)
Editionen mit erweiterten Funktionen, Verwaltungswerkzeugen, technischen
Supportleistungen etc.
MySQL Standard Edition
MySQL Enterprise Edition
MySQL Cluster CGE
Bildquelle: https://www.mysql.com
21. Versionsübersicht
MySQL 5.6
Premier Support End, Februar 2018
Extended Support bis Februar 2021
MySQL 5.7
Aktuelle Stable-Version
Viele Verbesserungen bei der Inno-DB Engine > bessere Performance
Verbesserte Replikation und Logging
Native JSON Unterstützung
MySQL 8
In Entwicklung
Standardzeichensatz UTF8 statt Latin1
Bildquelle: https://www.mysql.com
22. MySQL - Percona
MySQL Community Edition
offizielles MySQL (Oracle)
aktuelle Version 5.7.x
Percona Server for MySQL
2006 - Percona LLC
aktuelle Version 5.7.x
legt Wert auf Performance und
Skalierbarkeit
Einsatz z.B. in Debian 9
Featurevergleich:
https://www.percona.com/software/mysql-database/percona-server/feature-comparison
23. MySQL - MariaDB
MySQL Community Edition
offizielles MySQL (Oracle)
aktuelle Version 5.7.x
MariaDB
2009 - MariaDB Foundation
aktuelle Version 10.2
Standard-Datenbank in vielen
Linux-Distributionen, z.B. in
Ubuntu seit 14.04,Fedora ab
Version 19, seit RHEL 7
Entfernt sich schrittweise von
MySQL
Featurevergleich:
https://mariadb.com/kb/en/library/mariadb-vs-mysql-features/
24. Exkurs: Google Cloud SQL for MySQL
Google Cloud SQL for MySQL - https://cloud.google.com/sql/
Nur in Google Cloud SQL nutzbar
Skalierbarkeit, z.B. Server mit bis zu 32 Prozessorkernen und 200 GB RAM
25. Exkurs: Amazon Aurora
Amazon Aurora - https://aws.amazon.com/de/rds/aurora/details/
Nur mit Amazon AWS verwendbar
Bei Verwendung der InnoDB-Speicher-Engine voll kompatibel mit MySQL 5.6
Bis zu 5 mal performanter als Standard-MySQL (eigene Angabe)
26. Exkurs: Amazon Aurora
Wordpress-Performance
2-3 mal performanter bei WordPress nach Tests von 2015
Setup komplett über AWS realisiert
https://pagely.com/blog/2015/08/we-benchmarked-amazons-new-aurora-database-
for-use-with-wordpress-results-within/
Alternative Tests mit Aurora gegen ein Percona-MySQL-Setup mit Galera-Cluster
Hier verliert Aurora deutlich bei den Themen Performance und Ausfallsicherheit
http://www.tusacentral.net/joomla/index.php/mysql-blogs/175-aws-aurora-
benchmarking-blast-or-splash.html (2015)
https://www.percona.com/blog/2016/05/26/aws-aurora-benchmarking-part-2/
(2016)
28. Ein paar Worte zur Performance
NoSQL
+ viele Schreib-/Leseanfragen
- schwache Garantien hinsichtlich
Konsistenz > unsichere Transaktionen
-/+ verteilte Datenbanken mit
redundanter Datenhaltung auf vielen
Servern, meist durch eine verteilte
Hashtabelle (Prüfsumme)
+ einfache Skalierung > Ausfälle
einzelner Server
Relationale Datenbanken
+ effizient bei häufigen, aber kleinen
Transaktionen
+ große Batch-Transaktionen mit
seltenen Schreibzugriffen
- wenn beides zusammentrifft: hohen
Datenanforderungen und häufigen
Datenänderungen
- bei datenintensiven Applikationen
wie Indexierung großer
Dokumentmengen, Webseiten mit
hohen Lastaufkommen, Streaming-
Media-Applikationen
29. Ein paar Worte zur Performance
NoSQL vs. MySQL - Technische Unterschiede:
https://www.percona.com/resources/technical-presentations/mysql-vs-mongodb-
percona-university-budapest
NoSQL vs. MySQL – Wann welche Version verwenden:
https://www.percona.com/resources/technical-presentations/mysql-vs-mongodb-
choosing-right-technology-your-application-scale
30. Ein paar Worte zur Performance
Es kommt darauf an…
Percona oder MariaDB vor „Standard-MySQL“
Cluster / mehrere Server bei Ausfallsicherheit und hoher Performance
Amazon Aurora und Cloud-Anbieter am besten im jeweiligen Umfeld
verwenden (AWS, Google-Cloud etc.)
NoSQL bei „BigData“: häufige Zugriffe auf große Datensätze
NoSQL bei reiner Ausgabe (Lesen, ohne JOINS bei Tabellen)
32. WordPress und Datenbanken
F: Mit welchem Datenbankmanagementsystem funktioniert WordPress?
A: MySQL
Offiziell - und auch praktisch - nur mit diesem relationalem DBMS.
Dies ist nicht nur dem DB-Aufbau selbst, sondern auch vielen Plugins geschuldet.
33. WordPress und MySQL
Damit sind aber alle „Ableger“ und Forks von MySQL nutzbar:
Percona Server for MySQL
MariaDB
Amazon Aurora
Google Cloud SQL
…
Aber: MariaDB läuft vom „offiziellen“ MySQL zunehmend auseinander und hat
immer mehr Inkompatibilitäten
https://mariadb.com/kb/en/library/mariadb-vs-mysql-compatibility/
34. WordPress und Postgres und NoSQL
PostgreSQL (Objektrelationales Datenbankmodell) war nur inoffiziell
unterstützt und ist nicht empfohlen
https://codex.wordpress.org/Using_Alternative_Databases
Über Umwege sind auch NoSQL-Datenbanken nutzbar. Allerdings nur als Export
der Daten z.B. in eine MongoDB mittels REST-API:
https://zapier.com/zapbook/mongodb/wordpress/
https://gabrieleromanato.name/how-to-export-data-from-wordpress-to-mongodb