בעת הגדרת Retool לכלים פנימיים, עולות בעיות נפוצות: הרשאות שגויות, חיבורים לא מאובטחים, ושאילתות N+1 שפוגעות בביצועים. תרחיש טיפוסי: מפתח מעניק למשתמש גישת superuser למסד הנתונים ואז תוהה מדוע מתרחשות דליפות מידע. או מתחבר ל-MongoDB ללא SSL, ומשאיר את התעבורה בטקסט פשוט. לאחרונה, לקוח איבד יומיים בפריסת פאנל ניהול עקב הרשאות שגויות — תיקנו את זה ב-3 שעות. אנו מגדירים חיבורי מסדי נתונים (PostgreSQL, MySQL, MongoDB) מאפס: מיצירת משתמש ייעודי ועד להגדרת מנהרת SSH. להלן תצורות טיפוסיות, שיטות עבודה מומלצות, ומלכודות אמיתיות שאנו נמנעים מהן.
בעיות שאנו פותרים
שאילתות N+1 הן גורם מרכזי להאטות. Retool ללא מטמון יכול להריץ עשרות שאילתות כדי להציג ווידג'ט בודד. לדוגמה, רשימת לקוחות עם ההזמנות שלהם: ללא JOIN, מקבלים שאילתה אחת לכל לקוח + N עבור הזמנות. זה מגדיל את זמן הטעינה ב-500%. הפתרון: שימוש בשאילתות עם פרמטרים ו-LEFT JOIN בתוך קריאה אחת.
חיבורים לא מאובטחים — מסד נתונים עם IP ציבורי, סיסמת superuser בטקסט פשוט, וללא SSL. בפרויקט אחד, גילינו שניתן להתחבר ל-MongoDB ללא סיסמה מכל מקום בעולם. נאלצנו לשנות את ההגדרות בדחיפות.
הרשאות — לעיתים קרובות התפקידים רחבים מדי. זה מוביל למחיקת נתונים מקרית או להזרקות SQL. אנו תמיד יוצרים משתמש עם הרשאות מינימליות.
הימנעות משאילתות N+1
N+1 מתרחש כאשר עבור כל אובייקט אב, מבוצעת שאילתת ילד נפרדת. ב-Retool, זה בולט במיוחד בטבלאות עם חיפושים. הגישה האופטימלית היא שאילתת SQL אחת עם JOIN, אגרגציה, או ביטויי IN (). לדוגמה, במקום:
SELECT * FROM customers; -- 1 запрос -- для каждого customer выполняется: SELECT * FROM orders WHERE customer_id = $1; השתמשו ב:
SELECT c.*, o.order_count
FROM customers c
LEFT JOIN (
SELECT customer_id, COUNT(*) as order_count
FROM orders
GROUP BY customer_id
) o ON c.id = o.customer_id;השהייה טיפוסית מ-N+1 היא 2-3 שניות לעמוד. לאחר אופטימיזציה, השאילתה רצה ב-50 אלפיות השנייה.
חיבור PostgreSQL, MySQL ו-MongoDB
Retool תומך במסדי נתונים פופולריים. נסקור את החיבור לכל אחד. חשוב: כל החיבורים חייבים להיות מוצפנים, ולמשתמשים חייבות להיות הרשאות מוגבלות.
PostgreSQL
בצעו את השלבים הבאים כדי להתחבר ל-PostgreSQL:
- צרו משאב ב-Retool: Resources → Create New → PostgreSQL.
- ספקו את שם המארח של מסד הנתונים (לדוגמה, your-database-server.com), פורט 5432, שם מסד נתונים, שם משתמש לקריאה בלבד, וסיסמה.
- הגדירו מצב SSL ל-require.
- צרו משתמש ייעודי לקריאה בלבד באמצעות דוגמת ה-SQL להלן.
דוגמת SQL ליצירת משתמש לקריאה בלבד:
יצירת משתמש לקריאה בלבד
Host: db.production.example.com
Port: 5432
Database name: app_production
Database username: retool_readonly
Password: ****
SSL mode: require MySQL
עבור MySQL, השתמשו גם במשתמש נפרד לקריאה בלבד. הפעילו את SELECT * FROM customers; -- 1 запрос -- для каждого customer выполняется: SELECT * FROM orders WHERE customer_id = $1; והגדירו charset ל-SELECT c.*, o.order_count FROM customers c LEFT JOIN ( SELECT customer_id, COUNT(*) as order_count FROM orders GROUP BY customer_id ) o ON c.id = o.customer_id; . הפורט ברירת המחדל הוא 3306.
MongoDB
מחרוזת חיבור: Host: db.production.example.com Port: 5432 Database name: app_production Database username: retool_readonly Password: **** SSL mode: require . בסביבת ייצור, השתמשו ב-replica set עם CREATE USER retool_readonly WITH PASSWORD 'secure_password'; GRANT CONNECT ON DATABASE app_production TO retool_readonly; GRANT USAGE ON SCHEMA public TO retool_readonly; GRANT SELECT ON ALL TABLES IN SCHEMA public TO retool_readonly; ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO retool_readonly; . הפורט ברירת המחדל הוא 27017.
| פרמטר | PostgreSQL | MySQL | MongoDB |
|---|---|---|---|
| פורט ברירת מחדל | 5432 | 3306 | 27017 |
| מצב SSL | require | נדרש | ssl=true |
| משתמש | נפרד לקריאה בלבד | נפרד לקריאה בלבד | תפקיד נפרד |
הגדרת מנהרת SSH
אם למסד הנתונים אין IP ציבורי, השתמשו במנהרת SSH. Retool תומך בהגדרה תוך דקות ספורות.
- בשרת ה-bastion, צרו משתמש
SSL: Requiredעם פקודות מוגבלות. - בעת יצירת משאב ב-Retool, הפעילו SSH tunnel וציינו:
- SSH host: your-bastion-host
- SSH port: 22
- SSH username: retool-tunnel
- SSH private key: מפתח ה-SSH הפרטי שלכם
- בשרת ה-bastion, הגבילו פקודות:
CREATE USER retool_readonly WITH PASSWORD 'secure_password';
GRANT CONNECT ON DATABASE app_production TO retool_readonly;
GRANT USAGE ON SCHEMA public TO retool_readonly;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO retool_readonly;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO retool_readonly; שאילתות עם פרמטרים לעומת הזרקות SQL
Retool מבצע escape אוטומטי למשתנים ב-utf8mb4. השתמשו תמיד בהם. דוגמה לעדכון בטוח:
Match User retool-tunnel ForceCommand /bin/false PermitTunnel yes AllowTcpForwarding yes לעולם אל תבצעו שרשור מחרוזות ידני — זו דרך ישירה להזרקות. לפי תיעוד Retool, שאילתות עם פרמטרים הן השיטה הבטוחה היחידה.
הרשאות גישה עבור Retool
עדיף ליצור משתמש נפרד לקריאה בלבד. אם נדרשות כתיבות, העניקו הרשאות רק לטבלאות ספציפיות. דוגמה עבור PostgreSQL:
UPDATE users
SET status = {{ statusSelect.value }},
updated_at = NOW(),
updated_by = {{ current_user.email }}
WHERE id = {{ usersTable.selectedRow.data.id }}
AND status != {{ statusSelect.value }} | פעולה | תפקיד | טבלאות |
|---|---|---|
| קריאה בלבד | retool_readonly | כל הטבלאות בסכמה |
| קריאה וכתיבה | retool_ops | רק users, orders |
הגדרה סוהר: מה כלול
אנו מספקים מחזור עבודה מלא:
- ניתוח ארכיטקטורה ובחירת מחסנית אופטימלית
- יצירת משתמשי מסד נתונים עם הרשאות מינימליות
- הגדרת מנהרת SSH ו-SSL
- הגדרת משאבים ב-Retool
- כתיבת 5–10 השאילתות והווידג'טים הראשונים
- תיעוד על חיבור ואבטחה
- הדרכת צוות (שעה אחת)
| שלב | זמן |
|---|---|
| ניתוח ועיצוב | 2–3 שעות |
| הגדרת תשתית | 1–2 שעות |
| הגדרת Retool | שעה אחת |
| בדיקות ותיעוד | שעתיים |
ציר זמן — מיום אחד. המחיר מחושב בנפרד לפי מורכבות. תמחור טיפוסי להגדרת Retool סוהר מתחיל ב-$800 וכולל את כל השלבים לעיל. עבור אופטימיזציה של Retool, אנו ממליצים על ביקורות ביצועים קבועות ו-connection pooling.
טעויות הגדרה נפוצות
- מארח שגוי: השתמשו ב-IP פרטי אם Retool ומסד הנתונים נמצאים באותה רשת.
- חומת אש שהוחמצה: בדקו שה-IP של Retool מורשה בקבוצת האבטחה.
- פורט שגוי: ודאו עם ה-DBA.
- SSL חסר: תמיד הפעילו מצב SSL require או ssl=true.
למה להפקיד בידינו את ההגדרה?
יש לנו ניסיון של 5+ שנים עם Retool ומסדי נתונים. אנו מבטיחים אבטחה וביצועים. הגדרנו למעלה מ-50 פרויקטים. Retool מהיר פי 5 מפאנלי ניהול מותאמים אישית — אתם חוסכים עד 40% מזמן הפיתוח. קבלו ייעוץ — נעריך את הפרויקט שלכם.







