ביצועי מסד הנתונים הם עסק רציני, אבל למה לא להיות קצת כיף לחקור את האתגרים ואת המורכבות שלה? 😉 הנה סיפור די פנטסטי שהוצג בפרק 1 של . Database Performance at Scale, ספר גישה פתוח בחינם ביצועי מסד נתונים בקנה מידה ביצועי מסד נתונים בקנה מידה הנושאים הטכניים המכוסים כאן מתרחבים לאורך כל הספר.אבל זו הפעם היחידה שאנחנו מדברים על פטריק המסכן.תנו למאבק שלו להביא לכם כמה שיעורים יקרים, נחמה בהנחיות הביצועים של מסד הנתונים שלכם... ואולי גם כמה צחוקים. * *עריכה לאחר שאיבד את עבודתו בחברת FAANG MAANG (MANGA?) החליט פטריק לפרוץ לבדו ולהקים חנות מקוונת נישה המוקדשת למסחר האהוב עליו בקרב כובעים, פדורות ירוקות. לאחר ניסוי מסוים עם הרמה החינמית של ההצעה, פטריק החליט לחתום על חוזה לשנה עם ספק ענן גדול כדי לקבל הנחה משמעותית על הצעתו של מסד נתונים NoSQL-as-a-service. With provisioned throughput capable of serving up to 1,000 customers every second, the technology stack was ready and the store opened its virtual doors to customers. To Patrick's disappointment, fewer than ten customers visited the site daily. At the same time, the shiny new database cluster kept running, fueled by a steady influx of money from his credit card and waiting for its potential to be exploited. Patrick’s Diary of Lessons Learned, Part I יומן השיעורים של פטריק, חלק 1 השיעורים החלו מיד: למרות שמסדי נתונים מסוימים מפרסמים את עצמם כאלו אוניברסליים, רובם פועלים בצורה הטובה ביותר עבור סוגים מסוימים של עומסי עבודה. האם סביר להניח שיהיה זרימת בקשות צפויה ומתמדת (לדוגמה, עדכונים שנלקחים ממערכות אחרות מדי פעם)? האם ההפרש גבוה וקשה לחזות, כאשר המערכת פוטנציאלית במשך תקופות ארוכות של זמן, עם תקלות פעילויות מקבילות? הצעות מסד נתונים-כמו-שירות לעתים קרובות מאפשרות לך לבחור בין התפוקה המוצעת לבין רכישות לפי דרישה. תן לעצמך זמן להעריך את הבחירה שלך ולהימנע מחוייבויות לטווח ארוך (גם אם מושך על ידי הנחה) לפני שאתה רואה שההתקנה עובדת בשבילך בצורה ברורה. הספייק הראשון 17 במרץ נראה כמו יום מזל מאוד.פטריק היה שמח להבחין בהרבה הזמנות חדשות החל מהבוקר המוקדם.אבל כאשר מספר הלקוחות הפעילים גדל בסביבות הצהריים, התחיל מצב הרוח של פטריק להתדרדר.זה היה קשור באופן קפדני לשיחות שקיבל מלקוחות כועסים דיווחים על חוסר יכולתם להמשיך בהזמנות שלהם. לאחר פגישה קצרה עם עצמו ומנוע חיפוש באינטרנט, פטריק הבין, למרבה הצער שלו, כי הוא חסר כלים תצפית בקבוצת הנתונים היקרה שלו (וכמעט יקר מאוד). "התעבורת הניתנת פוגעת שוב", צעק פטריק לעצמו, תוך התגלגל אלפי הודעות שגיאה "התעבורת עלתה" שהתחילו להופיע בסביבות 11 בבוקר. Patrick’s Diary of Lessons Learned, Part II יומן השיעורים של פטריק, חלק 2 כך למד פטריק: אם עומס העבודה שלך רגיש לשיאים, תתכונן לכך ותנסו לארכיטקטורה את קבוצת העבודה כך שתוכל לשרוד עומס מוגבר זמנית. פתרונות מסד נתונים-כגון-שירות נוטים לאפשר הגדרה דינמית של התרומה המוצעת, מה שאומר שניתן להעלות מדי פעם את סף הבקשות המקובלות באופן זמני לרמה המוגדרת קודם לכן. גם אם עומס העבודה שלך יציב לחלוטין, כישלון חומרה זמני או התקפה DDoS מפתיעה יכולה לגרום לעלייה חדה בבקשות הנכנסות. התצפית היא המפתח במערכות מפוזרות.היא מאפשרת למפתחים לחקור כשלון באופן רטרופקטיבי.היא גם מספקת אזהרות בזמן אמת כאשר תסריט כשלון סביר מתגלה, המאפשר לאנשים להגיב במהירות או למנוע כשלון גדול יותר מתרחש, או לפחות למזער את ההשפעה השלילית על הקבוצה. ההפסד הראשון פטריק אפילו לא הצליח להתאושש מהטראומה של אובדן רוב ההכנסה הפוטנציאלית שלו ביום היחיד לאורך כל השנה שבו פדורות ירוקות חוו כל סוג של ביקוש, כאשר המכתב הגיע. בלי להתעסק עוד יותר, פטריק בדק את מסד הנתונים. למופת שלו, הוא לא מצא שום עקבות של ההזמנה גם כן. למטרות שלמות, פטריק גם הניח את המחשבה הרצויה שלו בפועל על-ידי גלישה בתיקיית התמונות המצורפות. זה נשאר ריק, כמו אחד ההחלטות הראשוניות של פטריק היה לחסוך זמן וכסף על-ידי לא לתכנן כל תהליכי גיבוי תקופתיים. איך אובדן נתונים קרה לו, של כל האנשים? לאחר לימוד המודל של עקביות של מסד הנתונים של בחירתו, פטריק הבין שיש הסכמה בין הבטחות עקביות, ביצועים והזמינות. על ידי הגדרת השאילתות, אחד יכול או לדרוש ליניאריזציהFootnote7 במחיר של עוצמה נמוכה, או להפחית את הבטחות של עקביות ולהגדיל את הביצועים בהתאם. יכולות עוצמה גבוהה יותר היו לא מעניין עבור פטריק לפני כמה ימים, אבל בסופו של דבר נתוני הלקוח נחתו בשרת יחיד ללא עותקים כלשהם מפוזרים במערכת. Patrick’s Diary of Lessons Learned, Part III יומן השיעורים של פטריק, חלק 3 שיעורים נוספים כוללים: גיבוי הוא חיוני בסביבה מפוזרת, ואין דבר כזה כמו הגדרת שיטות גיבוי "קרוב מדי". לכל מערכת מסד נתונים יש מודל עקבי מסוים, וזה קריטי לקחת את זה בחשבון בעת עיצוב הפרויקט שלך. ייתכן שיהיו פשרות לעשות. במקרים מסוימים של שימוש (חשוב על מערכות פיננסיות), עקביות היא המפתח. הספייק שוב מכה החודשים חלפו ושעת השינה של פטריק אפילו החלה להראות סימנים של יציבות.עם גיבוי קבוע, מודל עקביות מעוצב מחדש, ותזכורת שנקבעה בלוח השנה שלו ל-16 במרץ כדי להגדיל את הקבוצה כדי לנהל את התנועה הגבוהה, הוא הרגיש בטוח בממוצע. אילו רק היה יודע שסרטון בן עשר שניות של חתול שמתלבש כפרוצ'ון פשוט הפך ויראלי במלזיה ... אשר, תוך התחשבות באזור הזמן, התרחש בסביבות 2 לפנות בוקר בזמן פטריק, הרס את מאמצי היציבות של השינה שהוזכרו לעיל. מצד שני, למרות פטריק הגיב בזמן, מסדי נתונים הם לעתים רחוקות מסוגלים להגדיל באופן מיידי, ואת מערכת הבחירה שלו לא היה יוצא מן הכלל בהקשר זה. השיא בתחרות היה גבוה מאוד ומתמקד, כמו אלפי בני נוער מלזיה מיהרו לקנות כובעים ירוקים במלאי בעקבות מגמות אינטרנט משתנות כל הזמן. עם נוסחה קצרה ויפה, L = λW, ניתן להפוך את החוק לפשט לעובדה כי תזכורת שווה לעיכוב הזמן. חוק קטן עבור אלה שיש להם בעיה לזכור את הנוסחה, לחשוב על יחידות.התחרות היא רק מספר, ניתן למדוד את האינטנסיביות בשניות, בעוד התפוקה בדרך כלל מתבטאת ב 1/s. אז, זה עומד לרעיון כי על מנת יחידות להתאים, תאימות צריכה להיות מושגת על ידי רביית האינטנסיביות (שניות) על ידי התפוקה (1 / s). טיפים : טיפים : התרומה תלויה בחומרה וכמובן יש לה גבולות שלה (לדוגמה, אתה לא יכול לצפות כונן NVMe שנרכש בשנת 2023 כדי לשרת את הנתונים בשבילך בטראביטים לשנייה, למרות שאנחנו חוצים את האצבעות שלנו להנחה זו כדי להיות בלתי אפשרית בעתיד הקרוב!) ברגע שהגבול נופל, אתה יכול להתייחס אליו כמו קבוע בפורמולה. אז זה ברור כי כמו תרומה עולה, כך גם מתרומת. עבור המשתמשים הסופיים - בני נוער מלזיה בסצנה זו - זה אומר כי התרומה בסופו של דבר הולכת לחצות את המכשול הקסום עבור התפיסה האנושית הממוצעת של כמה שניות. ברגע שזה קורה, המשתמשים מתסכלים מדי ופשוט לוותר Patrick’s Diary of Lessons Learned, Part IV יומן השיעורים של פטריק, חלק 4 השיעורים ממשיכים : שיאים בלתי צפויים הם בלתי נמנעים, והרחבה של הקבוצות עשויה להיות לא מהירה מספיק כדי להקטין את ההשפעות השליליות של תאימות מוגזמת. ציפית של מסד הנתונים להתמודד איתו כראוי אינה חסרת תועלת, אבל לא כל מסד הנתונים מסוגל לזה. אם אפשר, להגביל את תאימות במערכת שלך בהקדם האפשרי. לדוגמה, אם מסד הנתונים מעולם לא נוגע ישירות על ידי לקוחות (זה רעיון טוב מאוד מסיבות רבות) אבל במקום זה נגיש באמצעות קבוצה של מיקרו-שירותים בשליטתך, ודא שהמיקרו-שירותים גם מודעים למגבלות התאימות ולשמור עליהם. Keep in mind that Little’s Law exists—it’s fundamental knowledge for anyone interested in distributed systems. Quoting it often also makes you appear exceptionally smart among peers. Backup Strikes בחזרה לאחר שעיצב מחדש את הפרוייקט שלו שוב כדי לקחת בחשבון שינויים צפויים ובלתי צפויים במזומן, פטריק חיכה בשמחה לעסקיו של fedora להפוך סוף סוף ramen רווחי. למרבה הצער, ה-17 במרץ הבא לא הלך כמו שציפיתי גם כן. פטריק בילה את רוב היום נהנה מדריכי Grafana יציבים, אשר המשיכו להבטיח לו כי התנועה הייתה בשליטה ויכולת לנהל את העומס של הלקוחות, עם סף בטוח בריא. אבל אז הדרישות הפסיקו, מזכיר בעדינות כי הדיסקים הפכו מוגזמים לחלוטין. זה נראה לחלוטין מחוץ למקומם בהתחשב בתאמה שנצפתה. בעוד מחפש את המקור האפשרי של הפרעה זו, פטריק הבחין, לצערו, כי הליך הגיבוי המתוכנן תואם את עומס השיא השנתי... Patrick’s Diary of Lessons Learned, Part V יומן השיעורים של פטריק, חלק V מחשבות סופיות : מערכות מסד נתונים הן לעתים קרובות משעממות, גם ללא בקשות משתמשים נכנסות.פעולות תחזוקה מתרחשות לעתים קרובות ואתה צריך לקחת אותם בחשבון כי הם מקור פנימי של תזונה וצרכת משאבים. בכל פעם שאפשר, תזמן אפשרויות תחזוקה לזמנים של לחץ נמוך צפוי על המערכת. אם מערכת ניהול מסד הנתונים שלך תומכת בכל סוג של הגדרת שירות איכותית, זה רעיון טוב לחקור יכולות כאלה. לדוגמה, ייתכן שיהיה אפשר להגדיר עדיפות חזקה לבקשות המשתמשים לעומת פעולות תחזוקה רגילות, במיוחד בשעות השיא. את הסוף אודות Piotr Sarna הוא מהנדס תוכנה שמתעניין בפרויקטים קוד פתוח ובשפות Rust ו-C++. הוא פיתח בעבר מערכת קבצים משולבת קוד פתוחה וקיבל הרפתקה קצרה עם הלינוקס במהלך לימודיו ב-Samsung Electronics. הוא גם תורם ותומך ארוך של ScyllaDB, כמו גם libSQL. פיוטר סיים את לימודיו באוניברסיטת וורשה עם תואר שני במדעי המחשב. הוא מחבר של הספרים "Database Performance at Scale" ו"Writing for Developers: Blogs that Get Read". פיטר