טעינה עצלה

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

מתודולוגיה אחת כזו שלדעתי היא מאוד חשובה להכרה, נקראת Lazy Loading או טעינה עצלה (בעברית). טעינה עצלה אומרת בעצם שכל עוד אנחנו לא צריכים משאב מסויים, אנחנו לא משתמשים בו בכלל, אבל אנחנו מכינים את הקרקע להשתמש בו.

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

בגישה הזו, אפשר בעצם במקום לכתוב קוד SQL (או כל צורת גישה אחרת למסד הנתונים), אנחנו ניצור שאילתא המורכבת מפונקציות שונות שמממשות אותה למשל:

table.where('a > 2');
table.like('c', '''%bla bla''');
table.join('table2', 't2', 't2.id', 'ta.id', '!=');

ואפשר להמשיך… כמו שאפשר לראות אין כאן סדר מסויים לבקשות (כתבתי קוד פאסדו ד"א), אבל זה עוזר לנו לבנות שאילתא מסויימת שבסופו שדבר תהיה מסודרת.

אז מתי השאילתא הזו תרוץ ? ובכן נגיד למשל כאשר אשתמש בפונקציה בשם:

table.result('a')

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

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

כתיבת תגובה

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

הלוגו של WordPress.com

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

תמונת Twitter

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

תמונת Facebook

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

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

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

מתחבר ל-%s