התייעצות בתכנון מסד נתונים עבור מאגר תורני
-
pcinfogmachכתב ב2 בדצמ׳ 2024, 18:40 נערך לאחרונה על ידי pcinfogmach 12 בפבר׳ 2024, 19:44
-
pcinfogmachהשיב לpcinfogmach ב 2 בדצמ׳ 2024, 20:24 נערך לאחרונה על ידי pcinfogmach 12 בפבר׳ 2024, 21:02
@pcinfogmach
אוקיי מצאתי לכאורה את הדרך האופטימלית (כלומר מודל שימושי כאשר יש צורך לשאול שאילתות על בסיסי נתונים המכילים מבנים מסודרים בצורה היררכית). בכתבה זו (החלק השני):
https://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/
הרעיון נקרא :The Nested Set Model
המודל ההיררכי של ה-Nested Set מבוסס על שימוש בטווחי מספרים לתיאור מבנה היררכי בצורה שטוחה המתאימה למסד sql. כל אלמנט במבנה מוגדר על ידי שני מספרים: ערך "שמאל" (Left) וערך "ימין" (Right), המייצגים את גבולות הטווח שלו בתוך המבנה.
לדוגמה, נניח שיש לנו את המבנה הבא:
ספר: כותרת הספר פרק 1 פסוק 1 פסוק 2 פרק 2 פסוק 1 אזי הטווח של הספר כולו מכסה את כל הרכיבים שבתוכו, והטווח של כל תת-רכיב נמצא בתוך הטווח של הרכיב שמעליו. כך למשל:
הספר כולו: טווח 1-12 פרק 1: טווח 2-7 פסוק 1: טווח 3-4 פסוק 2: טווח 5-6 פרק 2: טווח 8-11 פסוק 1: טווח 9-10 העקרונות המרכזיים במודל זה:
-
טווח של כל רכיב כולל את הטווחים של כל תתי-הרכיבים שבתוכו.
-
וממילא טווחים שאינם חופפים מצביעים על כך שהרכיבים אינם קשורים ישירות במבנה.
כך בעצם מצד אחד ניתן לעשות שאילתות יעילות ולשלוף בקלות את כל תתי-הפריטים של פריט נתון באמצעות טווח המספרים.
ומאידך המודל מתאר את ההיררכיה בצורה ישירה וברורה.חסרונות המודל:
מורכבות תחזוקה: הוספה או הסרה של רכיבים דורשת עדכון של הטווחים לכל שאר הרכיבים במבנה.תמונות להמחשה מתוך הכתבה הנ"ל (מקווה שלא תסקלו אותי על זה שכתוב פה טלויזיה עשיתי העתק הדבק איתכם הסליחה).
-
-
pcinfogmachהשיב לpcinfogmach ב 2 בדצמ׳ 2024, 20:57 נערך לאחרונה על ידי pcinfogmach 12 בפבר׳ 2024, 21:01
למרות המבנה המבטיח אני עדיין תוהה לעצמי מה הדרך הכי טובה למפות מיקום מדוייק בתוך המבנה ההיררכי. למשל אם ארצה לחפש האם כתובת מדוייקת קיימת (כגון: בראשית, א, קלט - לא קיים. אבל בראשית, א, יד - קיים).
האם להוסיף עוד טור שמתאר את הכתובת המלאה או לחפש את זה בצורה היררכית על ידי שיוכים של parent - child -
@pcinfogmach אולי תוותר על מסד טבלאי ובמקום זה תשתמש במשהו שיכול לייצג עץ נתונים בצורה יותר טבעית
אולי מבנה JSON יספק לך מענה מספיק טוב -
pcinfogmachהשיב לyossiz ב 2 בדצמ׳ 2024, 21:05 נערך לאחרונה על ידי pcinfogmach 12 בפבר׳ 2024, 21:13
@yossiz
הסיבה שאני נוטה למסד היא בגלל הצורך לטעון מפרשים מבנה json יצרוך סריקה של כל מסמך בנפרד.
כמו"כ מבנה json עבור חיפוש הכותרות יגביל אותו מבחינת הצורך לטעון את כולו לזיכרון אבל אולי אתה צודק ואין ברירה בבחינה הזו. -
yossizהשיב לpcinfogmach ב 2 בדצמ׳ 2024, 21:18 נערך לאחרונה על ידי yossiz 12 בפבר׳ 2024, 21:19
@pcinfogmach לא הבנתי לגמרי את דבריך.
בכל מקרה, התכוונתי רק שאת מבנה העץ תשמור כמבנה JSON. תוכן הספרים אפשר לשמור בטלאות או איך שלא תרצה -
אולי נושאים אלו יעניינו אותך
https://tchumim.com/topic/1072
https://tchumim.com/topic/1047 -
pcinfogmachהשיב לyossiz ב 3 בדצמ׳ 2024, 17:50 נערך לאחרונה על ידי pcinfogmach 12 במרץ 2024, 17:51
@yossiz
אוקיי הבנתי הטענה היא שמספיק למפות את הקובץ לא צריך לשמור אותו כלל במסד - יפה!
כמובן שיש משהו שמרוויחים חינם במסד והוא היכולת חיפוש בתוכן. -
פוסט 6 מתוך 9