日期:2014-05-17  浏览次数:20752 次

询问一个具体的实现问题,一直很奇怪
本帖最后由 WDYDXF 于 2013-07-31 13:51:19 编辑
百度的网盘,我试了试,拷贝一个1g左右的零散文件(比如从一个文件夹,拷贝到另一个文件夹),大概4秒钟就搞定了.

为什么会这么快呢?




他是只存储了一份真实的物理文件,用户看到了文件夹结构什么的东西,都是从数据库中读出来的吗?
百度 网盘 存储

------解决方案--------------------
当然是虚拟的,给用户的感觉是换了一个目录,但是却不是真实的情况。
------解决方案--------------------
只是文件夹换了一下,实际的文件根本就不需要动的!
------解决方案--------------------
只是文件目录换下,
实际的文件不是会移动的
------解决方案--------------------
以上回答都正确,我也来凑个热闹,呵呵,实际的物理文件没有动,直接在数据库中重新换了一下物理文件与现实的文件的对应关系,比如结构是
UserId(用户的唯一标识)  FileName(用户看到的文件名或路径) FilePath(物理路径,实际的名称可能和用户看到的不同,比如为了防止文件名重复以时间或Guid命名),不只是你自己的文件换一个路径,包括如果你所上传的文件别人已经上传过的话,实际也是先比对你本地的文件在服务器上是否存在,如果存在则只需要添加一条关联你的文件名和物理文件对应的关系记录即可,比对文件是否相同可以通过文件的MD5值等
------解决方案--------------------
换个马甲。。。。。。
------解决方案--------------------
引用:
只是文件夹换了一下,实际的文件根本就不需要动的!

您说的:"只是文件夹换了一下",意思是:实际上,没有文件夹结构,所有文件都在一个文件夹内存放.文件夹的结构目录 是在 数据库中存储的,对吗
------解决方案--------------------
引用:
Quote: 引用:

当然是虚拟的,给用户的感觉是换了一个目录,但是却不是真实的情况。

一个文件夹下的文件数量是有上线的,即使64位的服务器,可以存储上亿的的文件.但随着文件的增多.
一来,系统检索文件会越来越慢;
二来,如果达到了文件的最大数量,那怎么办?关了系统,重构一个吗?

文件夹下的文件多了,自然需要整理,根据算法合理的分配。至于你说的那个目录,绝对是假的。
------解决方案--------------------
就是只把目录显示出来,你移动的是显示的图标和数据连接路径.真是的文件实在服务器保存着呢,就没有动.