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

Was ist angesagt?

Apple iOS - Webservices
Apple iOS - WebservicesApple iOS - Webservices
Apple iOS - Webservices
messeb
 
Dnug35 ak-dev.071111-beyond
Dnug35 ak-dev.071111-beyondDnug35 ak-dev.071111-beyond
Dnug35 ak-dev.071111-beyond
Ulrich Krause
 
Wie ich durch Support und Übersetzung ein (besserer) Entwickler geworden bin
Wie ich durch Support und Übersetzung ein (besserer) Entwickler geworden binWie ich durch Support und Übersetzung ein (besserer) Entwickler geworden bin
Wie ich durch Support und Übersetzung ein (besserer) Entwickler geworden bin
Torsten Landsiedel
 
Varnish PHP Unconference Hamburg 2012
Varnish PHP Unconference Hamburg 2012Varnish PHP Unconference Hamburg 2012
Varnish PHP Unconference Hamburg 2012
Florian Holzhauer
 
Karlsruher Entwicklertag 2021: Turbo powered Web Apps
Karlsruher Entwicklertag 2021: Turbo powered Web AppsKarlsruher Entwicklertag 2021: Turbo powered Web Apps
Karlsruher Entwicklertag 2021: Turbo powered Web Apps
Jan Stamer
 
JCON 2021: Turbo powered Web Apps
JCON 2021: Turbo powered Web AppsJCON 2021: Turbo powered Web Apps
JCON 2021: Turbo powered Web Apps
Jan Stamer
 
Baustein 07 grundlagen-html-css-php
Baustein 07 grundlagen-html-css-phpBaustein 07 grundlagen-html-css-php
Baustein 07 grundlagen-html-css-php
Michael Kollmannsberger
 

Was ist angesagt? (8)

Apple iOS - Webservices
Apple iOS - WebservicesApple iOS - Webservices
Apple iOS - Webservices
 
Dnug35 ak-dev.071111-beyond
Dnug35 ak-dev.071111-beyondDnug35 ak-dev.071111-beyond
Dnug35 ak-dev.071111-beyond
 
Wie ich durch Support und Übersetzung ein (besserer) Entwickler geworden bin
Wie ich durch Support und Übersetzung ein (besserer) Entwickler geworden binWie ich durch Support und Übersetzung ein (besserer) Entwickler geworden bin
Wie ich durch Support und Übersetzung ein (besserer) Entwickler geworden bin
 
Varnish PHP Unconference Hamburg 2012
Varnish PHP Unconference Hamburg 2012Varnish PHP Unconference Hamburg 2012
Varnish PHP Unconference Hamburg 2012
 
Karlsruher Entwicklertag 2021: Turbo powered Web Apps
Karlsruher Entwicklertag 2021: Turbo powered Web AppsKarlsruher Entwicklertag 2021: Turbo powered Web Apps
Karlsruher Entwicklertag 2021: Turbo powered Web Apps
 
Api services
Api servicesApi services
Api services
 
JCON 2021: Turbo powered Web Apps
JCON 2021: Turbo powered Web AppsJCON 2021: Turbo powered Web Apps
JCON 2021: Turbo powered Web Apps
 
Baustein 07 grundlagen-html-css-php
Baustein 07 grundlagen-html-css-phpBaustein 07 grundlagen-html-css-php
Baustein 07 grundlagen-html-css-php
 

Andere mochten auch

ADO.NET
ADO.NETADO.NET
La gestion de projet Agile
La gestion de projet AgileLa gestion de projet Agile
La gestion de projet Agile
Jonathan Roy
 
Linguagem SQL (com MySQL)
Linguagem SQL (com MySQL)Linguagem SQL (com MySQL)
Linguagem SQL (com MySQL)
Marco Pinheiro
 
Java - Introdução a banco de dados
Java - Introdução a banco de dadosJava - Introdução a banco de dados
Java - Introdução a banco de dados
Sérgio Souza Costa
 
Replicacao Object Sistemas
Replicacao Object SistemasReplicacao Object Sistemas
Replicacao Object Sistemas
taniamaciel
 
Manual de Usuário - TCC André Luiz Jamarino Abekawa
Manual de Usuário - TCC André Luiz Jamarino AbekawaManual de Usuário - TCC André Luiz Jamarino Abekawa
Manual de Usuário - TCC André Luiz Jamarino Abekawa
André Luiz Jamarino Abekawa
 
Minicurso de Cakephp
Minicurso de CakephpMinicurso de Cakephp
Minicurso de Cakephp
Cauan Cabral
 
Junções e subconsultas
Junções e subconsultasJunções e subconsultas
Junções e subconsultas
julianaveregue
 
Apostila PhP com Wamp, 2a. parte
Apostila PhP com Wamp, 2a. parteApostila PhP com Wamp, 2a. parte
Apostila PhP com Wamp, 2a. parte
Ilton Barbosa
 
6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos...
6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos...6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos...
6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos...
Manuel Menezes de Sequeira
 
Agile Management
Agile ManagementAgile Management
Agile Management
Fábio Aguiar
 
The 8051 assembly language
The 8051 assembly languageThe 8051 assembly language
The 8051 assembly language
hemant meena
 
mySQL - INSERT INTO
mySQL - INSERT INTOmySQL - INSERT INTO
mySQL - INSERT INTO
lehrerfreund
 
Comment être agile dans un contexte non lié aux TI ?
Comment être agile dans un contexte non lié aux TI ?Comment être agile dans un contexte non lié aux TI ?
Comment être agile dans un contexte non lié aux TI ?
Pyxis Technologies
 
Convegno la mela nel mondo interpoma bz - 16-11-2012 1+2 - martin thalheime...
Convegno la mela nel mondo   interpoma bz - 16-11-2012 1+2 - martin thalheime...Convegno la mela nel mondo   interpoma bz - 16-11-2012 1+2 - martin thalheime...
Convegno la mela nel mondo interpoma bz - 16-11-2012 1+2 - martin thalheime...
Image Line
 
Scrum Guide
Scrum GuideScrum Guide
Scrum Guide
Denis Voituron
 
area econòmica i patrimonial
area econòmica i patrimonialarea econòmica i patrimonial
area econòmica i patrimonial
Sandro
 
Canvi climàtic: Efectes i percepció social
Canvi climàtic: Efectes i percepció socialCanvi climàtic: Efectes i percepció social
Canvi climàtic: Efectes i percepció social
Josep Lluís Ruiz
 
Arquitectura de Computadores (II Bimestre)
Arquitectura de Computadores (II Bimestre)Arquitectura de Computadores (II Bimestre)
Arquitectura de Computadores (II Bimestre)
Videoconferencias UTPL
 

Andere mochten auch (20)

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

Ähnlich wie Intro to scaling Databases

Daos
DaosDaos
Webanwendungen mit Apache HBase entwickeln
Webanwendungen mit Apache HBase entwickelnWebanwendungen mit Apache HBase entwickeln
Webanwendungen mit Apache HBase entwickeln
Roman Roelofsen
 
mongoDB im Einsatz - Grundlagen
mongoDB im Einsatz - GrundlagenmongoDB im Einsatz - Grundlagen
mongoDB im Einsatz - Grundlagen
inovex GmbH
 
Spezialitäten der Oracle Lizenzierung - DOAG Konferenz 2010 - OPITZ CONSULTI...
Spezialitäten der Oracle Lizenzierung -  DOAG Konferenz 2010 - OPITZ CONSULTI...Spezialitäten der Oracle Lizenzierung -  DOAG Konferenz 2010 - OPITZ CONSULTI...
Spezialitäten der Oracle Lizenzierung - DOAG Konferenz 2010 - OPITZ CONSULTI...
OPITZ CONSULTING Deutschland
 
Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools
Javaland 2016 - Flyway vs. LiquiBase - Battle der DatenbankmigrationstoolsJavaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools
Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools
Stephan Kaps
 
Datenbank-Refactoring mit LiquiBase
Datenbank-Refactoring mit LiquiBaseDatenbank-Refactoring mit LiquiBase
Datenbank-Refactoring mit LiquiBase
Benjamin Schmid
 
Datenbanken - Eine Übersicht (WPMeetUP München)
Datenbanken - Eine Übersicht (WPMeetUP München)Datenbanken - Eine Übersicht (WPMeetUP München)
Datenbanken - Eine Übersicht (WPMeetUP München)
Dietmar Leher
 
RoofTop Brains & BBQ: Ein Gästbuch für China
RoofTop Brains & BBQ: Ein Gästbuch für ChinaRoofTop Brains & BBQ: Ein Gästbuch für China
RoofTop Brains & BBQ: Ein Gästbuch für China
Johann-Peter Hartmann
 
20160310_ModernApplicationDevelopment_NoSQL_KPatenge
20160310_ModernApplicationDevelopment_NoSQL_KPatenge20160310_ModernApplicationDevelopment_NoSQL_KPatenge
20160310_ModernApplicationDevelopment_NoSQL_KPatenge
Karin Patenge
 
Performanter, hochskalierbarer Web 2.0-Dienst in Ruby
Performanter, hochskalierbarer Web 2.0-Dienst in RubyPerformanter, hochskalierbarer Web 2.0-Dienst in Ruby
Performanter, hochskalierbarer Web 2.0-Dienst in Ruby
vesparun
 
SimpleDB - Chancen einer Cloud Datenbank
SimpleDB - Chancen einer Cloud DatenbankSimpleDB - Chancen einer Cloud Datenbank
SimpleDB - Chancen einer Cloud Datenbank
ONE Schweiz
 
Where are all transactions gone? Was in_der_cloud_alles_verboten_ist
Where are all transactions gone? Was in_der_cloud_alles_verboten_istWhere are all transactions gone? Was in_der_cloud_alles_verboten_ist
Where are all transactions gone? Was in_der_cloud_alles_verboten_ist
Ramon Anger
 
Best Practices SharePoint and SQL Installation
Best Practices SharePoint and SQL InstallationBest Practices SharePoint and SQL Installation
Best Practices SharePoint and SQL Installation
Samuel Zürcher
 
Scaling Rails
Scaling RailsScaling Rails
Scaling Rails
Jonathan Weiss
 
Drupal 7 auf Amazon Web Services
Drupal 7 auf Amazon Web ServicesDrupal 7 auf Amazon Web Services
Drupal 7 auf Amazon Web Services
Sven Paulus
 
DB2 High Availability für IBM Connections, Sametime oder Traveler
DB2 High Availability für IBM Connections, Sametime oder TravelerDB2 High Availability für IBM Connections, Sametime oder Traveler
DB2 High Availability für IBM Connections, Sametime oder Traveler
Nico Meisenzahl
 
SimpleVOC OPEN – Yet another Memcached? (Froscon 2010 talk, german)
SimpleVOC OPEN – Yet another Memcached? (Froscon 2010 talk, german)SimpleVOC OPEN – Yet another Memcached? (Froscon 2010 talk, german)
SimpleVOC OPEN – Yet another Memcached? (Froscon 2010 talk, german)
triagens
 
Nosql Hintergründe und Anwendungen
Nosql Hintergründe und AnwendungenNosql Hintergründe und Anwendungen
Nosql Hintergründe und Anwendungen
Andy Whole
 

Ähnlich wie Intro to scaling Databases (20)

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