Ich hoffe, dass viele von Ihnen mit datenbankgestützten Websites mit hohem Datenaufkommen arbeiten und die Wahrscheinlichkeit groß ist, dass Ihre wichtigsten Skalierbarkeitsprobleme in der Datenbank liegen. Ich habe in letzter Zeit ein paar Dinge bemerkt:
Die meisten großen Datenbanken erfordern ein Team von Datenbankadministratoren, um skaliert werden zu können. Sie haben ständig mit den Einschränkungen von Festplatten zu kämpfen und erhalten sehr teure Lösungen (SANs oder große RAIDs, häufige Wartungsfenster für Defragmentierung und Neupartitionierung usw.) zu steil für mich :)
Schließlich haben wir mehrere Unternehmen wie Intel, Samsung, FusionIO usw., die gerade damit begonnen haben, extrem schnelle und dennoch erschwingliche SSD-Festplatten auf Basis der SLC-Flash-Technologie zu verkaufen. Diese Laufwerke sind in zufälligen Lese- / Schreibvorgängen 100-mal schneller als die besten rotierenden Festplatten auf dem Markt (bis zu 50.000 zufällige Schreibvorgänge pro Sekunde). Ihre Suchzeit ist so gut wie Null, daher sind die Kosten für zufällige E / A dieselben wie für sequentielle E / A, was für Datenbanken fantastisch ist. Diese SSD-Laufwerke kosten etwa 10 bis 20 US-Dollar pro Gigabyte und sind relativ klein (64 GB).
Es scheint also eine Möglichkeit zu geben, die hohen Kosten für die Skalierung von Datenbanken auf herkömmliche Weise zu vermeiden, indem einfach ein ausreichend großes RAID 5-Array von SSD-Laufwerken erstellt wird (was nur ein paar tausend Dollar kosten würde). Dann ist es uns egal, ob die Datenbankdatei fragmentiert ist, und wir können uns 100 Mal mehr Schreibvorgänge auf der Festplatte pro Sekunde leisten, ohne die Datenbank auf 100 Spindeln verteilen zu müssen. .
Interessiert sich sonst noch jemand dafür? Ich habe ein paar SSD-Laufwerke getestet und kann meine Ergebnisse teilen. Wenn jemand auf dieser Site bereits seinen E / A-Engpass mit SSDs behoben hat, würde ich gerne Ihre Kriegsgeschichten hören!
PS. Ich weiß, dass es viele teure Lösungen gibt, die die Skalierbarkeit verbessern, zum Beispiel die bewährten RAM-basierten SANs. Ich möchte klarstellen, dass selbst 50.000 USD für mein Projekt zu teuer sind. Ich muss eine Lösung finden, die nicht mehr als 10.000 USD kostet und deren Implementierung nicht viel Zeit in Anspruch nimmt.
Dave, NXC und Burly,
Vielen Dank für Ihre Antworten! Ich möchte klarstellen, dass das Wort "billig" in meiner Situation sehr wichtig ist. Ich muss also billige Dell-Server verwenden (4.000 US-Dollar für 2950 mit nur 8 Speicherbänken). Ich habe bereits 32 GB RAM installiert, daher kann ich die Skalierung nicht auf diese Weise fortsetzen. Außerdem werden Sie durch das Hinzufügen von RAM nicht vor Festplatten-WRITE-Engpässen geschützt, was momentan mein Hauptproblem ist.
Früher beschäftigte ich mich mit der Lebensdauer von SSDs, aber nachdem ich mich mit den modernen Algorithmen für den Verschleißausgleich befasst habe, bin ich mir ziemlich sicher, dass diese Laufwerke lange genug halten werden. Meine Datenbank schreibt 300 GB pro Tag und soll 2009 mehr als 1 TB pro Tag erreichen. Die Enterprise-SSDs sind für die Verarbeitung von etwa 10 TB Schreibzugriff pro Tag über mehrere Jahre ausgelegt.
Ich würde Burlys Argument nicht zustimmen, dass die Migration von SAS auf SSD zu viel Arbeit erfordert. Meine Datenbank ist ein synchroner Spiegel, sodass ich eine Seite des Spiegels aktualisieren und dann einige Monate lang beobachten kann. Wenn er ausfällt, kann ich ein Failover auf den zweiten Server durchführen, auf dem sich noch die alten guten SAS-Festplatten befinden.