בדף הזה מפורטות שיטות מומלצות ודוגמאות קוד בשפות ספציפיות, שיעזרו לכם ליצור אפליקציות שמשתמשות בחיבורים למסדי נתונים של Cloud SQL בצורה יעילה.
הדוגמאות האלה הן קטעים מאפליקציית אינטרנט מלאה שזמינה ב-GitHub. מידע נוסף
כדי לקבל הוראות מפורטות להרצת אפליקציית אינטרנט לדוגמה שמחוברת ל-Cloud SQL, לחצו על הקישור לסביבה שלכם:
- מדריך למתחילים: התחברות ממחשב מקומי
- מדריך למתחילים: התחברות מ-Compute Engine
- מדריך למתחילים: התחברות מ-Cloud Run
- מדריך למתחילים: התחברות מפונקציות Cloud Run
- התחברות מהירה מ-Google Kubernetes Engine
מאגרי חיבורים
מאגר חיבורים הוא מטמון של חיבורים למסד נתונים שמשותפים ונעשה בהם שימוש חוזר כדי לשפר את זמן האחזור והביצועים של החיבור. כשהאפליקציה צריכה חיבור למסד נתונים, היא שואלת חיבור מהמאגר באופן זמני. כשהאפליקציה מסיימת להשתמש בחיבור, היא מחזירה אותו למאגר, ואפשר להשתמש בו שוב בפעם הבאה שהאפליקציה צריכה חיבור למסד נתונים.
פתיחה וסגירה של חיבורים
כשמשתמשים במאגר חיבורים, צריך לפתוח ולסגור את החיבורים בצורה נכונה, כדי שהחיבורים תמיד יוחזרו למאגר כשתסיימו להשתמש בהם. חיבורים שלא הוחזרו או "דלפו" לא מנוצלים שוב, מה שגורם לבזבוז משאבים ולצווארי בקבוק בביצועים של האפליקציה.
Python
Java
Node.js
C#
המשך
Ruby
PHP
מספר החיבורים
כל חיבור למסד נתונים משתמש במשאבים בצד הלקוח ובצד השרת. בנוסף, ב-Cloud SQL יש מגבלות כוללות על מספר החיבורים, ואי אפשר לחרוג מהן. יצירה ושימוש בפחות חיבורים מפחיתים את התקורה ועוזרים לכם לא לחרוג ממגבלת החיבורים.
Python
Java
Node.js
C#
המשך
Ruby
PHP
ב-PDO אין כרגע פונקציונליות להגדרת מגבלות על החיבורים.
השהיה מעריכית לפני ניסיון חוזר (exponential backoff)
אם האפליקציה מנסה להתחבר למסד הנתונים ולא מצליחה, יכול להיות שמסד הנתונים לא זמין באופן זמני. במקרה כזה, שליחת בקשות חיבור חוזרות ונשנות מבזבזת משאבים. עדיף להמתין לפני ששולחים בקשות חיבור נוספות, כדי לאפשר למסד הנתונים להיות נגיש שוב. כדי להשיג את המטרה הזו, אפשר להשתמש בהשהיה מעריכית לפני ניסיון חוזר (exponential backoff) או במנגנון השהיה אחר.
הניסיון החוזר הזה הגיוני רק כשמתחברים בפעם הראשונה, או כשמקבלים חיבור מהמאגר בפעם הראשונה. אם מתרחשות שגיאות באמצע טרנזקציה, האפליקציה צריכה לבצע את הניסיון החוזר, והיא צריכה לנסות שוב מתחילת הטרנזקציה. לכן, גם אם המאגר מוגדר כמו שצריך, יכול להיות שעדיין יופיעו שגיאות באפליקציה אם החיבורים יאבדו.
Python
Java
Node.js
C#
המשך
נכון לעכשיו, החבילה database/sql לא מציעה פונקציונליות להגדרת השהיה מעריכית לפני ניסיון חוזר.
Ruby
PHP
ב-PDO אין כרגע פונקציונליות להגדרת השהיה מעריכית לפני ניסיון חוזר.
הזמן הקצוב לחיבור פג
יש הרבה סיבות לכך שניסיון החיבור נכשל. תקשורת ברשת אף פעם לא מובטחת, ויכול להיות שמסד הנתונים לא יוכל להגיב באופן זמני. חשוב לוודא שהאפליקציה מטפלת בחיבורים מנותקים או לא מוצלחים בצורה חלקה.
Python
Java
Node.js
C#
המשך
נכון לעכשיו, החבילה database/sql לא מציעה פונקציונליות להגדרת זמן קצוב לתפוגה של החיבור. זמן הקצוב לתפוגה מוגדר ברמת הדרייבר.
Ruby
PHP
משך החיבור
הגבלת משך החיים של החיבור יכולה לעזור למנוע הצטברות של חיבורים נטושים. אתם יכולים להשתמש במאגר החיבורים כדי להגביל את משך החיים של החיבורים.
Python
Java
Node.js
בספריית Node.js 'node-mssql' אין כרגע פונקציונליות לשליטה במשך החיבור.
C#
המשך
Ruby
ב-ActiveRecord אין כרגע פונקציונליות שמאפשרת לשלוט במשך החיבור.
PHP
בשלב הזה, PDO לא מציע פונקציונליות לשליטה במשך החיבור.
לצפייה בבקשה המלאה
כדי לראות את הבקשה המלאה, צריך ללחוץ על הקישור שלמטה.
Python
האפליקציה המלאה בשפת התכנות Python.
Node.js
האפליקציה המלאה בשפת התכנות Node.js.
C#
האפליקציה המלאה בשפת התכנות C# .
המשך
האפליקציה המלאה בשפת התכנות Go.
PHP
האפליקציה המלאה בשפת התכנות PHP.
המאמרים הבאים
- מידע נוסף על כתובת IP פרטית
- מידע נוסף על מכסות ומגבלות ב-Cloud SQL וב-App Engine.
- שיטות מומלצות לעבודה עם Cloud SQL.