diff options
Diffstat (limited to 'go/filer/design.txt')
| -rw-r--r-- | go/filer/design.txt | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/go/filer/design.txt b/go/filer/design.txt new file mode 100644 index 000000000..45fec8fbe --- /dev/null +++ b/go/filer/design.txt @@ -0,0 +1,26 @@ +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 <dir_id/filename> 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" |
