1

如果您使用过Basecamp,则有一个文档管理器页面,您还可以在此处找到演示。我喜欢在同一文件上传两次时创建版本的功能,[可选地,用户指定将文件创建为新版本]。您认为这些文件是如何保存在DATABASEas 记录和DISKas 文件中的。根据我的检查,文件似乎保存如下

结构

[user_folder]
 [project_name]
  [file_name]
    [V1/V2/V3]

例如考虑以下

例子

  1. 用户名为“mak”

  2. 项目名称“izord”和

  3. 文件名为“base.html”

它有 2 个版本这里是目录结构

   [mak]
     [izord]
      [base]
        [V1]
         base.html
        [V2]
          base.html

我的假设可能是错误的,但这就是为什么我在这里纠正它。

问题

  1. 你认为在这种情况下我可以如何组织磁盘上的文件
  2. 您是否有任何预制的、已经开发的表格结构来保存文件详细信息?
  3. 如何根据演示视频中的字母对表格中的文件进行排序。他们是否在维护另一张桌子?
4

1 回答 1

1

首先,我很确定他们将文件存储在 S3 中,因此请考虑到这一点。

至于数据库结构,我会有类似的东西

Account:      ID
Project:      ID, AccountID
File:         ID, ProjectID, Name, ContentType, CurrentRevision
FileRevision: ID, FileID, ContentLength, AmazonS3Key, CreatedAt, CreatedBy

然后将每个文件存储在<bucket>/<account-id>/<project-id>/<file-name>“目录”下(S3 中没有实际的目录,但它们用正斜杠模拟)。文件内容进入适当的目录:

<bucket>/<account-id>/<project-id>/<file-name>
  v1
  v2
  ...
  v13

上传文件的新修订版只需将v<File.CurrentRevision + 1>条目添加到 S3 存储。

另请注意,披露帐户和项目的 ID 可能不是一个好主意,所以我会使用这些哈希值:<bucket>/<md5(account-id + salt)>/<md5(project-id + salt)>/<file-name>

于 2011-10-13T11:17:51.563 回答