Speichermedium für Datenbank...

Markstar

Vice Admiral Special
Mitglied seit
11.11.2001
Beiträge
562
Renomée
17
Hi,
ich möchte meine kleine (!) private Webseite gerne auf meinen Server zu Hause verlegen und überlege nun, ob es sich lohnt, die MySQL-Datenbank auf eine SSD, einen USB-Stick oder eine CF-Karte zu verlagern.

Das Ganze soll auf jeden Fall günstig bleiben (unter 40€), aber da die Seite inkl. DB derzeit auch unter 50MB ist reicht ja eigentlich auch eine geringe Kapazität.

Hier meine Überlegungen so weit:

SSD:
+ einfachste und "eleganteste" Lösung
+ gute SSD mit Abstand am schnellsten von allen Varianten
- wenig Angebot im 4-8GB Bereich
- kleine SSDs oft technisch nicht so gut (Stichwort Schreibverzögerungen)

USB Flash:
+ sehr gutes €/GB-Verhältnis
+ einfache Lösung
- nicht so viele Schreibzyklen -> geringere Lebensdauer?
- Leistung stark vom jeweiligen USB-Stick abhängig

Adapter CF -> SATA:
+ CF Leistungsfähiger als USB-Flash?
+ auch günstig (10€ Adapter + 20€ CF-Karte)
- Adapter = Bastellösung
- Leistung? Schreibzyklen?


Die Frage ist, ob sich das lohnt. Was sind denn Eure Erfahrungen so?

Bin gespannt auf eure Antworten!
 
mhhh... warum solch ein aufwand für eine 50MB-Seite, die vielleicht zweimal am Tag aufgerufen wird?
Edit: ..oh sorry,war ein missverständnis meinerseits... ähemm.. CF hatte ich auchmal im Notebook über PCMCIA UDMA32 Karte (heute: 60€ Adapter + 20€ CF-Karte)
Funktionierte prima und war sogar "etwas" performant.
Die Lösung war recht teuer, doch USB-fake-adapter sind doch etwas arg langsam.

Im PC wirds via Adapter CF -> SATA sogar richtig billig und für nen websiteserver reichts dreimal.

Ich persönlich würde aber eher meinen normalen PC so umrüsten, dass er rund um die Uhr den Serverjob nebenher leise und Stromsparend erledigt.
 
Zuletzt bearbeitet:
Erstmal vorneweg, einen Webserver zuhause zu betreiben ist fast nie auch nur ansatzweise wirtschaftlich. Solltest du das also aus anderen Gründen als "Just for fun" machen: Überleg es dir nochmal und vorallem, rechne es dir durch.

Aber back to Topic.. Ich geh mal davon aus das bei den 50GB nur ein geringer Anteil auf die Datenbank fällt (Dateien wie Bilder werden ja meist im Dateisystem abgelegt). Daher pack ausreichend Ram in die Kiste, damit MySQL die komplette Datenbank im RAM halten kann. Und schon hast du hohe Performance ohne zusätzlichen Aufwand.

Aber um da bessere Empfehlungen geben zu können müsste man natürlich wissen was du für eine Seite betreibst (wieviel Besucher, wieviel Last auf der Datenbank etc.)... Ich denke mal das es sich nur um eine kleine Website mit wenigen Besuchern handelt. Da brauchst du dir um solche Performance-Optimierungen eh keine Gedanken machen, da es so oder so schnell genug ist.

Gruß,
Max
 
mhhh... warum solch ein aufwand für eine 50MB-Seite, die vielleicht zweimal am Tag aufgerufen wird?
Eine gute Frage! Und du hast vollkommen Recht, wahrscheinlich ist es den Aufwand nicht wert. Das ganze soll eigentlich auch eher ein Test sein. Klar, wenn der Preis von SSDs besser geworden ist soll auf jeden Fall eine SSD rein. Derzeit bin ich aber leider etwas knapp bei Kasse und muss mir jede Ausgabe gut überlegen. Daher dachte ich halt an eine Lösung für 10€ (USB-Stick) - 30€ (CF oder günstige SSD).
Außerdem soll es ein Test sein um vielleicht auch später meine IO-intensiven Sachen von der Uni drauf auszuführen.

Edit: ..oh sorry,war ein missverständnis meinerseits... ähemm.. CF hatte ich auchmal im Notebook über PCMCIA UDMA32 Karte (60€ Adapter + 20€ CF-Karte)
Funktionierte prima und war sogar "etwas" performant.
Interessant. Tatsächlich ist mein "Server" sogar ein Notebook (IBM T60), das hat also auch je einen Schacht für PCMCIA oder ExpressCard 54. [edit]Leider finde ich keinen Adapter für ExpressCard auf CompactFlash, nur auf SD (und die sind ja wohl erheblich langsamer). Dafür kostet er auch nur 10€ und SD-Karten sind auch recht günstig. Aber gibt es auch gute SD-Karten für wenig Geld? Class 6 ist ja nicht gerade konkurrenzfähig, oder? Einen ExpressCard auf CF Adapter kostet wohl 24€ inkl. Versand. Dazu noch die CF-Karte. Lohnen sich die Mehrkosten im Vergleich zu SD? Und wie sieht es wohl mit der Bandbreite im Vergleich zu CF -> SATA aus? ??? [/edit]

Im PC wirds via Adapter CF -> SATA sogar richtig billig und für nen websiteserver reichts dreimal.
Ja, im Moment tendiere ich auch zu dieser Lösung, wollte aber auch gerne andere Meinungen hören (Horizont erweitern und so. ;) ).

Ich persönlich würde aber eher meinen normalen PC so umrüsten, dass er rund um die Uhr den Serverjob nebenher leise und Stromsparend erledigt.
Deswegen nehme ich ein Notebook als Server, da er 24/7 läuft und sich das dann schon nach ein paar Jahren rechnet. Mein aktueller Server (Pentium M 1.5GHz) braucht nur ca. 11W im Idle, der "neue" (ein alter T60) allerdings schon 18W.

Erstmal vorneweg, einen Webserver zuhause zu betreiben ist fast nie auch nur ansatzweise wirtschaftlich. Solltest du das also aus anderen Gründen als "Just for fun" machen: Überleg es dir nochmal und vorallem, rechne es dir durch.
Hab ich vor Jahren schon gemacht. Da der Server auch für andere Zwecke (Datei- und Druckerserver, etc.) verwendet wird, lohnt es sich auf jeden Fall.

Aber back to Topic.. Ich geh mal davon aus das bei den 50GB nur ein geringer Anteil auf die Datenbank fällt (Dateien wie Bilder werden ja meist im Dateisystem abgelegt). Daher pack ausreichend Ram in die Kiste, damit MySQL die komplette Datenbank im RAM halten kann. Und schon hast du hohe Performance ohne zusätzlichen Aufwand.
Die Webseite sind 50MB! :P
Der Server wird 3GB Ram haben (das ist das Maximum vom Chipsatz des T60).

Aber um da bessere Empfehlungen geben zu können müsste man natürlich wissen was du für eine Seite betreibst (wieviel Besucher, wieviel Last auf der Datenbank etc.)... Ich denke mal das es sich nur um eine kleine Website mit wenigen Besuchern handelt. Da brauchst du dir um solche Performance-Optimierungen eh keine Gedanken machen, da es so oder so schnell genug ist.
In der Tat, derzeit gibt es noch wenige Besucher. Bisher habe ich die Seite auf X10hosting (ein Freehoster), aber der ist mir doch zu langsam. Daher die Verlagerung nach Hause, verknüpft mit der Hoffnung, die Geschwindigkeit da noch etwas optimieren zu können.

Mit dem Ganzen verfolge ich in erster Linie rein akademische Ziele, d.h. ich möchte Erfahrungen sammeln und schauen, was ich so aus dem Teil raus holen kann. Mir ist schon klar, dass sich das ganze vielleicht nicht unbedingt lohnt und es ein Widerspruch ist, einen schnellen Server für wenig Besucher haben zu wollen, aber dennoch knauserig zu sein. *suspect*

Vielen Dank für eure Zeit und ich hoffe, ihr teilt mir weiter eure Meinungen mit.
 
Zuletzt bearbeitet:
Wenn der Server sowieso rund um die Uhr läuft ist das natürlich was anderes. :) Es ist nur so, dass ein durchschnittlicher sparsamer Desktop-PC etwa 50Watt braucht. Bei 21 Cent pro Kilowattstunde sind das monatliche Kosten von etwa 7,50€. Dafür kriegt man schon einen sehr guten Webspace...

Ich würde an deiner Stelle aufjedenfall nur vorhandene Hardware nutzen. Rein von der Performance her reicht das ja locker aus, vorallem da Lesevorgänge MySQL eh super cacht. Erst recht wenn du relativ viel Ram hast. Außerdem musst du rechnen wie groß der Anteil der Datenbank bei einer durchschnittlichen Anfrage ist. Selbst wenn du die Datenbank um 20% beschleunigst, aber die Abfragen nur 10% der Ausführungszeit des Skriptes in Anspruch nehmen, hast du effektiv fast nichts gewonnen.

Bevor du also Geld und Aufwand in Hardware steckst, würde ich erst die Software optimieren: MySQL optimal konfigurieren, einen Opcode-Cache für PHP installieren, für statische Dateien auf nginx oder lighttpd nutzen, deine Anwendung weiter optimieren (auch hier cachen was geht, je weniger Zeilen Code ausgeführt werden, desto besser) usw usf.

Was für eine Internetanbindung hast du? Bei einem normalen ADSL-Anschluß ist die nämlich das Nadelöhr. Eine Komprimierung mittels gzip (das Apache-Modul mod_deflate) hilft zwar, aber bei Bildern kann das auch nichts ausrichten. Es wird sich immer langsam anfühlen. Die könnte man aber natürlich auch auf ein CDN auslagern (Amazon S3 und Konsorten).

Macht das alles bei einer kleinen Seite Sinn? Nein. ;D Aber lernen tut man aufedenfall was dabei.

Gruß,
Max
 
Zuletzt bearbeitet:
Wenn der Server sowieso rund um die Uhr läuft ist das natürlich was anderes. :) Es ist nur so, dass ein durchschnittlicher sparsamer Desktop-PC etwa 50Watt braucht. Bei 21 Cent pro Kilowattstunde sind das monatliche Kosten von etwa 7,50€. Dafür kriegt man schon einen sehr guten Webspace...
Wie gesagt, mein Server läuft sowieso und da er nur ca. 20W braucht, sind die monatlichen Kosten auch recht passabel.

Ich würde an deiner Stelle aufjedenfall nur vorhandene Hardware nutzen.
Mach ich ja. ;)

Rein von der Performance her reicht das ja locker aus, vorallem da Lesevorgänge MySQL eh super cacht. Erst recht wenn du relativ viel Ram hast. Außerdem musst du rechnen wie groß der Anteil der Datenbank bei einer durchschnittlichen Anfrage ist. Selbst wenn du die Datenbank um 20% beschleunigst, aber die Abfragen nur 10% der Ausführungszeit des Skriptes in Anspruch nehmen, hast du effektiv fast nichts gewonnen.

Bevor du also Geld und Aufwand in Hardware steckst, würde ich erst die Software optimieren: MySQL optimal konfigurieren, einen Opcode-Cache für PHP installieren, für statische Dateien auf nginx oder lighttpd nutzen, deine Anwendung weiter optimieren (auch hier cachen was geht, je weniger Zeilen Code ausgeführt werden, desto besser) usw usf.
In der Tat. Solche Optimierungen sind sicherlich mindestens genauso wichtig wie die Hardware. Werde mich natürlich auch noch um solche Sachen kümmern. :)

Was für eine Internetanbindung hast du? Bei einem normalen ADSL-Anschluß ist die nämlich das Nadelöhr. Eine Komprimierung mittels gzip (das Apache-Modul mod_deflate) hilft zwar, aber bei Bildern kann das auch nichts ausrichten. Es wird sich immer langsam anfühlen. Die könnte man aber natürlich auch auf ein CDN auslagern (Amazon S3 und Konsorten).

Macht das alles bei einer kleinen Seite Sinn? Nein. ;D Aber lernen tut man aufedenfall was dabei.
Da ich damit rechne, dass wenn ich DB-intensive Anwendungen laufen lasse, sie über das lokale Netzwerk laufen werden, mache ich mir um die Internetverbindung keine Sorgen. Denn die Webseite ist ja erst einmal nur als Einstieg.
 
Da das ganze zum Testen gedacht ist, wie wäre es mit einer <100MB Ram-Disk? Bei einem NB mit Akku als USV wäre das relativ Ausfall sicher...

Pro: Kostet nichts ist viel schneller als jede SSD ;D
 
CF hatte ich auchmal im Notebook über PCMCIA UDMA32 Karte (60€ Adapter + 20€ CF-Karte)
Funktionierte prima und war sogar "etwas" performant.​

Das WAR mal so bei mir.
Ich hatte ein Portege mit ultralahmer 1,8" platte und SSD kosteten noch an die 1000EUR.
Via Adapter hatte ich somit eine zweite 16GB-"Festplatte" im Portege.
Damals war das cool & schnell!
Heute würde ich das unter keinen Umständen mehr empfehlen.

Zu wenig Performance für das viele Geld.

Aber ein Notebook als Server zu benutzen ist stromspartechnisch schonmal eine richtige Herangehensweise... vermutlich wärs das einfachste beste und billigste das NB einfach "so" zu verwenden.
fertig.
Auch "experimentieren" rechtfertigt kaum eine Mehranschaffung.

Als festplattenschonend könnte sich ein zusätzlicher Stick evtl dann erweisen, wenn du noch zeitraubende "Downloads" nebenher auf deinem Server laufen lassen möchtest.... wobei mich die Erfahrung lehrt, dass selbst in diesem Fall die System-Platte immer anbleibt, da regelmäßige zugriffe auch dort erfolgen.
 
Da das ganze zum Testen gedacht ist, wie wäre es mit einer <100MB Ram-Disk? Bei einem NB mit Akku als USV wäre das relativ Ausfall sicher...

Pro: Kostet nichts ist viel schneller als jede SSD ;D
Auch eine gute Idee - aber dann müsste die RAM-Disk geladen und befüllt werden, bevor die Webseite und MySQL geladen werden.

Mit RAM-Disks kenn ich mich gar nicht aus - hast du da eine Empfehlung?
 
Die Datenbank in eine Ram-Disk zu laden ist ein Selbstmordkommando.. Das halte ich für zu riskant. Das Risiko eines Datenverlustes würde ich nicht eingehen, da man von der Performance kaum bis gar nicht profitiert. Da stimmt die Gleichung einfach nicht. :)

Mal ganz davon abgesehen das der Ram-Disk den Arbeitsspeicher blockiert, womit der Cache kleiner ausfallen muss. Da beißt sich die Katze in den Schwanz...

Prinzipiell kann man hier auch nur raten. Ein schneller USB-Stick könnte vielleicht eine höhere Performance bringen, wird aber von USB 2.0 ausgebremst und die CPU-Last ist mit ziemlicher Sicherheit auch höher.

Wie ein USB-Stick performt lässt sich über einen Benchmark ja recht leicht rausfinden (z.B. hier: http://www.tomshardware.de/charts/usb-stick-charts/benchmarks,109.html). Auf die angegebene Übertragungsraten würde ich mich nicht verlassen. Bei dem Anwendungsfall werden ja selten mehrere 100MB am Stück geschrieben..

Aber wie gesagt, mach dir da nicht so einen Stress. Wenn deine Festplatte im Laptop limitiert liegt der Fehler tendenziell woanders, nämlich in einer nicht ausreichend optimierten Abfrage. Hinzu kommt das eventuell auch die CPU limitieren kann.

Und last but not least liegt so eine kleine Datenbank bei häufiger Nutzung mit ziemlich hoher Wahrscheinlichkeit komplett im RAM, da dein Betriebssystem häufig genutze Dateien ja cacht...

Gruß,
Max
 
Bei einer derart kleinen Datenbank brauchst du gar nichts zu beachten, da MySQL sie komplett in den Speicher lädt und der darunterliegende Massenspeicher überhaupt nicht bedacht werden muss. Du kannst also bedenkenlos eine einfache Festplatte nehmen, die ja ohnehin schon vorhanden ist, und brauchst dir darüber keine weiteren Gedanken zu machen. Und selbst wenn das ganze nicht im Cache landen würde hättest du mit diesen geringen Anforderungen mit einer normalen HDD keinerlei Einschränkungen zu erwarten. Aus diesem Grund ist auch eine Ramdisk sinnfrei - die gesamte Datenbank landet so oder so im Cache und somit im großzügig zur Verfügung stehenden Arbeitsspeicher.

Wenn man die Sache natürlich aus akademischer Sicht betrachtet, solltest du nicht auf hohe Übertragungsraten sondern möglichst niedrige Latenzen achten. Hat dein Laptop keinen SD-Slot in den du eine flotte SD-Karte stecken könntest? Ich schätze mal, dass diese die niedrigsten Latenzen aufweisen dürfte.
 
Bei einer derart kleinen Datenbank brauchst du gar nichts zu beachten, da MySQL sie komplett in den Speicher lädt und der darunterliegende Massenspeicher überhaupt nicht bedacht werden muss. Du kannst also bedenkenlos eine einfache Festplatte nehmen, die ja ohnehin schon vorhanden ist, und brauchst dir darüber keine weiteren Gedanken zu machen. Und selbst wenn das ganze nicht im Cache landen würde hättest du mit diesen geringen Anforderungen mit einer normalen HDD keinerlei Einschränkungen zu erwarten. Aus diesem Grund ist auch eine Ramdisk sinnfrei - die gesamte Datenbank landet so oder so im Cache und somit im großzügig zur Verfügung stehenden Arbeitsspeicher.
Hab nochmal fleißig gegoogelt und in der Tat soll so eine kleine DB sollte automatisch ganz im Cache landen.

Wenn man die Sache natürlich aus akademischer Sicht betrachtet, solltest du nicht auf hohe Übertragungsraten sondern möglichst niedrige Latenzen achten. Hat dein Laptop keinen SD-Slot in den du eine flotte SD-Karte stecken könntest? Ich schätze mal, dass diese die niedrigsten Latenzen aufweisen dürfte.
Einen SD-Slot hat das Notebook nicht, aber sowas könnte man ja nachrüsten. Aber genau deswegen frage ich mich ja, was das geeignetste Speichermedium ist.
 
Die Performance ist ja, wie mj schon geschrieben hat, bei allen Speichermedien gleich, also bleiben nur die Kosten übrig. Du sagst, max. 40€ sollen ausgegeben werden. Dafür kann man aber jahrelang einen Webserver mieten (z.B. bei Hetzner kostet das kleinste Paket 1,90€/Monat), damit wären Deine Anforderungen komplett übererfüllt und Du mußt dich nicht um einen 24/7 laufende PC kümmern (der ja schon an Stromkosten mehr verbrät).

Wenn es aber um eine Bastellösung geht, um eben möglichst viel selbst schrauben zu können, dann nimm das komplizierteste, was Du finden kannst ;)
 
Die Performance ist ja, wie mj schon geschrieben hat, bei allen Speichermedien gleich, also bleiben nur die Kosten übrig. Du sagst, max. 40€ sollen ausgegeben werden. Dafür kann man aber jahrelang einen Webserver mieten (z.B. bei Hetzner kostet das kleinste Paket 1,90€/Monat), damit wären Deine Anforderungen komplett übererfüllt und Du mußt dich nicht um einen 24/7 laufende PC kümmern (der ja schon an Stromkosten mehr verbrät).
Wie gesagt, der Server läuft sowieso. :)

Wenn es aber um eine Bastellösung geht, um eben möglichst viel selbst schrauben zu können, dann nimm das komplizierteste, was Du finden kannst ;)
Hehe. Ich werd's mir überlegen.

Auf jeden Fall vielen Dank für eure Ratschläge bisher! :)
 
...lol....
Sag das doch gleich...
Hab ich ja (s. Post #4 und #6)! ;D

DANN würde ich mir das mit der SSD doch mal überlegen.
60GB wären dann sinnvoll.
Es ist keine "Krüppellösung", du hast genug Puffer und es gibt sie schon für um die 80EUR.
http://geizhals.at/deutschland/a534348.html
Ich werde mal schauen. Vielleicht komme ich ja günstig an eine SSD. 80€ möchte ich im Moment noch nicht für meinen Server ausgeben (da würde ich mir die SSD lieber in mein Arbeitsnotebook stecken). Aber ich denke da wird sich auch bald noch einiges tun (hoffentlich).
 
dein server läuft sowieso? für was?
kannst du den server nach innen abschotten? Ist das sogar dein lokaler Fileserver, den du als webserver nutzt. für mich gehören interne Systeme (zb. ArbeitsPc) von externen abgeschirmt. Wenn du einen Webserver zuhause betreibst bietest du eine direkte Angriffsfläche. Andere PCs, Router, ... . Machst du Onlinebanking?

wenn es um Leiszung zum kleinen Preis geht, solltest du dir die Cloudlösungen von Amazon anschauen den amazon. Ein "vserver" (heisst dort anders) zum spielen lässt sich da sehr einfach und flexibel sogar kostenlos betreiben.
 
Adapter 8GB CF -> IDE, hab ich bei mir. Problem ist das USB sowie CF ab und zu mal nen wenig hängt, da halt nicht soviele Zugriffe parralel gehen (bei USB sehr böse wenn Logfiles geschrieben werden). Fürs reine System ohne Nutzdaten aber optimal.

SSD in deinem Fall total überflüssig. Wenn du es schaffst bei den Datenmengen unterschiede zwischen SSD und SATA aufzuzeigen, biste nen schlechter Programmierer.

sonst schließe ich mch mal Maxefix an, hat schon alles gesagt.
 
dein server läuft sowieso? für was?
kannst du den server nach innen abschotten? Ist das sogar dein lokaler Fileserver, den du als webserver nutzt. für mich gehören interne Systeme (zb. ArbeitsPc) von externen abgeschirmt. Wenn du einen Webserver zuhause betreibst bietest du eine direkte Angriffsfläche. Andere PCs, Router, ... . Machst du Onlinebanking?

wenn es um Leiszung zum kleinen Preis geht, solltest du dir die Cloudlösungen von Amazon anschauen den amazon. Ein "vserver" (heisst dort anders) zum spielen lässt sich da sehr einfach und flexibel sogar kostenlos betreiben.
Bei mir läuft seit min. 6 Jahren ein Server. Eine Virusinfektion hatte ich noch nie (und das, obwohl ich nur Windows-Systeme einsetze). Sensible Daten werden auf dem Server nicht gespeichert. Mir ist klar, dass ich recht viel Aufmerksamkeit auf meine IP-Adresse richte, sobald ich die Webseite "veröffentliche". Auf der anderen Seite bin ich nicht bereit, Geld für eine Webseite auszugeben, die sich vielleicht nur 20 Leute anschauen. Primäres Ziel dieser Webseite soll das Testen von Web- und Datenbanktechniken sein. Amazon sieht zwar interessant aus, aber die scheinen ihre eigenen Techniken einzusetzen, in die man sich dann auch erst rein arbeiten müsste. :(
 
Naja, rein vom Sicherheitsgedanken finde ich das gar nicht so tragisch. Wichtig ist halt, dass du immer die neusten Versionen einsetzt, vernünftige Passwörter wählst und das der Server hinter einer Firewall steht und wirklich nur die relevanten Ports weitergeleitet werden.

Wenn du das beherzigst wirst du sicher so schnell keine Probleme bekommen. Mal ganz davon abgesehen das wohl kaum jemand ein nennenswertes Interesse daran haben sollte, deinen Server zu hacken... ;D

Gruß,
Max
 
Zurück
Oben Unten