Design Assumptions: 1. the number of directories are magnitudely smaller than the number of files 2. unlimited number of files under any directories Phylosophy: metadata for directories and files should be separated Design: Store directories in normal map all of directories hopefully all be in memory efficient to move/rename/list_directories Log directory changes to append only log file Store files in sorted string table in format efficient to list_files, just simple iterator efficient to locate files, binary search Testing: 1. starting server, "weed server -filer=true" 2. posting files to different folders curl -F "filename=@design.txt" "http://localhost:8888/sources/" curl -F "filename=@design.txt" "http://localhost:8888/design/" curl -F "filename=@directory.go" "http://localhost:8888/sources/weed/go/" curl -F "filename=@directory.go" "http://localhost:8888/sources/testing/go/" curl -F "filename=@filer.go" "http://localhost:8888/sources/weed/go/" curl -F "filename=@filer_in_leveldb.go" "http://localhost:8888/sources/weed/go/" curl "http://localhost:8888/?pretty=y" curl "http://localhost:8888/sources/weed/go/?pretty=y" curl "http://localhost:8888/sources/weed/go/?pretty=y"