Skip to content

מידול נתונים ב-NoSQL מוסברים

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

מסדי NoSQL מחליפים סכימות קבועות ואיחודים (joins) בסקיילות אופקית. כל משפחה ממדלת קשרים בדרכה שלה, ולכן תבנית הגישה — לא הצורה הנורמלית — קובעת את המבנה.

טבלת עיון · 28 ערכים
28 of 28 rows
Document
תת-מסמכים מקוננים חיים בתוך מסמך אב אחד במקום בטבלאות נפרדות.קשרי אחד-למעטים שנקראים יחד. הזמנה עם פריטיה. משתמש עם שלוש כתובות.
שומרים מזהה זר, לא את הנתונים. מבצעים אותו בקריאה שנייה או ב-$lookup.תת-יישויות גדולות, משותפות או מתעדכנות באופן עצמאי. קישורי רבים-לרבים בין אוספים.
האב מטמיע מערך קצר של ילדים; כל הסט נכנס ונטען כמסמך אחד.קבוצה קטנה של מספרי טלפון או העדפות בפרופיל. קריאה אחת מחזירה אב וילדים.
הילדים חיים באוסף משלהם; כל ילד נושא את מזהה האב, או שהאב מחזיק מערך מזהים חסום.סטים גדולים מדי או עצמאיים מדי להטמעה. שליפת ילדים לפי מזהה אב.
הילד מאחסן את מזהה האב; האב לעולם אינו מונה את ילדיו כי הסט בלתי חסום.אירועים, לוגים או הצבעות הקשורים למארח או למשתמש. סינון ילדים לפי מזהה אב ועימוד.
מסמכים של סוגי יישויות שונים חולקים אוסף אחד, ומובחנים זה מזה בשדה type.תגובות או התראות המחוברות להורים מסוגים רבים, כולן נשלפות בדרך אחת.
כמה יישויות קיצוניות מופרדות מהצורה המשותפת כדי שגודלן או התעבורה שלהן לא יעוותו את השאר.חשבונות ידוענים שרשימות העוקבים או המונים שלהם היו עולים על גודל המסמך הרגיל.
כל גרסה היא מסמך חדש עם אותו מזהה ומספר גרסה עולה; השאילתה בוחרת את האחרונה.שובלי ביקורת והיסטוריית עריכה שבהן גרסאות ישנות נשארות ניתנות לשליפה.
ערכים נגזרים מחושבים בזמן הכתיבה ומאוחסנים לצד הנתונים שהם מסכמים.סכומים, דירוגים ו-top-N שאחרת היו מריצים אגרגציה בכל קריאה.
Key-value ו-wide-column
מונח תכנון ב-DynamoDB: כיווץ סוגי יישויות רבים לטבלה אחת עם מפתחות partition ו-sort עמוסים.שליפת פריטים הטרוגניים בשאילתה אחת בלי join.
תכונת מפתח אחת משרתת סוגי יישויות רבים, מסומנת בקידומות כמו USER# או ORDER#.תכנוני single-table. קיבוץ פריטים קשורים תחת partition אחד ושליפתם בשאילתה אחת.
מפתח partition מפזר שורות בין צמתים; מפתח sort מסדר כל partition.Cassandra ו-DynamoDB. סריקות טווח, לוגים ממוינים, מפתחות מורכבים היררכיים.
ערימת כמה תכונות למפתח sort אחד עם מפריד — country#region#city — כך שהתאמת קידומת יורדת בהיררכיה.היררכיות וסינונים רב-פנים. שאילתת טווח ממוינת אחת מחליפה חיפושים ממופים רבים.
קיבוץ אירועים לחלונות קבועים — שעה, יום, חודש — תחת partitionים או טבלאות ייעודיים.מדדים, לוגים וטלמטריית IoT. מגביל גודל partition ומיישן נתונים קרים.
שכפול שדות כבדי-קריאה בין רשומות כדי ששאילתה לעולם לא תרדוף אחרי חיפוש שני.עומסי קריאה שבהם עקביות סופית נסבלת ואחסון זול.
אינדקס משני שנבנה על תכונה שרק חלק מהפריטים נושאים; פריטים בלעדיה לעולם לא נכנסים לאינדקס.נתיבי גישה חלופיים. מציאת תת-הקבוצה הדלילה — הזמנות פתוחות, פריטים שלא נשלחו — בלי סריקה מלאה.
כותבים קודם את השאילתות המדויקות; פריסת הטבלה נגזרת מהן, לא מהיישויות או מהצורה הנורמלית.עבודת סכימה ב-Cassandra וב-DynamoDB. טבלה אחת לכל משפחת שאילתות; מודל הנתונים מעתיק את השאלה.
שאילתה נאלצת לפגוע במקביל ב-partitionים או צמתים רבים כי אף מפתח לא תואם לשאלה.ריח שמתכננים אותו מחוץ למערכת, לא מטרה. מפתחים מחדש את הטבלה כדי שהשאילתה הנפוצה תנחת על partition אחד.
עותקים נדחפים לתצוגת כל קורא בזמן הכתיבה, או נאספים וממוזגים בזמן הקריאה.פידים וצירי זמן. fan-out בכתיבה לקהלים קטנים, בקריאה לקהלים ענקיים.
תוצאת שאילתה מוכנה מראש המאוחסנת כטבלה משלה, ומתוחזקת עדכנית כשהבסיס משתנה.צורות קריאה חלופיות על נתיב כתיבה אחד. משרת שאילתות שטבלת הבסיס לא יכולה לענות עליהן.
Graph
כל קשת היא שורה או tuple שמצביעה מצומת מקור לצומת יעד.מסדי גרפים ומסדי מאפיינים. חיפושי חבר-של-חבר, ניתוב, המלצות.
כל קשר הוא מסמך באוסף משלו, הנושא מזהי from ו-to וכן מאפייני קישור.גרפים במסדי מסמכים. מאפיינים על הקישור עצמו — דירוג, תפקיד, חותמת זמן.
כל צומת מאחסן מונים שמאלי וימני ממעבר depth-first; תת-עץ חי בטווח של הורהו.עצים כבדי-קריאה. שאילתת BETWEEN אחת מחזירה תת-עץ; הכנסות ממספרות מחדש את המעבר.
טבלה ייעודית רושמת כל זוג אב-צאצא, לרבות כל צומת בעומק אפס.שאילתות ענף שלם בכל עומק. join-ים פשוטים, בתשלום של אחסון ותחזוקה.
גרפי מאפיינים מצמידים מאפייני מפתח-ערך לצמתים ולקשתות; RDF מביע הכל כשלשות נושא-נשוא-מושא.גרפי מאפיינים למעברים עשירים (Neo4j); RDF לנתונים פתוחים מקושרים ולהחלפת אונטולוגיות.
Vector
מערך float רב-ממדי יושב לצד מטא-דאטה. אינדקס ANN מוצא את השכנים הקרובים ביותר.חיפוש סמנטי, אחזור RAG, המלצות ודמיון על תוכן לא מובנה.
מסמכי המקור מפוצלים — לפי גודל, חפיפה או מבנה — לפני שכל חלק מוטמע בנפרד.איכות אחזור RAG. גודל chunk מחליף דיוק בריקול; חפיפה מגינה על משפטים שפוצלו.
דמיון וקטורי צפוף רץ לצד התאמת מילות מפתח; שתי הרשימות המדורגות מתמזגות לתוצאה אחת.שאילתות שצריכות בו-זמנית מונחים מדויקים ומשמעות, עם מסנני מטא-דאטה מעל.