מדוע מודלים נתונים סקאלהיים Define Engineering growth

חברות הנדסה שדרגות בהצלחה חולקים תכונה משותפת אחת: תשתיות הנתונים שלהם גדלות איתם ולא נגדם.מודל נתונים שעובד עבור צוות של חמישים מהנדסים וכמה טרה-ביאטים של נתונים יתרקח תחת הלחץ של מאות מהנדסים, מיליוני מכשירים, ועומסי עבודה בקנה מידה זעיר.ההבדל בין מודל שסולם ואחד שאינו מגיע לעתים קרובות להחלטות אדריכליות שנעשו הרבה לפני הצמיחה מתרחשת.

מודלים נתונים סקלאיים אינם רק על טיפול יותר שורות במסד נתונים.הם עומדים על שמירה על זמני תגובה מהירים של השאילתה, שמירה על שלמות הנתונים תחת כותב קבוע, ומאפשר לצוותים להוסיף תכונות חדשות מבלי לכתוב מחדש את שכבת האחסון כולה.עבור ארגונים הנדסיים, שבו נתונים מניעים הכל מהחלטות מוצר ועד ניטור בזמן אמת, מודל מעוצב היטב הופך לצוואר איטי מטה את הארגון כולו.

בניית מודל שסקאלה דורשת הבנה של העסקאות בין עקביות, זמינות וביצועים.זה דורש לדעת מתי להתנרמל ומתי להתעלל, מתי להתנער ומתי לשכפל, וכיצד לבחור את טכנולוגיית מסד הנתונים הנכונה לכל עומס עבודה. מאמר זה יעבור דרך העקרונות, האסטרטגיות, ושיטות בעולם האמיתי המאפשרות לצוותים הנדסיים לעצב מודלים של נתונים שגדלים עם העסק שלהם.

מקור: Data Model Scalability

סקאביה במודלים של נתונים היא היכולת להתמודד עם הגדלת נפח הנתונים, עומס המשתמשים ומורכבות השאילתה ללא ביצועים משפילים או לדרוש עיצוב מחדש מלא.זהו לא נכס אחד אלא שילוב של בחירות אדריכליות המאפשרות למערכת להרחיב את החסד.

ישנם שני ממדים עיקריים של יכולת דרוג:

  • (FLT:0) דירוג ההוריזון (הרחבה): להוסיף 1:1 שרתים או צמתים להפיץ את העומס. NoSQL מסדי נתונים כמו קסנדרה ו MongoDB נועדו עבור זה, אבל מסדי נתונים יחסיים יכולים גם בקנה מידה אופקי עם טכניקות כמו sharding.
  • (FLT:0) ורמת קנה מידה (הגדלה): 1:1 הגדלת יכולת שרת יחיד על ידי הוספת יותר CPU, RAM, או אחסון מהיר יותר.זה פשוט יותר אבל יש לו מגבלות קשות והוא יכול להפוך לחסכונית בקנה מידה.

רוב המהנדסים בסופו של דבר זקוקים הן.המפתח הוא לעצב את מודל הנתונים כך שהוא יכול לנצל את הסקאלה האופקית בעת הצורך, בעוד הוא עדיין יעיל על צומת יחיד לפיתוח ובדיקה.

מודל נתונים מדרגי גם מהווה תבניות גישה.מודל מותאם לעומסי עבודה (OLTP) ייראה שונה מאוד מאופטימיזציה אחת עבור שאילתות אנליטיות (OLAP). הנדסת חברות לעתים קרובות צריך את שניהם, ולכן רבים מאמצים גישה של עמידות פוליגלובט: באמצעות מסדי נתונים שונים עבור מקרים שונים.

לזהות מתי המודל שלך צריך להגיע לדרגה

סימני האזהרה הם בלתי אפשריים ברגע שאתה יודע מה לחפש.זמני קווירי שמסתובבים כלפי מעלה ככל שהמידע גדל, הפטפטפטים המופיעים רק תחת עומס שיא, ואת חוסר היכולת להוסיף תכונות חדשות מבלי לגעת בschema הליבה הם כל האינדיקטורים כי המודל הנוכחי הוא להגיע לגבולותיה. צוותי הנדסה צריכים לפקח על אותות אלה ברציפות ולדאוג להם כמו גורם לשיפוץ, לא בעיות כפי להיות עבד סביב.

עקרונות הליבה של Scalable Data Modeling

העקרונות הבאים מהווים את הבסיס של כל מודל נתונים מדרגי.הם אינם כללים נוקשים, אלא הנחיות שיש לאוזן אחת נגד השנייה בהתאם לדרישות הספציפיות של המערכת.

הנורמליזציה עשתה את Deliberately

נורמליזציה מפחיתה את הנתונים בורות ומשפרת את עקביות הכתיבה על ידי ארגון נתונים לטבלאות נפרדות הקשורות מפתחות זרים.עבור מערכות עסקאות שבהן שלמות הנתונים היא רבת ערך, מודל נורמלי הוא לעתים קרובות נקודת ההתחלה הנכונה.עם זאת, עודף נורמליזציה יכול להוביל להצטרפות מורכבת כי להאט עומסי עבודה לקריאה.

הגישה הפרגמטית היא לנרמל לצורה השלישית הרגילה במהלך העיצוב הראשוני, ולאחר מכן לדהום באופן סלקטיבי בנתיבי קריאה קריטיים לביצועים.לדוגמה, במערכת ניהול נכסים הנדסית, ניתן יהיה לתקן את נתוני נכס הליבה, אך תצוגה דה-נורמלית של מטא-נתונים וקריאות אחרונות ניתן לטפל בלוחדיונים הדרושים לזמני תגובה של שניות.

המונחים: a Performance Tool

הדידקציות מציגות פתיחות כדי לחסל את ההצטרפוות ולהגביר את הקריאה.זוהי אסטרטגיה תקפה עבור מערכות קריא-הכבדות, כגון פלטפורמות תוכן, לוחות זמנים בזמן אמת ומנועי הדיווח.העלות מוגברת לכתוב מורכבות וסיכון של אי עקביות נתונים.

מסדי נתונים מודרניים מציעים כלים לניהול עמדות מסחר זה.חומריות ב PostgreSQL, לשנות צינורות ללכוד נתונים, ואסטרטגיות של סימפו ברמת היישום כל לעזור לשמור על נתונים מסולקים עקביים.המפתח הוא להדהיר בכוונה, מתעד את הרציונליות ואת אסטרטגיית הפיוס.

חלוקת יכולת

חלוקת טבלאות גדולות לחתיכות קטנות יותר, יותר לניהול בהתבסס על מפתח חלוקה.זה משפר את ביצועי השאילתה על ידי כך שמאפשר למסד הנתונים לסרוק רק מחיצות רלוונטיות, והוא מפשט פעולות תחזוקה כמו חיזוי נתונים ישנים.

חלוקת זמן היא נפוצה עבור נתונים של זמן, כגון קוראי חיישן או יומני. חלוקת רשימת עובד טוב עבור נתונים שניתן לסווג על ידי קטגוריה, כגון אזור או קו המוצר. התפלגות על ידי מפתח מספרי שימושי עבור הפצת נתונים באופן שווה אפילו על פני מחיצות.

אסטרטגיה מפצה מעוצבת היטב מפחיתה את הצורך בסריקות לוחיות מלא ושומרת על אינדקסים קטנים.זה גם מאפשר לגלגל קשת החלון: הטלת מחיצות ישנות במקום לבצע פעולות למחוק יקרות.

מדד עם מטרה

המדדים הם הדרך הישירה ביותר להאיץ את החזרת הנתונים, אך הם באים עם עלות.כל אינדקס מוסיף על מנת לכתוב פעולות ולצרוך אחסון.המטרה היא לאינדקס עבור דפוסי השאילתה בפועל, לא לכל עמודה שעשויה להיות מסונן.

עבור ארגונים הנדסיים, אינדקסים מורכבים על טורים מסוננים לעתים קרובות לספק את ההישגים הגדולים ביותר. אינדקסים חלקיים כי רק מכסה תת-קבוצה של שורות שימושיים עבור תבניות שאילתה כי מטרות סטטוסים ספציפיים או טווחי תאריכים. , רק סריקות אינדקס, שבו המדד מכיל את כל העמודות הדרושות על ידי שאילתה, יכול לחסל גישה בטבלה לחלוטין.

כלי ניטור של מסד נתונים כמו:0 (PostgreSQL's pg stat statements statements) של ההרחבה 1 (FLT:2 MiSQL's Slowשאפת לודג'ל 3) עוזרים לזהות אילו אינדקסים משמשים למעשה ואשר הם משקל מת.

בחירת טכנולוגיית מסד הנתונים הנכונה

שום מסד נתונים יחיד לא עולה על כל דבר. מאגרי מידע כמו FLT:0 [PostgreSQLFLT:1 ו- MySQL מציעים עקביות חזקה, עסקאות ACID ויכולות שאילתה עשירות. NoSQL מסדי נתונים כמו MongoDB, Cassandra, ו-DudmoDB מספקים יכולת מדרגיות אופקית ו-Schemas גמישה בעלות של ערבויות מורכבות.

ארגונים הנדסיים צריכים להעריך את עומסי העבודה שלהם לפני ביצוע מסד נתונים.אם הנתונים יש יחסים מורכבים ודורשים יושרה העסקה, מסד נתונים יחסי הוא הבחירה הברורה.אם הנתונים לא בנויים במידה רבה וצריכים להיות כתובים ולקרוא בקנה מידה עצום, מסד נתונים NoSQL עשוי להיות מתאים יותר. מפעלים רבים להפעיל את שניהם, באמצעות כל אחד עבור עומסי העבודה שהוא מטפל הכי טוב.

אסטרטגיות עיצוב לצמיחה בת קיימא

עקרונות בלבד אינם מספיקים.הם חייבים להיות מוטבעים בתהליך עיצוב המנבא צמיחה ומתאים לשינוי.אסטרטגיות הבאות מסייעות לצוותי הנדסה לבנות מודלים נתונים שעדיין חזקים ככל שקנה המידה הארגונית.

עיצוב sema Modular Schema Design

סכימה מונוליטית שבה כל שולחן מתייחס לכל שולחן אחר הופך בלתי אפשרי להשתנות מבלי לשבור משהו.עיצוב מודולרי מארגן נתונים בהקשרים כבולים, כל אחד עם סכימה משלו שמתקשרת עם הקשרים אחרים באמצעות ממשקים מוגדרים היטב.

גישה זו, שמלווה בתכנון מונחה על ידי התחום, מאפשרת לצוותים לפתח את חלקם של המערכת באופן עצמאי.שירות מלאי, למשל, יכול לשנות את הצנחה הפנימית שלו מבלי להשפיע על שירות החיוב, כל עוד החוזה של API ביניהם נשאר יציב.

גישה ראשונה ל-API-First Data Access

גישה ישירה של מסד נתונים מיישומים היא מתכון עבור מערכות הפיכה הדוקות וסחרות. חברות הנדסה צריכות לחשוף נתונים באמצעות APIs אשר מופשטים את המודל הבסיסי.זה מאפשר שכבת הנתונים להיות ממריצים, מופץ, או אפילו להחליף אותם ללא השפעה על הצרכנים.

GraphQL, REST ו- gRPC מספקים מנגנונים לגישה לנתונים מבוקרים. שכבת ה- API יכולה ליישם את ה-Cching, את קצב הגבלת קצב ואופטימיזציה של השאילתה שיהיה קשה לאכוף ברמת מסד הנתונים.זה גם מאפשר עקשנות פוליגלובט: מסדי נתונים שונים מאחורי ה- API יכולים לשרת מקרים שונים תוך הצגת ממשק מאוחד ליישומים.

ניהול נתונים וניהול מחזור חיים

לא כל הנתונים צריכים להיות נגישים באופן מיידי.הנתונים ההיסטוריים כי לעתים נדירות ניתן להעביר לאחסון זול יותר, להפחית את העומס על מסד הנתונים הראשוני והורדת עלויות.ספקי מדיניות מחזור חיים מוגדרים היטב כאשר נתונים מאוחסנים, כיצד הוא מאוחסן, וכיצד ניתן להחזירו בעת הצורך.

ארגונים הנדסיים רבים משתמשים בגישה אחסון עניבה: נתונים חמים על SSDs מהירים, נתונים חמים על אחסון איטי יותר, ונתונים קרים באחסון אובייקטים כמו S3. Tools כמו מחיצת השולחן של PostgreSQL יכולים לארכיון מחיצות ישנות לאחסון אובייקטים באופן אוטומטי. שכבת היישום יכולה אז לשאול את מסד הנתונים החם עבור נתונים אחרונים ולזכות לאחסון קר עבור שאילתות היסטוריות.

מעקב מתמשך ו- Query Optimization

סקלאלה היא לא הישג חד פעמי.זה דורש תשומת לב מתמשכת לביצועי השאילתה, השימוש באינדקס ובריאות מסד הנתונים. צוותי הנדסה צריכים לכלי מסד הנתונים שלהם עם כלי ניטור כי פני שאילתות איטיות, נעילת תוכן ושימוש במשאבי.

מפגשים קבועים של שאילתה, שבו הצוות בוחן את השאילתות האיטיות ביותר ומחליט על אופטימיזציה, צריך להיות חלק מחזור הפיתוח.אופטימיזציה משותפת כוללת הוספת אינדקסים חסרים, כתיבת מחדש של אינטגרציות לא יעילות, והובלת חישובים יקרים לתהליכי אצווה.עם הזמן, תרגול זה מבטיח כי מודל הנתונים מתפתח עם עומס העבודה ולא להשפיל מתחתיו.

תרגום לעברית עבור: Schema Versioning and Migrations

ככל שהעסק גדל, מודל הנתונים יצטרך לשנות.הוספת שדות חדשים, לגרוע מהשנים, ולארגן מחדש שולחנות הם כולם חלק מהאבולוציה הרגילה.

כלים כמו Flyway, Liquibase, ואלמוגבי ליישם הגירה בסדר מבוקר, עם יכולות רולבק.המפתח הוא לתכנן הגירה כי הם מתאימים לאחור: עמודים חדשים צריכים להיות ברירת מחדל, עמודות ישנות צריך להיות deprecated בהדרגה, ומנעולים מסד נתונים צריך להיות ממזער במהלך שינויים סכימה באינטרנט.

מקרה מחקר: בדיקת מערכת נתונים של ייצור מ 10 עד 1000 אתרים

מפעל ייצור שמייצר ציוד אוטומציה תעשייתי החל עם אתר מפעל יחיד ומסד נתונים פוסט-greSQL מעקב אחר מלאי, לוחות זמנים ייצור, ומדדים איכותיים.מודל הנתונים הראשוני היה נורמלי לחלוטין, עם שולחנות עבור חלקים, אסיפות, הזמנות עבודה ותוצאות בדיקה. עבור אתר אחד שיוצר כמה מאות תקליטים ביום, מודל זה מבוצע היטב.

ככל שהחברה התרחבה ל-50 אתרים, מסד הנתונים צמח למיליארדי שורות.שאילתות שסיימו פעם במליכי שניות החלו להתזמן.דיווחים שצטברו נתונים בכל האתרים הפכו לבלתי ניתנים לזיהוי.

במשך שנתיים, צוות ההנדסה אישר את מודל הנתונים עם יכולת הגדלה כהמטרה העיקרית:

  • (FLT:0 חלקיות: 1.10) הטבלאות הגדולות ביותר חולקו על ידי מזהה אתר ותאריך.כל אחד מהמידע של האתר חי במחלקה שלו, מה שהופך שאילתות לאתר אחד מהר ומאפשר חלוקה שלמה להיות ארכיון באופן עצמאי.
  • (FLT:0) אופטימיזציה של Index:FLT:1 אינדקסים נבנו מחדש על בסיס תבניות של שאילתה בפועל.אינדקסים Composite על (אתר id, טיים) החליפו אינדקסים חד-קוליים על כל שדה.אינדקסים חלקיים עבור פקודות עבודה פעיל מבטלים סריקות מיותרות.
  • (FLT:0) קראו העתקים: שאילתות דו"ח 1:1 ננקטו לקריאה העתקים, בידוד עומסי עבודה מאנליטיקנים.
  • (FLT:0) שכבת Caching:FLT:1 לעתים קרובות גישה לנתונים, כגון קטלוגים ותצורת מכונות, היה חקוק ב Redis, צמצום עומס מסד הנתונים ב-40%.
  • (FLT:0) Data Archiving: FLT:1 הזמנות עבודה מעל 90 ימים עברו למסד נתונים ארכיאולוגי נפרד על אחסון זול יותר, שמירה על מסד הנתונים הראשוני רזה.

עד שהחברה הגיעה ל-1,000 אתרים, המערכת מטפלת ביותר מ-50 מיליון פעמים ביום עם פי 95 מתחת ל-50 מילי שניות.המסד המקורי צמח מ-500 GB ליותר מ-50 TB, אך מודל הנתונים המחודש המשיך לבצע חיזוי.הצוות המשיך לפקח ולייעל, והוסיף מחיצות חדשות כמו אתרי אינטרנט ופורשים חומרה ישנה כפי שהוא הגיע עד סוף החיים.

מקרה זה ממחיש את שיעור המפתח: יכולת הגדלה אינה תכונה שתוסיף מאוחר יותר.זה סט של החלטות עיצוב שיש לבחון מחדש ככל שהמערכת גדלה.המפעל הייצור הצליח כי הם מתייחסים למודל הנתונים כמערכת חיה הדורשת השקעה מתמשכת.

מלכודות נפוצות וכיצד להימנע מהם

מפעלים הנדסיים שמנסים להגיע לסקאלה ללא מודל נתונים מוצק, לעתים קרובות נופלים למלכודת צפויה.ההכרה במכשולים אלה מוקדם יכול לחסוך חודשים של עבודה חוזרת ושעות השבת.

Over-normalization in Read-Heavy Systems

הנורמליזציה היא רפלקס עבור מפתחים מאומן בעיצוב מסד נתונים יחסי.אבל עבור מערכות שבו קוראות הרבה יותר כותב, נורמליזציה מוגזמת יוצרת שאילתות חד-כבדות שהופכות לאט יותר ככל שהמידע גדל.התקן הוא לפרופיל את דפוסי הקריאה בפועל ו denormalize באופן סלקטיבי. A denormalingטור או שולחן סיכום מראש יכול לחסל את הצורך עבור לוח-לוח בתוואי קריטי.

התעלמות מ-Data Access Patterns

מודל נתונים שתוכנן ללא הבנה כיצד הנתונים יהיו נגישים כמעט מובטחים לצורך עבודות מחדש.צוותי הנדסה צריכים למפות את נתיבי השאילתה העיקריים לפני תכנון הschema. איזו שאילתות צריכות זמני תגובה של שניות?מה הן אנליטיות והן יכולות לסבול שקיפות? אילו עמודות תמיד נגישות יחד? התשובות צריכות לנהוג החלטות על מדדים, חלוקה, ודה-נורמליזציה.

התייחסות למסד הנתונים כקופסא שחורה

מסדי נתונים מודרניים הם מערכות מורכבות עם הרבה תצורה knobs. בהנחה כי הגדרות ברירת המחדל הן אופטימליות עבור מפעל הנדסי גדל הוא טעות. גודל בריכה, גודלי בריכה, הגדרות יומן כתיבה, ואבק או התנהגות קומפקטית כל השפעה על ביצועים בקנה מידה. צוותים צריכים להשקיע בהבנה של הפנימיות של מסד הנתונים שלהם וכוונו אותם עבור עומס העבודה הספציפי שלהם.

מימון נתונים

הנתונים גדלים ללא גבולות אלא אם כן אתה מתכנן למעגל החיים שלהם.ללא מדיניות ארכאון, אפילו מסד הנתונים המעוצב הטוב ביותר בסופו של דבר ימלא.הארגונים להנדסה צריכים להגדיר מדיניות שימור עבור כל סוג נתונים, להפוך את תהליך הארכיון, ולבחון את הנתיב השחזור באופן קבוע. An unplanned Data purge תחת לחץ הוא מתכון לאובדן נתונים.

מסקנה: Scalability כפרקטיקה רציפה

בניית מודל נתונים מדרגי אינו תרגיל עיצוב חד פעמי.זה תרגול מתמשך של מדידת, אופטימיזציה, והתאמה ככל שהעסק גדל.עקרונות והאסטרטגיות המפורטים במאמר זה מספקים בסיס: נורמליזציה בכוונה, להתאמת עם מטרה, חלוקה ליעילות, לאינדקס עבור שאילתות בפועל, ולבחור את מסד הנתונים הנכון עבור כל עומס עבודה.

חברות הנדסה שמשקיעות בפרקטיקה זו משיגות יתרון תחרותי יציב.המערכות שלהם נשארות מהירות ואמינה אפילו כאשר נפח הנתונים מכפיל.צוותים שלהם יכולים לשלוח תכונות חדשות ללא בנייה מחדש של שכבת האחסון.ותשתית הנתונים שלהם הופכת לגורם צמיחה ולא לעצירה על זה.

הזמן להתחיל לחשוב על דחיסות הוא לפני שאתה צריך את זה. בין אם אתה מעצב את הschema הראשונה עבור מוצר חדש או שינוי מערכת שכבר תחת לחץ, העקרונות הם אותו הדבר באופן עקבי, לפקח על התוצאות, ואת מודל הנתונים כי בקנה מידה הוא זה שמקבל תשומת לב מתמשכת.