BTCStorage schrieb:
Wenn man die Daten in der datenbank speichert wird das dann nicht auch im Datenbanksystem irgendwo als Datei gespeichert?
Ja, natürlich. Meist eine große Datei.
BTCStorage schrieb:
Den ich kann mich irgendwie grob daran erinnern das jemand mal sagte, mit der Zeit waechst die Datenbank und alles wird langsamer.
Und wie findest du deine Daten? Nehmen wir mal an, du speicherst einen Thread in einer JSON Datei. Da kommentieren 10k Leute. Jetzt willst du den Thread anzeigen. Was musst du tun:
1. Die JSON einlesen (1 fopen, 1 fread, 1 fclose)
2. In users/ alle JSONs lesen, damit du den Namen, die Beiträge, und die Signatur für die Leute anzeigen kannst. (10k fopen, 10k fread, 10k fclose)
Problem: Das ist echt viel für eine Webseite, und jetzt das Beste: normalerweise werden nur 20 Beiträge angezeigt, du musst aber immer die ganze JSON in Schritt 1 lesen.
Ergo: Overhead und zwar massiv.
Wie lösen das Datenbanken: 1. Caching, 2. Indizes, 3. Optimizer
Kannst du das Besser: Wohl eher nicht.
Vor allem, vergess nicht, dass das Dateisystem auch eine Datenbank ist, die nicht unbedingt auf das Zugriffspattern von Webseiten optimiert ist.
BTCStorage schrieb:
Wenn man beispielweise ein Forumbeitrag vom User in der Datenbank speichert, wie wuerdest du es dann machen, da kann man ja keine prepared statement benutzen, weil der User ein eigenen Text verfast hat welchen man abspeichert?
Der Text solltest du als BLOB behandeln, das wird in deinem Prepared Statement als "?" oder ":text" abgehandelt. Wenn du mit prepared statements irgendwo user input an $db->prepare übergibst, hast du Mist gebaut.
PHP:
$db=get_db();
$prep=$db->prepare("insert into posts(text,user)(?,?)");
$prep->execute(array($_POST["text"],$userid));
($_POST["text"] auf XSS abklopfen oder so.)