להתגלגל עם Ruby On Rails – חלק ב'

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

ruby-vs-php1בפוסט הקודם הבאתי סקירה קצרה על תשתית הפיתוח רובי און ריילס תוך התמקדות בחלק מיתרונותיה היחסיים וההבטים המייחדים אותה מתשתיות אחרות.

בחלק זה, נכנס לעובי הקורה וננסה לבחון את ריילס מעט יותר לעומק, תוך התרכזות בהבטים הרלבנטיים בעיקר לאתרים גדולים – מנגנוני cache ועבודה מול מסדי נתונים ובפוסט הבא (חלק ג')  נתרכז בביצועים וב-scalability.

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

נתחיל אם כן במושגים:
רובי און ריילס תתורגם לה חיש קל לרובי על מסילות.
Scalability תגויר לגדילות כי לפעמים הגודל כן קובע.
ומתחילים!

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

DB2http://raa.ruby-lang.org/project/ruby-db2 ו- http://rubyforge.org/projects/rubyibm
Firebird
http://rubyforge.org/projects/fireruby/
MySQL
http://www.tmtm.org/en/mysql/ruby
Oracle
http://rubyforge.org/projects/ruby-oci8
Postgres
http://ruby.scripting.ca/postgres/ ו- http:/rubyforge.org/projects/ruby-dbi
SQLite
http://rubyforge.org/projects/sqlite-ruby
SQL Server
http://rubyforge.org/projects/ruby-dbi

* המידע לקוח מהספר Agile Web Development with Rails אותו ניתן לקנות במדף הספרים המעשיים.

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

מנגנוני Cache
כראוי לכל תשתית אינטרנטית המכבדת את עצמה, ריילס מתפארת בתמיכה מובנית במנגנוני cache המאפשרים שמירה של מידע מעובד לשימוש חוזר, ללא צורך בעיבוד נוסף ע"י היישום.
ריילס מאפשרת לנו לבצע caching של המידע בשלוש רמות:
Page Caching – שמירה של עמוד שלם כפלט HTML לשימוש חוזר. מנגנון זה יעיל בעיקר במקרים של עמודים סטטיים או עמודים שהמידע בהם נשאר קבוע לפרקי זמן ממושכים, ופועל ע”י שמירת עותק סטטי של העמוד כקובץ HTML והגשתו מהשרת ישירות, ללא גישה ליישום.
Action Caching – שמירה של פעולת Controller מסויימת לשימוש חוזר. לדוגמה, ב Controller המנהל את הצגת המופעים השונים של טבלת מוצרים, נוכל לכתוב פעולה (מאנגלית Action) הקוראת ומציגה את כל המוצרים מעל מחיר X ולשמור את הפלט של אותה פעולה ב cache. מנגנון זה עובד באופן זהה ל Page Caching אך אינו יוצר קובץ סטטי על השרת, אלא מעבד ושומר את המידע ביישום עצמו.
Fragment Caching – שמירה של פיסות HTML מתוך עמוד מסויים לשימוש חוזר בעמוד שחלק מתוכנו קבוע וחלק משתנה. לדוגמה, באתר המצריך פעולת התחברות (login) נוכל לשמור את תוכן העמוד כולו, ללא החלק המציג את ססטוס המשתמש, אשר משתנה במידה ומשתמש התחבר או התנתק.

בנוסף, מספקת לנו ריילס שני מנגנונים משלימים לניהול Cache:

מנגנון Sweepers – מנגנון ניהול המאפשר לשלוט על רעננות המידע המאוחסן ישירות מה-Controller
מנגנון Query Cache – מנגנון המאחסן תוצאות של שאילתות למסד הנתונים בצורה אוטומטית ברמת פעולה בדידה ב Controller (כלומר, עבור כל פנייה לפעולה ב Controller יאוחסנו תוצאות השאילתות באותה פעולה, מהתחלת הרצתה ועד סופה).

מאחורי הקלעים, מאפשרת לנו ריילס להשתמש במנגנוני אחסון cache הבאים:
File Cache – אחסון cache לקובץ
Memory Cache – אחסון cache לזיכרון
Memcache – אחסון cache לתהליך חיצוני של memcached המסוגל לאחסן מידע מיישומים מרובים
DRb Cache – אחסון cache לתהליך חיצוני בדומה ל memcached

מידע נוסף על הנושא ניתן למצוא באתר Guides.Rails.Info

לכתבה הקודמת בנושא : להתגלגל עם רובי און ריילס – חלק א'

זהר ארד

בן 35, קיבוצניק שהדרים לעיר הגדולה, מפתח client-side בנשמתו (מטהקפה, קול הקמפוס 106fm ואחרים). משתמש מקינטוש מושבע (שחוטא גם בלינוקס בשעות הפנאי). מעדיף הכל פשוט, מינימליסטי ועובד טוב ומשתדל להמנע מדברים עם הלוגו של מיקרוסופט ונהגי מוניות כעסנים. אוהב הרבה Web, מתובלת בג'אווהסקריפט, HTML, CSS, פייתון ורובי, ספרים, פפאיות ומוזיקה מהחנות (בדיסק המקורי). מתנודד תדיר בין אקזיסטנציאליזם לאינדיבידואליזם ונכון להיום עדיין אוחז ב-fetish לא מוסבר לצבים.

הגב

2 Comments on "להתגלגל עם Ruby On Rails – חלק ב'"

avatar
Photo and Image Files
 
 
 
Audio and Video Files
 
 
 
Other File Types
 
 
 
Sort by:   newest | oldest | most voted
המנכ"ל
Guest
It's worth mentioning that Ruby-on-rails has 'copy cats' on the competing platforms, such as ASP.NET, however they fail to imitate the success and the efficiency. Also, did you know that Twitter is also based heavily on ruby-on-rails? The web development platform suffered from long development times for years. This platform gives a relative advantage on web development, and I'm sure we'll see better more efficient platforms as time goes by. Gizmox/VisualWebGUI – An Israeli company decided to attack the long development times from a different angle by wrapping web controls and providing a "Winform" style of coding for the web.… Read more »
trackback

[…] […]

wpDiscuz

תגיות לכתבה: