מסננים
כשקוראים נתונים מ-Bigtable, אפשר לקרוא שורות ספציפיות או טווחים של שורות. עם זאת, לא תמיד צריך את כל הנתונים בכל השורות. יכול להיות שתצטרכו רק שורות שמכילות ערך ספציפי במפתח השורה שלהן, או תאים בתוך משפחת עמודות ספציפית.
כדי להגביל את התוצאות של בקשת קריאה, צריך לכלול מסננים בבקשה. מסנן מוחל על הנתונים לפני שליחת התגובה, וכך מצטמצם נפח הנתונים שמוחזרים. כתוצאה מכך, שימוש במסננים יכול להוביל לעלויות רשת נמוכות יותר ולתפוקה מהירה יותר. בדף הזה מובאת סקירה כללית על אופן הפעולה של מסנני Bigtable ורשימה של המסננים הזמינים.
פרטים ודוגמאות קוד לכל מסנן מופיעים במאמר דוגמאות למסננים.
איך פועלים המסננים
כשבקשת הקריאה כוללת מסנן, Bigtable מאחזר שורה או טווח של שורות מהטבלה. לכל שורה של נתוני קלט שהיא מאחזרת, מערכת Bigtable מעריכה את השורה באמצעות המסנן שלכם, ואז יוצרת שורה של נתוני פלט על סמך תוצאות המסנן.
ב-Bigtable יש כמה סוגים של מסננים, כמו שמתואר בקטעים הבאים. מסננים בסיסיים מחולקים לשתי קטגוריות: הגבלה ושינוי. אפשר לשלב בין מסננים בסיסיים כדי ליצור מסננים מורכבים.
ברוב המקרים, מסנן מוחל על כל השורות, אלא אם מציינים מפתח שורה, טווח שורות או מספר שורות שהמסנן צריך לחול עליהן. יוצא מן הכלל הוא המסנן row key regex, שיכול להגביל את טווח השורות במקרים מסוימים אם הביטוי הרגולרי הוא קידומת קבועה. באופן כללי, כדי להימנע מהאיטיות של סריקת טבלה מלאה, תמיד צריך לציין את השורות לסינון.
הגבלת המסננים
מסנן מגביל קובע אילו שורות או תאים ייכללו בתשובה, על סמך התאמה לקריטריונים ספציפיים. לדוגמה, אפשר להגדיר שהתשובה תכלול רק שורות שבהן מפתח השורה תואם לביטוי רגולרי, או שרוצים רק תאים מקבוצת עמודות ספציפית.
מסננים מגבילים רבים יכולים להחריג תאים משורת פלט. אם כל התאים לא נכללים בשורת פלט, השורה לא נכללת בתגובה.
כאן אפשר לראות את הרשימה המלאה של מסנני ההגבלה.
שינוי מסננים
מסנן משנה משפיע על הנתונים או על המטא-נתונים של תאים ספציפיים.
Bigtable מספק את מסנני השינוי הבאים:
מסנן להסרת ערכים, שמחליף את הערך של כל תא במחרוזת ריקה. המסנן הזה שימושי כשצריך רק את מספר השורות או את רשימת מפתחות השורות שעומדות בקריטריונים, ולא את הנתונים מהשורות האלה.
המסנן apply label filter (החלת מסנן של תווית) שמחיל תווית על כל תא כדי לזהות איזה מסנן הפיק כל תא בתגובה. האפליקציה יכולה להשתמש בתוויות האלה כדי לבצע סינון נוסף בצד הלקוח.
יצירת מסננים
מסנן מורכב מאפשר לשלב כמה מסננים בסיסיים למסנן אחד, וכך להחיל יותר ממסנן אחד על בקשת קריאה אחת.
לדוגמה, כדי לקבל נתוני שימוש במעבד עבור השרתים, אפשר להשתמש במסנן אחד כדי לכלול רק שורות שבהן מפתח השורה מתחיל ב-SERVER, ואז להשתמש במסנן שני כדי לכלול רק תאים במשפחת העמודות CPU.
Bigtable מספק את מסנני ההרכבה הבאים:
- שרשרת, שמחיל רצף של מסננים על כל שורת קלט ומחזיר שורת פלט. מסנן שרשרת דומה לשימוש באופרטור הלוגי AND.
- שילוב לסירוגין, ששולח כל שורת קלט דרך כמה מסננים, ואז משלב את כל תוצאות המסננים של שורת הקלט לשורת פלט אחת. מסנן שילוב דומה לשימוש באופרטור הלוגי OR.
- תנאי, שיוצר שורת פלט על ידי החלת אחד משני מסננים אפשריים על שורת הקלט. המסנן נבחר על ידי החלת מסנן פרדיקט על שורת הקלט, ואז בדיקה אם שורת הפלט של מסנן הפרדיקט מכילה תאים כלשהם.
מסננים וביצועים
המסננים מאפשרים לכם לאחזר רק את הנתונים שאתם באמת צריכים. כתוצאה מכך, מסננים יכולים לשפר את הביצועים על ידי צמצום כמות הנתונים שנשלחת לאפליקציה.
עם זאת, מסננים הם לא פתרון לכל בעיה בביצועים. באופן כללי, צריך להשתמש במסננים כדי לשלוט ביעילות של קצב העברת הנתונים, ולא כדי לקצר את זמן האחזור בין שליחת בקשה לקבלת תגובה. אם משתמשים במסננים בצורה נכונה, הם יכולים להיות חלק יעיל באסטרטגיה לשיפור הביצועים של קריאת נתונים.
המסנן conditions (תנאים), בפרט, יכול להגדיל את זמן האחזור, כי התנאים פועלים לאט יותר ממסננים אחרים. אם בקשת הקריאה שלכם רגישה במיוחד לביצועים, אל תשתמשו בתנאים בבקשה.
סיכום המסננים
בטבלאות הבאות מפורטים המסננים שזמינים ב-Bigtable, כולל קישורים לפרטים ולדוגמאות קוד לכל מסנן.
| הגבלת המסננים | |
|---|---|
| חסימה של הכול | לא יופקו תאים. ההגדרה הזו שימושית בעיקר לניפוי באגים. |
| תאים מגבלה לכל עמודה | כוללים רק את N הגרסאות האחרונות של עמודה בשורה. |
| מגבלת התאים לכל שורה | לכלול רק את N התאים הראשונים משורה. |
| Cells per row offset | השמטה של N התאים הראשונים בשורה. |
| Column family regex | כולל רק תאים שקבוצת העמודות שלהם תואמת לביטוי רגולרי של RE2. |
| ביטוי רגולרי של מסווג עמודות | הכללה רק של תאים שהמסווג של העמודה שלהם תואם לביטוי רגולרי. |
| טווח עמודות | הכללה רק של תאים במשפחת עמודות ספציפית, שמגדיר העמודה שלהם נמצא בטווח ספציפי. |
| העברת כל התמונות | פליטה של כל תאי הקלט. ההגדרה הזו שימושית בעיקר לניפוי באגים. |
| ביטוי רגולרי של מפתח שורה | הכללה רק של תאים שמפתח השורה שלהם תואם לביטוי רגולרי. |
| דוגמה לשורה | שליפת מדגם אקראי של שורות. |
| Sink | לכלול תאים בשורת הפלט הסופית ולמנוע שינוי או הסרה שלהם על ידי מסנן עוקב. |
| טווח חותמות זמן | הכללה רק של תאים שחותמת הזמן שלהם נמצאת בטווח ספציפי. |
| טווח ערכים | הכללה רק של תאים שהערך שלהם נמצא בטווח ספציפי. |
| ביטוי רגולרי של ערך | הכללה רק של תאים שהערך שלהם תואם לביטוי רגולרי. |
| שינוי מסננים | |
|---|---|
| החלת תווית | הוספת תווית לכל התאים. |
| ערך של רצועה | מחזירה מחרוזת ריקה לכל ערך תא. |
| יצירת מסננים | |
|---|---|
| Chain | החלת כמה מסננים לפי סדר. |
| מצב | להחיל אחד משני מסננים אפשריים על שורה. |
| Interleave | שילוב של שורות פלט מכמה מסננים לשורת פלט אחת. |