1

Basecampを使用したことがある場合は、ドキュメントマネージャーページがあり、ここでデモを見つけることもできます。同じファイルが2回アップロードされたときにバージョンを作成する機能が気に入りました。[オプションで、ユーザーがファイルを新しいバージョンとして作成するように指定します]。DATABASEファイルはasレコードとasファイルでどのように維持されていると思いますかDISK。私の調査によると、ファイルは以下のように保存されているようです

構造

[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 に答える