THOMAS CARRIERO: Ich bin Thomas Carriero. Ich bin ein Software-Ingenieur bei Dropbox. ALEX ALLAIN: Ich bin Alex Allain. Ich bin ein Ingenieur hier bei Dropbox. THOMAS CARRIERO: Ja, ich war tatsächlich der erste Kopf TF für CS50 als David Malin übernahm die Klasse. Ich hatte bereits unterrichtet CS50 für zwei Semester mit Mike Smith, der war der Stand der Professor dort. ALEX ALLAIN: Also ich eigentlich nicht CS50 nehmen, aber ich habe es zweimal TF. Einmal als normale TF, und dann mein Abschlussjahr Ich war eigentlich der Kopf TF CS50, die eine Menge Spaß gemacht hat. THOMAS CARRIERO: So als David streckte mir über die Einrichtung Dropbox in der CS50-Appliance, Ich war wirklich aufgeregt, denn wir haben tatsächlich einen Linux-Client, so dass die meisten unserer Benutzer entweder Windows-oder Macintosh-Clients die, aber die Linux-, Macintosh-und Windows Kunden sind alle eigentlich sehr ähnlich. Also, was wir getan haben ist, dass wir vorinstalliert die Dropbox-Linux-Client in der CS50 Gerät, und es läuft so wie alle anderen Linux-Benutzer. ALEX ALLAIN: Also die Weg Dropbox funktioniert, ist es läuft als Client auf verschiedenen Betriebssysteme und Geräte. Die Dropbox-Desktop-Client ist eines der bekanntesten, und eine der interessantesten. THOMAS CARRIERO: Also Dropbox nimmt grundsätzlich alle Dateien dass Sie in den Ordner legen und es Brocken diese Dateien in vier Megabyte Brocken. Also werden wir eine 100-MB-nehmen PDF-Datei und wir werden Stück in vier 25-MB-Brocken. Diese Stücke werden dann verschlüsselt und dann schicken wir sie zu unserem Block-Servern. ALEX ALLAIN: Die Block-Server sind der Speicher für die Blöcke selbst, und so wird jeder Block gespeicherten der Block-Server mit der Daten Shaw und eine 356-Hash dieses Blocks. Das ist eine sehr primitive Grundverschlüsselung dass fasst, in gewissem Sinne, die Daten in einer einzigartigen Art und Weise das ist einzigartig für diese Daten. Sie könnten lade die gesamte Datei auf einmal aber es stellt sich heraus, ob Sie tun dass die wirklich großen Dateien nehmen eine wirklich lange Zeit zu laden, und wenn Sie einen Ausfall haben, aus Glück sind Sie und Sie haben, um es neu zu starten. Was wir dann zu tun ist, wir sagen ein anderer Server in unserem System, und was wir nennen die Metadaten Server, hey das ist, dass eine Datei, und es ist, der sich aus folgende Liste von Blöcken. Und wir verzichten die Hashes , diese Blöcke zu identifizieren eher als Re-Upload der gesamte Block. Die Metaserver dann prüft die Block-Servern stellt sicher, dass die Blöcke sind da. Wenn sie sind, perfekt. Alles ist gut. THOMAS CARRIERO: Wenn wir wollen im Grunde downloaden die Datei aus dem Internet, lassen Sie uns sagen wir, wir werden bis zum letzten Metaserver sagen erste, hey kannst du mir sagen wo liegt dieser Datei? Und Metaserver werden sagen, oh, diese Datei tatsächlich vier 25-MB-Brocken, und hier sind sie. Und dann werden wir einen Block-Server gehen und tatsächlich herunterladen jede dieser Brocken. Und dann werden wir rekonstruieren die Datei von dort, und dann werden wir den Download zu starten. Ja, so Dropbox der Angebote mit Skala im Grunde von sehr, sehr aggressive Splitter. ALEX ALLAIN: Sharding ist, wenn Sie nehmen alle Benutzer in Ihrem Start-up oder Ihre Firma und vielleicht verwendet, um in einer Datenbank sein, und das funktioniert super, bis Sie traf eine bestimmte Anzahl von Benutzern. Und wirklich, was Sie wollen tun müssen, ist einen Weg finden, zu denen in zwei Teile gespalten Datenbanken, oder vielleicht mehr als zwei. Idealerweise genug, dass man haben alle Nutzer in der Welt. Und so, wenn Sie Scherbe, was Sie tun, ist, dass Sie einen Weg finden, zu entscheiden, die Datenbank zu gehen derjenigen erfordert keine Kollision mit einem zentralen Verzeichnis. Oder vielleicht ist es eine sehr schnelle, billige Look-up-zentralen Verzeichnis. THOMAS CARRIERO: Wir haben nie alles in einer Datenbank gespeichert, denn das ist fast nie zu skalieren. Anstatt also, was wir tun, ist alles dass die Informationen, alle Dateien, die auf den Metadaten gespeichert, Scherbe über Hunderte oder Tausende von logischen Datenbanken. Und das bedeutet, dass, wenn wir einen Antrag auf Informationen eines Benutzers, wir zunächst sagen, hey die Datenbank die Informationen dieses Benutzers gespeichert? Dann werden wir im Grunde verwenden Sie diese Entscheidung zu gehen finden diese Datenbank und das ist, wo wir Laden Sie alle Dateien oder alle die Metadaten zu den Dateien. So verwenden wir eine Menge Splitter. Aber Splitter ist nicht immer genug. Sie sind tatsächlich benötigen, um zwischenspeichern eine Menge der gemeinsamen Anfragen denn selbst die Datenbank Abfragen können teuer sein so tun wir auch aggressive Erfassung Strategien, um sicherzustellen, dass die meisten häufigsten Anfragen sind ganz einfach zu berechnen. Und im Grunde, dass macht viel schneller und es macht es arbeiten Ex-Skala. Also das ist auf einem sehr High-Level-wie Dropbox funktioniert. ALEX ALLAIN: Ich bin Alex Allain. THOMAS CARRIERO: Und Ich bin Thomas Carriero. ALEX ALLAIN: Und das ist CS50.