בדף הזה מוסבר איך ליצור, לשנות ולהציג נתוני שינויים ב-Spanner עבור מסדי נתונים בניב GoogleSQL ומסדי נתונים בניב PostgreSQL. למידע נוסף על סנכרון שינויים בזרמי נתונים, ראו אודות סנכרון שינויים בזרמי נתונים.
מכיוון שסנכרון שינויים בזרמי נתונים הם אובייקטים של סכימה, ניתן ליצור ולנהל אותם באמצעות אותם עדכוני סכימה המונעים על ידי DDL המשמשים לכל סוג אחר של עבודת הגדרת מסד נתונים, כגון יצירת טבלאות או הוספת אינדקסים.
אחרי ששולחים הצהרת DDL לשינוי סכימה, כולל הצהרות שמשמשות ליצירה, לשינוי או למחיקה של סנכרון שינויים בזרמי נתונים, מתחילה ב-Spanner פעולה ארוכת טווח. עם סיום הפעולה הממושכת הזו, מתחיל מעקב אחרי העמודות או הטבלאות שצוינו בהגדרה החדשה של סנכרון שינויים בזרמי נתונים חדש או שונה.
יצירת שידור של שינויים
כדי ליצור זרם שינויים, עליך לספק את שמו ואת אובייקטי הסכימה שהוא עוקב אחריהם: או את מסד הנתונים כולו, או רשימה של טבלאות ועמודות ספציפיות. באפשרותך להגדיר זרם שינויים באופן אופציונלי באמצעות כל אחת מהאפשרויות הבאות:
- מציינים את תקופת שמירת הנתונים כדי לשנות את תקופת השמירה של שבעה ימים שמוגדרת כברירת מחדל.
- מציינים את סוג לכידת הערך כדי לשנות את סוג לכידת הערך שמוגדר כברירת מחדל
OLD_AND_NEW_VALUES. - החל מסנן מחיקות מבוסס TTL כדי לסנן מחיקות מבוססות TTL מסנכרון שינויים בזרמי נתונים שלך.
- החל מסנן שינויי טבלה כדי לא לכלול את כל שינויי הטבלה
INSERT,UPDATEאוDELETE. הפעל אי הכללה של רשומות ברמת הטרנזקציה כדי לא לכלול טרנזקציות מסוימות בסנכרון שינויים בזרמי נתונים שלך.
GoogleSQL
תחביר ה-DDL ליצירת זרם שינויים באמצעות GoogleSQL נראה כך:
CREATE CHANGE STREAM CHANGE_STREAM_NAME
[FOR column_or_table_watching_definition[, ... ] ]
[
OPTIONS (
retention_period = timespan,
value_capture_type = type,
exclude_ttl_deletes = boolean,
exclude_insert = boolean,
exclude_update = boolean,
exclude_delete = boolean,
allow_txn_exclusion = boolean
)
]
PostgreSQL
תחביר ה-DDL ליצירת זרם שינויים באמצעות PostgreSQL נראה כך:
CREATE CHANGE STREAM CHANGE_STREAM_NAME
[FOR column_or_table_watching_definition[, ... ] ]
[
WITH (
retention_period = timespan,
value_capture_type = type,
exclude_ttl_deletes = boolean,
exclude_insert = boolean,
exclude_update = boolean,
exclude_delete = boolean,
allow_txn_exclusion = boolean
)
]
זרם שינויים חדש מתחיל לעקוב אחרי אובייקטים של סכימה שהוקצו לו ברגע שהפעולה ארוכת הטווח שיצרה אותו מסתיימת.
בדוגמאות הבאות מוצגות דרכים ליצירת סנכרון שינויים בזרמי נתונים עם הגדרות שונות.
צפה במסד נתונים שלם
כדי ליצור מקור נתונים לשינויים שעוקב אחרי כל שינוי בנתונים שמתבצע בטבלאות של מסד נתונים, משתמשים במילת המפתח ALL:
CREATE CHANGE STREAM EverythingStream
FOR ALL;
תצורת ALL כוללת באופן מרומז את כל טבלאות ועמודות הנתונים העתידיות של מסד הנתונים, ברגע שהן נוצרות. זה לא כולל תצוגות, טבלאות סכימות מידע או אובייקטים אחרים מלבד טבלאות נתונים רגילות.
צפייה בטבלאות ספציפיות
כדי להגביל את היקף זרם השינויים לטבלאות ספציפיות, במקום למסד נתונים שלם, ציין רשימה של טבלה אחת או יותר:
CREATE CHANGE STREAM SingerAlbumStream
FOR Singers, Albums;
Spanner מעדכן באופן אוטומטי זרמי שינויים שצופים בטבלאות שלמות כדי לשקף כל שינוי בסכימה המשפיע על טבלאות אלה, כגון עמודות שנוספו או הושמטו.
צפה בטורים ספציפיים
השתמש בתחביר table(column_1[, column_2,
...]) כדי לצפות בשינויים בעמודה ספציפית אחת או יותר, שאינה מפתח, בתוך טבלאות שאתה נותן להן שם:
CREATE CHANGE STREAM NamesAndTitles
FOR Singers(FirstName, LastName), Albums(Title);
לא ניתן לציין כאן עמודות מפתח ראשי מכיוון שכל זרם שינויים תמיד עוקב אחר המפתחות הראשיים של כל טבלה שהוא צופה בה. זה מאפשר לכל רשומת שינוי נתונים לזהות את השורה שהשתנתה לפי המפתח הראשי שלה.
צפה בטבלאות ובעמודות בזרם יחיד
ניתן לשלב תחביר של צפייה בטבלאות וצפייה בעמודות משתי הדוגמאות הקודמות בזרם שינויים יחיד:
CREATE CHANGE STREAM NamesAndAlbums
FOR Singers(FirstName, LastName), Albums;
ציין תקופת שמירה ארוכה יותר
כדי לציין תקופת שמירת נתוני זרם שינויים ארוכה מברירת המחדל של שבעה ימים, יש להגדיר את ה-retention_period לתקופה של עד שלושים יום, המבוטאת כשעות (h) או ימים (d).
שתי דוגמאות:
GoogleSQL
CREATE CHANGE STREAM LongerDataRetention
FOR ALL
OPTIONS ( retention_period = '36h' );
CREATE CHANGE STREAM MaximumDataRetention
FOR ALL
OPTIONS ( retention_period = '7d' );
PostgreSQL
CREATE CHANGE STREAM LongerDataRetention
FOR ALL
WITH ( retention_period = '36h' );
CREATE CHANGE STREAM MaximumDataRetention
FOR ALL
WITH ( retention_period = '7d' );
ציין סוג לכידת ערך שונה
כדי לציין סוג לכידת ערך זרם שינויים שאינו OLD_AND_NEW_VALUES, הגדר את value_capture_type ל-NEW_VALUES או ל-NEW_ROW, כפי שמוצג בדוגמאות הבאות:
GoogleSQL
CREATE CHANGE STREAM NewRowChangeStream
FOR ALL
OPTIONS ( value_capture_type = 'NEW_ROW' );
CREATE CHANGE STREAM NewValuesChangeStream
FOR ALL
OPTIONS ( value_capture_type = 'NEW_VALUES' );
PostgreSQL
CREATE CHANGE STREAM NewRowChangeStream
FOR ALL
WITH ( value_capture_type = 'NEW_ROW' );
CREATE CHANGE STREAM NewValuesChangeStream
FOR ALL
WITH ( value_capture_type = 'NEW_VALUES' );
סנן מחיקות מבוססות TTL
ניתן לסנן מחיקות מבוססות TTL מהיקף זרם השינויים שלך באמצעות המסנן exclude_ttl_deletes.
למידע נוסף על אופן פעולתו של מסנן זה, ראו מסנן מחיקות המבוסס על אורך חיים (TTL).
GoogleSQL
כדי ליצור זרם שינויים עם מסנן מחיקות מבוסס TTL, הפעל את הדוגמה הבאה:
CREATE CHANGE STREAM CHANGE_STREAM_NAME FOR ALL
OPTIONS (exclude_ttl_deletes = true)
מחליפים את מה שכתוב בשדות הבאים:
- CHANGE_STREAM_NAME: שם זרם השינויים החדש שלך
הדוגמה הבאה יוצרת זרם שינויים בשם NewFilterChangeStream שאינו כולל את כל המחיקות מבוססות TTL:
CREATE CHANGE STREAM NewFilterChangeStream FOR ALL
OPTIONS (exclude_ttl_deletes = true)
PostgreSQL
כדי ליצור זרם שינויים עם מסנן מחיקות מבוסס TTL, הפעל את הדוגמה הבאה:
CREATE CHANGE STREAM CHANGE_STREAM_NAME FOR ALL
WITH (exclude_ttl_deletes = true)
מחליפים את מה שכתוב בשדות הבאים:
- CHANGE_STREAM_NAME: השם של הזרם החדש של שינויים
הדוגמה הבאה יוצרת זרם שינויים בשם NewFilterChangeStream שאינו כולל את כל המחיקות מבוססות TTL:
CREATE CHANGE STREAM NewFilterChangeStream FOR ALL
WITH (exclude_ttl_deletes = true)
כדי להוסיף או להסיר את המסנן של מחיקות שמבוססות על TTL מזרם שינויים קיים, אפשר לעיין במאמר שינוי המסנן של מחיקות שמבוססות על TTL. ניתן לאשר את מסנני זרם השינויים על ידי הצגת הגדרות של זרם השינויים כ-DDL.
סנן לפי סוג שינוי הטבלה
סנן אחד או יותר משינויי הטבלה הללו מהיקף זרם השינויים שלך באמצעות אפשרויות הסינון הזמינות הבאות:
exclude_insert: אי הכללה של כל שינויי הטבלה שלINSERTexclude_update: אי הכללה של כל שינויי הטבלה שלUPDATEexclude_delete: אי הכללה של כל שינויי הטבלה שלDELETE
מידע נוסף על אופן הפעולה של המסננים האלה זמין במאמר בנושא מסננים של סוגי שינויים בטבלה.
GoogleSQL
כדי ליצור זרם שינויים עם מסנן אחד או יותר מסוג שינוי טבלה, הפעל את הפעולות הבאות:
CREATE CHANGE STREAM CHANGE_STREAM_NAME FOR ALL
OPTIONS (MOD_TYPE_FILTER_NAME = true)
מחליפים את מה שכתוב בשדות הבאים:
- CHANGE_STREAM_NAME: שם זרם השינויים החדש שלך
- MOD_TYPE_FILTER_NAME: המסנן שברצונך להוסיף:
exclude_insert,exclude_updateאוexclude_delete. אם מוסיפים יותר ממסנן אחד בו זמנית, יש להפריד כל אחד באמצעות פסיק.
הדוגמה הבאה יוצרת זרם שינויים בשם NewFilterChangeStream שאינו כולל את סוגי שינויי הטבלה INSERT ו-UPDATE:
CREATE CHANGE STREAM NewFilterChangeStream FOR ALL
OPTIONS (exclude_insert = true, exclude_update = true)
PostgreSQL
כדי ליצור זרם שינויים עם מסנן אחד או יותר מסוג שינוי טבלה, הפעל את הפעולות הבאות:
CREATE CHANGE STREAM CHANGE_STREAM_NAME FOR ALL
WITH (MOD_TYPE_FILTER_NAME = true)
מחליפים את מה שכתוב בשדות הבאים:
- CHANGE_STREAM_NAME: שם זרם השינויים החדש שלך
- MOD_TYPE_FILTER_NAME: המסנן שברצונך להוסיף:
exclude_insert,exclude_updateאוexclude_delete. אם מוסיפים יותר ממסנן אחד בו זמנית, יש להפריד כל אחד באמצעות פסיק.
הדוגמה הבאה יוצרת זרם שינויים בשם NewFilterChangeStream שאינו כולל את סוגי שינויי הטבלה INSERT ו-UPDATE:
CREATE CHANGE STREAM NewFilterChangeStream FOR ALL
WITH (exclude_insert = true, exclude_update = true)
כדי להוסיף או להסיר מסנן של סוג שינוי בטבלה מתוך עדכון נתונים קיים, אפשר לעיין במאמר בנושא שינוי מסנן לפי סוג שינוי בטבלה. ניתן לאשר אילו מסנני סוג שינוי טבלה קיימים עבור זרם השינויים שלך על ידי הצגת הגדרות של זרם השינויים כ-DDL.
הפעלת החרגה של רשומות ברמת העסקה
ניתן לאפשר לזרמי השינויים שלך לא לכלול רשומות בתנועות כתיבה ספציפיות על ידי הגדרת האפשרות allow_txn_exclusion בעת יצירת זרם שינויים, או על ידי שינוי זרם שינויים קיים.
למידע נוסף על אופן הפעולה של אפשרות זו, ראו החרגת רשומות ברמת העסקה.
GoogleSQL
כדי ליצור זרם שינויים שיכול להחריג רשומות מעסקאות כתיבה שצוינו, מריצים את הפקודה הבאה:
CREATE CHANGE STREAM CHANGE_STREAM_NAME FOR ALL
OPTIONS (allow_txn_exclusion = true)
מחליפים את מה שכתוב בשדות הבאים:
- CHANGE_STREAM_NAME: שם זרם השינויים החדש
בדוגמה הבאה נוצר שינוי בשם NewChangeStream
שמאפשר להחריג רשומות מעסקאות כתיבה שצוינו:
CREATE CHANGE STREAM NewChangeStream FOR ALL
OPTIONS (allow_txn_exclusion = true)
PostgreSQL
כדי ליצור זרם שינויים שיכול לא לכלול רשומות בתנועות כתיבה שצוינו, הפעל את הפעולות הבאות:
CREATE CHANGE STREAM CHANGE_STREAM_NAME FOR ALL
WITH (allow_txn_exclusion = true)
מחליפים את מה שכתוב בשדות הבאים:
- CHANGE_STREAM_NAME: שם זרם השינויים החדש
בדוגמה הבאה נוצר פיד שינויים בשם NewChangeStream
שממנו אפשר להחריג רשומות מעסקאות כתיבה שצוינו,:
CREATE CHANGE STREAM NewChangeStream FOR ALL
WITH (allow_txn_exclusion = true)
כדי להפעיל או להשבית את ההחרגה של רשומות ברמת העסקה מזרם שינויים קיים, אפשר לעיין במאמר שינוי ההחרגה של רשומות ברמת העסקה. כדי לבדוק את ההגדרה של אפשרות זו, ראה הצג הגדרות של סנכרון שינויים בזרמי נתונים כ-DDL.
ציון טרנזקציית כתיבה שתוחרג מסנכרון שינויים בזרמי נתונים
כדי לציין טרנזקציית כתיבה שלא תוכלל בסנכרון שינויים בזרמי נתונים, עליך להגדיר את הפרמטר exclude_txn_from_change_streams ל-true. דוגמאות הקוד הבאות מראות כיצד ניתן לציין טרנזקציית כתיבה שלא תוכלל בסנכרון שינויים בזרמי נתונים באמצעות ספריית הלקוח.
המשך
Java
שינוי זרם שינויים
כדי לשנות את תצורת זרם השינויים, השתמש במשפט DDL של ALTER CHANGE STREAM. הוא משתמש בתחביר דומה ל-CREATE CHANGE STREAM. אתם יכולים לשנות את העמודות שהזרם עוקב אחריהן או את משך תקופת שמירת הנתונים שלו. אפשר גם להשהות את הצפייה לגמרי, תוך שמירה על רשומות השינויים בנתונים.
שינוי מה צופה בזרם שינויים
דוגמה זו מוסיפה את כל טבלת Songs לזרם השינויים של NamesAndAlbums שהוגדר קודם לכן:
ALTER CHANGE STREAM NamesAndAlbums
SET FOR Singers(FirstName, LastName), Albums, Songs;
Spanner מחליף את התנהגות זרם השינויים בעל התצורה החדשה לאחר השלמת הפעולה ארוכת הטווח שמעדכנת את הגדרת זרם השינויים בתוך הסכימה של מסד הנתונים.
שינוי תקופת השמירה של הנתונים במקור נתונים לשינויים
כדי לשנות את משך הזמן שבו זרם שינויים שומר את הרשומות הפנימיות שלו, יש להגדיר את retention_period במשפט DDL מסוג ALTER CHANGE STREAM.
דוגמה זו מתאימה את תקופת שמירת הנתונים לזרם השינויים של NamesAndAlbums שנוצר קודם לכן:
GoogleSQL
ALTER CHANGE STREAM NamesAndAlbums
SET OPTIONS ( retention_period = '36h' );
PostgreSQL
ALTER CHANGE STREAM NamesAndAlbums
SET ( retention_period = '36h' );
שינוי סוג לכידת הערך של זרם שינויים
כדי לשנות את סוג לכידת הערך של זרם שינויים, הגדר את פסוקית value_capture_type במשפט DDL מסוג ALTER CHANGE STREAM.
בדוגמה הזו, סוג הערך שמתועד הוא NEW_VALUES.
GoogleSQL
ALTER CHANGE STREAM NamesAndAlbums
SET OPTIONS ( value_capture_type = 'NEW_VALUES' );
PostgreSQL
ALTER CHANGE STREAM NamesAndAlbums
SET ( value_capture_type = 'NEW_VALUES' );
שינוי מסנן מחיקות מבוסס TTL
כדי לשנות את מסנן מחיקות מבוססות TTL עבור זרם שינויים, הגדר את המסנן exclude_ttl_deletes במשפט DDL מסוג ALTER CHANGE STREAM. ניתן להשתמש בזה כדי להוסיף את המסנן או להסיר את המסנן מסנכרון שינויים בזרמי הנתונים הקיימים שלך.
מידע נוסף על אופן הפעולה של המסננים האלה זמין במאמר בנושא מסנן מחיקות לפי אורך חיים (TTL).
הוספת המסנן של מחיקות שמבוססות על TTL לזרם שינויים קיים
GoogleSQL
כדי להוסיף את המסנן של מחיקות שמבוססות על TTL ל-change stream קיים,
מריצים את הפקודה הבאה כדי להגדיר את המסנן ל-true:
ALTER CHANGE STREAM CHANGE_STREAM_NAME FOR ALL
SET OPTIONS (exclude_ttl_deletes = true)
מחליפים את מה שכתוב בשדות הבאים:
- CHANGE_STREAM_NAME: שם זרם השינויים הקיים שלך
בדוגמה הבאה, המסנן exclude_ttl_deletes נוסף לזרם שינויים קיים בשם NewFilterChangeStream, שמחריג את כל המחיקות שמבוססות על TTL:
ALTER CHANGE STREAM NewFilterChangeStream FOR ALL
SET OPTIONS (exclude_ttl_deletes = true)
הפעולה הזו תגרום לכך שכל המחיקות העתידיות שמבוססות על TTL לא ייכללו בפיד השינויים.
PostgreSQL
כדי להוסיף את המסנן של מחיקות שמבוססות על TTL ל-change stream קיים,
מריצים את הפקודה הבאה כדי להגדיר את המסנן ל-true:
ALTER CHANGE STREAM CHANGE_STREAM_NAME FOR ALL
SET (exclude_ttl_deletes = true)
מחליפים את מה שכתוב בשדות הבאים:
- CHANGE_STREAM_NAME: שם זרם השינויים הקיים שלך
בדוגמה הבאה, המסנן exclude_ttl_deletes נוסף לזרם שינויים קיים בשם NewFilterChangeStream, שמחריג את כל המחיקות שמבוססות על TTL:
ALTER CHANGE STREAM NewFilterChangeStream FOR ALL
SET (exclude_ttl_deletes = true)
הפעולה הזו תגרום לכך שכל המחיקות העתידיות שמבוססות על TTL לא ייכללו בפיד השינויים.
הסרת המסנן של מחיקות שמבוססות על TTL מזרם שינויים קיים
GoogleSQL
כדי להסיר את מסנן המחיקות מבוסס TTL מזרם שינויים קיים, יש להפעיל את הפעולה הבאה כדי להגדיר את המסנן ל-false:
ALTER CHANGE STREAM CHANGE_STREAM_NAME FOR ALL
SET OPTIONS (exclude_ttl_deletes = false)
מחליפים את מה שכתוב בשדות הבאים:
- CHANGE_STREAM_NAME: השם של הזרם החדש של שינויים
בדוגמה הבאה, המסנן exclude_ttl_deletes מוסר מזרם שינויים קיים בשם NewFilterChangeStream:
ALTER CHANGE STREAM NewFilterChangeStream FOR ALL
SET OPTIONS (exclude_ttl_deletes = false)
זה כולל את כל המחיקות העתידיות מבוססות TTL לזרם השינויים.
אפשר גם להגדיר את המסנן לערך null כדי להסיר את המסנן של מחיקות על סמך TTL.
PostgreSQL
כדי להסיר את המסנן של מחיקות שמבוססות על TTL מזרם שינויים קיים,
מריצים את הפקודה הבאה כדי להגדיר את המסנן ל-false:
ALTER CHANGE STREAM CHANGE_STREAM_NAME FOR ALL
SET (exclude_ttl_deletes = false)
מחליפים את מה שכתוב בשדות הבאים:
- CHANGE_STREAM_NAME: השם של הזרם החדש של שינויים
בדוגמה הבאה, המסנן exclude_ttl_deletes מוסר מזרם שינויים קיים בשם NewFilterChangeStream:
ALTER CHANGE STREAM NewFilterChangeStream FOR ALL
SET (exclude_ttl_deletes = false)
זה כולל את כל המחיקות העתידיות מבוססות TTL לזרם השינויים.
ניתן גם להגדיר את המסנן ל-null כדי להסיר את מסנן המחיקות המבוסס על TTL.
שינוי המסנן לפי סוג השינוי בטבלה
כדי לשנות את המסננים של סוג השינוי בטבלה בזרם שינויים,
מגדירים את סוג המסנן בהצהרת ALTER CHANGE STREAM DDL. ניתן להשתמש בזה כדי להוסיף מסנן חדש או להסיר מסנן קיים מזרם השינויים שלך.
הוספת מסנן סוג שינוי טבלה לזרם שינויים קיים
GoogleSQL
כדי להוסיף מסנן אחד או יותר מסוג שינוי טבלה חדש לזרם שינויים קיים, מריצים את הפקודה הבאה כדי להגדיר את המסנן ל-true:
ALTER CHANGE STREAM CHANGE_STREAM_NAME
SET OPTIONS (MOD_TYPE_FILTER_NAME = true)
מחליפים את מה שכתוב בשדות הבאים:
- CHANGE_STREAM_NAME: מחליפים את שם ה-change stream הקיים
- MOD_TYPE_FILTER_NAME: מחליפים את הערך במסנן שרוצים להוסיף:
exclude_insert,exclude_updateאוexclude_delete. אם מוסיפים יותר ממסנן אחד בו זמנית, יש להפריד כל מסנן באמצעות פסיק.
בדוגמה הבאה, המסנן exclude_delete נוסף לזרם שינויים קיים בשם NewFilterChangeStream:
ALTER CHANGE STREAM NewFilterChangeStream
SET OPTIONS (exclude_delete = true)
PostgreSQL
כדי להוסיף מסנן אחד או יותר מסוג שינוי טבלה חדש לזרם שינויים קיים, מריצים את הפקודה הבאה כדי להגדיר את המסנן ל-true:
ALTER CHANGE STREAM CHANGE_STREAM_NAME
SET (MOD_TYPE_FILTER_NAME = true)
מחליפים את מה שכתוב בשדות הבאים:
- CHANGE_STREAM_NAME: מחליפים את שם ה-change stream הקיים
- MOD_TYPE_FILTER_NAME: מחליפים את הערך במסנן שרוצים להוסיף:
exclude_insert,exclude_updateאוexclude_delete. אם מוסיפים יותר ממסנן אחד בו זמנית, יש להפריד כל מסנן באמצעות פסיק.
בדוגמה הבאה, המסנן exclude_delete נוסף לזרם שינויים קיים בשם NewFilterChangeStream:
ALTER CHANGE STREAM NewFilterChangeStream
SET (exclude_delete = true)
הסרה של מסנן מסוג שינוי בטבלה מזרם שינויים קיים
GoogleSQL
כדי להסיר מסנן אחד או יותר של סוגי שינויי טבלה קיימים בזרם השינויים, יש להפעיל את הפעולה הבאה כדי להגדיר את המסנן ל-false:
ALTER CHANGE STREAM CHANGE_STREAM_NAME
SET OPTIONS (MOD_TYPE_FILTER_NAME = false)
מחליפים את מה שכתוב בשדות הבאים:
- CHANGE_STREAM_NAME: מחליפים את שם ה-change stream הקיים
- MOD_TYPE_FILTER_NAME: החלף במסנן שברצונך להסיר:
exclude_insert,exclude_updateאוexclude_delete. אם מסירים יותר ממסנן אחד בכל פעם, צריך להפריד בין המסננים באמצעות פסיקים.
בדוגמה הבאה, המסנן exclude_delete מוסר מזרם שינויים קיים בשם NewFilterChangeStream:
ALTER CHANGE STREAM NewFilterChangeStream
SET OPTIONS (exclude_delete = false)
ניתן גם להסיר מסנן שינוי טבלה על ידי החזרת המסנן לערך ברירת המחדל. לשם כך, הגדר את ערך המסנן ל-null.
PostgreSQL
כדי להסיר מסנן אחד או יותר של סוגי שינויי טבלה קיימים בזרם השינויים, יש להפעיל את הפעולה הבאה כדי להגדיר את המסנן ל-false:
ALTER CHANGE STREAM CHANGE_STREAM_NAME
SET (MOD_TYPE_FILTER_NAME = false)
מחליפים את מה שכתוב בשדות הבאים:
- CHANGE_STREAM_NAME: מחליפים את שם ה-change stream הקיים
- MOD_TYPE_FILTER_NAME: החלף במסנן שברצונך להסיר:
exclude_insert,exclude_updateאוexclude_delete. אם מסירים יותר ממסנן אחד בכל פעם, צריך להפריד בין המסננים באמצעות פסיקים.
בדוגמה הבאה, המסנן exclude_delete מוסר מזרם שינויים קיים בשם NewFilterChangeStream:
ALTER CHANGE STREAM NewFilterChangeStream
SET (exclude_delete = false)
ניתן גם להסיר מסנן שינוי טבלה על ידי החזרת המסנן לערך ברירת המחדל. לשם כך, הגדר את ערך המסנן ל-null.
שינוי זרם השינויים כדי לאפשר אי הכללה של רשומות ברמת העסקה
באפשרותך לשנות את זרם השינויים שלך כדי לאפשר לו לא לכלול רשומות בתנועות כתיבה שצוינו. כדי לעשות את זה, מגדירים את האפשרות allow_txn_exclusion ל-true בהצהרת DDL של ALTER CHANGE STREAM. אם לא תגדיר אפשרות זו, או אם תגדיר אותה ל-false, זרם השינויים יזהה את כל תנועות הכתיבה.
למידע נוסף על אופן הפעולה של אפשרות זו, ראו החרגת רשומות ברמת העסקה.
הפעלת אי הכללת רשומות ברמת העסקה עבור זרם שינויים קיים
GoogleSQL
כדי לאפשר אי הכללת רשומות ברמת העסקה עבור זרם שינויים קיים, הפעל את הפעולות הבאות:
ALTER CHANGE STREAM CHANGE_STREAM_NAME FOR ALL
SET OPTIONS (allow_txn_exclusion = true)
מחליפים את מה שכתוב בשדות הבאים:
- CHANGE_STREAM_NAME: שם זרם השינויים הקיים שלך
בדוגמה הבאה, האפשרות allow_txn_exclusion מופעלת בזרם שינויים קיים, NewAllowedChangeStream:
ALTER CHANGE STREAM NewAllowedChangeStream FOR ALL
SET OPTIONS (allow_txn_exclusion = true)
זה מאפשר לזרם השינויים לא לכלול רשומות בתנועות כתיבה שצוינו.
PostgreSQL
כדי לאפשר אי הכללת רשומות ברמת העסקה עבור זרם שינויים קיים, הפעל את הפעולות הבאות:
ALTER CHANGE STREAM CHANGE_STREAM_NAME FOR ALL
SET (allow_txn_exclusion = true)
מחליפים את מה שכתוב בשדות הבאים:
- CHANGE_STREAM_NAME: שם זרם השינויים הקיים שלך
בדוגמה הבאה, האפשרות allow_txn_exclusion מופעלת בזרם שינויים קיים, NewAllowedChangeStream:
ALTER CHANGE STREAM NewAllowedChangeStream FOR ALL
SET (allow_txn_exclusion = true)
זה מאפשר לזרם השינויים לא לכלול רשומות בתנועות כתיבה שצוינו.
השבתת אי הכללת רשומות ברמת העסקה עבור זרם שינויים קיים
GoogleSQL
כדי להשבית את אי הכללת הרשומות ברמת העסקה בזרם שינויים קיים, הפעל את הפעולות הבאות:
ALTER CHANGE STREAM CHANGE_STREAM_NAME FOR ALL
SET OPTIONS (allow_txn_exclusion = false)
מחליפים את מה שכתוב בשדות הבאים:
- CHANGE_STREAM_NAME: שם זרם השינויים שלך
בדוגמה הבאה, האפשרות allow_txn_exclusion מושבתת בזרם שינויים קיים בשם NewAllowedChangeStream:
ALTER CHANGE STREAM NewFilterChangeStream FOR ALL
SET OPTIONS (allow_txn_exclusion = false)
השינוי בזרם מתייחס לכל עסקאות הכתיבה.
PostgreSQL
כדי להשבית את ההחרגה של רשומות ברמת העסקה בזרם שינויים קיים, מריצים את הפקודה הבאה:
ALTER CHANGE STREAM CHANGE_STREAM_NAME FOR ALL
SET (allow_txn_exclusion = false)
מחליפים את מה שכתוב בשדות הבאים:
- CHANGE_STREAM_NAME: שם זרם השינויים שלך
בדוגמה הבאה, האפשרות allow_txn_exclusion מושבתת בזרם שינויים קיים בשם NewAllowedChangeStream:
ALTER CHANGE STREAM NewAllowedChangeStream FOR ALL
SET (allow_txn_exclusion = false)
זרם השינויים עוקב אחר כל עסקאות הכתיבה.
השהיית זרם שינויים
אם רוצים להפסיק את הפעילות של עדכון נתונים אבל לשמור את הרשומות הפנימיות שלו – לפחות למשך תקופת שמירת הנתונים שלו – אפשר לשנות אותו כך שהוא לא יעקוב אחרי שום דבר.
כדי לעשות את זה, מריצים ALTER CHANGE STREAM הצהרת DDL שמחליפה את ההגדרה של זרם השינויים בביטוי המיוחד DROP FOR ALL.
לדוגמה:
ALTER CHANGE STREAM MyStream DROP FOR ALL;
הסטרים ממשיך להתקיים במסד הנתונים, אבל הוא לא עוקב אחרי אובייקטים ולא יוצר יותר רשומות של שינויים בנתונים. רשומות השינויים הקיימות נשארות ללא שינוי, בכפוף למדיניות שמירת הנתונים של הזרם.
כדי לחדש שידור מושעה, יש להוציא פקודה ALTER CHANGE STREAM נוספת עם התצורה הקודמת שלה.
מחיקת זרם שינויים
כדי למחוק לצמיתות שינוי בזרם, מריצים פקודת DROP CHANGE STREAM
שכוללת את שם הזרם:
DROP CHANGE STREAM NamesAndAlbums;
Spanner עוצר מיד את הזרם, מסיר אותו מסכימת מסד הנתונים ומוחק את רשומות שינוי הנתונים שלו.
הצגת רשימה של סנכרון שינויים בזרמי נתונים וצפייה בהם
הקונסולה Google Cloud מספקת ממשק אינטרנט לרישום וסקירה של הגדרות זרם השינויים של מסד נתונים. אפשר גם לראות את המבנה של סנכרון שינויים בזרמי נתונים כהצהרות DDL מקבילות, או על ידי שליחת שאילתה לסכימת המידע של מסד הנתונים.
הצג סנכרון שינויים בזרמי נתונים עם Google Cloud לְנַחֵם
כדי לראות רשימה של סנכרון שינויים בזרמי נתונים של מסד נתונים ולסקור את ההגדרות שלהם:
נכנסים לדף Spanner instances במסוףGoogle Cloud .
נווט אל המופע ומסד הנתונים המתאימים.
לחץ על סנכרון שינויים בזרמי נתונים בתפריט הניווט.
פעולה זו מציגה רשימה של כל סנכרוני שינויים בזרמי נתונים של מסד הנתונים הזה, ומסכמת את התצורה של כל אחד מהם. לחיצה על שם זרם חושפת פרטים נוספים על הטבלאות והעמודות שהוא עוקב אחריהן.
הצג הגדרות של סנכרון שינויים בזרמי נתונים כ-DDL
כשמציגים את הסכימה של מסד נתונים כ-DDL, רואים תיאורים של כל סנכרון שינויים בזרמי נתונים, שמופיעים כהצהרות CREATE CHANGE STREAM.
כדי לעשות זאת מהקונסול, לחץ על ההצג DDL מקביל קישור בדף מסד הנתונים ב Google Cloud לְנַחֵם.
כדי לעשות זאת משורת הפקודה, השתמש בפקודה
ddl describeשל Google Cloud CLI.
שאילתת סכמת המידע אודות סנכרון שינויים בזרמי נתונים
אתם יכולים לשלוח שאילתה ישירות לסכימת המידע של מסד נתונים כדי לקבל מידע על סנכרון שינויים בזרמי נתונים שלו. הטבלאות הבאות מכילות את המטא-דאטה המגדירים את שמות סנכרון שינויים בזרמי נתונים, את הטבלאות והעמודות שהם עוקבים אחריהן ואת תקופות השמירה שלהן:
שיטות עבודה מומלצות לסנכרון שינויים בזרמי נתונים
ריכזנו כאן כמה שיטות מומלצות להגדרה ולניהול של פידים לשינויים.
כדאי לשקול שימוש במסד נתונים נפרד של מטא-נתונים
סנכרון שינויים בזרמי נתונים משתמש במסד נתונים של מטא-נתונים כדי לשמור על מצב פנימי. מסד הנתונים של המטא-נתונים יכול להיות זהה למסד הנתונים שמכיל את סנכרון שינויים בזרמי נתונים, או שונה ממנו. אנו ממליצים ליצור מסד נתונים נפרד לאחסון מטא-נתונים.
מחבר זרמי השינויים של Spanner זקוק להרשאות קריאה וכתיבה למסד הנתונים של המטא-נתונים. אין צורך להכין את מסד הנתונים הזה עם סכימה, המחבר מטפל בזה.
שימוש במסד נתונים נפרד של מטא-נתונים מבטל מורכבויות שעלולות לנבוע מהאפשרות למחבר לכתוב ישירות למסד הנתונים של היישום שלך:
על ידי הפרדת מסד הנתונים של המטא-דאטה ממסד הנתונים של הייצור באמצעות זרם השינויים, המחבר זקוק רק להרשאות קריאה למסד הנתונים של הייצור.
על ידי הגבלת התעבורה של המחבר למסד נתונים נפרד של מטא-נתונים, כתיבות המבוצעות על ידי המחבר עצמו אינן כלולות בזרמי השינויים של הייצור. זה רלוונטי במיוחד עבור סנכרון שינויים בזרמי נתונים שצופים בכל מסד הנתונים.
אם לא משתמשים במסד נתונים נפרד לאחסון המטא-נתונים, מומלץ לעקוב אחרי ההשפעה של מחבר ה-change streams על המעבדים של המופעים.
הערכת ביצועים של סנכרון שינויים בזרמי נתונים חדשים ושינוי הגודל לפי הצורך
לפני שמוסיפים סנכרון שינויים בזרמי נתונים חדשים למופע הייצור, כדאי לבצע השוואה בין ביצועים של עומס עבודה ריאליסטי במופע של סביבת פיתוח עם סנכרון שינויים בזרמי נתונים מופעלים. כך תוכלו לקבוע אם אתם צריכים להוסיף צמתים למופע כדי להגדיל את יכולות החישוב והאחסון שלו.
מריצים את הבדיקות האלה עד שהמדדים של המעבד והאחסון מתייצבים. באופן אופטימלי, השימוש במעבד (CPU) של המופע צריך להיות מתחת למקסימום המומלץ, ו<b>נפח האחסון הנדרש</b> לא צריך לחרוג ממגבלת האחסון של המופע.
שימוש באזורים שונים לאיזון עומסים
כשמשתמשים בסנכרון שינויים בזרמי נתונים בהגדרת מופע של כמה אזורים, כדאי להריץ את פייפליינים העיבוד שלהם באזור אחר מאזור ברירת המחדל של הלידר. כך אפשר לפזר את עומס הסטרימינג בין רפליקות שהן לא הרפליקות הראשיות. אם אתם צריכים לתת עדיפות לעיכוב הכי קצר בסטרימינג על פני איזון עומסים, אתם יכולים להריץ את עומס הסטרימינג באזור הראשי.
המאמרים הבאים
אפשר להשתמש בתבניות כדי לחבר במהירות נתוני שינוי ל-BigQuery, ל-Cloud Storage או ל-Pub/Sub.