SlideShare ist ein Scribd-Unternehmen logo
Einführung in die  Datenbank-Skalierung  bei WebApps Heiko Seebach
Schritt 1: Alles auf einem Host Host DB Web Server Web Server
Schritt 2: zwei Hosts Host Host DB Web Server Web Server
Schritt 3: mehrere WebServer-Hosts Host DB Host Web Server Web Server Host Web Server Web Server LB
Schritt 4a: mehrere DB-Hosts - Replication Infrastruktur muss mit mehreren DBs umgehen können intern:Multi-DB-Connections in Rails extern: SQLRelay Host Host DB-Master Host Web Server Web Server Host Web Server Web Server Host DB-Slave LB
Schritt 4b: mehrere DB-Hosts - Cluster Host DB-Master Host Web Server Web Server Host Web Server Web Server Host DB-Master LB
Und nun? Webserver skalieren mit weiteren Hosts linear weiter, die DB nicht! Mächtigere DB-Hosts Immer mehr manuell optimierte DB-Statements Komplexere DB-Setups: z.B. Cluster plus Master/Slave-Replication in mehreren Kaskaden Partitionierung/Sharding Sehr ähnlich, größter Unterschied: Partitionierung -> oldschool Sharding -> Hype :-)
Schritt 5: DB-Partitionierung/Sharding Zentrale User/Naming-DB,  nur grundlegende User-Daten: Authentifizierung, NLS, weiterführende DB-Adresse Host Host Zentrale DB  User/Naming Host Web Server Web Server Host Web Server Web Server Host DB  Nr. 1 LB
Sharding ID-Management:  kein Auto-Increment! User-IDs der zentralen User-DB überall nutzen Für andere Entitäten: Zentrale ID-Vergabe (in Chargen) Inkrement um Anzahl der DBs plus Offset Typischerweise große Code-Änderungen notwendig
Sharding Denormalisierte Daten Pro: weniger Joins, lokale Operationen Con: mehr Redundanz Parallelisierte Daten über viele physische Hosts Pro:  günstigere HW kleinere Datenmengen HA: einfachere Backup-Konzepte, etc Keine Replication notwendig
Sharding Aufsplitten nach welchen Kriterien? Con: es gibt nicht  die  richtige Antwort ”Rebalancing” von Shards Con: oft heftige Downtime wegen Migration Con: solide Vorarbeit notwendig, für einen Fall, der nur evtl. notwendig wird SQL-Joins: Con: Über DB-Grenzen hinweg?  Con: Web2.-0/Social-Networks: ”Jeder kann mit Jedem” Junge Thematik: Con: wenig Expertise Con: wenig (keine?) ausgereiften Bibliotheken -> ”Selbst ist die Frau”
Schritt 5: DB-Partitionierung/Sharding Host Host Host Host Zentrale DB User/Naming Host Web Server Web Server Host DB-Master- Cluster  Nr. 1 LB Host Static Files  Server Host langlaufende  Prozesse  Host Host DB-Slaves Nr. 1 Host Session/ Suche/ Reporting
Lösungen? Vorher nachdenken! Sharding nur als ”letzte Lösung” sehen? Trade-Off zwischen  Aufwand am Anfang und  erst wenn es notwendig wird -> YAGNI? Aber: Wenn absehbar, dass sharding sein muss, dann lieber heute als morgen schon implementieren und mitlaufen lassen, nicht den ”Big-Bang” abwarten
Und was noch? Weitere Ansätze zur DB-Entlastung Session-Storage auslagern Weitere DB-Aufgaben auf replizierte Slaves  Textsuche Stammdaten-Import-Export Reporting Backup Unterschied OLTP/OLAP leben (evtl. DWH) Generell: Langlaufende Operationen auslagern (hilft auch dem Webserver :-)
Weitere Ansätze zur DB-Entlastung Squid - Caching-Proxy Memcached – wahnsinnig schnell, einfach Framework-spezifisches Caching Sehr abhängig von den Anforderungen! Paradebeispiel Wikipedia: 78% squid, 7% memcached -> DB nur 15%
Weblinks Squid:  http://www.squid-cache.org/ Memcached:  http://www.danga.com/memcached/ SQLRelay:  http://sqlrelay.sourceforge.net/ Hibernate Shards:  http://www.hibernate.org/414.html Rails-spezifisch: BackgrounDRb (Hintergrund-Prozesse):  http://backgroundrb.rubyforge.org/ Interlock (memcache-lib):  http://blog.evanweaver.com/files/doc/fauna/interlock/files/README.html Ferret (Textsuche):  http://projects.jkraemer.net/acts_as_ferret/   Heiko Seebach  http://www.xing.com/profile/Heiko_Seebach

Weitere ähnliche Inhalte

PDF
Skalieren von WordPress & WooCommerce
ODP
Bidirektionale Verbindungen für Webanwendungen
PDF
Fehlersuche in Joomla
PPTX
Blogwerk WordPress für die Corporate Website
PPTX
Einführung in HTTP/2
PDF
Was bedeutet BlackBerry 10 für Unternehmen?
PDF
Startups in „Die Höhle der Löwen“ - SEODAY 2016
PDF
Der Word-to-EPUB-Workflow des GRIN Verlags
Skalieren von WordPress & WooCommerce
Bidirektionale Verbindungen für Webanwendungen
Fehlersuche in Joomla
Blogwerk WordPress für die Corporate Website
Einführung in HTTP/2
Was bedeutet BlackBerry 10 für Unternehmen?
Startups in „Die Höhle der Löwen“ - SEODAY 2016
Der Word-to-EPUB-Workflow des GRIN Verlags

Was ist angesagt? (8)

PDF
Apple iOS - Webservices
PPT
Dnug35 ak-dev.071111-beyond
PDF
Wie ich durch Support und Übersetzung ein (besserer) Entwickler geworden bin
KEY
Varnish PHP Unconference Hamburg 2012
PDF
Karlsruher Entwicklertag 2021: Turbo powered Web Apps
PPTX
Api services
PDF
JCON 2021: Turbo powered Web Apps
PDF
Baustein 07 grundlagen-html-css-php
Apple iOS - Webservices
Dnug35 ak-dev.071111-beyond
Wie ich durch Support und Übersetzung ein (besserer) Entwickler geworden bin
Varnish PHP Unconference Hamburg 2012
Karlsruher Entwicklertag 2021: Turbo powered Web Apps
Api services
JCON 2021: Turbo powered Web Apps
Baustein 07 grundlagen-html-css-php
Anzeige

Andere mochten auch (20)

PDF
La gestion de projet Agile
PDF
Linguagem SQL (com MySQL)
PDF
Java - Introdução a banco de dados
PPT
Replicacao Object Sistemas
PDF
Manual de Usuário - TCC André Luiz Jamarino Abekawa
ODP
Minicurso de Cakephp
PDF
Junções e subconsultas
PDF
Apostila PhP com Wamp, 2a. parte
PPTX
6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos...
PDF
Agile Management
PPT
The 8051 assembly language
PPT
mySQL - INSERT INTO
PDF
Comment être agile dans un contexte non lié aux TI ?
PDF
Convegno la mela nel mondo interpoma bz - 16-11-2012 1+2 - martin thalheime...
PPTX
Scrum Guide
PPT
area econòmica i patrimonial
PPT
Lliço5 Cinèticaquímica
PPT
Canvi climàtic: Efectes i percepció social
PPT
Arquitectura de Computadores (II Bimestre)
La gestion de projet Agile
Linguagem SQL (com MySQL)
Java - Introdução a banco de dados
Replicacao Object Sistemas
Manual de Usuário - TCC André Luiz Jamarino Abekawa
Minicurso de Cakephp
Junções e subconsultas
Apostila PhP com Wamp, 2a. parte
6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos...
Agile Management
The 8051 assembly language
mySQL - INSERT INTO
Comment être agile dans un contexte non lié aux TI ?
Convegno la mela nel mondo interpoma bz - 16-11-2012 1+2 - martin thalheime...
Scrum Guide
area econòmica i patrimonial
Lliço5 Cinèticaquímica
Canvi climàtic: Efectes i percepció social
Arquitectura de Computadores (II Bimestre)
Anzeige

Ähnlich wie Intro to scaling Databases (20)

PDF
Query Result Caching
PPT
PDF
Webanwendungen mit Apache HBase entwickeln
PDF
mongoDB im Einsatz - Grundlagen
PPTX
Spezialitäten der Oracle Lizenzierung - DOAG Konferenz 2010 - OPITZ CONSULTI...
PDF
Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools
PDF
Datenbank-Refactoring mit LiquiBase
PPTX
Datenbanken - Eine Übersicht (WPMeetUP München)
PDF
RoofTop Brains & BBQ: Ein Gästbuch für China
PDF
20160310_ModernApplicationDevelopment_NoSQL_KPatenge
PDF
Performanter, hochskalierbarer Web 2.0-Dienst in Ruby
PDF
SimpleDB - Chancen einer Cloud Datenbank
PDF
Where are all transactions gone? Was in_der_cloud_alles_verboten_ist
PPTX
Best Practices SharePoint and SQL Installation
PPT
Scaling Rails
PPTX
Drupal 7 auf Amazon Web Services
PDF
DB2 High Availability für IBM Connections, Sametime oder Traveler
PDF
SimpleVOC OPEN – Yet another Memcached? (Froscon 2010 talk, german)
PDF
20131028 named braches
PDF
Nosql Hintergründe und Anwendungen
Query Result Caching
Webanwendungen mit Apache HBase entwickeln
mongoDB im Einsatz - Grundlagen
Spezialitäten der Oracle Lizenzierung - DOAG Konferenz 2010 - OPITZ CONSULTI...
Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools
Datenbank-Refactoring mit LiquiBase
Datenbanken - Eine Übersicht (WPMeetUP München)
RoofTop Brains & BBQ: Ein Gästbuch für China
20160310_ModernApplicationDevelopment_NoSQL_KPatenge
Performanter, hochskalierbarer Web 2.0-Dienst in Ruby
SimpleDB - Chancen einer Cloud Datenbank
Where are all transactions gone? Was in_der_cloud_alles_verboten_ist
Best Practices SharePoint and SQL Installation
Scaling Rails
Drupal 7 auf Amazon Web Services
DB2 High Availability für IBM Connections, Sametime oder Traveler
SimpleVOC OPEN – Yet another Memcached? (Froscon 2010 talk, german)
20131028 named braches
Nosql Hintergründe und Anwendungen

Intro to scaling Databases

  • 1. Einführung in die Datenbank-Skalierung bei WebApps Heiko Seebach
  • 2. Schritt 1: Alles auf einem Host Host DB Web Server Web Server
  • 3. Schritt 2: zwei Hosts Host Host DB Web Server Web Server
  • 4. Schritt 3: mehrere WebServer-Hosts Host DB Host Web Server Web Server Host Web Server Web Server LB
  • 5. Schritt 4a: mehrere DB-Hosts - Replication Infrastruktur muss mit mehreren DBs umgehen können intern:Multi-DB-Connections in Rails extern: SQLRelay Host Host DB-Master Host Web Server Web Server Host Web Server Web Server Host DB-Slave LB
  • 6. Schritt 4b: mehrere DB-Hosts - Cluster Host DB-Master Host Web Server Web Server Host Web Server Web Server Host DB-Master LB
  • 7. Und nun? Webserver skalieren mit weiteren Hosts linear weiter, die DB nicht! Mächtigere DB-Hosts Immer mehr manuell optimierte DB-Statements Komplexere DB-Setups: z.B. Cluster plus Master/Slave-Replication in mehreren Kaskaden Partitionierung/Sharding Sehr ähnlich, größter Unterschied: Partitionierung -> oldschool Sharding -> Hype :-)
  • 8. Schritt 5: DB-Partitionierung/Sharding Zentrale User/Naming-DB, nur grundlegende User-Daten: Authentifizierung, NLS, weiterführende DB-Adresse Host Host Zentrale DB User/Naming Host Web Server Web Server Host Web Server Web Server Host DB Nr. 1 LB
  • 9. Sharding ID-Management: kein Auto-Increment! User-IDs der zentralen User-DB überall nutzen Für andere Entitäten: Zentrale ID-Vergabe (in Chargen) Inkrement um Anzahl der DBs plus Offset Typischerweise große Code-Änderungen notwendig
  • 10. Sharding Denormalisierte Daten Pro: weniger Joins, lokale Operationen Con: mehr Redundanz Parallelisierte Daten über viele physische Hosts Pro: günstigere HW kleinere Datenmengen HA: einfachere Backup-Konzepte, etc Keine Replication notwendig
  • 11. Sharding Aufsplitten nach welchen Kriterien? Con: es gibt nicht die richtige Antwort ”Rebalancing” von Shards Con: oft heftige Downtime wegen Migration Con: solide Vorarbeit notwendig, für einen Fall, der nur evtl. notwendig wird SQL-Joins: Con: Über DB-Grenzen hinweg? Con: Web2.-0/Social-Networks: ”Jeder kann mit Jedem” Junge Thematik: Con: wenig Expertise Con: wenig (keine?) ausgereiften Bibliotheken -> ”Selbst ist die Frau”
  • 12. Schritt 5: DB-Partitionierung/Sharding Host Host Host Host Zentrale DB User/Naming Host Web Server Web Server Host DB-Master- Cluster Nr. 1 LB Host Static Files Server Host langlaufende Prozesse Host Host DB-Slaves Nr. 1 Host Session/ Suche/ Reporting
  • 13. Lösungen? Vorher nachdenken! Sharding nur als ”letzte Lösung” sehen? Trade-Off zwischen Aufwand am Anfang und erst wenn es notwendig wird -> YAGNI? Aber: Wenn absehbar, dass sharding sein muss, dann lieber heute als morgen schon implementieren und mitlaufen lassen, nicht den ”Big-Bang” abwarten
  • 14. Und was noch? Weitere Ansätze zur DB-Entlastung Session-Storage auslagern Weitere DB-Aufgaben auf replizierte Slaves Textsuche Stammdaten-Import-Export Reporting Backup Unterschied OLTP/OLAP leben (evtl. DWH) Generell: Langlaufende Operationen auslagern (hilft auch dem Webserver :-)
  • 15. Weitere Ansätze zur DB-Entlastung Squid - Caching-Proxy Memcached – wahnsinnig schnell, einfach Framework-spezifisches Caching Sehr abhängig von den Anforderungen! Paradebeispiel Wikipedia: 78% squid, 7% memcached -> DB nur 15%
  • 16. Weblinks Squid: http://www.squid-cache.org/ Memcached: http://www.danga.com/memcached/ SQLRelay: http://sqlrelay.sourceforge.net/ Hibernate Shards: http://www.hibernate.org/414.html Rails-spezifisch: BackgrounDRb (Hintergrund-Prozesse): http://backgroundrb.rubyforge.org/ Interlock (memcache-lib): http://blog.evanweaver.com/files/doc/fauna/interlock/files/README.html Ferret (Textsuche): http://projects.jkraemer.net/acts_as_ferret/ Heiko Seebach http://www.xing.com/profile/Heiko_Seebach