ניהול הקבצים ב - Moodle

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

פשוט אבל יקר!

המשמעות היתה שבעבודה עם אותה המערכת ועם קורסים שונים לכל שנה, רוב הקבצים - שאינם משתנים משנה לשנה - היו משוכפלים. היה עותק נפרד של אותו הקובץ בתקיה של כל מופע של הקורס. הבעיה היתה קיצונית אף יותר במערכות בהם כל קבוצה של אותו הקורס היוותה מופע נפרד של קורס ב - Moodle. בכזה מצב כבר באותה השנה היו עותקים זהים של אותו הקורס - ובעצם שכפולים רבים של כל הקבצים המשוייכים לקורס.
 
ב - Moodle חשבו איך למנוע את בזבוז האחסון האינסופי הזה והגיעו לפתרון שמארגן מחדש את כל אחסון הקבצים ב - Moodle 2.
 
ראשית, במקום שה - moodledata יכיל תקיית קבצים נפרדת לכל קורס יש תקיה אחת, filedir, שמכילה את כל הקבצים שהועלו למערכת ללא קשר לשיוכם לקורס.
שנית, כל קובץ שמור פעם אחת בלבד. הקובץ מזוהה לפי גיבוב התוכן שלו.
שלישית, כל המידע על הקובץ נשמר בטבלת files ב - DB.
כשמשתמש מעלה קובץ למערכת הקובץ עובר את התהליך הבא:
1. תוכן הקובץ עובר תהליך גיבוב - פונקציית hashing.
2. בטבלת הקבצים מתבצעת בדיקה האם קובץ עם גיבוב כזה כבר קיים במערכת.
3. אם הקובץ לא קיים הוא יישמר בתקיית filedir במיקום המתאים לפי הגיבוב כשהשם שלו במערכת הקבצים יהיה הפלט של פונקציית הגיבוב.
4. לטבלת files ב - DB של Moodle יוכנס כל המידע על הקובץ. שמו המקורי, פלט הגיבוב (=השם הנוכחי שלו במערכת הקבצים) המשתמש לו הוא משוייך וההקשר שבו הועלה/נוצר הקובץ.
5. אם הקובץ כבר קיים במערכת הקבצים (מצאנו אותו לפי פלט הגיבוב) נשאר רק להוסיף רשומה נוספת לטבלת files שמכילה את המשתמש וההקשר החדשים של הקובץ הנוכחי.
 
בשיטה זו כל קובץ נשמר רק פעם אחת. גם אם יהיו מופעים רבים של אותו הקובץ במערכת, יישמר קובץ אחד במערכת הקבצים ולכל מופע תהיה רק רשומה שתייצג אותו בטבלת files.
 
נשים לב, במחיקה של קובץ לא יימחק הקובץ הפיזי עד שלא יהיה ברור שאין אף רשומה נוספת בטבלת files שמצביעה לאותו קובץ פיזי.
 
תמונה אקראית של קבצים ממערכת הקבצים החדשה
 

מאגרים

בנוסף לארגון מחדש של אחסון הקבצים נוסף למערכת כלי חשוב שנקרא מאגר (repository).
המערכת מאפשרת לנו להביא אל הקורס שלנו קבצים ממאגרים שונים. זה יכול להיות קבצים שהעלתי למקומות אחרים במערכת, קבצים ממאגר הקבצים שלי - גם הוא חידוש, מ - google drive, מ - drop box, כמובן ניתן להעלות קובץ מהמחשב, ועוד אפשרויות רבות למאגרים שונים - בין אם מאגרים מהרשת ובין אם מאגרים פנימיים במערכת.
 
בגירסה 2.3 הצטרף חידוש נוסף למערכת הקבצים.
אם אמרנו שכל קובץ שנוצר/מועלה/מקושר ממאגר - מוסיף רשומה חדשה בטבלת הקבצים,
הרי שעד לגירסה 2.3 כל רשומה כזו עמדה בפני עצמה. לא היה קשר בין הקובץ במאגר שממנו אנו מייבאים אותו לבין המופע הסופי במיקום החדש.
בגירסה 2.3 נוספה אפשרות (במאגרים שתומכים בכך) לבחור האם הקובץ יועתק מהמאגר המקורי - דהיינו תווצר בטבלת files רשומה רגילה שמצביעה לקובץ במערכת הקבצים, או שהקובץ יקושר לקובץ המקורי - דהיינו תווצר בטבלת files רשומה שמצביעה אל הרשומה המקורית ולא אל הקובץ במערכת הקבצים.
במקרה שנבחר בקישור, הקובץ במיקום הנוכחי לא יעמוד בפני עצמו - הוא יהיה תלוי בקובץ המקורי, ובמקרה שהקובץ המקורי ישתנה או יימחק הקובץ אצלנו ישתנה בהתאם.
 

ומה קורה בשדרוג מ - 1.9?

 
בשדרוג המערכת יוצרת אוטומטית בכל הקורסים ששודרגו מאגר שנקרא "קבצי הקורס כפי שנוהלו בגרסאות קודמות". זו תקיה שמציגה את כל הקבצים שהיו בתקיית קבצי הקורס ב - 1.9.
אם מאפשרים זאת, התקיה הופכת למאגר בקורס וניתן גם לקשר ממנה קבצים.
גם פה לא מדובר על שמירה של הקבצים בצורה הישנה של תיקיות קורס. הקבצים עוברים את תהליך השידרוג ונשמרים בשיטה החדשה, אולם ההקשר לו הם משוייכים בטבלת files יהיה - תקיית קבצי הקורס כפי שנוהלו בגירסאות קודמות - בקורס זה.
 
עד גירסה 2.4.4 של Moodle הפתרון הזה היה יעיל חלקית. יבוא, גיבוי ושחזור של קורסים לא ידעו להתמודד עם התקיה הזו ולא גיבו/שחזרו/ייבאו אותה.
הסתובבו ברשת פתרונות שונים של טלאים (patch) לתיקון הבעיה, ובלית ברירה נאלצנו לשלבם גם אצל לקוחותנו.
מאז שהבעיה נפתרה, המעבר ל - Moodle 2 בהקשר זה חלק ופשוט הרבה יותר.
 

בניין בינת הר חוצבים ירושלים 97787 רח' נתנזון 5/2 026310246 | 0526071135 | 0524767193 | sales@openapp.co.il‬‏