1 00:00:00,000 --> 00:00:00,409 2 00:00:00,409 --> 00:00:01,950 THOMAS CARRIERO:私はトーマスCarrieroよ。 3 00:00:01,950 --> 00:00:03,640 私はDropboxのソフトウェア·エンジニアです。 4 00:00:03,640 --> 00:00:05,250 >> ALEX ALLAIN:私はアレックスALLAINよ。 5 00:00:05,250 --> 00:00:08,200 私はここでのDropboxのエンジニアです。 6 00:00:08,200 --> 00:00:11,320 >> THOMAS CARRIERO:はい、私がいた CS50のため実際には最初のヘッドTF 7 00:00:11,320 --> 00:00:13,660 デビッド·マリンは、クラスを引き継いだとき。 8 00:00:13,660 --> 00:00:17,010 私はすでに教えていた 2学期のためCS50 9 00:00:17,010 --> 00:00:20,700 だったマイク·スミスと そこに前の教授。 10 00:00:20,700 --> 00:00:25,310 >> ALEX ALLAIN:だから私は実際にしませんでした CS50を取るが、私は、TFそれを二回やった。 11 00:00:25,310 --> 00:00:29,050 一回定期的に、TFとして、 [マイ年生 12 00:00:29,050 --> 00:00:32,520 私は実際のヘッドTFた 楽しかったCS50、。 13 00:00:32,520 --> 00:00:34,270 THOMAS CARRIERO:だから ダビデは手を伸ばしたとき 14 00:00:34,270 --> 00:00:38,647 私にはセットアップについて CS50アプライアンス内のDropbox、 15 00:00:38,647 --> 00:00:41,230 私がいるので、本当に興奮していた 私たちは実際にLinuxクライアントを持っている、 16 00:00:41,230 --> 00:00:46,270 従って私達のユーザーのほとんどは、いずれかを使用 WindowsまたはMacintoshクライアント、 17 00:00:46,270 --> 00:00:50,940 が、Linux、Macintosh、およびWindowsの クライアントはすべて、実際には非常に似ています。 18 00:00:50,940 --> 00:00:55,590 >> それでは、私たちがやったことは、我々はプリインストールされている CS50でのDropboxのLinuxクライアント 19 00:00:55,590 --> 00:00:59,990 アプライアンス、それは同じように動作します 当社の他のLinuxユーザがすべて表示されます。 20 00:00:59,990 --> 00:01:02,210 >> ALEX ALLAIN:だから Dropboxの動作方法がそれです 21 00:01:02,210 --> 00:01:08,590 多くの異なった上でクライアントとして実行されます オペレーティングシステムおよびデバイス。 22 00:01:08,590 --> 00:01:11,387 Dropboxのデスクトップクライアントです 最もよく知られているの一つ、 23 00:01:11,387 --> 00:01:12,720 そして最も興味深いの一つ。 24 00:01:12,720 --> 00:01:15,460 >> THOMAS CARRIERO:だからDropboxが 基本的にすべてのファイルを取り 25 00:01:15,460 --> 00:01:19,500 フォルダに入れ、それをチャンクという 4メガバイトのチャンクにそれらのファイル。 26 00:01:19,500 --> 00:01:23,270 だから我々は、100メガバイトを取るよ PDFファイル、我々はよ 27 00:01:23,270 --> 00:01:26,070 25 4メガバイトのチャンクにチャンクに。 28 00:01:26,070 --> 00:01:30,670 これらのチャンクは、その後、暗号化され、 その後、我々は我々のブロックのサーバーに送信します。 29 00:01:30,670 --> 00:01:35,980 >> ALEX ALLAIN:ブロックサーバーです ブロック自身のためのストレージ、 30 00:01:35,980 --> 00:01:39,570 そして、各ブロックがに格納されている データを持つブロック·サーバ 31 00:01:39,570 --> 00:01:43,990 そのブロックのショー356ハッシュ。 32 00:01:43,990 --> 00:01:48,280 それは原始的な非常に基本的な暗号化だ それはある意味で、要約し、 33 00:01:48,280 --> 00:01:53,140 非常にユニークな方法でデータ つまり、そのデータに固有です。 34 00:01:53,140 --> 00:01:55,540 >> あなたがアップロードできる すべてを一度にファイル全体、 35 00:01:55,540 --> 00:02:00,120 これを行うと、それは結局のところ その、非常に大きなファイルが取る 36 00:02:00,120 --> 00:02:03,616 アップロードする本当に長い時間、もし あなたは、障害を持っている、あなたは運が悪いのだ 37 00:02:03,616 --> 00:02:04,740 そしてあなたはそれを再起動する必要があります。 38 00:02:04,740 --> 00:02:07,620 >> 私たちがしてやっていることは、我々が言うことである 我々のシステム内の別のサーバー、 39 00:02:07,620 --> 00:02:11,550 我々は、メタデータと呼んでいるもの ちょっとこれはファイルであること、サーバー、 40 00:02:11,550 --> 00:02:14,200 そしてそれはで構成だ ブロックのリストを次に示します。 41 00:02:14,200 --> 00:02:17,030 そして、我々はハッシュを渡す それらのブロックを識別するために 42 00:02:17,030 --> 00:02:18,770 のではなく、再アップロード ブロック全体。 43 00:02:18,770 --> 00:02:20,820 そしてメタサーバ ブロック·サーバーをチェックし、 44 00:02:20,820 --> 00:02:22,153 ブロックが存在することを確認します。 45 00:02:22,153 --> 00:02:23,140 彼らは、完璧されている場合。 46 00:02:23,140 --> 00:02:24,040 すべてが良いです。 47 00:02:24,040 --> 00:02:26,400 >> THOMAS CARRIERO:ときに我々 基本的にダウンロードしたい 48 00:02:26,400 --> 00:02:30,050 インターネットからファイルをみましょう 我々は最後のメタサーバに言うよ、と言う 49 00:02:30,050 --> 00:02:33,090 まず、ちょっとあなたが私に言うことができる このファイルの位置どこでしょうか? 50 00:02:33,090 --> 00:02:37,230 そしてメタサーバは、このファイルのああ、と言うだろう 実際に25 4メガバイトのチャンク、 51 00:02:37,230 --> 00:02:38,210 ここで彼らは。 52 00:02:38,210 --> 00:02:41,712 そして、我々は、ブロック·サーバを行くよと 実際にこれらのチャンクのそれぞれをダウンロードします。 53 00:02:41,712 --> 00:02:43,670 そして、我々は再構成します そこからファイル、 54 00:02:43,670 --> 00:02:45,086 そして、我々は、ダウンロードを開始します。 55 00:02:45,086 --> 00:02:47,580 はい、そうDropboxのお得な情報の スケールと基本的に 56 00:02:47,580 --> 00:02:50,460 非常に、非常に積極的なシャーディングによる。 57 00:02:50,460 --> 00:02:56,400 >> ALEX ALLAIN:あなたシャーディングがある あなたのスタートにすべてのユーザーを取る 58 00:02:56,400 --> 00:03:00,010 またはあなたの会社と、おそらく彼ら 1データベースにあった、 59 00:03:00,010 --> 00:03:02,620 それはあなたまで素晴らしい作品 ユーザーが特定の数に当たる。 60 00:03:02,620 --> 00:03:04,578 本当に何をしたい 行うにはいくつかの方法を見つけることです 61 00:03:04,578 --> 00:03:07,410 2間でそれらを分割するには データベース、または多分より多く2。 62 00:03:07,410 --> 00:03:10,830 理想的には、あなたができることを十分に 世界のすべてのユーザーがいる。 63 00:03:10,830 --> 00:03:13,080 >> だからあなたはシャードとき、 何をやっていることはあなたです 64 00:03:13,080 --> 00:03:16,830 決定するいくつかの方法を見つける どのデータベースへ行くか 65 00:03:16,830 --> 00:03:20,240 それには必要ありません 中央ディレクトリを打つ。 66 00:03:20,240 --> 00:03:23,670 または多分それは、非常に速いです 安価なルックアップ中央ディレクトリ。 67 00:03:23,670 --> 00:03:27,189 >> THOMAS CARRIERO:我々は持っていることはありません すべてが1つのデータベースに格納され、 68 00:03:27,189 --> 00:03:28,980 それがほとんどだから 拡張する予定はありません。 69 00:03:28,980 --> 00:03:33,970 だからではなく、私たちが行いますと、すべてを取るです その情報は、すべてのファイル 70 00:03:33,970 --> 00:03:36,610 メタデータに格納され、 数百にわたるシャード 71 00:03:36,610 --> 00:03:38,710 または論理データベースの数千。 72 00:03:38,710 --> 00:03:42,900 そして、それは我々が持っている場合ことを意味します 利用者の情報の要求、 73 00:03:42,900 --> 00:03:46,890 まず、どのデータベースねえ、と言うでしょう このユーザーの情報は、保存されている? 74 00:03:46,890 --> 00:03:49,852 その後、我々は基本的によ 行くためにその決定を使用 75 00:03:49,852 --> 00:03:51,560 そのデータベースを見つける ここで我々はだろうとそれはです 76 00:03:51,560 --> 00:03:55,080 すべてのファイルをロードしたり、すべての ファイルに関するメタデータ。 77 00:03:55,080 --> 00:03:56,464 >> だから我々はシャーディングをたくさん使う。 78 00:03:56,464 --> 00:03:57,880 しかし、シャーディングは常に十分ではありません。 79 00:03:57,880 --> 00:04:00,380 あなたが実際にキャッシュする必要がある 共通の要求の多くは、 80 00:04:00,380 --> 00:04:04,010 理由も含めてデータベース クエリは高価なことができます 81 00:04:04,010 --> 00:04:07,570 私たちはまた、積極的な取り込みを行う 必ず最もことを確認するための戦略 82 00:04:07,570 --> 00:04:10,310 一般的な要求がある 計算するのは非常に簡単。 83 00:04:10,310 --> 00:04:14,630 そして基本的にはかなっている より速く、それは元のスケールを協調させる。 84 00:04:14,630 --> 00:04:17,320 だから、非常にだ Dropboxのがどのように動作する高レベル。 85 00:04:17,320 --> 00:04:19,149 >> ALEX ALLAIN:私はアレックスALLAINよ。 86 00:04:19,149 --> 00:04:20,857 >> THOMAS CARRIERO:そして 私はトーマスCarrieroよ。 87 00:04:20,857 --> 00:04:22,579 ALEX ALLAIN:そして、これはCS50である。 88 00:04:22,579 --> 00:04:23,936