Database Backends/he
עמוד זה מתאר את תשתית מנגנוני מסד־הנתונים החדשה שהוצגה ב־גרמפס 5.0.
סקירה כללית
החל מגרסה 5.1 של גרמפס, מנגנון מסד־הנתונים המוגדר כברירת־מחדל הוא SQLite, תוך שימוש במנגנון DB-API 2.0.
בגרסאות הראשונות של גרמפס בתחילת שנות ה־2000, נעשה שימוש ב־XML לאחסון הנתונים. החל מגרסה 2.0 של גרמפס, שונתה ברירת־המחדל לשימוש במסד־הנתונים Berkeley DB (הידוע גם בשם BSDDB או Berkeley db) ובקישוריות שלו לשפת פיתון.
באותה תקופה, האפשרויות למסדי־נתונים התומכים במבנה היררכי היו מצומצמות – ומבנה כזה הוא דרישה הכרחית לגרמפס. למערכת BSDDB יש תכונות מתקדמות רבות, אך היא דורשת ניהול ידני של כל מרכיבי מסד־הנתונים. זה מעניק עוצמה רבה אך גם דורש מיומנות טכנית גבוהה. בעיה חמורה נוספת ב־BSDDB היא שהתנהגות המערכת הפנימית עלולה להשתנות עם שדרוג של מערכת ההפעלה – מה שעלול למנוע פתיחת קובץ נתונים לאחר שדרוג. כמו כן, קל מאוד לגרום להשחתה של קובצי BSDDB. זוהי הסיבה המרכזית למעבר ל־SQLite. בנוסף, האופן שבו גרמפס משתמש ב־BSDDB אינו מאפשר שימוש מקביל של מספר משתמשים. לכן מנגנון זה אינו מתאים לשימוש באתר שיתופי. מכל הסיבות האלה, הוחלט להוסיף שכבת הפשטה (abstraction layer) כך שניתן יהיה להשתמש במסדי־נתונים שונים תוך שמירה על ליבת הקוד של גרמפס ללא שינוי. הרעיון עוצב במסמך ההצעה GEPS 032: Database Backend API ויושם בשנת 2015.
למידע נוסף ומעמיק יותר על אופן השימוש של גרמפס במסדי־נתונים לאורך הגרסאות, ראו את התיעוד ב־תסדירי מסד־נתונים.
מנגנוני מסד־נתונים
עם הצגת האפשרות להרחבת מנגנוני מסדי־הנתונים ב־2019, סופקו ארבעה מנגנונים שונים להשוואת ביצועים. אלו מתוארים להלן.
מנגנון BSDDB
כפי שתואר לעיל, Berkeley DB (BSDDB) היה מסד־הנתונים הפנימי התקני של גרמפס. כל מסדי־הנתונים לפני גרסה 5.0 השתמשו במנגנון זה, אף שהגרסה והפרטים הפנימיים השתנו במהלך העשור האחרון.
מנגנון DB-API 2.0
ממשק זה הוגדר במסמך PEP-0249 של פיתון. הוא מגדיר מנשק פשוט להרצת פקודות SQL ולהחזרת תוצאותיהן. מנגנונים נפוצים התומכים ב־DB-API כוללים:
- SQLite
- MySQL
- PostgreSQL
- ODBC
רשימת מימושים נוספים זמינה בעמוד: https://wiki.python.org/moin/DbApiModuleComparison
DB-API 2.0 מתאר ממשק המבוסס על SQL; אך גרמפס אינו משתמש ב־SQL בסגנון יחסים רגיל. הטבלאות משמשות רק כ"מאגר נתונים", כאשר הנתונים נשמרים בצורה סידורית (כלומר, "pickle") – כך נשמר המבנה ההיררכי של גרמפס, אך עדיין ניתן להשתמש בכל מנגנון DB-API 2.0 כמאגר נתונים.
מנגנון DictionaryDB
DictionaryDB הוא מסד־נתונים "בזיכרון" – כלומר כל הנתונים קיימים רק בזיכרון העבודה (RAM) של המחשב במהלך השימוש. אם למשל תהיה הפסקת חשמל, כל השינויים יאבדו. היתרון העיקרי הוא מהירות גבוהה מאוד.
הנתונים נשמרים עם סגירת גרמפס וייטענו מחדש עם פתיחת אילן־יוחסין מחדש.
מנגנון DjangoDB
מנגנון DjangoDB משמש את גרסת המרשתת השיתופית של גרמפס, המכונה Gramps Connect. זהו מסד־נתונים יחסי, ולכן אינו תואם באופן טבעי לקוד ההיררכי של גרמפס. עם זאת, ניתן להשתמש בו במידת הצורך.