THOMAS CARRIERO: אני תומאס Carriero. אני מהנדס תוכנה בDropbox. ALEX Allain: אני אלכס Allain. אני מהנדס כאן בDropbox. THOMAS CARRIERO: כן, הייתי למעשה TF הראש הראשון לCS50 כאשר דוד מלין השתלט על הכיתה. אני כבר מלמד CS50 לשני סמסטרים עם מייק סמית, שהייתה הפרופסור לפני שם. ALEX Allain: אז אני בעצם לא לקחת CS50, אבל עשיתי TF אותו פעמיים. פעם אחת כTF רגיל, ולאחר מכן שנת הלימודים האחרונה למעשה הייתי TF ראש CS50, שהיה הרבה כיף. THOMAS CARRIERO: אז כאשר דוד הושיט את ידו איתי על הגדרה Dropbox במכשיר CS50, אני ממש התרגשתי, כי למעשה יש לנו לקוח לינוקס, ולכן רוב המשתמשים שלנו להשתמש באחת Windows או Macintosh הלקוחות, אבל לינוקס, מקינטוש, ו-Windows לקוחות בכל הם למעשה מאוד דומים. אז מה שעשינו זה שמותקנים מראש לקוח Dropbox לינוקס בCS50 מכשיר, והוא פועל בדיוק כמו כל משתמש לינוקס האחר שלנו. ALEX Allain: אז דרך Dropbox עובד זה ריצות כלקוח על רבים ושונה מערכות הפעלה והתקנים. לקוח שולחן העבודה Dropbox הוא אחד הידוע ביותר, ואחד המעניין ביותר. THOMAS CARRIERO: אז Dropbox בעצם לוקח את כל הקבצים כי אתה שם בתיקייה וזה מוריד נתחים את אותם קבצים לקוביות ארבעה מגה. אז אנחנו ניקח 100 מגהבייט קובץ PDF ואנחנו יהיו נתח אותה לנתחי 25 ארבעה מגה. אז גושים אלה מוצפנים ו אז אנחנו שולחים אותם לשרתי הבלוק שלנו. ALEX Allain: שרתי הבלוק הם האחסון ללוקים עצמם, וכך כל בלוק מאוחסן ב שרת הבלוק עם הנתונים וחשיש שו 356 של בלוק זה. זה הצפנה בסיסית מאוד פרימיטיבית שמסכם, במובן מסוים, את הנתונים בצורה מאוד ייחודית זה ייחודי לנתונים אלה. אתה יכול להעלות קובץ כולו בבת אחת, אבל מסתבר שאם אתה עושה את ש, קבצים גדולים באמת לקחת באמת הרבה זמן להעלות, ואם יש לך תקלה, אתה מחוץ מזל ואתה צריך להפעיל מחדש את זה. מה שאנחנו עושים זה אז אנחנו אומרים לי שרת אחר במערכת שלנו, ומה שאנו מכנים מטה שרת, שהיי זה קובץ, וזה מורכב להלן רשימה של בלוקים. ואנחנו עוברים את האלגוריתמים Hash לזהות בלוקים אלה במקום לטעון אותו מחדש כל הבלוק. Metaserver אז בודק את שרתי הבלוק, מוודא בלוקים נמצאים שם. במקרה כזה, מושלם. הכל טוב. THOMAS CARRIERO: כש רוצה בעצם להוריד את הקובץ מהאינטרנט, בוא למשל, אנחנו אומרים לmetaserver האחרון ראשון, היי אתה יכול להגיד לי לגבי היכן ממוקם של הקובץ הזה? וmetaserver יגיד, הו קובץ זה של למעשה 25 נתחים ארבעה מגה, והנה הם. ואז נלך שרת בלוק ו למעשה להוריד כל אחד מגושים אלו. ואז לשחזר את הקובץ משם, ולאחר מכן נתחיל את ההורדה. כן, כל כך Dropbox של עסקות עם קנה מידה בעצם מעצם, sharding מאוד אגרסיבי. ALEX Allain: Sharding הוא כאשר אתה לקחת את כל המשתמשים בהתחלה שלך עד או החברה שלך ואולי הם היה אמור להיות במסד נתונים אחד, וזה עובד נהדר עד שאתה פגע במספר מסוים של משתמשים. ובאמת מה שאתה רוצה לעשות הוא למצוא דרך כלשהי לפצל אותם על פני שני מסדי נתונים, או אולי יותר משניים. באופן אידיאלי, מספיק שאתה יכול יש לכל משתמש בעולם. ולכן כאשר אתה רסיס, מה שאתה עושה הוא שאתה למצוא דרך כלשהי שתחליט איזה מסד נתונים ללכת שלאינו דורש להכות בספרייה מרכזית. או שאולי זה מהיר מאוד, ספרייה זולה להסתכל למעלה מרכזית. THOMAS CARRIERO: אף פעם אין לנו כל מה שמאוחסן במסד נתונים אחד, כי זה כמעט אף פעם לא הולך לקנה מידה. אז במקום, מה שאנחנו נעשה הוא לקחת את כל מידע זה, כל הקבצים ש מאוחסנים במטה, שבר על פני מאות או אלפי מסדי נתונים לוגיים. וזה אומר שכאשר יש לנו בקשה למידע של משתמש, אנחנו נגיד ראשון, היי איזה מסד נתונים הוא המידע של משתמש זה מאוחסן ב? אז בעצם יהיה להשתמש בהחלטה שללכת למצוא מסד נתונים ה וששם נמצאים לטעון את כל הקבצים או כל metadata על הקבצים. אז אנחנו משתמשים בהרבה sharding. אבל sharding זה לא תמיד מספיק. אתה בעצם צריך מטמון הרבה בקשות משותפות, כי גם מסד נתונים אלה שאילתות יכולות להיות יקרות כך אנחנו גם עושים הלכידה אגרסיביים אסטרטגיות כדי לוודא כי רוב בקשות נפוצות הן די קל לחשב. ובעצם זה עושה הרבה מהר יותר וזה גורם לזה לעבוד בקנה מידה לשעבר. אז זה במאוד ברמה גבוהה איך Dropbox עובד. ALEX Allain: אני אלכס Allain. THOMAS CARRIERO: ו אני תומאס Carriero. ALEX Allain: וזה CS50.