Skalierbarkeit bei vielen Datensätzen

Hallo,

wie verhält sich MySQL, wenn die Anzahl der Datensätze in einer Tabelle stark ansteigt?

Ich bin gerade mit einem Projekt beschäftigt… eine spezialisierte Internet-Datenbank für ca. 20000 Benutzer. Das Problem, wenn die Benutzer diese Datenbank wirklich „ausnutzen“, kann die „Haupttabelle“ auf ca. 10 MILLIARDEN (10.000.000.000) Datensätze anwachsen. Ich kann mir nicht vorstellen, dass die Datenbank dann noch flüssig läuft.

Ich hab auch schon eine „kleine“ Lösung, die das ganze auf 4 Tabellen aufteilt. Dann sind’s jedoch noch immer mehr als 2 Milliarden Datensätze pro Tabelle. Die „große“ Lösung ist etwas aufwendiger und verteilt alles auf ca. 100 Tabellen, je nachdem. Da würde ich dann „etwas mehr“ Arbeit mit haben (was ich nicht unbedingt möchte).

Hat jemand mit solch riesigen Datenmengen Erfahrung?
Könnt ihr mir einen guten Rat geben?

Liebe Grüße,
Rogge

hol dir doch mal das benchmark white paper http://www.mysql.de/why-mysql/benchmarks/

Hallo Rogge!

wie verhält sich MySQL, wenn die Anzahl der Datensätze in
einer Tabelle stark ansteigt?

Das hängt hauptsächlich vom DB-Designer ab, aber auch von der zur Verfügung stehenden Hardware. Der DB-Designer muss beim Entwurf der DB-Struktur die Art der Lese- und Schreibzugriffe berücksichtigen und darauf basierend passende Indexe erzeugen.

Die Hardware selbst sollte natürlich auch ausreichend dimensioniert sein, damit MySQL auch Informationen cachen kann (das wiederum sollte der DB-Admin auch während des Betriebes im Auge haben und ggf. anpassen).

Weiterhin besteht auch die Möglichkeit, mehrere Server zu nutzen und Replikation einzusetzen. So können alle Schreibzugriffe auf den MySQL-Replikations-Master ausgeführt und reine Lesezugriffe über einen oder auch mehrere MySQL-Replikations-Clients verteilt werden.

Ich selbst hatte mal das Vergnügen, mit einer auch mehrere Milliarden Datensätze umfassenden DB zu arbeiten (Calling-Daten), die auf dem Dateisystem eine Größe von etwa 40 GB beanspruchte. Als Server werkelte eine SUN E10K mit 32 Prozessoren (die waren hier nicht ganz so wichtig) und 64 GB Hauptspeicher (das war die interessante Grösse) - die konnte die komplette DB cachen inklusive der Indexe und war daher im Zugriff recht schnell (allerdings in meinem Fall nur Lesezugriffe). Wobei das aber auch wieder von der Art der Daten abhängt.

In jedem Fall würde ich die DB-Struktur immer mit mehreren Leuten besprechen und nichts übereilen - so kommen oft noch Ideen für Verbesserungen dabei raus. Natürlich auch testen - Testdaten ohne Ende generieren und die DB quälen, bis sie an die Grenze stösst und dann prüfen, ob das für deine Zwecke ausreichend ist oder nicht und ob sich noch etwas verbessern lässt.

Viel Spass… :smile:
McPringle

Moin,

also erstmal ist in dem Falle wurscht wieviel Arbeit du damit hast - eine Datenbank vernünftig aufzubauen kostet nunmal ordentlich Zeit - rentiert sich aber später zigfach.

Zudem liegt in der Regel ein Fehler im Tabellendesign vor, wenn eine Tabelle auf solche Dimensionen anwächst - evtl. hilft Unterstützung beim Tabellendesign.

Falls alles nichts hilft benutzt ihr dann schlicht die falsche Datenbank! In solchem Falle würde ich auf Teradata oder ähnliches zurückgreifen.

Gruß

Bernd