מדריך למתחילים על Snowflake: מהארכיטקטורה ועד להרצת מסדי נתונים

מה זה Snowflake?

אם מישהו היה שואל אותי לתאר Snowflake במינימום מילים, הייתי בוחר באלה:

  • מחסני נתונים
  • נתונים בקנה מידה גדול
  • ריבוי-עננים
  • הפרדה
  • קנה מידה
  • גמישות
  • פשוטות

אם היו רוצים ממני להעלות על זה, הייתי מחבר פרטים כך:

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

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

למה להשתמש ב-Snowflake?

Snowflake משרתת יותר מ-8900 לקוחות ברחבי העולם ועובדת על 3.9 מיליארד שאלות בכל יום. סטטיסטיקות שימוש כאלה לא מקריות בכלל.

להלן היתרונות הטובים ביותר של Snowflake שיש בהם כל כך הרבה השפעה:

1. ארכיטקטורה ב

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

2. גמישות וסקלאביליות

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

3. תזמון וביצועים

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

4. שיתוף נתונים

אמצעי ההגנה של Snowflake מאפשרים שיתוף נתונים בין ארגונים אחרים, מחלקות פנימיות, שותפים חיצוניים, לקוחות או בעלי עניין אחרים. אין צורך בהעברות נתונים מסובכות.

5. מסע בזמן

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

6. יעילות עלות

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

כל היתרונות האלה יחד הופכים את Snowflake לכלי ניהול מחסן נתונים מבוקש ביותר.

עכשיו, בואו נסתכל על המבנה הבסיסי של Snowflake שפתות את התכונות האלה.

מה הן מאגרי מידע?

לפני שאנחנו נעבור למבנה של Snowflake, בואו נדבר קצת על מאגרי מידע כדי לוודא שכולנו על אותה דף.

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

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

אלה מהדוגמאות הראשונות של איך חברות ברחבי העולם משתמשות במאגרי מידע על מנת להניע את הגידול. אבל ללא השימוש המתאים והניהול המתאים בעזרת הכלים האלה כמו Snowflake, מאגרי המידע נשארים כתוויות מדהימות.

ניתן ללמוד עוד על הנושא בקורסמאגרי מידעשלנו.

מבנה Snowflake

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

רמת האחסון

בSnowflake, רמת האחסון היא ר

  1. מבוסס ענן: Snowflake משתלב בצורה חלקה עם ספקי הענן הגדולים כמו AWS, GCP ו-Microsoft Azure.
  2. פורמט עמודות: Snowflake מאחסן נתונים בפורמט עמודות, המותאם לשאילתות אנליטיות. בניגוד לפורמטים מבוססי שורות המסורתיים המשמשים כלים כמו Postgres, פורמט העמודות מתאים היטב לאגרגציה של נתונים. באחסון עמודות, השאילתות ניגשות רק לעמודות הספציפיות שהן צריכות, מה שהופך אותו ליעיל יותר. מצד שני, פורמטים מבוססי שורות דורשים גישה לכל השורות בזיכרון עבור פעולות פשוטות כמו חישוב ממוצעים.
  3. מיקרו-פרטיציות: Snowflake משתמשת בטכניקה הנקראת מיקרו-פרטיציות המאחסנת טבלאות בזיכרון במקטעים קטנים. כל מקטע הוא בדרך כלל בלתי ניתן לשינוי ובגודל של כמה מגה-בייטים בלבד, מה שהופך את אופטימיזציית השאילתות והביצוע למהירים יותר.
  4. שיבוט ללא העתקה: ל-Snowflake יש תכונה ייחודית המאפשרת לה ליצור שיבוטים וירטואליים של נתונים. השיבוט הוא מיידי ואינו צורך זיכרון נוסף עד שנעשים שינויים בהעתק החדש.
  5. קנה מידה וגמישות: שכבת האחסון מתרחבת אופקית, כלומר היא יכולה להתמודד עם נפחי נתונים גדלים על ידי הוספת שרתים נוספים לפיזור העומס. בנוסף, ההתרחבות הזו מתבצעת באופן עצמאי ממשאבי המחשוב, מה שהופך אותה לאידיאלית כאשר רוצים לאחסן נפחי נתונים גדולים אך לנתח רק חלק קטן מהם.

עכשיו, בואו נסתכל על שכבת המחשוב.

שכבת המחשוב

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

  1. מחסנים וירטואליים: ניתן לחשוב על מחסנים וירטואליים כצוותים של מחשבים (צמתים חישוביים) שתוכננו לטפל בעיבוד שאילתות. כל חבר בצוות מטפל בחלק שונה של השאילתה, מה שהופך את הביצוע למהיר ומקביל באופן מרשים. Snowflake מציעה מחסנים וירטואליים בגדלים שונים, ולאחר מכן, במחירים שונים (הגדלים כוללים XS, S, M, L, XL).
  2. ארכיטקטורת רב-אשכולות, רב-צמתים: שכבת החישוב משתמשת במספר אשכולות עם מספר צמתים לשם קונקרציה גבוהה, מה שמאפשר למספר משתמשים לגשת ולשאול את הנתונים בו-זמנית.
  3. אופטימיזציה אוטומטית של שאילתות: מערכת Snowflake מנתחת את כל השאילתות ומזהה תבניות כדי לבצע אופטימיזציה באמצעות נתונים היסטוריים. אופטימיזציות נפוצות כוללות גיזום נתונים לא נחוצים, שימוש במטא-נתונים ובחירת מסלול הביצוע היעיל ביותר.
  4. מטמון תוצאות: שכבת החישוב כוללת מטמון שמאחסן את תוצאות השאילתות שבוצעו בתדירות גבוהה. כאשר אותה שאילתה מבוצעת שוב, התוצאות מוחזרות כמעט מיד.

עקרונות התכנון הללו של שכבת החישוב תורמים ליכולת של Snowflake להתמודד עם עומסי עבודה שונים ותובעניים בענן.

שכבת שירותי ענן

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

  1. אבטחה ובקרת גישה: שכבה זו אוכפת אמצעי אבטחה, כולל אימות, הרשאות והצפנה. מנהלים משתמשים בבקרת גישה מבוססת תפקידים (RBAC) כדי להגדיר ולנהל תפקידי משתמש והרשאות.
  2. שיתוף נתונים: שכבה זו מיישמת פרוטוקולי שיתוף נתונים מאובטחים בין חשבונות שונים ואפילו ארגונים צד שלישי. צרכני הנתונים יכולים לגשת לנתונים ללא צורך בהעברת נתונים, מה שמעודד שיתוף פעולה ומסחור נתונים.
  3. תמיכה בנתונים חצי-מובנים: יתרון ייחודי נוסף של Snowflake הוא היכולת שלה לטפל בנתונים חצי-מובנים, כמו JSON ו-Parquet, למרות שהיא פלטפורמת ניהול מחסני נתונים. ניתן לשאול נתונים חצי-מובנים בקלות ולשלב את התוצאות עם טבלאות קיימות. גמישות זו אינה נראית בכלים אחרים של RDBMS.

עכשיו כשיש לנו תמונה כללית של ארכיטקטורת Snowflake, בואו נכתוב כמה שאילתות SQL בפלטפורמה.

הגדרת SnowflakeSQL

ל-Snowflake יש גרסה משלה של SQL הנקראת SnowflakeSQL. ההבדל בינה לבין דיאלקטים אחרים של SQL דומה להבדל בין מבטאים באנגלית.

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

Snowflake מספקת שני ממשקים להרצת SnowSQL:

  • ראיית שלג: ממשק אינטרנטי לאינטראקציה עם הפלטפורמה.
  • SnowSQL: לקוח קומנד לווין (Command Line Interface) לניהול ובקשות בסיסי מידע.

אנחנו נראה איך להגדיר שניהם ולבצע כמה בקשות!

Snowsight: ממשק אינטרנטי

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

אחרי אימות הדוא״ל שלך, תיועד אל עמוד השhetים. שhetים הם סביבות אינטראקציות חיות, בהן אתה יכול לכתוב, לבצע ולהציץ בתוצאות של בקשות ה SQL שלך.

כדי לבצע כמה בקשות, אנחנו צריכים בסיסי מידע ושולחן (לא נשתמש במידע הדגימה ב Snowsight). הגיף הבא מראה איך אתה יכול ליצור בסיסי מידע חדש בשם "test_db" ושולחן בשם "diamonds" בעזרת קובץ CSV מקומי. תוכל להוריד את הקובץ CSV על ידי הוצאת הקוד ב גיתוב זה ב GitHub בתורם שלך.

בגיף, Snowsight מדבר אלינו על בעיה עם אחד מהשמות העמודות. מפני שהמילה "table" היא מילה מושמת, העסקתי אותה בציתות כפלורלים.

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

SnowSQL: קולטן קוד

שום דבר לא מתאים יותר להתרגשות של ניהול ושאילת בעלות בסיס מידע מהמחשב שלך. זו הסיבה של SnowSQL!

אך כדי להפעיל את זה, אנחנו צריכים לעבור כמה שלבים, שהם בדרך כלל איטיים יותר מלהתחיל עם Snowsight.

כצעד ראשון, תורשת את המעליל של SnowSQL מדף ה下载 לפיתוחאים של Snowflake. תורשת את הקבצים המתאימים. בגלל שאני משתמש ב WSL2, אני אבחר בגרסה לינוקס:

במסך התורמל, אני מוריד את הקבצים בעזרת הקישור המעוצב ומבצע אותו בעזרת bash:

$ curl -O https://sfc-repo.snowflakecomputing.com/snowsql/bootstrap/1.2/linux_x86_64/snowsql-1.2.31-linux_x86_64.bash $ bash snowsql-1.2.31-linux_x86_64.bash

לפלטפורמות אחרות, תוכלו לעבוד את שלבי ההתקנה מדף המדריך הזה של Snowflake.

ברגע שהתקנת הוא בהצלחה, תקבל את המסר הבא:

שים לב: במערכות דמויות יוניקס, חשוב לוודא שפקודת snowsql זמינה בכל הפעלות הטרמינל. כדי להשיג זאת, עליך להוסיף את ספריית /home/username/bin למשתנה $PATH שלך. ניתן לעשות זאת על ידי הוספת השורה הבאה לקבצי .bashrc, .bash_profile או .zshrc: export PATH=/home/yourusername/bin:$PATH. זכור להחליף את yourusername בשם המשתמש האמיתי שלך.

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

  1. להעביר את פרטי החשבון באופן אינטראקטיבי בטרמינל.
  2. להגדיר את האישורים בקובץ הגדרות גלובלי של Snowflake.

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

קודם כל, גש לכתובת האימייל שלך ומצא את אימייל קבלת הפנים מ-Snowflake. האימייל מכיל את שם החשבון שלך בתוך קישור ההתחברות: account-name.snowflakecomputing.com. העתק אותו.

לאחר מכן, פתח את קובץ ~/.snowsql/config בעורך טקסט כמו VIM או VSCode. תחת הסעיף connections, בטל את ההערה מהשדות הבאים:

  • שם חשבון
  • שם משתמש
  • סיסמה

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

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

התחברות לבסיס נתונים קיים ב-SnowSQL

כרגע איננו מחוברים לשום בסיס נתונים. בואו נתקנה זאת על ידי התחברות לבסיס הנתונים test_db שיצרנו עם Snowsight. קודם, בדוק בסיסים זמינים עם SHOW DATABASES:

$ SHOW DATABASES $ USE DATABASE TEST_DB

לאחר מכן, ציין שתשתמש בבסיס הנתונים test_db (לא רשים לאותיות גדולות/קטנות) מעכשיו והלאה. אז, תוכל להריץ כל שאילתת SQL על הטבלאות של הבסיס הנתונים המחובר.

$ SELECT COUNT(*) FROM DIAMONDS

יצירת בסיס נתונים חדש וטבלה ב-SnowSQL

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

1. יצירת בסיס נתונים חדש:

CREATE DATABASE IF NOT EXISTS new_db;

2. שימוש בבסיס הנתונים:

USE DATABASE new_db;

3. יצירת פורמט קובץ עבור CSV:

CREATE OR REPLACE FILE FORMAT my_csv_format -- ניתן לקרוא לזה מה שתרצה TYPE = CSV FIELD_DELIMITER = ',' SKIP_HEADER = 1; <

אנחנו צריכים להגדיר באופן ידני את הפורמט הקובץ ולתת לו שם מפני שסנווארק לא יכול להסיק את המבנה והסכמת הנתונים של קבצים מסוגים כמו CSV, JSON או XML. הפורמט שהגדירנו למעלה מתאים לקבץ diamonds.csv שיש לנו (הוא מפורמט עם פריטים מופרדים בפסיקים וכולל ראשי מידע).

4. יצירת שלב פנימי:

CREATE OR REPLACE STAGE my_local_files;

שלב בסנווארק הוא אזור אחסון בו אתה יכול להעלות קבצים מקומיים שלך. אלה יכולים להיות קבצים בניהול מבנים ולא מבנים. באופן העלה, אנחנו יוצרים שלב בשם my_local_files.

5. שים את קבצי CSV בשלב:

PUT file:///home/bexgboost/diamonds.csv @my_local_files;

6. יצירת הטבלה:

CREATE TABLE diamonds ( carat FLOAT, cut VARCHAR(255), color VARCHAR(255), clarity VARCHAR(255), depth FLOAT, table FLOAT, price INTEGER, x FLOAT, y FLOAT, z FLOAT );

7. לוading המידע מהשלב לטבלה:

COPY INTO diamonds FROM @my_local_files/diamonds.csv FILE_FORMAT = my_csv_format;

8. אימוץ:

SELECT COUNT(*) FROM diamonds;

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

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

מסקוף ולימוד נוסף

ווא

שיכנעתם שלשונגלייה יש הרבה יותר ממה שכן הכרנו. למעשה, התיעוד של שונגלייה כולל מדריכים להתחלה שלמעשה עובדים במשך 128 דקות! אבל לפני שתתחיל להתמודד עם אלה, אני ממליצה להתעסק עם משאבים אחרים. מה לגבי אלה?

תודה לכם שקראתם!

Source:
https://www.datacamp.com/tutorial/introduction-to-snowflake-for-beginners