THOMAS CARRIERO : 나는 토마스 Carriero 해요. 나는 드롭 박스의 소프트웨어 엔지니어 해요. ALEX ALLAIN : 나는 알렉스 Allain에 있어요. 여기 보관의 엔지니어입니다. THOMAS CARRIERO : 네,했습니다 실제로 CS50에 대한 첫 번째 머리 TF 데이비드 마린 클래스를 인수 할 때. 이미 가르치고 있었다 두 학기 CS50 이었다 마이크 스미스와 이 전 교수. ALEX ALLAIN : 그래서 실제로하지 않았다 CS50을,하지만 난 TF를 두 번했다. 일단 일반 TF로, 다음 내 학년 사실의 머리 TF했다 재미를 많이했다 CS50. THOMAS CARRIERO : 그래서 다윗은 밖으로 도달 할 때 나에게 설정에 대한 CS50 장비의 보관, 나는 정말 흥분 때문에 우리는 실제로 리눅스 클라이언트가, 그래서 우리의 사용자의 대부분은 하나를 사용 Windows 또는 Macintosh 클라이언트, 그러나 리눅스, 매킨토시, 윈도우 클라이언트는 모든 실제로 매우 유사합니다. 그래서 우리가 한 것은 우리가 사전 설치되어 CS50에 보관 리눅스 클라이언트 가전​​, 그것은 마찬가지로 실행 우리의 다른 리눅스 사용자의 모든. ALEX ALLAIN : 그래서 드롭 박스의 작동 방법은있다 다양한상의 클라이언트로서 실행될 운영 시스템 및 장치. 보관 용 데스크톱 클라이언트는 가장 잘 알려진 중 하나, 가장 흥미로운 중 하나입니다. THOMAS CARRIERO : 그래서 보관 기본적으로 모든 파일을 소요 당신은 폴더에 넣어 청크 것을 해당 파일 네 메가 바이트 청크로. 그래서 우리는 100 메가 바이트 할게요 PDF 파일과 우리는거야 청크는 25 개의 메가 바이트 덩어리로. 그 덩어리는 다음 암호화되어 우리는 우리의 블록 서버에 보냅니다. ALEX ALLAIN : 블록 서버는 블록 자체의 저장, 그래서 각 블록에 저장된다 데이터 블록 서버 그 블록의 쇼 356 해시. 즉 원시 아주 기본적인 암호화의 즉, 어떤 의미에서, 요약, 매우 독특한 방식으로 데이터 즉, 데이터에 고유합니다. 당신은 업로드 할 수있는 한 번에 전체 파일, 당신이 할 경우 그것은 밝혀 즉, 정말 큰 파일을 가지고 업로드 정말로 긴 시간, 그리고 만약 당신은 장애를 가지고, 당신은 운이 없군요 그리고 당신은 그것을 다시 시작해야합니다. 우리가 다음 할 일은 우리가 얘기입니다 우리의 시스템에있는 다른 서버, 그리고 우리는 메타 데이터를 호출 서버, 즉 헤이 이것은 파일입니다 그것은 이루어지는 것 블록의 목록을 다음과 같습니다. 그리고 우리는 해시를 전달 이들 블록을 식별하는 보다는 다시 업로드 전체 블록. metaserver 다음 블록 서버를 확인, 블록이 확인합니다. 그들은 완벽합니다. 모든 것이 좋다. THOMAS CARRIERO : 때 우리 기본적으로 다운로드 할 인터넷에서 파일의에게하자 말하자면, 우리는 마지막 metaserver으로 말할 것 먼저, 이봐 당신은 저에게 말할 수있다 이 파일의 위치 위치에 대한? 그리고 metaserver 말, 오,이 파일의 것 실제로 25 개의 메가 바이트 덩어리, 여기에 그들이있다. 그리고 우리는 블록 서버를 이동하고 있습니다 실제로 그 덩어리의 각을 다운로드 할 수 있습니다. 그리고 우리는 재구성합니다 파일 거기에서, 그리고, 우리는 다운로드를 시작합니다. 상품의 예, 그래서 보관 규모 기본적으로 아주로, 매우 공격적 샤딩. ALEX ALLAIN : 당신 샤딩은 당신의 시작까지의 모든 사용자를 가지고 또는 회사와 어쩌면 하나의 데이터베이스로 사용 그리고 그 때까지 잘 작동합니다 사용자의 특정 수를 기록했다. 정말 당신이 원하는 수행하는 몇 가지 방법을 찾을 수 있습니다 두 가지를 통해 그 분열 데이터베이스, 아니면 두 개 이상의. 당신이 할 수있는 것을 이상적으로, 충분히 세계의 모든 사용자가있다. 그리고 당신은, 샤딩 때 당신이 할 일은 당신입니다 결정의 몇 가지 방법을 찾아 어떤 데이터베이스에 할 일 그 필요가 없습니다 중앙 디렉토리를 타격. 아니면 그것은 매우 빠르다 저렴한 룩업 중앙 디렉토리. THOMAS CARRIERO : 우리는 결코 하나의 데이터베이스에 저장된 모든 것을 그것은 거의 때문에 확장하려고하지 않습니다. 그래서 그 대신, 우리가 할 것이다 모두를 가지고 있습니다 그 내용은, 모든 파일 메타 데이터에 저장됩니다, 수백에서 샤딩 또는 논리적 데이터베이스의 수천. 그리고 즉, 우리가있을 때 사용자의 정보를 요청, 우리는 먼저, 말할 거 야하는 데이터베이스 이 사용자의 정보가 저장됩니다? 그 다음 우리는 기본적으로 거 가서 그 결정을 사용하여 해당 데이터베이스를 찾아 그게 어디 우리가 거 모든 파일 또는 모두를로드 파일에 대한 메타 데이터. 그래서 우리는 샤딩을 많이 사용합니다. 그러나 샤딩은 항상 충분하지 않습니다. 당신은 실제로 캐시 할 필요가있다 일반적으로 많은 요청, 때문에 심지어 데이터베이스 쿼리는 비용이 많이들 수 있습니다 그래서 우리는 또한 적극적인 캡처 할 반드시 가장 있는지 확인하기위한 전략 일반적인 요청은 계산하는 것은 매우 쉽습니다. 기본적으로이 많이 있습니다 빠르고 그것이 EX 치수를 작동한다. 그래서 매우시의 드롭 박스의 작동 방식을 높은 수준. ALEX ALLAIN : 나는 알렉스 Allain에 있어요. THOMAS CARRIERO : 그리고 나는 토마스 Carriero 해요. ALEX ALLAIN : 그리고이 CS50입니다.