בניית פלטפורמת נתונים עם Flask, SQL ו-Redis

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

למה Flask, SQL Server, ו-Redis?

Flask הוא סביר וגמיש של Python המתאים מאוד לבניית אפליקציות אינטרנט קטנות ובינוניות. זה מספק את הכלים הנחוצים ליצירת RESTful APIs, להציג תבניות HTML דינמיות, ולהתקשר עם מסדי נתונים. מצד שני, SQL Server הוא מערכת ניהול מסד נתונים רצינית ויציבה (RDBMS) הנפוצה המשמשת באפליקציות עסקיות. לשלב את Flask עם SQL Server מאפשר לנו לבנות אפליקציה עצמאית לניתוח נתונים ותצוגה.

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

סקירת האפליקציה

אפליקציית Flask שלנו מבצעת את המשימות הבאות:

  1. טווחי אוכלוסייה שאילתה. משתמשים יכולים לציין שנה וטווח אוכלוסייה כדי לקבל ספירות של מדינות הנפלות בטווחים אלה.
  2. משיכת מחוזות לפי מדינה. משתמשים יכולים להזין קוד מדינה כדי לקבל רשימת מחוזות.
  3. אחזור מדינות לפי טווח אוכלוסייה. משתמשים יכולים לציין טווח אוכלוסייה ושנה כדי לקבל רשימת מדינות בטווח זה.
  4. הערה. לבדיקה, ניתן ליצור סכימה משלך בבסיס הנתונים ולהכניס נתוני דוגמה כפי שנדרש על סמך ה- APIים הבאים ששיתפו בשימוש בשאילתות SQL. כמו כן, העמודים ב-HTML שמשמשים כאן יכולים להיות עיצוב טבלה בסיסי שמשך את הנתונים המוחזרים מקוד ה- Flask של האפליקציה ומציגים את התוצאות.

בואו נצפה בפרטי היישום.

הגדרת אפליקציית Flask

1. דרישות מוקדמות

לפני התחלת העבודה, ודא שיש לך את התוכנות הבאות מותקנות דרך פקודות משורש הטרמינל שלך (פקודות שגילוי עם MacOS):

  • Python 3.x 
  • Flask (pip install flask)
  • SQLAlchemy (pip install sqlalchemy)
  • PyODBC (pip install pyodbc)
  • Redis (pip install redis

2. חיבור לבסיס הנתונים

אנו משתמשים ב-SQLAlchemy כדי להתחבר לבסיס הנתונים של שרת SQL. כך ניתן להגדיר את החיבור:

Python

 

מחרוזת החיבור הזו משתמשת בנהג ODBC עבור SQL Server וכוללת פרמטרים עבור הצפנה וזמן קצבה.

3. הגדרות Redis

Redis משמש למטמון תוצאות שאילתות. הנה איך להגדיר את חיבור ה-Redis:

Python

 

4. מימוש המסלולים של היישום

מסלול דף הבית

מסלול דף הבית מציג את הדף הראשי של היישום:

Python

 

שאילתת טווח אוכלוסייה עם מטמון Redis

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

Python

 

אחזור מחוזות לפי קוד מדינה עם מטמון Redis

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

Python

 

אחזור מדינות לפי טווח אוכלוסייה עם מטמון Redis

מסלול זה משיג מדינות בתוך טווח אוכלוסייה מסוים ומאחסן את התוצאות:

Python

 

השוואת ביצועים: SQL Server נגד Redis

Query Type Redis Fetch Time SQL Execution Time
שאילתת טווח אוכלוסייה (מאוחסנת) 0.002 שניות 0.000 שניות
שאילתת טווח אוכלוסייה (חדשה) 0.002 שניות 1.342 שניות

מסקנה מרכזית: Redis מפחית את זמן הביצוע מ-~1.3 שניות ל-~0.002 שניות, מה שהופך את השאילתות ל-650 פעמים מהירות יותר!

כיצד Redis משפר ביצועים

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

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

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

מסקנה

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

קישור: קוד המקור של האפליקציה המלאה ניתן למצוא ב-GitHub.

Source:
https://dzone.com/articles/build-data-analytics-platform-flask-sql-redis