Article
January 20, 2021

Babelfish – תרגום בגוף הנתונים

Read the full interviewDownload Now


AWS משיקה שירות חדש – Babelfish – שיעזור בהמרת מסדי נתונים לענן.
מאת דוד לוריא, מנכ"ל ואלינור וג'ו בראון, מפתח BI 

עקרון ההתמדה של ניוטון קובע כי כל גוף שואף להישאר במצב בו הוא נמצא. בעולם ההייטק, רק תחום אחד מאופיין באינרציה, והוא תחום מסדי הנתונים.עולם הענן מציע פתרונות יותר מהירים, יותר נגישים, יותר scalable.אבל בתחום מסדי הנתונים, המוסדות הגדולים, וכן רוב העסקים הבינוניים ומעלה, פועלים לפי מודלים שבנו ב-SQL Server או ב-Oracle.  

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

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

·        עלויות הרישיונות – PostgreSQL הוא בקוד פתוח ועל כן הוא חינם. הוא גם מתעדכן בתכיפות גבוהה, ובחינם.
·        עבודה נוחה מול מגוון רחב של מערכות הפעלה בנוסף ל-Windows ול-Linux
·        יכולת מתקדמת לעבוד עם שפות תכנות פרוצדורליותבצורה שוטפת ונוחה. PostgreSQL עצמו נכתב ב-C, ועלכן קל לשלב אותו במערכות מבוססות שפות תכנות.
·        compression or concurrent index creation כיום חינם ב-PostgreSQL גם כן. ככלל, הוא מנוע יותר מהיר לענייני concurrency, ניתן לנהל באמצעותו עדכונים בו-זמנית, ולא לדאוג לעניין חסימות ונעילות של מסדי הנתונים.

בנוסף, בשנים האחרונות אנו עדים לאהדה גוברת ל-PostgreSQL. מפתחי תוכנה אהבו את המנוע הזה כמעט מתחילת דרכו, אבל בעשור האחרון האהדה כלפיו גברה גם מחוץ לקהילה הזו. באתרים כמו Stack Overflow ו-DB-Engines, רואים עלייה במשרות בתחום, נוצרים יותר אתרי Q&A ויותר ארגונים מאמצים את הטכנולוגיה הזו.

אחת החוזקות שלהמנוע הזה הוא היותו ממונע לחלוטין על ידי הקהילה (community-driven).עם תרבות שיתופית, שעודדת את חברי הקהילה ולא רק את המקימים, לייצר מאמרים ולפתח יכולות חדשות, בלי התערבות של חברות מסחריות. הדבר הוביל לכך ששני הדברים היחידים שמובילים את הפיתוח הם צרכי מסד הנתונים עצמו, כמו שמירה ואחזור יותר יעיל של נתונים והתפתחויות טכנולוגיות, כמו התאמה לעבודה עם JSON או APIs.

אך למרות כל הסיבות האלה ועוד סיבות רבות שלא פורטו כאן, הרבה ארגונים לא ששו לבצע מיגרציה ל-PostgreSQL, בעיקר מפני שהמיגרציה עצמה הייתה קשה. המעבר מה-T-SQL של SQL Server ופרוטוקול התקשורת שלה לא היה פשוט, והתהליך חייב ביצוע מעבר פרטני על כל אלמנט, מפקודות ה-SQL וה-views ועד ל-datatypes, פונקציות וטריגרים. בנוסף, המעבר עצמו לרוב כלול בהפרעה ממשית לעסקים, כי חייבים לסגור את מסד הנתונים לעדכונים כשמעבירים ממנו את הנתונים.

כדי לתת פתרון לכל זה, AWS הודיעה כי היא פותחת לכלל הציבור כלי חדש בשם Babelfish for PostgreSQL כקוד פתוח. הכלי הזה אשר יבצע תרגום הן לפרוטוקול התקשורת (TDS) והן לשפת ה-T-SQL. כלומר, אם עד עתה מעברים כאלה היו מתבצעים בעזרת חברות שמתמחות בכך (דוגמת חברת ואלינור, חברת בת של Comm-IT), עכשיו כל חברה תוכל לבצע את המעבר בעצמה. הכלי, לפי מה שכתוב באתר, מאפשר למנוע ה- PostgreSQL להבין את הבקשות של מסד הנתונים – גם ברמת הפקודה וגם ברמת הפרוטוקול, ובכך הוא מהווה כלי ייחודי בשוק. לא יהיה צורך לבדוק האם הספריות תקינות, האם הסכימה מקבילה או האם השאילתות בפונקציות מורכבות נכון.הכלי יתרגם הכל, מבלי צורך של התערבות מטעם מפתח או DBA.בגלל שהוא מכוון ל-"נכונות" ("correctness"), אזי הוא מנסה לדמות את הפונקציונליות של הפקודה ולא רק לתרגם אותה טכנית. התוצאה של הפעולה שתורגמה ל-PostgreSQL תביא לאותה תוצאה שהייתה מביאה ב-SQL Server.

ואם לא די בכך, התצורה בה Babelfish עובדת דואגת שלא יהיה downtime בכלל. הכלי מוסיף נקודת קצה ל-PostgreSQL שמבינה את פרוטוקול התקשורת של SQL Server Tabular Data Stream (TDS), כמו גם פקודות T-SQL נפוצות המשמשות את SQL Server. הוא תומך באלמנטים רבים של T-SQL, כולל SQL dialect, סמנים, תצוגות קטלוג, סוגי נתונים (datatypes), טריגרים, נהלים מאוחסנים (stored procedures) ופונקציות. כאשר Babelfish מופעלת, אין צורך להחליף מנהלי התקנים של מסדי נתונים או לשכתב ולאמת באופן ידני את כל בקשות מסדי הנתוניםשל היישומים שלך - משימה ענקית וסיזיפית.

וכאן טמון ההבדל הגדול ביותר בין שירותי הגירהמסורתיים כמו AWS Database MigrationService (DMS) ו-AWS Schema Conversion Tool (SCT).לבין Babelfish.אף על פי ששירותים אלה מקלים על ההמרה של סכימהמ-SQL Server ל-PostgreSQL,הם עדיין מצריכים שכתוב ידני של קוד. Babelfishמבטל את הצורך לשנות הגדרות באפליקציות על מנתשאלה יתאימו למנהלי מסדי נתונים של PostgreSQL,וגם את הצורך לעשות שינויי קוד באפליקציה כדי לעבוד עם PostgreSQL.האפליקציה תחשוב שהיא עובדת מול SQL Server, וכלי התרגום יבצע תרגום מהיר, יעיל ונקי.

כדי שמפתחים יידעו ש-Babelfishבאמת מדברת בשפת SQL Server בצורה מהימנה וצפויה מראש, העיקרוןהמנחה שלה הוא נכונות, ללא פשרות. כלומר יישומים שנועדו להשתמש בסמנטיקה של SQL Server  יתנהגו בצורה זהה לחלוטין ב-PostgreSQL כפי שהיו מתנהגים ב-SQLServer.

בתחילת הדרך,הכלי לא יוכל לתרגם 100% מהמקרים. אבל מכיוון שהכלי יהיה זמין ב-GitHub,לא רק תרחישים נפוצים ביותר יטופלו על ידי הכלי, יתווספו להם מקרי קצה שעולים אלפני השטח ממשתמשים מסביב לעולם. אם Babelfish עדיין לא תומכת בפונקציונליות ספציפית של SQL Server,היא יחזיר הודעת שגיאה ליישום, ולא תפעל לפי התנהגותרגילה של PostgreSQLלפי ברירת מחדל. זה אומר שאפשר יהיה לבדוק אתאמינות הכלי ואת הנכונות שלה לעבוד בתנאים של הארגון שלכם.

כדי לתת דוגמאלנכונות, במקרים בהם משתמשים ב-datatype  שלכסף (Money), ב-SQL Server, זה אומר ארבע ספרות מימין לעשרוני, בעוד ב-PostgreSQLזה רק שתיים. ההבדל אולי קטן במספר עצמו, אבל ההשלכות יכולות להיות ענקיות. ההבדלבין $10.13 ו-$10.1349 יכול להצטבר ולהשפיע בצורה חריפה על דו"חות פיננסיים.ה-Babelfish יידע לטפל בזה ולדאוג שהמספר לא יומר, אלא ישמור על כל הספרות מימיןלנקודה העשרונית.

AWSמשחררים את Babelfish בתחילת 2021 ב-Github כקוד פתוח, מתוך האמונה שיהיה צורך במאמץ קהילתי, כזה שמעודד השתתפות ממקורות מגוונים כדילכסות אופנים רבים ככל האפשר של שימוש ביישומים על ידי SQL Serverוהמרה שלהם ל PostgreSQL.