שחרור של DBMS libmdbx 0.11.7. העבר את הפיתוח ל-GitFlic לאחר הנעילה ב-GitHub

ספריית libmdbx 0.11.7 (MDBX) שוחררה, ומיישמת מסד נתונים קומפקטי, בעל ביצועים גבוהים ומוטמע של מפתחות-ערכים. קוד libmdbx מופץ תחת הרישיון הציבורי OpenLDAP. כל מערכות ההפעלה והארכיטקטורות הנוכחיות נתמכות, כמו גם Elbrus 2000 הרוסי.

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

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

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

מאז החדשות הקודמות על שחרור libmdbx גרסה 0.11.3, בנוסף להתאוששות מפעולות GitHub, ראוי לציין את השיפורים והתיקונים הבאים:

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

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

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

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

  • תוקנה רגרסיה שבה אירעה שגיאת EXDEV (קישור בין מכשירים) בעת העתקה חמה של מסד נתונים ללא דחיסה למערכת קבצים אחרת, הן דרך ה-API והן דרך כלי השירות mdbx_copy.
  • קריס זיפ יישם תמיכה ב-libmdbx ב-Deno. קאי ווטלסן ארז את ה-RPM עבור פדורה. דיוויד בוייסייה יישם את קישורי Scala.
  • טיפול משופר בערך שנקבע על ידי האפשרות MDBX_opt_rp_augment_limit בעת עיבוד עסקאות ענקיות בבסיסי נתונים גדולים. בעבר, שגיאה יכלה לגרום לפעולות מיותרות, ולעתים להשפיע על הביצועים ביישומים של Ethereum (Erigon/Akula/Silkworm) ופרויקטים של Binance Chain.
  • תוקנו באגים רבים, כולל ב-API של C++. בעיות בנייה רבות בתצורות נדירות ואקזוטיות נפתרו. רשימה מלאה של כל השיפורים המשמעותיים זמינה ביומן השינויים.
  • בסך הכל בוצעו 185 שינויים ב-89 קבצים, כאשר כ-3300 שורות נוספו והוסרו כ-4100 שורות. מספר ההסרות הגדול יותר נבע בעיקר מהסרה של קבצים טכניים ושירותים תלויים הקשורים ל-GitHub שכבר אינם שימושיים.

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

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

libmdbx מציעה ממשק API עשיר ב-C++, כמו גם קישורים הנתמכים על ידי הקהילה עבור Rust, Haskell, Python, NodeJS, Ruby, Go, Nim, Deno ו-Scala.

מקור: OpenNet.ru

קנה אירוח אמין לאתרים עם הגנת DDoS, שרתי VPS VDS 🔥 קנה אחסון אתרים אמין עם הגנת DDoS, שרתי VPS VDS | ProHoster