MySQL / Datenbankservice à la Amazon S3

dlange

New Member
Hallo Leute,

ich arbeite momentan an einer Software die das Besucherverhalten von Websitebenutzern auswerten soll. Hierbei fallen natürlich sehr viele Daten an (bei einer kleineren Internetseite min. 1 GB pro Monat (~ 5000 - 8000 Besucher pro Monat)). Das sind also bereits bei sehr kleinen Internetseiten viele Daten. Wenn nunn eine Seite mit ~ 50.000 Hits ausgewertet wird, steigt das ganze natürlich, des weiteren soll natürlich nicht nur eine Seite ausgewertet werden.

Kurz: Ich rechnen mit einem anfänglichen Datenaufkommen von ca. 20GB pro Monat die ich in einer Datenbank speichern möchte. (Welches allerdings schnell auf das 10fache anwachsen könnte, allerdings wenn, dass der Fall ist, dürfte das finanzielle Problem nicht mehr vorhanden sein).

Als erstes stellt sich mir folgende Frage: Wie soll ich dieses Datenaufkommen speichern? Mir steht nicht viel Kapital zur Verfügung, also eigenen Server kaufen und housen ist nicht drin, da zu teuer. Also werde ich erstmal auf dedicated Server zurückgreifen müssen. Hier wird ein Server also ca. 500 - 1000GB zur Verfügung haben. Wenn dieser Speicherplatz erschöpft ist, was dann?

Gibt es eine möglichkeit einen zweiten Server anzuhängen an die gleiche Datenbank? Die Daten quasi auf einen zweiten Server auszulagern? Falls ja, wie einfach / schwer ist dies umzusetzen?

Gehen wir mal davon aus, dass wir die Daten auf mehrere Server auslagern können (wäre schön, wenn ihr mir sagen könnt ob es geht und wenn ja wie ;)) wie sieht es mit der Perfomance aus? Besteht die Möglichkeit auch die Anfragen auf verschiedene Server auszulagern, sodass wir auch eine bessere Performance haben?

Dies sind bisher die Überlegungen die ich angestellt habe.
Eine Alternative wäre noch mehrere Server zu haben, auf jedem eine eigene Datenbank zu haben und der Software zu sagen, welcher Kunde auf welchem Server liegt und entsprechend zu connecten. Klingt zwar simpler, aber eine grosse Datenbank mit Performanceausgleich auf mehreren Server klingt für mich nach der optimalen Lösung ...

Um auf mein Topic zu sprechen zu kommen: Bei meiner Suche bin ich z.B. auf Amazon S3 gestossen, welches sich allerdings nicht als Datenbank anbietet. Was mich daran so fasziniert: Unbegrenzte Speichermöglichkeiten, da Amazon einfach aufrüsten kann, Es sollte keine Hardware oder Performanceprobleme geben, da die Amazon Sysadmins vermutlich mehr drauf haben als ich als Programmierer, Preise je genutzten und verbrauchten GB (Pay what you get ...). Alles in allem also (sofern es soetwas auch als Datenbanklösung geben würde) die Perfekte Lösung, da geringe Kosten und hohe Effizienz ... Ich bräuchte dann quasi nur noch einen Server, der als Frontend fungiert und die Anfragen auf S3 umleitet ... Ich vermute aber mal, dass es soetwas nicht gibt oder?

Bin gespannt auf eure Ideen / Ratschläge.

Danke & Gruss, Daniel
 
Hi,

ich meine von einer Schnittstelle gelesen zu haben, die es ermöglichen soll S3 und MySQL zu nutzen. Bin mir aber nicht sicher, ob die ggf. noch in der Entwicklung ist.

Google ist dein Freund ;)

Greets
Projekt2501
 
Hey Projekt,

ja das habe ich auch gelesen: A MySQL Storage Engine for AWS S3

Allerdings stellt sich mir da noch die Frage der Performance, da S3 ja nun eigentlich keine Datenbank ist und die Daten dann erst irgendwie geändert werden müssen. Da für die Analyse aber mal kurz mehrere Tausend DB Einträge gezählt werden müssen weiß ich nicht ob sich das Performancemäßig mit so einer "Zwischenschaltung" eines Plugins ermöglichen lässt.

Ich bleibe allerdings auch bei dieser Sache am Ball ...

Gruß Daniel
 
Hast du mal daran gedacht, nur eine ganz normale Logdatei schreiben zu lassen? Diese ziehst du dir täglich vom Server herunter. In dieser Sache heißen deine Freunde Skript und Cron.

Zuhause steht ein Rechner mittlerer Preisklasse, auf dem MySQL und die gesamte Auswertungslogik läuft. In dieser Form sollte sowohl Leistung, als auch Plattenplatz bezahlbar sein.


Pfiffikus,
der nicht weiß, wie zeitnah deine Auswertungen erfolgen müssen
 
Hallo Pfifikus,

mit deiner letzten Aussage hast du den Nagel auf den Kopf getroffen ... Die Auswertung erfolgt in Echtzeit. Parallel steht auch die Auswertung per Logfile zur Verfügung, allerdings ist dir bewusst wie groß diese Files werden? Das kannst du mit einer Standard DSL Leitung nicht erledigen ... vielleicht wenn du eine Seite auswertest (sofern sie klein ist) aber sobald es mehr als 2-3 werden hast du mit normaler DSL Leitung und Mittelpreisrechnern keine Chance mehr ... Dedicated Server ist schon minimum was ich benötige und den auch mit guter Hardware ... Es sei denn es gäbe eine Alternative à la Amazon S3 ... oder etwas anderes was ich nicht kenne ;)

Danke & Gruß Daniel
 
Schau dir ggf. auch mal Amazon EC2 an. Vielleicht ist das was für dich, da du falls du nen Cluster aufbauen willst ggf. dein Freund wird.
 
Hey,

also EC2 klingt tatsächlich sehr interessant. Denn hiermit wäre es ja möglich variabel auf oder abzurüsten (je nach Bedarf).

Allerdings stellt sich mir die Frage wie es praktisch funktioniert? Ich habe das jetzt so verstanden, dass nach einem Absturz oder Neustart alle Daten futsch sind. Außerdem bekommt man keine feste IP-Adresse zugewiesen ...

Wenn ich das jetzt richtig durchschaue benötige ich also einen "richtigen" Server welcher z.B. als Loadbalancer oder als MySQL Cluster Relaystation dient? Dieser "richtige" Server kann dann die Daten in einer laufenden MySQL Instanz auf den EC2 Server speichern und/oder Anfragen weiterleiten?
Aber was passiert wenn nun einer dieser Server abschmiert? Haben die EC2 Server eigentlich ein Festplattenlimit? Denn falls dies von Amazon immer nachgerüstet wird, wäre es theoretisch möglich 2-3 EC2 Server als Cluster zu haben wo die Daten gespiegelt werden. Somit wäre es nicht so tragisch wenn einer abschmiert. Parallel dann noch Datensicherung auf S3 und die ganze Sache wäre relativ ideal.

Was meint ihr? Habe ich hier jetzt richtig gedacht, oder einen Denkfehler gemacht?

Daniel
 
Im Prinzip würde ich sagen hast du das richtig verstanden und die Einschränkungen richtig aufgezeigt. Denke aber mal, dass sich da in absehbarer Zeit noch was tun wird (fest IP und sowas). Hatte da mal ein bissel was zu im Forum gelesen.
 
Back
Top