מסדי נתונים מבוססי XML...

MotiAd

New member
מסדי נתונים מבוססי XML...

היי לכולם, יש לי שאלה שנוגעת לנושא. אני מתחיל לעבוד עכשיו (.NET) על פרוייקט לניהול רשימות שנשמרות או לפחות מיוצגות בצורה של עץ (כמו מערכת קבצים, רשימת שירים והקבצה שלהם וכו'). כל המידע הזה אמור להישמר במסד נתונים מן הסתם לצורך העניין. העניין החשוב ביותר הוא נוחות השמירה והגישה לנתונים באמצעות שאילתות. פיתרון של בעייה מהסוג הזה עם מסד נתונים טבלאי היא ברוך אחד גדול ודי מעצבנת ולכן אני פונה לפיתרון של מסדי נתונים מבוססי XML מההתחלה. השאלה שלי היא, האם מישהו מכיר מסד כזה שהוא קוד פתוח/חינמי ויעיל בצורה בלתי רגילה ע"פ שימוש בקבצי XML רגילים? או לטעון אותם לבסיס נתונים טבלאי ואז להריץ עליהם שאילתות? במקום להגדיר מספר עמודות (במסד טבלאי) קבוע ולקבוע שדה מסויים שיכיל את מספר הקבוצות כאשר הן מופרדות בפסיקים אני מעדיף לפתור את הבעייה באמצעות שימוש בעץ שהוא הפיתרון הכי טריויאלי לעניין. הסיבה לפנייה דווקא לכיוון של עץ היא הרצון שלא להגביל את ה-NESTING האפשרי - יצירה של קבוצות ותתי^N קבוצות כמה שהזיכרון רק מאפשר, ונוסף על כך שרשומות מקבצים מסויימים אמורים להופיע מספר פעמים ואני לא רוצה לבזבז מקום. אשמח גם לשמוע רעיונות אחרים על ייצוג אפשרי לנתונים הללו. בתודה מראש. שלכם, מוטי.
 

MotiAd

New member
שני רעיונות שקפצו לי...

לייצג את הנתונים הם כדלקמן: כמובן שהגישה היא למסד טבלאי. 1) רשימה של כל הערכים שלכל ערך יש אינדקס שמוצמד לו. רשימה של כל הקבוצות ותתי הקבוצות הקיימות כאשר יש חלוקה לוגית בין קבוצות לתתי קבוצות בצורה של עץ או מערכת קבצים (קבוצה/תת-קבוצה שלה וכן הלאה) כאשר לכל קבוצה יש טבלה משלה שמכילה את מספרי הקבצים (אינדקסים) שהיא מכילה והמספרים האלו נלקחים מתוך הטבלה הרגילה של הערכים. 2) תהיה רשימה של כל הערכים, אבל הקיטלוג לקבוצותת ותתי קבוצות יעשה במסמך XML שעליו ניתן יהיה לעשות שימוש ב-XPATH עבור שאילתות וכו'. מוטי.
 

voguemaster

New member
מוטי

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

MotiAd

New member
חשבתי על זה...

לא קיימים בהכרח. הרוב שקיימים עוסקים בעיקר בשמירה של הנתונים בטבלאיים.האמת שאין לי בעייה ממשית לעבוד עם אף אחד ממסדי הנתונים שקיימים, MSSQL, MYSQL, POSTGRE אבל בעיקרון אני לא אוהב לעבוד עם ACCESS. בכל מקרה אני מחכה ליציאה של MSSQL 2005 בגירסת אקספרס, נראה שהוא עונה על הדרישות שלי מצויין. תודה בכל אופן אלי. מוטי.
 

voguemaster

New member
מה לא קיים בהכרח ?

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

MotiAd

New member
אהההההה...

הבנתי, ד"א אלי אתה ער עד שעות מאוחרות, זה לא בריא לסוג העבודה שלך :)
. תודה בכל מקרה, אני באופן אישי עדיין מחפש כאלו כדי לבחון אותם. ברור לי שגם ACCESS 2002 או MYSQL או MSSQL עושים את זה. אני אבל חושב שהפיתרון צריך להיות מוטמע (לא שאני חושב, זה הצורך) בצורה הכי נהירה ובהירה גם להדיוט שאמור להפעיל את המערכת. הוא זקוק לזה, למרות שאני חושב לספק לו ממשק שעושה בדיוק את זה דרך התוכנה. תודה אלי. מוטי.
 

justme5

New member
מה לגבי הפיתרון הבא?

טבלה אחת של nodes בעץ (ולכל רשומה יש node-id) וטבלה שניה של קשתות (בכל רשומה יש father-node-id ו child-node-id שמן הסתם ממופים ל node-id בטבלה הראשונה). כך אפשר לבנות עצים משו-משו
 

MotiAd

New member
חחחחחחחחחח...

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

justme5

New member
תבדוק את המימוש שלך

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

MotiAd

New member
לא התכוונתי לפגוע...../images/Emo11.gif

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

zeevb

New member
XML DB

יש מסד נתונים מבוסס XML שהוא קוד פתוח אבל הוא ב-Java (בכלל, יש הרבה יותר אופציות חינמיות / קוד פתוח בעולם ה-Java מאשר ב-NET.)
 

MotiAd

New member
זה כל מה שחיפשתי...

תודה רבה, אני בהחלט אבחן את הנושא ואראה מה ומי. בכל אופן אםזה JAVAי אז מה טוב, אם כי הייתי שמח למשהו יותר NATIVE. תודה רבה. מוטי.
 

MotiAd

New member
אין לך מושג אילו הכלאות...

מוזרות אפשר לעשות בין .NET ל-JAVA. אני אבחן אותו, אולי אפשר לספק אפילו ממשק ODBC למסד הזה. מעניין. ד"א, אתה מכיר אחרים כאלו בסגנון? תודה, מוטי.
 

MotiAd

New member
חחחח, תצחק תצחק..

אבל הרעיון עלה בדעתי. או אפילו לכתוב ספריית דרייברים כמו שיש ל-SQL או ORACLE ב-VS.NET. זה לפעם הבאה. מוטי.
 

nirtheking

New member
אני לא צוחק ../images/Emo13.gif

זה היה די רציני
אני פשוט אוהב לדחוף את האייקון הזה במשפטים שלי
 

MotiAd

New member
סבבה, אין בעייה. אני אתפנה לזה...

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

MotiAd

New member
הביצועים בעבודה מול XML...

דרך שמות מרחב של .NET פשוט לא תאומן. הביצועים פשוט מעל לכל דבר שאפשר לתאר בכלל. כמעט ואין מה לדבר על מהירויות תגובה בין לחיצה ללחיצה. ממש יפה. מוטי.
 
למעלה