שאילתה וניתוח של נתוני Bigtable באמצעות BigQuery

‫BigQuery הוא מחסן נתונים מנוהל שיכול לעזור לכם להריץ שאילתות ולנתח את הנתונים שלכם ב-Bigtable באמצעות שאילתות SQL. ‫BigQuery שימושי למנתחי נתונים, למהנדסי נתונים, למדעני נתונים או לכל מי שרוצה להשתמש בנתוני Bigtable כדי לענות על שאלות עסקיות.

‫BigQuery מאפשר לכם להריץ שאילתות על נתוני Bigtable מתוך BigQuery. התכונה הזו שימושית כשרוצים לצרף את הנתונים מ-Bigtable לטבלאות ב-BigQuery.

במאמר הזה מוסבר איך להריץ שאילתות על נתונים ב-Bigtable באמצעות BigQuery. לפני שקוראים את הדף הזה, כדאי לעיין בסקירה הכללית של Bigtable ובסקירה הכללית של BigQuery.

השימוש ב-BigQuery כדי להריץ שאילתות על טבלה ב-Bigtable מתאים במיוחד לטבלאות שיש בהן את אותן משפחות עמודות ואותם מזהי עמודות בכל שורה.

יצירת טבלה חיצונית

כדי להריץ שאילתות על הנתונים ב-Bigtable, אתם או אדמין בארגון שלכם צריכים ליצור טבלה חיצונית, שהיא טבלה ב-BigQuery שמכילה מצביעי מטא-נתונים לטבלה ב-Bigtable שאליה אתם שולחים את השאילתות. מידע נוסף על טבלאות חיצוניות זמין במאמר מבוא למקורות נתונים חיצוניים.

צריך ליצור את הטבלה החיצונית באותו אזור שבו נמצאת טבלת Bigtable. לדוגמה, אם הטבלה נמצאת במופע שיש לו אשכולות ב-europe-central2-a (ורשה), ב-europe-west1-c (בלגיה) וב-asia-east1-a (טוקיו), צריך ליצור את הטבלה החיצונית בוורשה, בבלגיה או בטוקיו.

אלה השיטות המומלצות ליצירת טבלה חיצונית:

  • כדי לא להשפיע על התנועה של האפליקציה, כדאי להשתמש במחשוב ללא שרתים של Data Boost כשקוראים נתונים מ-Bigtable באמצעות טבלאות חיצוניות של BigQuery. השימוש ב-Data Boost יעיל במיוחד מבחינת עלות בשאילתות אד-הוק. כדי להשתמש ב-Data Boost, צריך לציין את פרופיל האפליקציה של Data Boost כשיוצרים את הגדרת הטבלה החיצונית. מידע נוסף על Data Boost זמין במאמר סקירה כללית על Data Boost ב-Bigtable.

  • ברוב המקרים, כשיוצרים טבלה חיצונית, צריך להגדיר את readRowkeyAsString ואת ignoreUnspecifiedColumnFamilies לערך true.

  • אם הערך של ignoreUnspecifiedColumnFamilies הוא true, כשיוצרים הגדרת טבלה שכוללת רק חלק מהעמודות במשפחת עמודות, רק העמודות שנבחרו מקודמות כעמודות בטבלה החיצונית. הנתונים בעמודות שלא נבחרו מקובצים בעמודה כללית column.

כדי ליצור את הטבלה החיצונית, פועלים לפי ההוראות במאמר יצירת טבלה חיצונית ב-Bigtable.

שליחת שאילתות לנתונים בטבלה החיצונית

אחרי שיש לכם טבלה חיצונית לטבלת Bigtable, אתם יכולים לשלוח אליה שאילתות SQL באחת מהשיטות הבאות:

במאמר הרצת שאילתה מוסבר איך לכתוב ולהריץ שאילתה. הוראות ספציפיות ל-Bigtable, כולל ההרשאות הנדרשות ודוגמאות קוד, זמינות במאמר שאילתות על נתונים ב-Bigtable.

שאילתות מתוזמנות

שאילתות מתוזמנות שימושיות כשרוצים לייבא נתונים מ-Bigtable ל-BigQuery על בסיס חוזר. הם גם שימושיים לתרחישי שימוש שאחרת היו מחייבים אתכם לבנות צינור נתונים ולהזרים את הנתונים ל-BigQuery. הוראות לניהול שאילתות מתוזמנות מופיעות במאמר תזמון שאילתות.

סריקות מלאות של טבלאות

אם אתם משתמשים ב-Data Boost כדי לקרוא את הנתונים, אתם לא צריכים להימנע מסריקה של הטבלה כולה. אבל אם אתם משתמשים בצמתים שהוקצו לחישוב, אתם צריכים לעשות זאת. בדומה למצב שבו אתם שולחים בקשות קריאה ישירות לטבלת Bigtable, כשאתם שולחים שאילתה לטבלה החיצונית כדי לאחזר את הטבלה ואתם לא משתמשים ב-Data Boost, בדרך כלל מומלץ להימנע מסריקות מלאות של הטבלה. סריקות מלאות של טבלאות מעלות את ניצול המעבד (CPU) ונמשכות הרבה יותר זמן משאילתות סלקטיביות. הם גם דורשים תפוקה גבוהה יותר של BigQuery.

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

  • WHERE rowkey = "abc123"
  • WHERE rowkey BETWEEN "abc123" PRECEDING AND "abc999" FOLLOWING
  • WHERE rowkey > 999999 (אם קוראים את מפתח השורה כמחרוזת)

הצטרפויות

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

עלויות

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

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

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

מידע נוסף על אופטימיזציה של העלויות ב-BigQuery זמין במאמר הערכה וניהול של עלויות.

מגבלות

ההגבלה הבאה חלה:

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

המאמרים הבאים