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 나는 드롭 박스의 소프트웨어 엔지니어 해요. 4 00:00:03,640 --> 00:00:05,250 >> ALEX ALLAIN : 나는 알렉스 Allain에 있어요. 5 00:00:05,250 --> 00:00:08,200 여기 보관의 엔지니어입니다. 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 이미 가르치고 있었다 두 학기 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 장비의 보관, 15 00:00:38,647 --> 00:00:41,230 나는 정말 흥분 때문에 우리는 실제로 리눅스 클라이언트가, 16 00:00:41,230 --> 00:00:46,270 그래서 우리의 사용자의 대부분은 하나를 사용 Windows 또는 Macintosh 클라이언트, 17 00:00:46,270 --> 00:00:50,940 그러나 리눅스, 매킨토시, 윈도우 클라이언트는 모든 실제로 매우 유사합니다. 18 00:00:50,940 --> 00:00:55,590 >> 그래서 우리가 한 것은 우리가 사전 설치되어 CS50에 보관 리눅스 클라이언트 19 00:00:55,590 --> 00:00:59,990 가전​​, 그것은 마찬가지로 실행 우리의 다른 리눅스 사용자의 모든. 20 00:00:59,990 --> 00:01:02,210 >> ALEX ALLAIN : 그래서 드롭 박스의 작동 방법은있다 21 00:01:02,210 --> 00:01:08,590 다양한상의 클라이언트로서 실행될 운영 시스템 및 장치. 22 00:01:08,590 --> 00:01:11,387 보관 용 데스크톱 클라이언트는 가장 잘 알려진 중 하나, 23 00:01:11,387 --> 00:01:12,720 가장 흥미로운 중 하나입니다. 24 00:01:12,720 --> 00:01:15,460 >> THOMAS CARRIERO : 그래서 보관 기본적으로 모든 파일을 소요 25 00:01:15,460 --> 00:01:19,500 당신은 폴더에 넣어 청크 것을 해당 파일 네 메가 바이트 청크로. 26 00:01:19,500 --> 00:01:23,270 그래서 우리는 100 메가 바이트 할게요 PDF 파일과 우리는거야 27 00:01:23,270 --> 00:01:26,070 청크는 25 개의 메가 바이트 덩어리로. 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 metaserver 다음 블록 서버를 확인, 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 인터넷에서 파일의에게하자 말하자면, 우리는 마지막 metaserver으로 말할 것 49 00:02:30,050 --> 00:02:33,090 먼저, 이봐 당신은 저에게 말할 수있다 이 파일의 위치 위치에 대한? 50 00:02:33,090 --> 00:02:37,230 그리고 metaserver 말, 오,이 파일의 것 실제로 25 개의 메가 바이트 덩어리, 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 상품의 예, 그래서 보관 규모 기본적으로 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 또는 회사와 어쩌면 하나의 데이터베이스로 사용 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 두 가지를 통해 그 분열 데이터베이스, 아니면 두 개 이상의. 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 : 우리는 결코 하나의 데이터베이스에 저장된 모든 것을 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 기본적으로이 많이 있습니다 빠르고 그것이 EX 치수를 작동한다. 84 00:04:14,630 --> 00:04:17,320 그래서 매우시의 드롭 박스의 작동 방식을 높은 수준. 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