לחפש את הקאש

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

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

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

כרגיל, grails מאפשרת לנו להיחשף לטכנולוגיות האלה במאמץ קטן בלבד. כדי להתחיל אני ממליץ לבדוק שני מימושי cache שעטופים בתוספים של grails:

http://grails.org/plugin/infinispan – infinispan, פרויקט של JBOSS

http://www.grails.org/plugin/dist-ehcache – ehcache, פרויקט של terracotta

בדפים של התוסף יש הוראות התקנה והפעלה, ומשם אפשר לשחק קצת בנושאים של clustering.

כתיבת תגובה

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

הלוגו של WordPress.com

אתה מגיב באמצעות חשבון WordPress.com שלך. לצאת מהמערכת / לשנות )

תמונת Twitter

אתה מגיב באמצעות חשבון Twitter שלך. לצאת מהמערכת / לשנות )

תמונת Facebook

אתה מגיב באמצעות חשבון Facebook שלך. לצאת מהמערכת / לשנות )

תמונת גוגל פלוס

אתה מגיב באמצעות חשבון Google+ שלך. לצאת מהמערכת / לשנות )

מתחבר ל-%s