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