C'è una piccola verità in ogni risposta qui, ma non penso che sia tutta la verità.
Ciò che elencherai sono per lo più funzioni che sono quotidianamente perse da utenti e sviluppatori.
Le persone non capiscono il file system basato sull'albero più di quanto non ne capirebbero uno basato su DAG.
E non ci sono assolutamente scuse per le appendici patetiche dei nomi di file chiamati estensioni. Non solo sono completamente inadatti al loro scopo (identificando il tipo di file) ma anche una fonte inesauribile di fastidi per gli utenti.
Il motivo per cui li stiamo ancora utilizzando è un misto di un atteggiamento "che farò" e la reale necessità di mantenere la compatibilità con il vecchio codice. Un nuovo approccio alla memorizzazione dei file significherebbe un cambiamento radicale nell'API I / O di file di base, rendendo inutilizzabile la maggior parte del codice esistente. O quello o devi andare in punta di piedi intorno a loro, mantenendo l'API legacy. Ricorda PROGRA ~ 1.
Penso per le ragioni di cui sopra, anche se il futuro potrebbe contenere file system più specializzati per applicazioni speciali, ma mentre le architetture di PC desktop e laptop del presente sopravvivono, siamo bloccati con il file system in gran parte ad albero con la sua mancanza dei metadati e delle sue orribili estensioni.
Ora ho intenzione di cambiare lato.
Dato che è tutto intorno a noi, non apprezziamo mai quanto sia strabiliante la metafora dell'albero. Sul mio disco fisso ho diverse centinaia di migliaia di file. Se devo trovarne uno, raramente ci vuole più di un minuto, anche se so molto poco del file. Ora immagina lo stesso compito senza alcuna struttura, solo una lista di nomi piatta, scorrendo all'infinito.
Eppure tutte le operazioni sono semplici, non c'è azione spettrale a distanza, nulla che possa farmi finire wtf.
In realtà, ho implementato un archivio documenti con metadati ricchi e una gerarchia basata su DAG una volta. (Non era nemmeno un DAG a forma libera, era strettamente una metastruttura a due livelli e i documenti, che potevano essere figli di una raccolta di livello 1 o di livello 2. Quindi è molto semplice.)
Ovviamente, il requisito che i nomi dei documenti dovrebbero essere unici all'interno di una collezione doveva rimanere.
E poi i problemi hanno iniziato a fluire. Cosa succede se si apre una raccolta e si modifica il nome del documento in qualcosa che si scontra in una collezione diversa a cui appartiene anche il documento? Abbiamo visualizzato un messaggio di errore, ma gli utenti erano completamente sconcertati. (Questi sono gli stessi utenti che hanno richiesto questo requisito).
Hanno provato a eliminare un documento, ma tutto ciò che è stato fatto è stato rimuoverlo dalla raccolta. Quindi è ancora presente nei risultati di ricerca. Abbiamo provato anche il contrario, ma poi si sono lamentati del fatto che hanno cancellato un documento dalla raccolta A e che è scomparso magicamente dalla raccolta B. Quindi avevamo bisogno sia di un "link" che di un'operazione di cancellazione.
Alla fine abbiamo ammesso la sconfitta, fortunatamente ancora in tempo.
Le sfaccettature extra di ricerca rese possibili dai metadati hanno comunque funzionato.