THOMAS CARRIERO：私はトーマスCarrieroよ。
私はDropboxのソフトウェア·エンジニアです。
>> ALEX ALLAIN：私はアレックスALLAINよ。
私はここでのDropboxのエンジニアです。
>> THOMAS CARRIERO：はい、私がいた CS50のため実際には最初のヘッドTF
デビッド·マリンは、クラスを引き継いだとき。
私はすでに教えていた 2学期のためCS50
だったマイク·スミスと そこに前の教授。
>> ALEX ALLAIN：だから私は実際にしませんでした CS50を取るが、私は、TFそれを二回やった。
一回定期的に、TFとして、 [マイ年生
私は実際のヘッドTFた 楽しかったCS50、。
THOMAS CARRIERO：だから ダビデは手を伸ばしたとき
私にはセットアップについて CS50アプライアンス内のDropbox、
私がいるので、本当に興奮していた 私たちは実際にLinuxクライアントを持っている、
従って私達のユーザーのほとんどは、いずれかを使用 WindowsまたはMacintoshクライアント、
が、Linux、Macintosh、およびWindowsの クライアントはすべて、実際には非常に似ています。
>> それでは、私たちがやったことは、我々はプリインストールされている CS50でのDropboxのLinuxクライアント
アプライアンス、それは同じように動作します 当社の他のLinuxユーザがすべて表示されます。
>> ALEX ALLAIN：だから Dropboxの動作方法がそれです
多くの異なった上でクライアントとして実行されます オペレーティングシステムおよびデバイス。
Dropboxのデスクトップクライアントです 最もよく知られているの一つ、
そして最も興味深いの一つ。
>> THOMAS CARRIERO：だからDropboxが 基本的にすべてのファイルを取り
フォルダに入れ、それをチャンクという 4メガバイトのチャンクにそれらのファイル。
だから我々は、100メガバイトを取るよ PDFファイル、我々はよ
25 4メガバイトのチャンクにチャンクに。
これらのチャンクは、その後、暗号化され、 その後、我々は我々のブロックのサーバーに送信します。
>> ALEX ALLAIN：ブロックサーバーです ブロック自身のためのストレージ、
そして、各ブロックがに格納されている データを持つブロック·サーバ
そのブロックのショー356ハッシュ。
それは原始的な非常に基本的な暗号化だ それはある意味で、要約し、
非常にユニークな方法でデータ つまり、そのデータに固有です。
>> あなたがアップロードできる すべてを一度にファイル全体、
これを行うと、それは結局のところ その、非常に大きなファイルが取る
アップロードする本当に長い時間、もし あなたは、障害を持っている、あなたは運が悪いのだ
そしてあなたはそれを再起動する必要があります。
>> 私たちがしてやっていることは、我々が言うことである 我々のシステム内の別のサーバー、
我々は、メタデータと呼んでいるもの ちょっとこれはファイルであること、サーバー、
そしてそれはで構成だ ブロックのリストを次に示します。
そして、我々はハッシュを渡す それらのブロックを識別するために
のではなく、再アップロード ブロック全体。
そしてメタサーバ ブロック·サーバーをチェックし、
ブロックが存在することを確認します。
彼らは、完璧されている場合。
すべてが良いです。
>> THOMAS CARRIERO：ときに我々 基本的にダウンロードしたい
インターネットからファイルをみましょう 我々は最後のメタサーバに言うよ、と言う
まず、ちょっとあなたが私に言うことができる このファイルの位置どこでしょうか？
そしてメタサーバは、このファイルのああ、と言うだろう 実際に25 4メガバイトのチャンク、
ここで彼らは。
そして、我々は、ブロック·サーバを行くよと 実際にこれらのチャンクのそれぞれをダウンロードします。
そして、我々は再構成します そこからファイル、
そして、我々は、ダウンロードを開始します。
はい、そうDropboxのお得な情報の スケールと基本的に
非常に、非常に積極的なシャーディングによる。
>> ALEX ALLAIN：あなたシャーディングがある あなたのスタートにすべてのユーザーを取る
またはあなたの会社と、おそらく彼ら 1データベースにあった、
それはあなたまで素晴らしい作品 ユーザーが特定の数に当たる。
本当に何をしたい 行うにはいくつかの方法を見つけることです
2間でそれらを分割するには データベース、または多分より多く2。
理想的には、あなたができることを十分に 世界のすべてのユーザーがいる。
>> だからあなたはシャードとき、 何をやっていることはあなたです
決定するいくつかの方法を見つける どのデータベースへ行くか
それには必要ありません 中央ディレクトリを打つ。
または多分それは、非常に速いです 安価なルックアップ中央ディレクトリ。
>> THOMAS CARRIERO：我々は持っていることはありません すべてが1つのデータベースに格納され、
それがほとんどだから 拡張する予定はありません。
だからではなく、私たちが行いますと、すべてを取るです その情報は、すべてのファイル
メタデータに格納され、 数百にわたるシャード
または論理データベースの数千。
そして、それは我々が持っている場合ことを意味します 利用者の情報の要求、
まず、どのデータベースねえ、と言うでしょう このユーザーの情報は、保存されている？
その後、我々は基本的によ 行くためにその決定を使用
そのデータベースを見つける ここで我々はだろうとそれはです
すべてのファイルをロードしたり、すべての ファイルに関するメタデータ。
>> だから我々はシャーディングをたくさん使う。
しかし、シャーディングは常に十分ではありません。
あなたが実際にキャッシュする必要がある 共通の要求の多くは、
理由も含めてデータベース クエリは高価なことができます
私たちはまた、積極的な取り込みを行う 必ず最もことを確認するための戦略
一般的な要求がある 計算するのは非常に簡単。
そして基本的にはかなっている より速く、それは元のスケールを協調させる。
だから、非常にだ Dropboxのがどのように動作する高レベル。
>> ALEX ALLAIN：私はアレックスALLAINよ。
>> THOMAS CARRIERO：そして 私はトーマスCarrieroよ。
ALEX ALLAIN：そして、これはCS50である。