הזרמת נתונים ממסדי נתונים של SQL Server

בדף הזה מופיע מידע על:

  • ההתנהגות של Datastream כשמטפלים בנתונים שנשלפים ממסד נתונים של SQL Server.
  • השיטות לסימון נתונים שהשתנו (CDC) שנתמכות ב-Datastream.
  • הגרסאות של מסדי נתונים של SQL Server שנתמכות על ידי Datastream.
  • מגבלות ידועות על שימוש במסד נתונים של SQL Server כמקור.

התנהגות

‫Datastream עוקב אחרי שינויים בשפת טיפול בנתונים (DML) באמצעות אחת משיטות ה-CDC הבאות:

שינוי טבלאות

שיטת ה-CDC של טבלאות השינויים מאפשרת למשתמשים לשמור יומנים לזמן קצר יותר, וכך לחסוך בנפח האחסון, אבל היא תומכת בנפח נתונים נמוך יותר בהשוואה לשיטה של יומני העסקאות. לשיטה הזו יש פחות מגבלות מאשר ליומני עסקאות. לדוגמה, הוא מבטל את הסיכון לחיתוך יומנים שמוביל לכך שסטרימינג נכשל באופן קבוע, והוא תומך בשכפול של טבלאות מוצפנות. מידע נוסף זמין במאמר בנושא מגבלות ידועות.

כשמשתמשים בשיטת ה-CDC הזו, המערכת עוקבת אחרי שינויים במקור באמצעות טבלאות שינויים ייעודיות. עדיין נעשה שימוש ביומני עסקאות, אבל במידה מוגבלת, ואין צורך לשמור אותם לתקופות ארוכות יותר. כשאירועי DML מוחלים על טבלאות המקור, השינויים משוכפלים לטבלאות השינויים התואמות. לטבלאות השינויים יש את אותו מבנה כמו לטבלאות המקור, אבל יש בהן עמודות נוספות שכוללות את המטא-נתונים של השינויים. רק עסקאות שאושרו מתווספות לטבלאות השינויים, יחד עם מספר הרצף של היומן (LSN) של פעולת האישור.

איך Datastream מטפל בשינויים ב-DDL בסכימת המקור

כשמשתמשים בשיטת ה-CDC של טבלאות השינויים, נוצרים מקרים של לכידה לכל טבלת שינויים. כל מופע של לכידה משויך לרשימה של עמודות שהוא לוכד ועוקב אחריהן. כברירת מחדל, אם מתבצע שינוי בשפת הגדרת הנתונים (DDL) במקור אחרי שנוצר מופע הלכידה, המופע מתעלם מהשינוי. עם זאת, אפשר להגדיר את הזרם של SQL Server כך שישכפל עמודות שנוספו לסכימת המקור אחרי שהזרם ומופע הלכידה נוצרו.

לפני שמתחילים
  • מוודאים שלמשתמש Datastream יש הרשאה db_owner.

שכפול עמודות שנוספו לסכימת המקור

כדי ש-Datastream יתמוך בשכפול של עמודות שנוספו לסכימת המקור אחרי שנוצר מקור נתונים, צריך להוסיף את התווית enable_ddl_support_for_ct למקור הנתונים:

  1. נכנסים לדף Streams במסוף Google Cloud .

    מעבר לדף העדכונים

  2. לוחצים על מקור הנתונים של SQL Server שרוצים לערוך.

  3. בדף פרטי המקורות, לוחצים על השהיה.

  4. לוחצים על עריכה > עריכת הגדרות השידור.

  5. לוחצים על הוספת תווית.

  6. בשדה Key, מקלידים enable_ddl_support_for_ct.

  7. בשדה ערך, מקלידים true.

  8. לוחצים על Save.

  9. לוחצים על התחלה כדי להמשיך בשידור.

‫Datastream בודק את הטבלה cdc.ddl_history כל חמש דקות כדי לראות אם יש DDL חדשים. אם נוספת עמודה חדשה לטבלה שנכללת בהגדרת מקור הנתונים, Datastream בודק אם לטבלה יש שני מקרים של תיעוד:

  • אם לא, Datastream יוצר מופע חדש של לכידה, קורא את הנתונים של מופע הלכידה המקורי עד לרגע שבו התרחש ה-DDL, ואז מתחיל לקרוא מהמופע החדש של הלכידה.

    ולכן צריך למחוק את המכונה הישנה כדי לאפשר שינויים עתידיים ב-DDL.
  • אם כן, נוספת רשומה ליומן ששינוי ה-DDL לא יכול להתבצע כי הגיעו למספר המקסימלי של מופעי לכידה.

יומני עסקאות

כשמשתמשים בשיטת ה-CDC הזו, Datastream קורא שינויים במקור ישירות מיומני עסקאות. השיטה הזו דורשת פחות משאבים ומאפשרת שליפת נתונים מהירה יותר, אבל יש לה יותר מגבלות.

כדי למנוע אובדן נתונים, חשוב שהיומנים לא ייחתכו לפני ש-Datastream קורא אותם. מצד שני, אם שומרים את קובצי היומן יותר מדי זמן, הם תופסים נפח אחסון, ובסופו של דבר יכול להיות שמופע מסד הנתונים יעבור למצב קריאה-בלבד.

כדי לוודא שלקורא ה-CDC יש מספיק זמן לקרוא את היומנים, וגם לאפשר חיתוך של היומנים כדי לפנות נפח אחסון, צריך לבצע שלבי הגדרה נוספים, כמו שינוי של מרווחי הזמן בין סקרים והגדרת אמצעי הגנה מפני חיתוך. השלבים האלה מספקים שכבת הגנה נוספת כדי להבטיח ש-Datastream יוכל לקרוא את הנתונים גם אם יש השבתה בצד של Datastream או בעיית קישוריות בין מסד הנתונים של המקור לבין Datastream.

הוראות מפורטות להחלת האמצעים הנוספים האלה זמינות בדף הגדרת מסד נתונים של SQL Server כמקור. צריך לבחור את סוג מסד הנתונים.

גרסאות

‫Datastream תומך בגרסאות ובמהדורות הבאות של מסדי נתונים של SQL Server:

  • בניהול עצמי (במקום או באירוח בענן) באמצעות הגרסאות הבאות:
    • ‫Enterprise: 2008 ואילך
    • ‫Standard: ‏ 2016 SP1 ואילך
    • מפתח: 2008 ואילך
  • ‫Amazon RDS ל-SQL Server
  • ‫Azure SQL Database (רמה S3 ומעלה).

  • Cloud SQL ל-SQL Server

‫Datastream לא תומך בגרסאות הבאות של מסדי נתונים של SQL Server:

  • מהדורות Standard של SQL Server מגרסה 2008 עד 2014
  • SQL Server Express
  • SQL Server Web

מגבלות ידועות

המגבלות הידועות לשימוש במסד נתונים של SQL Server כמקור כוללות:

  • הסטרימינג מוגבל ל-10,000 טבלאות.
  • אי אפשר לבצע מילוי חוזר של טבלה עם יותר מ-500 מיליון שורות, אלא אם מתקיימים התנאים הבאים:
    1. לטבלה יש אינדקס ייחודי.
    2. אף אחת מעמודות האינדקס לא יכולה להכיל ערך null.
    3. כל העמודות של האינדקס נכללות בזרם.
  • אין תמיכה במסדי נתונים שמופעלת בהם עמידות מושהית או שחזור מואץ של מסד נתונים (ADR).
  • אין תמיכה בהזרמת שינויים לטבלאות מערכת.
  • אין תמיכה באימות של Windows Active Directory ‏ (AD).
  • ‫Datastream תומך בכל ההשוואות של SQL Server, למעט אלה עם דף קוד 0 או 437. כדי לבדוק את דף הקוד של אוסף כללים (collation) ספציפי, מריצים את השאילתה הבאה במופע של SQL Server:

    SELECT *, CAST(COLLATIONPROPERTY(name, 'CodePage') AS INT) FROM sys.fn_helpcollations() WHERE name = COLLATION_NAME;
    
  • סוגי הנתונים הבאים לא נתמכים ולא משוכפלים ליעד:

    • SQL_VARIANT
    • HIERARCHYID
    • GEOMETRY
    • GEOGRAPHY
  • ‫Datastream משכפל סוגי נתונים שהוגדרו על ידי המשתמש, אבל סוג הנתונים הבסיסי שממנו נגזר סוג הנתונים שהוגדר על ידי המשתמש הוא זה שמאוחסן ביעד. לדוגמה, אם מגדירים סוג נתונים USERNAME על סמך סוג הנתונים VARCHAR(50), הנתונים מאוחסנים ביעד כ-VARCHAR(50).

  • ‫Datastream לא תומך ב-CDC לעמודות של אובייקטים גדולים (TEXT,‏ NTEXT, ‏ XML, ‏ IMAGE) ולעמודות עם אורך משתנה מקסימלי (VARCHAR(MAX), ‏ VARBINARY(MAX), ‏ NVARCHAR(MAX)) בטבלאות ללא אינדקס ייחודי.

    אם עמודות של אובייקטים גדולים לא נכללות בזרם, ה-CDC נתמך.

  • אי אפשר לשכפל את השינויים הבאים בסכימת המקור כשמשתמשים בשיטת ה-CDC של טבלאות השינויים, והם עלולים לגרום להשחתת נתונים או לכשל בעיבוד אירועים:

    • הסרת עמודות: הנתונים בעמודות האלה מוחלפים בערכים NULL.
    • שינוי שם של עמודות: לא נתמך ב-SQL Server כשהתכונה CDC מופעלת.
    • שינוי סוגי נתונים: עבודת הלכידה של SQL Server CDC מעבירה רק את השינויים הבאים בסוגי הנתונים:

      • שינוי האורך המקסימלי של מחרוזות: לדוגמה, שינוי סוג הנתונים VARCHAR(50) ל-VARCHAR(100). לעמודה STRING ב-BigQuery אין אורך קבוע, והיא מקבלת את המחרוזת הארוכה יותר.
      • הגדלת טווח הערכים של מספר שלם: לדוגמה, שינוי סוג הנתונים מ-INT ל-BIGINT. סוג הנתונים INT64 ב-BigQuery יכול להכיל את הסוג החדש בלי שיידרש שינוי בסכימה.
      • שינוי הדיוק והקנה מידה של ערכים מספריים: לדוגמה, שינוי סוג הנתונים DECIMAL(10, 2) ל-DECIMAL(18, 4). לסוג NUMERIC ב-BigQuery יש דיוק קבוע (38) וקנה מידה (9) גדולים, ולכן שינוי כזה נתמך.

      בשינויים אחרים בסוג הנתונים, Datastream מנסה להוסיף את הנתונים ליעד ומציג שגיאה אם הנתונים נדחים.

  • ב-Datastream אין תמיכה בהסתרת נתונים. הנתונים משוכפלים בלי מיסוך.

  • ‫Datastream לא תומך בשכפול שינויים שחלים על מסד הנתונים באמצעות חבילת Data Tier Application Package‏ (DACPAC).

  • הכלי Datastream לא משכפל שינויים שבוצעו באמצעות ההצהרות WRITETEXT או UPDATETEXT.

  • אם משתמשים בתווית enable_ddl_support_for_ct כדי לשכפל עמודות שנוספו לסכימת המקור, אי אפשר לצרף כמה זרמים לאותה טבלת מקור של SQL Server. מכיוון ש-SQL Server תומך בשני מקרים לכל היותר של לכידת נתונים לכל טבלה, שינויים בסכימה עלולים לגרום לתנאי מירוץ שבהם Datastream מנסה ליצור מקרים של לכידת נתונים, וזה עלול לגרום לכשל במקורות הנתונים.

  • הכלי להעברת נתונים לא תומך בשכפול של עמודות מחושבות, אלא אם העמודה מסומנת בערך PERSISTED.

  • ב-Datastream אין תמיכה בסוגי הדחיסה PAGE, ‏ COLUMNSTORE או COLUMNSTORE ARCHIVE.

מגבלות נוספות כשמשתמשים בשיטה של יומני טרנזקציות

אם אתם משתמשים בשיטת ה-CDC של יומני הטרנזקציות, חלות המגבלות הנוספות הבאות:

  • אין תמיכה בהצפנת נתונים שקופה (TDE).
  • אין תמיכה בהצפנה ברמת העמודה. הנתונים בעמודות האלה מוחלפים בערכים של NULL.
  • כשמשתמשים בשיטת ה-CDC של יומני העסקאות, Datastream לא תומך בשכפול של עמודות שנוספו לסכימת המקור אחרי שנוצר הזרם. העמודות החדשות לא משוכפלות ליעד.
  • ‫Datastream לא תומך בהצהרת ROLLBACK TO SAVEPOINT. המערכת מתעלמת מאירועים כאלה של חזרה למצב קודם, והם לא משוכפלים ליעד.
  • ‫Datastream לא תומך ב-CDC לשורות שגדולות מ-8KB בסוגי הטבלאות הבאים:
    • טבלאות ללא אינדקס ייחודי
    • טבלאות שמכילות רק אינדקס ייחודי ולא מקובץ עם עמודה אחת או יותר באורך משתנה (VARCHAR, VARBINARY, NVARCHAR)
  • הכלי Datastream לא תומך ב-CDC לעמודות של אובייקטים גדולים (TEXT,‏ NTEXT, ‏ XML, ‏ IMAGE) בסוגי הטבלאות הבאים:

    • טבלאות ללא אינדקס ייחודי
    • טבלאות שמכילות רק אינדקס ייחודי ולא מקובץ עם עמודה אחת או יותר באורך משתנה (VARCHAR, VARBINARY, NVARCHAR)

    אם עמודות של אובייקטים גדולים לא נכללות בזרם, השינויים בנתונים נתמכים רק בטבלאות כאלה שיש להן אינדקסים תקינים.

המאמרים הבאים