כדי לכתוב נתונים מ-Dataflow ל-Bigtable, משתמשים במחבר הקלט/פלט של Bigtable ב-Apache Beam.
מקביליות
המקביליות נשלטת על ידי מספר הצמתים באשכול Bigtable. כל צומת מנהל טווח מפתחות אחד או יותר, אבל טווחי מפתחות יכולים לעבור בין צמתים כחלק מאיזון העומסים. מידע נוסף זמין במאמר הסבר על הביצועים במסמכי התיעוד של Bigtable.
החיוב מתבצע לפי מספר הצמתים באשכולות של המופע. במחירון של Bigtable תוכלו לעיין ברשימת התעריפים.
ביצועים
בטבלה הבאה מוצגים מדדי ביצועים לפעולות קלט/פלט של כתיבה ב-Bigtable. עומסי העבודה הופעלו על e2-standard2 עובד אחד, באמצעות Apache Beam SDK 2.48.0 ל-Java. הם לא השתמשו ב-Runner v2.
| 100 מיליון רשומות | 1kB | עמודה אחת | תפוקה (בייטים) | תפוקה (אלמנטים) |
|---|---|---|
| כתיבה | 65MBps | 60,000 רכיבים בשנייה |
המדדים האלה מבוססים על צינורות פשוטים של עיבוד נתונים באצווה. הם נועדו להשוות בין הביצועים של מחברי קלט/פלט, ולא בהכרח מייצגים צינורות נתונים בעולם האמיתי. הביצועים של צינורות Dataflow הם מורכבים, והם פונקציה של סוג המכונה הווירטואלית, הנתונים שעוברים עיבוד, הביצועים של מקורות ויעדים חיצוניים וקוד המשתמש. המדדים מבוססים על הפעלת Java SDK, והם לא מייצגים את מאפייני הביצועים של ערכות SDK בשפות אחרות. מידע נוסף זמין במאמר בנושא ביצועים של Beam IO.
שיטות מומלצות
באופן כללי, מומלץ להימנע משימוש בעסקאות. אין ערובה לכך שעסקאות יהיו אידמפוטנטיות, ויכול להיות ש-Dataflow יפעיל אותן כמה פעמים בגלל ניסיונות חוזרים, מה שיוביל לערכים לא צפויים.
תהליך עבודה יחיד של Dataflow עשוי לעבד נתונים עבור טווחי מפתחות רבים, מה שמוביל לכתיבות לא יעילות ב-Bigtable. שימוש ב-
GroupByKeyכדי לקבץ נתונים לפי מפתח Bigtable יכול לשפר משמעותית את ביצועי הכתיבה.אם אתם כותבים מערכי נתונים גדולים ל-Bigtable, כדאי להפעיל את הפונקציה
withFlowControl. ההגדרה הזו מגבילה אוטומטית את קצב התנועה ל-Bigtable, כדי להבטיח שלשרתי Bigtable יהיו מספיק משאבים זמינים להצגת נתונים.
המאמרים הבאים
- קוראים את התיעוד בנושא מחבר Bigtable I/O.
- כאן אפשר לעיין ברשימת התבניות ש-Google סיפקה.