我正在尝试创建类似Web应用程序的Dropbox。我希望用户创建目录并将文件上传到服务器。我已经完成了大部分任务,但我仍然坚持“如何有效地将目录结构存储在数据库中?”的问题。
项目要求:
1)它应该能够以给定特定目录路径的方式存储目录,它应该能够找到其中的所有文件和目录。
例如:给定路径:root / abc / xyz,我应该能够找到xyz下的所有文件和目录。
2)不同父目录中的两个目录可以具有相同的名称
我对互联网的研究:
1)有一种称为路径枚举的方法,其中应用程序将整个路径存储到与该目录对应的列中的目录
例如:如果我的目录结构为root / abc / xyz
然后在对应于xyz目录的表中的行将存储路径root / abc
但这种方法看起来效率不高
2)我还获得了嵌套集模型的信息。但是树的深度和分层节点的总数是未知的,因此不能使用
3)还有另一种方法,我只在每个目录条目中存储root_directory id而不是整个路径
例如:create table directory(directory_id varchar(32)primary key,directory_name varchar(128),created_date varchar(20),root_directory varchar(32),user_id varchar(32))
但是我如何使用路径作为root / abc / xyz查询数据库以获取xyz目录下的所有文件和目录。我找到了一些多连接操作来执行此操作。但是随着目录结构的深度增加,连接查询将严重影响性能
请有人向我展示一种更好的解决方案。我很感谢你