דלג לתוכן הראשי
Cloud Information Model מודל נתונים פתוח ובלתי תלוי אפליקציה לחיבור בין אפליקציות ענן ואפליקציות on-prem בארגון

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

מודל מידע בענן

מודל המידע בענן (CIM) הוא סכימה פתוחה ואגנוסטית ליישומים לתיאור הישויות שנעות בתוך ארגון מודרני: צדדים (parties), מוצרים, הזמנות, תשלומים והקשרים הקושרים ביניהם. במקום להמציא מודל נתונים ייעודי (bespoke) עבור כל אינטגרציה, CIM מציע אוצר מילים משותף כך ש-CRM, ERP, פלטפורמת מסחר ומחסן נתונים לאנליטיקה יכולים להסכים על המשמעות הממשית של “הזמנת מכירות” (Sales Order) או “סוג קשר מוצר” (Product Relationship Type). מאמר זה סוקר את קבוצות הישויות המרכיבות את המודל, ולאחר מכן מעמיק בישות מייצגת אחת — ProductRelationshipType — כדי להראות כיצד CIM מבטא יחסים, תפקידים ומפתחות בפועל.

נקודות מפתח

  • CIM מארגן נתונים ארגוניים ב-קבוצות ישויות (צד, מוצר, הזמנת מכירות, תשלום ואחרות) שניתן לאמץ באופן הדרגתי ולא בבת אחת.
  • כל ישות מוגדרת עם Term URI, תיאור, מאפיינים סקלריים ומאפייני קישור — מבנה הממפה בצורה נקייה ל-JSON-LD, RDF ומאגרי property-graph.
  • ישויות יחסים כגון ProductRelationshipType מקודדות תפקידים (הורה/ילד) כך שניתן למדל חבילות (bundles), אפשרויות וכיסויים ללא קידוד קשיח (hard-coding) של לוגיקה עסקית.
  • המודל הוא בכוונה אגנוסטי ליישומים: הוא מתאר מה משמעות הנתונים, ולא כיצד ספק מסוים מאחסן אותם.
  • אימוץ CIM הוא תרגיל של מיפוי, לא של “הסרה והחלפה” (rip-and-replace) — אתם מיישרים מערכות קיימות למונחים משותפים ומגשרים על הפערים.

למה מודל משותף הוא חשוב

לאינטגרציה ארגונית יש מצב כשל מוכר: כל מערכת מדברת בניב משלה. Salesforce קוראת לזה Account, SAP קוראת לזה Business Partner, ושירות חיוב פנימי קורא לזה Customer. כשבונים מיפויים מנקודה לנקודה (point-to-point) בין כל זוג, מספר התרגומים גדל בריבוע מספר המערכות המעורבות, וכל מערכת חדשה מכפילה את נטל התחזוקה.

מודל קנוני שובר את הבעיה הריבועית הזו. אתם ממפים כל מערכת פעם אחת למודל המשותף, והמודל המשותף הופך למרכז (hub). זהו אותו אינסטינקט ארכיטקטוני שעומד מאחורי סטנדרטים כמו OAGIS (Open Applications Group Integration Specification), ה-Common Warehouse Metamodel של OMG, ואוצר המילים של schema.org למסחר. CIM נשען על מסורת זו, אך מותאם ליכולת פעולה הדדית (interoperability) של עידן הענן ומפורסם כמונחים פתוחים עם URIs הניתנים לדה-רפרנס (dereferenceable).

התמורה המעשית היא שארכיטקט נתונים יכול לענות על שאלות כמו “אילו מערכות מחזיקות ברשומה הסמכותית עבור צד (Party)?” או “כיצד אנו מייצגים חבילת מוצרים באופן עקבי הן בקטלוג והן בהזמנה?” באמצעות נקודת התייחסות אחת.

קבוצות הישויות במבט חטוף

CIM אינו סכימה מונוליטית אחת; הוא קבוצה של קבוצות המקושרות באופן רופף. הקבוצות הנקובות במודל כוללות:

  • Account — הקשר המסחרי עבור צד.
  • Contact Point — מספרי טלפון, כתובות דוא”ל וערוצי נגישות דומים.
  • Lead — צד פוטנציאלי שטרם עבר סינון (qualified).
  • Party ו-Party Role — המושג הכללי של שחקן והתפקידים שהוא ממלא (לקוח, ספק, עובד).
  • Payment ו-Payment Method — כיצד כסף עובר והכלים המשמשים לכך.
  • Product Attribute, Product Catalog ו-Product — סחורות ושירותים הניתנים למכירה ולתיאור.
  • Sales Order ומשפחת ישויות המשנה הגדולה שלה — הלב הטרנזקציוני של המודל.
  • Shipment — מימוש (fulfillment) ולוגיסטיקה.

קבוצת ה-Sales Order היא המפורטת ביותר, וכדאי להבין מדוע. הזמנה היא המקום שבו מתרכזים הכללים העסקיים: תמחור, מיסים, התאמות, קבוצות משלוח והערות לשורה — כולם נסמכים עליה. CIM מפרק את ההזמנה להרבה ישויות קטנות — Sales Order Product, Sales Order Price Adjustment, Sales Order Tax, Sales Order Delivery Group, Sales Order Payment Summary, Sales Order Change Log ועוד — במקום טבלה רחבה אחת. פירוק זה הוא בחירה עיצובית מכוונת: הוא מאפשר לכל היבט להתפתח באופן עצמאי ומאפשר למערכות להירשם רק לחלקים שמעניינים אותן.

קשורים: — לאינטגרציה היברידית של ענן ל-on-prem.

אנטומיה של ישות CIM

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

  • Term URI — http://cloudinformationmodel.org/model/ProductRelationshipType. זהו המזהה הייחודי הגלובלי עבור המושג. מכיוון שמדובר ב-URI, ניתן לבצע לו דה-רפרנס ולהשתמש בו ישירות בגרפים של RDF/JSON-LD.
  • Description — “סיבות מדוע מוצרים קשורים, כגון חבילה, אופציה או כיסוי”. זה מלמד אותנו שהישות היא סוג או סיווג, ולא מופע הקשר עצמו.
  • Scalar Properties — השדות הפרימיטיביים הנושאים נתונים.
  • Link Properties — הפניות לישויות אחרות. ל-ProductRelationshipType אין כאלה, וזה מידע רלוונטי: זוהי ישות עלה (leaf entity), אוצר מילים מבוקר ולא מרכז.

המאפיינים הסקלריים הם:

PropertyTerm URIRangeMandatoryDescription
id.../model/idguidyesPrimary key
parentProductRole.../model/parentProductRolestringyesהתפקיד הראשון בקשר, למשל “Consists of”
childProductRole.../model/childProductRolestringyesהתפקיד השני בקשר, למשל “Component of”

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

הבחירה שלנו: — iPaaS בהובלת אוטומציה שצוותים עסקיים יכולים למעשה לבנות עליו.

מידול יחסים באמצעות תפקידים

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

חשבו על חבילה (bundle). “ערכת התחלה” מורכבת מ”נתב” ו”כבל”. במונחי CIM:

  • מוצר האב ממלא את התפקיד המתואר על ידי parentProductRole — לדוגמה, “מורכב מ”.
  • מוצר הילד ממלא את התפקיד המתואר על ידי childProductRole — לדוגמה, “רכיב של”.

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

התיאור מציין במפורש שלושה סוגים — bundle (חבילה), option (אפשרות) ו-covering (כיסוי) — מה שמרמז על מגוון הסמנטיקה המסחרית שהמודל מתכוון לכסות:

  • Bundle — מוצרים הנמכרים יחד כיחידה (הורה “מורכב מ” ילדים).
  • Option — בחירה או תוספת הקשורה למוצר בסיס.
  • Covering — מוצר שעוטף או מגן על מוצר אחר, נפוץ בהקשרי ביטוח ואחריות.

כיצד להחליט על אוצר המילים של התפקידים

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

  1. בחרו אוצר מילים מבוקר והקפיאו אותו. הסכימו על סט קטן של ביטויי תפקידים (“מורכב מ” / “רכיב של”, “תוספת אופציונלית ל” / “בעל אפשרות”) ותעדו אותם. טקסט חופשי מזמין סטיות.
  2. שמרו על תפקידים סימטריים וקריאים בשני הכיוונים. מבחן טוב: האם ניתן לקרוא את הקשר בקול מכל אחד מהקצוות ושהוא יישמע הגיוני?
  3. אל תעמיסו לוגיקה עסקית על התפקידים. אם תפקיד דורש התנהגות מותנית, הלוגיקה הזו שייכת לאפליקציה הצורכת, לא למחרוזת.
  4. בצעו גרסאות לאוצר המילים שלכם. כשמוסיפים תפקיד, התייחסו אליו כאל שינוי בסכימה עם נתיב הגירה, ולא כאל הכנסה אד-הוק.

אימוץ CIM בפועל

אימוץ מודל קנוני הוא דיסציפלינת מיפוי, לא הגירה. רצף עבודה בר-ביצוע:

קשורים: — Push-down ELT שנבנה עבור מחסני נתונים בענן.

  • בצעו מלאי של מערכות הרישום (systems of record) שלכם. עבור כל קבוצת ישויות, החליטו איזו מערכת היא הסמכותית. Party עשוי לשהות ב-CRM; Product ב-PIM; Sales Order ב-ERP.
  • מפו כל מקור למונחי CIM. בנו טבלה של שדה מקור $\rightarrow$ מאפיין CIM. במקום שבו למקור אין מקבילה, ציינו את הפער; במקום שבו ל-CIM אין מקבילה, ציינו את ההרחבה.
  • בצעו התאמה של מזהים. מוסכמות ה-GUID של CIM פירושן שבדרך כלל תתחזקו טבלת מעבר (crosswalk) בין מפתחות מקוריים לערכי id של CIM.
  • בחרו סריאליזציה. המונחים מבוססי ה-URI של CIM ממפים באופן טבעי ל-JSON-LD ו-RDF; הם גם מתרגמים בצורה נקייה לטבלאות רלציוניות או לגרף מאפיינים (property graph). המודל אינו כופה טכנולוגיית אחסון.
  • נהלו את אוצר המילים. מחרוזות התפקידים, המנייה (enumerations) וההרחבות שתוסיפו הן החלקים בעלי הסבירות הגבוהה ביותר לסטיות, לכן הניחו אותם תחת בקרת שינויים.

מודל מנטלי שימושי הוא להתייחס ל-CIM כאל סכימת חילופי נתונים (interchange) ולמאגרים התפעוליים שלכם כאל מערכת הרישום. אינכם מבקשים מכל אפליקציה לנטוש את המודל המקורי שלה; אתם מבקשים מהן לפרסם ולצרוך מודל משותף בממשקים.

הסתייגויות ופשרות

שום מודל קנוני אינו חסר עלות, ו-CIM אינו יוצא דופן.

  • להפשטה יש מחיר. מודל כללי מספיק כדי להקיף תעשיות שונות לא יתאים בצורה מושלמת לאף אחת מהן. צפו להוסיף הרחבות.
  • קבוצת ה-Sales Order היא כבדה. הפירוק הדק שלה הוא רב עוצמה, אך משמעותו היא יותר Join-ים ויותר ישויות למיפוי. צוותים עם זרימות הזמנה פשוטות עשויים לאמץ רק תת-קבוצה.
  • מחרוזות תפקידים בפורמט חופשי דורשות ממשל. כפי שצוין, הגמישות ב-parentProductRole ו-childProductRole טובה רק ככל שהמשמעת סביבה גבוהה.
  • מודלים פתוחים מתפתחים. מכיוון ש-CIM מכוון לקהילה, ניתן להוסיף או לדייק מונחים עם הזמן. היצמדו לגרסה מסוימת ובחנו שינויים באופן מודע.

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

איפה היינו מתחילים: — צינור ה-ELT המנוהל במלואו שפשוט ממשיך לפעול.

שאלות נפוצות

מהו מודל המידע בענן (Cloud Information Model)?

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

לשם מה משמש ProductRelationshipType?

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

מדוע CIM משתמש ב-GUID עבור מפתחות ראשיים?

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

האם CIM הוא סכימת מסד נתונים או פורמט לחילופי נתונים?

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

איך CIM קשור לתקנים אחרים כמו OAGIS או schema.org?

CIM חולקת את המטרה של מאמצים אלה — אוצר מילים משותף ליכולת פעולה הדדית (interoperability) — אך היא מיועדת לאינטגרציה ארגונית של עידן הענן ומפורסמת כמונחים פתוחים וניתנים לדה-רפרנס (dereferenceable). בפועל, ניתן למפות את CIM לתקנים אחרים בנקודות הקצה שבהן שותפים דורשים אותם.

האם אני חייב לאמץ את כל המודל בבת אחת?

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

קריאה נוספת

שאלות נפוצות

מהו מודל המידע בענן?

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

למה משמש 'ProductRelationshipType'?

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

מדוע CIM משתמש ב-GUID עבור מפתחות ראשיים?

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

האם CIM היא סכימת מסד נתונים או פורמט חילופי נתונים?

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

איך CIM קשור לתקנים אחרים כמו OAGIS או schema.org?

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

האם עלי לאמץ את כל הדגם בבת אחת?

לא. CIM מאורגן בקבוצות ישויות מקושרות באופן רופף, כך שתוכל לאמץ את הקבוצות הדרושות לך - נגיד, מסיבה ומוצר - ולהרחיב מאוחר יותר. רוב הצוותים מתחילים עם הישויות שגורמות הכי הרבה כאב אינטגרציה וצומחים משם. קריאה נוספת - [הזמנת מכירות](https://en.wikipedia.org/wiki/Sales_order) — ויקיפדיה - [מסגרת תיאור משאבים (RDF)](https://en.wikipedia.org/wiki/Resource_Description_Framework) — ויקיפדיה - [JSON-LD](https://en.wikipedia.org/wiki/schema/JSON-LD.org) — ויקיפדיה - [sharedschema.org אוצר מילים לנתונים מובנים באינטרנט


הפוך את הצינור הראשון שלך תוך פחות מ-15 דקות

צינור ה-ELT המנוהל במלואו שפשוט ממשיך לפעול