בדף הזה מוסבר איך ליצור, לשנות ולהציג נתוני שינוי ב-Spanner עבור מסדי נתונים בניב GoogleSQL ומסדי נתונים בניב PostgreSQL. מידע נוסף על סנכרון שינויים בזרמי נתונים זמין במאמר מידע על סנכרון שינויים בזרמי נתונים.
מכיוון שסנכרון שינויים בזרמי נתונים הם אובייקטים של סכימה, אתם יוצרים ומנהלים אותם באמצעות עדכוני הסכימה שמבוססים על DDL, שמשמשים לכל סוג אחר של עבודה בהגדרת מסד נתונים, כמו יצירת טבלאות או הוספת אינדקסים.
Spanner מתחיל פעולה ממושכת אחרי ששולחים הצהרת DDL לשינוי סכימה, כולל הצהרות שמשמשות ליצירה, לשינוי או למחיקה של סנכרון שינויים בזרמי נתונים. זרם שינויים חדש או שונה מתחיל לעקוב אחרי העמודות או הטבלאות שצוינו בהגדרה החדשה שלו, לאחר השלמת הפעולה הממושכת הזו.
יצירת שידור חי של שינויים
כדי ליצור מקור נתונים לשינויים, צריך לספק את השם שלו ואת אובייקטי הסכימה שהוא עוקב אחריהם: מסד הנתונים כולו או רשימה של טבלאות ועמודות ספציפיות. אפשר גם להגדיר את זרם השינויים עם כל אחת מהאפשרויות הבאות:
- מציינים את תקופת שמירת הנתונים כדי לשנות את תקופת השמירה שמוגדרת כברירת מחדל, שהיא יום אחד.
- מציינים את סוג לכידת הערך כדי לשנות את סוג לכידת הערך שמוגדר כברירת מחדל
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: לא לכלול את כל השינויים בטבלהINSERT -
exclude_update: לא לכלול את כל השינויים בטבלהUPDATE -
exclude_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. בדוגמאות הקוד הבאות אפשר לראות איך אפשר לציין שטרנזקציית כתיבה תוחרג מסנכרון שינויים בזרמי נתונים באמצעות ספריית הלקוח.
Go
Java
שינוי של שידור שינויים
כדי לשנות את ההגדרות של שינוי נתונים, משתמשים בהצהרת ALTER CHANGE STREAM DDL. התחביר דומה לזה של CREATE CHANGE STREAM. אתם יכולים לשנות את העמודות שהסטרים עוקב אחריהן, או את משך תקופת שמירת הנתונים שלו. אפשר גם להשהות את הצפייה לגמרי, תוך שמירה על רשומות השינויים בנתונים.
שינוי של מה שמתבצע בו מעקב בשינוי הנתונים
בדוגמה הזו, מוסיפים את כל הטבלה Songs לזרם השינויים NamesAndAlbums שהוגדר קודם:
ALTER CHANGE STREAM NamesAndAlbums
SET FOR Singers(FirstName, LastName), Albums, Songs;
Spanner מחליף את ההתנהגות של מקור הנתונים לשינויים שנקרא בשם בהגדרה החדשה, בסיום הפעולה הממושכת שמעדכנת את ההגדרה של מקור הנתונים לשינויים בסכימה של מסד הנתונים.
שינוי תקופת שמירת הנתונים של שינוי מקור נתונים
כדי לשנות את משך הזמן שבו נשמרים רשומות פנימיות בפיד שינויים, מגדירים את retention_period בהצהרת ALTER CHANGE STREAM DDL.
בדוגמה הזו, משנים את תקופת שמירת הנתונים של NamesAndAlbums
השינויים שנוצרו קודם:
GoogleSQL
ALTER CHANGE STREAM NamesAndAlbums
SET OPTIONS ( retention_period = '36h' );
PostgreSQL
ALTER CHANGE STREAM NamesAndAlbums
SET ( retention_period = '36h' );
שינוי סוג הלכידה של ערך בשידור שינויים
כדי לשנות את סוג לכידת הערכים של שינוי בזרם, מגדירים את הסעיף value_capture_type בהצהרת ALTER CHANGE STREAM DDL.
בדוגמה הזו, סוג הערך שמתועד הוא 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-based deletes של שינוי נתונים, מגדירים את המסנן exclude_ttl_deletes בהצהרת ALTER CHANGE STREAM DDL. אפשר להשתמש באפשרות הזו כדי להוסיף את המסנן לזרמי השינויים הקיימים או להסיר אותו מהם.
מידע נוסף על אופן הפעולה של המסננים האלה זמין במאמר בנושא מסנן מחיקות לפי זמן החיים (TTL).
הוספת המסנן TTL-based deletes (מחיקות על סמך 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: מחליפים את שם הזרם הקיים של השינויים
- 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: מחליפים את שם הזרם הקיים של השינויים
- 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: מחליפים את שם הזרם הקיים של השינויים
- 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: מחליפים את שם הזרם הקיים של השינויים
- MOD_TYPE_FILTER_NAME: מחליפים במסנן שרוצים להסיר:
exclude_insert,exclude_updateאוexclude_delete. אם מסירים יותר ממסנן אחד בכל פעם, צריך להפריד ביניהם באמצעות פסיק.
בדוגמה הבאה, המסנן exclude_delete מוסר מזרם שינויים קיים בשם NewFilterChangeStream:
ALTER CHANGE STREAM NewFilterChangeStream
SET (exclude_delete = false)
אפשר גם להסיר מסנן של שינוי טבלה על ידי החזרת המסנן לערך ברירת המחדל. כדי לעשות זאת, מגדירים את ערך המסנן ל-null.
שינוי של ה-change stream כדי לאפשר החרגה של רשומות ברמת העסקה
אפשר לשנות את עדכון הנתונים כדי לא לכלול בו רשומות מתוך עסקאות כתיבה ספציפיות. כדי לעשות את זה, מגדירים את האפשרות 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.
כדי לעשות את זה דרך המסוף, לוחצים על הקישור Show equivalent DDL בדף של מסד הנתונים במסוף Google Cloud .
כדי לעשות את זה משורת הפקודה, משתמשים בפקודה
ddl describeשל Google Cloud CLI.
שאילתה לגבי סכימת המידע של סנכרון שינויים בזרמי נתונים
אתם יכולים לשלוח שאילתה ישירות לסכימת המידע של מסד נתונים כדי לקבל מידע על סנכרון שינויים בזרמי נתונים שלו. הטבלאות הבאות מכילות את המטא-נתונים שמגדירים את השמות של סנכרון שינויים בזרמי נתונים, את הטבלאות והעמודות שהם עוקבים אחריהן ואת תקופות השמירה שלהם:
שיטות מומלצות לשימוש בזרמי נתונים
ריכזנו כאן כמה שיטות מומלצות להגדרה ולניהול של פידים לשינויים.
כדאי לשקול שימוש במסד נתונים נפרד של מטא-נתונים
סנכרון שינויים בזרמי נתונים משתמש במסד נתונים של מטא-נתונים כדי לשמור על מצב פנימי. מסד נתוני המטא-נתונים יכול להיות זהה למסד הנתונים שמכיל את זרמי השינויים, או שונה ממנו. מומלץ ליצור מסד נתונים נפרד לאחסון מטא-נתונים.
מחבר הנתונים של Spanner סנכרון שינויים בזרמי נתונים צריך הרשאות קריאה וכתיבה למסד הנתונים של המטא-נתונים. לא צריך להכין את מסד הנתונים הזה עם סכימה, המחבר מטפל בזה.
שימוש במסד נתונים נפרד של מטא-נתונים מבטל את המורכבויות שעלולות להיווצר אם מאפשרים למחבר לכתוב ישירות למסד הנתונים של האפליקציה:
הפרדת מסד הנתונים של המטא-נתונים ממסד הנתונים של הייצור באמצעות זרם השינויים מאפשרת למחבר לקבל הרשאות קריאה בלבד למסד הנתונים של הייצור.
הגבלת התנועה של המחבר למסד נתונים נפרד של מטא-נתונים מבטיחה שפעולות כתיבה שמבצע המחבר עצמו לא ייכללו בסנכרון שינויים בזרמי נתונים של הייצור. זה רלוונטי במיוחד לסנכרון שינויים בזרמי נתונים שעוקבים אחרי כל מסד הנתונים.
אם לא משתמשים במסד נתונים נפרד לאחסון המטא-נתונים, מומלץ לעקוב אחרי ההשפעה של מחבר סנכרון שינויים בזרמי נתונים על המעבד במופעים.
השוואה בין סנכרון שינויים בזרמי נתונים חדשים ושינוי הגודל לפי הצורך
לפני שמוסיפים סנכרון שינויים בזרמי נתונים חדשים למופע הייצור, כדאי להשוות בין עומסי עבודה ריאליים במופע ביניים עם סנכרון שינויים בזרמי נתונים מופעלים. כך תוכלו לקבוע אם צריך להוסיף צמתים למופע כדי להגדיל את יכולות החישוב והאחסון שלו.
מריצים את הבדיקות האלה עד שהמדדים של המעבד והאחסון מתייצבים. באופן אופטימלי, השימוש במעבד (CPU) של המופע צריך להיות מתחת למקסימום המומלץ, ונפח האחסון הנדרש לא צריך לחרוג ממגבלת האחסון של המופע.
שימוש באזורים שונים לאיזון עומסים
כשמשתמשים בפידים לשינויים בהגדרת מופע של כמה אזורים, כדאי להריץ את צינורות העיבוד שלהם באזור אחר מאזור ברירת המחדל של הלידר. כך אפשר לפזר את עומס הסטרימינג בין רפליקות שאינן מובילות. עם זאת, אם אתם צריכים לתת עדיפות לעיכוב הכי קצר בסטרימינג על פני איזון עומסים, אתם צריכים להריץ את עומס הסטרימינג באזור הראשי.
המאמרים הבאים
יצירת צינורות עיבוד נתונים של סנכרון שינויים בזרמי נתונים באמצעות Dataflow.
אפשר להשתמש בתבניות כדי לחבר במהירות זרם שינויים ל-BigQuery, ל-Cloud Storage או ל-Pub/Sub.