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