בניתי לפני כמה שנים מערכת טלפונית (@dovid אל תכעס, זה לא שאלה על אסטריסק..). המערכת משמיעה שיעורים, מסודרים בתוך שלוחות, ואפשר כמובן גם להקליט שיעורים חדשים או תגובות של המאזינים, ויש למנהלים מרחב ניהול בו הם יכולים לאשר הודעות, למחוק, להעביר לתיקיות אחרות, וכו'.
בניתי את זה בצורה שכל הודעה שמכניסים לתיקייה, זה בודק מה המספר של ההודעה האחרונה שיש בתיקייה, ונותן לחדשה את המספר הבא. כשרוצים לשמוע קבצים מתוך תיקיה, זה טוען את כל רשימת הקבצים שיש בתיקייה, ומשמיע אותם אחד אחרי השני, עם אפשרות לעבור להודעה הבאה, קודמת, וכו'.
עברו כמה שנים, והקו גדל מאוד. מאוד מאוד. יש שלוחות עם עשרים אלף קבצים, והמנהלים לא מוכנים למחוק שום דבר.
זה עולה הרבה כסף האיחסון, וגם מכביד על המערכת לטעון בכל כניסה לשלוחה את ה20K קבצים.
אני רוצה לבנות את זה מחדש בצורה שונה, ורציתי להתייעץ מה הצורה הנכונה.
קודם כל אני חושב שלא כדאי להשתמש במסד נתונים כשלא חייבים, והייתי מעדיף להסתדר כמו שזה עד עכשיו בלי שום קשר למסד נתונים. מצד שני יש שיקולים אחרים שגורמים שאולי כן צריך מסד.
לכאורה הצורה הנכונה היא שהקבצים יישמרו בS3, שהוא הרבה הרבה יותר זול מאכסון רגיל.
לצערי לא מצאתי פיתרון להשמיע קבצים מURL ישירות באסטריסק (לפי התיעוד זה אפשרי, אבל הספרייה שאמורה לטעון קבצים כנראה פגומה, זה נושא לאשכול אחר), אז אני עושה תיקיית קאש ובודק שם אם כבר הורדתי בעבר את הקובץ ואם לא, אז מוריד אותו עכשיו.
השאלה היא איך לקבל את רשימת הקבצים מתוך הBUCKET.
הפונקציות של חיבור לS3 נותנות לקבל רק אלף קבצים, ואין אפשרות לסנן לפי תאריך יצירה, כך שאני לא יכול למשוך רק הקבצים האחרונים. אולי אפשר להשתמש בPAGINATOR או משהו כזה ולמשוך בעשרים פעולות את כל רשימת הקבצים, אבל זה נשמע לי הרבה מאמץ בשביל זה.
השאלה אם כדאי להשתמש במסד נתונים, שם יהיה אינדקס של כל הקבצים, וכל פעולה של העתקה או מחיקה או יצירת קובץ חדש תירשם שם, מסודר לפי תיקיה, וכך כשארצה למשוך רשימת קבצים מתיקייה פשוט אמשוך את ה25 קבצים האחרונים, ואם מסיים אותם אני מושך את הרשימה של ה25 הבאים וכן הלאה.
הסיבה שאני לא אוהב את הפיתרון הזה הוא גם כי עד עכשיו הסתדרתי בלי מסד נתונים וחבל להזקק לו עכשיו סתם, וגם כי זה ידרוש פיתוח רציני לשנות את כל הצורה של המערכת שהכל יהיה מסונכרן תמיד במסד נתונים.
מה דעתכם? איך היים ניגשים לזה?
תודה רבה
