הבנת יומן ב MongoDB



הבלוג נותן תמצית על יומן ב- MongoDB

עבודה עם מבצע כתיבת מונגוד

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





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

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



hashap ו- hashtable בג'אווה

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

ברגע שמתחיל תהליך המונגוד ניתן לראות את ההצהרה הבאה:

יומן dir = D: יומן נתונים מותאם אישית של Rana2



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

מהו יומן ב- MongoDB?

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

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

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

איך זה עובד?

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

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

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

מה זה init בפיתון

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

קישור בין תצוגה פרטית לתצוגה משותפת

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

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

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

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

כמו כן, שים לב שבספריית היומן אנו ממשיכים לכתוב את הפעולה בפועל.

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

כמו כן יש לשים לב שאם יש עיכוב בשימוש ביומן, זה משפיע על הביצועים.

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

שנית ניתן להגדיר את מסגרת הזמן של מרווח ההתחייבות ביומן של '200 אלפיות השנייה', שניתן לאפשר אותה באמצעות '- - מרווח התחייבות ביומן' בין 3 ל -300 אלפיות השנייה, הכל תלוי בדרישות שאינן מתפקדות (באיזו תדירות כתיבה מתרחשת ו באיזו תדירות רוצים לכתוב בספריית היומן). במקרה שפעולות כתיבה כבדות נמשכות, רצוי שיהיו פחות אלפיות שניות.

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

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

יש לך שאלה עבורנו? הזכר אותם בסעיף ההערות ונחזור אליך.

פוסטים קשורים:

תכנות שקעים בדוגמת Java