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である。