Hallo,
Eine Folgefrage zu Verzeichnissen und Datenbanken hat sich ergeben.
und die finde ich gar nicht uninteressant.
Wenn in einem Ordner 10.000 Bilder liegen, dauert der Zugriff über die URI eines Bildes länger, weil der Ordner trotz der URI „durchsucht“ werden muss, und sehr viele Dateien drin liegen?
Ja. Und wie effizient diese Suche ist, hängt vom Datesystem an sich ab. Nehmen wir FAT als sehr einfaches Beispiel, egal ob in der Geschmacksrichtung FAT12, FAT16 oder FAT32 - sie funktionieren im Grunde alle gleich.
Ein Verzeichnis in FAT (und AFAIK auch in NTFS) ist einfach nur ein lange lineare Liste von Dateinamen und ihren zugehörigen Metainformationen wie Dateigröße, Timestamps und Attribute. Die Einträge sind weder sortiert[1] noch indiziert, das OS hat keine Optimierungsmöglichkeit beim Auffinden eines bestimmten Eintrags. Der Zugriff auf eine bestimmte Datei erfordert daher eine sture lineare Suche und für jeden Eintrag einen Stringvergleich[2]. Je mehr Dateien in einem Verzeichnis liegen, desto länger dauert also schon das Finden der Datei.
Natürlich sind effizientere Organisationen denkbar, und ich meine gelesen zu haben, dass einige Linux-Datesysteme eine Art Baumstruktur verwenden und so die Zahl der Vergleiche auch bei umfangreichen Verzeichnissen sehr gering bleibt.
Das gleiche frage ich mich gerade für Datenbanken? Nehmen wir an, ich habe ein Feld mit 100.000 Einträgen.
Du meinst eine _Tabelle_ mit 1000000 Einträgen (Datensätzen)?
Wenn ich jetzt die ID eines Eintrages habe und aufrufe, spielt es da eine Rolle, wie viele Daten in diesem Feld stehen? Wenn ich nach der ID suchen würde, Sicherlich, aber wenn ich die ID bereits habe?
Auch das kommt wieder auf die Organisation der Tabelle an. Wenn die Spalte mit der ID als sortierrelevanter Schlüssel festgelegt ist, existiert ein Index, mit dessen Hilfe das DBMS den gesuchten Eintrag mit wenigen Zugriffen auffinden kann. Andernfalls wird auch hier eine lineare Suche erforderlich.
Ciao,
Martin
[1] Alle mir bekannten Dateimanager unter Windows zeigen Verzeichnisinhalte immer nach einem bestimmten Merkmal sortiert an, nicht in der Reihenfolge, wie sie physikalisch vorliegen. Das suggeriert, dass sie sortiert gespeichert sind - ein Trugschluss. Ein "dir" an der Kommandozeile zeigt normalerweise die tatsächliche, unsortierte Reihenfolge.
[2] Genaugenommen zwei Stringvergleiche, weil der Kompatibilität zuliebe meistens noch die gekürzten 8.3-Namen mitgeschleppt werden und eine Datei so unter zwei verschiedenen Namen gefunden werden kann.
--
Um die Wahrheit zu erfahren, muss man den Menschen widersprechen.
(George Bernhard Shaw)
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(