אחסון: SQL, NoSQL, אינדקסים ו-Sharding
בשיעור הזה נלמד איך לבחור איפה לשמור את המידע של אפליקציה. בסיס נתונים (database — המקום המסודר שבו תוכנה שומרת מידע, כמו ארון תיקיות ענק) הוא לב המערכת. נבחר אותו לפי access patterns (דפוסי הגישה — איך באמת קוראים וכותבים את המידע), לפי עקביות (כמה חשוב שכולם יראו תמיד את אותו מידע מעודכן), לפי אינ
System Design (תכנון מערכות — איך בונים תוכנה גדולה שמשרתת הרבה אנשים) הוא כמו לתכנן עיר: כבישים, מחסנים, רמזורים וצוותי תחזוקה — כך שהעיר תמשיך לעבוד טוב גם בשעות העומס הכי גדולות.
- מודל אחסון
- המיומנות המרכזית של השיעור: לבחור איפה לשמור מידע (בסיס נתונים) לפי הדרך שבה באמת קוראים וכותבים אותו (access patterns), לפי עקביות המידע, לפי אינדקסים (indexes — "מפתח עניינים" שמזרז חיפוש) ולפי sharding (חלוקת המידע לכמה חלקים כשהוא גדל מדי).
- Trade-off
- בחירה מודעת שיש בה גם רווח וגם מחיר — בדיוק כמו לבחור מסלול בכביש: המהיר עולה כסף באגרה, החינמי לוקח יותר זמן. בראיון מסבירים למראיין/ת מה הרווח ומה המחיר של כל בחירה.
- מדד תפעולי
- מספר שמראה אם ההחלטה באמת עובדת כשהמערכת חיה ומשרתת משתמשים אמיתיים (פרודקשן — production). למשל: latency (כמה זמן לוקח לקבל תשובה), error rate (אחוז הבקשות שנכשלות), queue lag (כמה משימות ממתינות בתור) ו-cache hit ratio (כמה פעמים מצאנו תשובה מוכנה מראש). כמו מדי לוח המחוונים ברכב — הם מראים אם הכול תקין.