יצוא מידע מ sql server ב push במקום ב pull.
יש לי לקוח שעובד עם sql server 2008 r2, ובתוכו יש מספר מסדי נתונים, כאשר אחד מהם משמש מקור מידע למסדי נתונים אחרים, חלקם על אותו שרת וחלקם בכלל אצל הלקוחות של אותו לקוח.
במספר מוגבל של טבלאות יש צורך להוציא את המידע החוצה כמעט ברגע שמשהו משתנה בטבלה (עד 2 דקות איחור זה נסבל) - כלומר - נוספת שורה, מתעדכנת שורה או נמחקת שורה (שזה קצת בעייתי, כי בחלק מהמקרים צריך להוציא את כל המידע שנמחק).
עד היום עבדנו איתו בשיטה כזו:
על כל טבלה שנדרש בה עדכון מיידי יש טריגרים ל insert, update ו delete, שמכניסים את ה id של השורה המדוברת (ב delete גם את התוכן שלה) לתוך טבלה יעודית, ויש תהליך שרץ כל דקה, שולף נתונים מהטבלה הזו, רץ על השורות שהוא שלף, שולף את הנתונים הרלוונטיים מתוך הטבלה שהשתנתה, מרכיב XML, ושולח ללקוחות.
אני יודע שזה נשמע סופר מסורבל, ולצערי זה באמת מסורבל, אבל לא אני כתבתי את זה, אז לפחות אני לא מרגיש אשם
. בכל אופן, עד לא מזמן התהליך הזה עבד די בסדר, עם סדרי גודל של כ 100,000 עדכונים ביום.
עכשיו נכנס תהליך שהעלה את כמות העדכונים הממוצעת בערך פי 5, כלומר ל 500,000 ליום, וכמובן שהפתרון הזה כבר לא עובד מספיק טוב.
התחלתי לקרוא קצת על change tracking, אבל נראה לי שזה פתרון מסורבל כמעט באותה המידה.
השאלה היא האם יש איזה שהיא דרך פשוטה, זריזה ובעיקר זולה מבחינת משאבים לדחוף מידע החוצה מה SQL?
(את כל התהליך של יצירת ה XML ושליחה ללקוחות השונים אני מתכוון להשאיר באפליקציה, אני לא רואה טעם להעמיס על ה database את ה overhead הזה).
תודה מראש,
זהר.
יש לי לקוח שעובד עם sql server 2008 r2, ובתוכו יש מספר מסדי נתונים, כאשר אחד מהם משמש מקור מידע למסדי נתונים אחרים, חלקם על אותו שרת וחלקם בכלל אצל הלקוחות של אותו לקוח.
במספר מוגבל של טבלאות יש צורך להוציא את המידע החוצה כמעט ברגע שמשהו משתנה בטבלה (עד 2 דקות איחור זה נסבל) - כלומר - נוספת שורה, מתעדכנת שורה או נמחקת שורה (שזה קצת בעייתי, כי בחלק מהמקרים צריך להוציא את כל המידע שנמחק).
עד היום עבדנו איתו בשיטה כזו:
על כל טבלה שנדרש בה עדכון מיידי יש טריגרים ל insert, update ו delete, שמכניסים את ה id של השורה המדוברת (ב delete גם את התוכן שלה) לתוך טבלה יעודית, ויש תהליך שרץ כל דקה, שולף נתונים מהטבלה הזו, רץ על השורות שהוא שלף, שולף את הנתונים הרלוונטיים מתוך הטבלה שהשתנתה, מרכיב XML, ושולח ללקוחות.
אני יודע שזה נשמע סופר מסורבל, ולצערי זה באמת מסורבל, אבל לא אני כתבתי את זה, אז לפחות אני לא מרגיש אשם
עכשיו נכנס תהליך שהעלה את כמות העדכונים הממוצעת בערך פי 5, כלומר ל 500,000 ליום, וכמובן שהפתרון הזה כבר לא עובד מספיק טוב.
התחלתי לקרוא קצת על change tracking, אבל נראה לי שזה פתרון מסורבל כמעט באותה המידה.
השאלה היא האם יש איזה שהיא דרך פשוטה, זריזה ובעיקר זולה מבחינת משאבים לדחוף מידע החוצה מה SQL?
(את כל התהליך של יצירת ה XML ושליחה ללקוחות השונים אני מתכוון להשאיר באפליקציה, אני לא רואה טעם להעמיס על ה database את ה overhead הזה).
תודה מראש,
זהר.