Mit der Dateilösung hingegen habe ich einen riesen Hash im Hauptspeicher, bei jedem Request entsteht ein Burst. Kommt mir da die Hardware entgegen, ist da was zu Cachen?
Naja, im Prinzip hast Du ja schon so etwas wie einen Cache gebaut, in dem Du alle Daten zu Beginn in den Hauptspeicher lädst (ob von Platte oder Datenbank ist ja dann eigentlich schon egal).
Wenn das aber bei jedem Request passiert, obwohl nur das HTML von einer der 400 Seiten ausgeliefert werden soll, klingt das für mich naiv erst mal so, als würden 99,75 % der Daten unnötig geladen.
Es wäre sicherlich sinnvoller, das nicht insgesamt „in den Hauptspeicher zu ‚cachen‘“, sondern zum Beispiel in der Binärdatei vorne einen Index einzufügen, welcher Inhalt an welchem Offset liegt, diesen Index auszulesen, dann direkt zum passenden Offset zu springen und noch mal das auszulesen, was benötigt wird.
Eine Datenbank wird ja immer dann interessant, wenn Du genau das (also das Laden sämtlicher Daten in den Speicher) mangels genug Arbeitsspeicher eben nicht mehr bewerkstelligen kannst und gezeilt einzelne Daten abfragen musst.
Das ist für meinen Geschmack dann aber doch einen Tick zu pauschal formuliert. Datenbanken werden doch nicht deshalb genutzt, weil einem sonst der Speicher ausgeht.
So lange Du aber alles in den Hauptspeicher lädst, wird ein Flatfile IMMER schneller sein als eine Datenbank.
Auch das möchte ich vorsichtig bezweifeln beziehungsweise um Klärung bitten, was du da im Detail vergleichst.
Den Overhead für das Aufbauen einer Verbindung kann man übrigens dadurch reduzieren, dass man die Datenbankverbindung offen lässt.
Das muss trotzdem auch erst mal keine 70 ms dauern. Mit PHP und mysqli bin ich für einen Verbindungsaufbau zeitlich zum Beispiel in einer Größenordnung, in der es schon fast keinen Sinn mehr ergibt, das überhaupt zu messen (3-7 ms).
Gruß Marc