> Why don't you need replication?
We do not need replication right now because our user base is low, but I don't see how an hierarchical file structure would prevent us from doing it.
> what value does the directory structure add over just hashing the file, storing the file by it's hash in the same directory with all the other files, and then referencing the hash in your SQL?
This would remove the need for validating the hierarchical filestructure. However, having one makes it easier to simply navigate the filesystem with pre-existing tools (find, grep, or bash scripts), to help debug issues, find certain projects, etc. Using your solution would abstract the filesystem, and it would become a blackbox to us without the database's aid. This would also make it harder to spot certain problems - e.g., is an image being referenced in a project it doesn't belong to? It also doesn't help me validate max file sizes per type of file, nor does it help me check if all paths in the database actually exist in the filesystem.
Having the filenames be its hash is an interesting solution to assure integrity, though.