כיצד לבחור את סוג הנתונים הנכון עבור הארגון שלך

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

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

מערכות ניהול מסדי נתונים יחסיים (Oracle, MySQL, MS Server, PostgreSQL)

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

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

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

חוזק

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

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

חולשות

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

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

השתמש במסד נתונים יחסי עבור:

  • מצבים בהם שלמות הנתונים היא עליונה לחלוטין (כלומר, עבור יישומים פיננסיים, הגנה וביטחון ומידע בריאותי פרטי)
  • נתונים מובנים מאוד
  • אוטומציה של תהליכים פנימיים

חנות מסמכים (MongoDB, Couchbase)

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

חוזק

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

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

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

חולשות

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

השתמש במסד נתונים של מסמכים ל:

  • נתונים לא מובנים או מבנים למחצה
  • ניהול תוכן
  • ניתוח נתונים מעמיק
  • אב טיפוס מהיר

חנות ערך מפתח (Redis, Memcached)

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

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

"ערכים" מאוחסנים ככתמים ואינם זקוקים לסכמה מוגדרת מראש. הם יכולים ללבוש כמעט כל צורה שהיא: מספרים, מחרוזות, מונים, JSON, XML, HTML, PHP, קבצים בינאריים, תמונות, קטעי וידאו קצרים, רשימות, ואפילו צמד ערכי מפתח אחר המעטוף באובייקט. חלק מה- DBMS מאפשרים לציין את סוג הנתונים, אך אין זה חובה.

חוזק

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

חולשות

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

השתמש בחנות ערך מפתח עבור:

  • המלצות
  • פרופילי משתמש והגדרות
  • נתונים לא מובנים כמו ביקורות על מוצרים או תגובות לבלוגים
  • ניהול מושבים בקנה מידה
  • נתונים אליהם ניתן לגשת לעיתים קרובות אך לא לעדכן לעיתים קרובות

חנות עמודים רחבה (קסנדרה, HBase)

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

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

חוזק

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

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

חולשות

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

השתמש בחנות רחבה לטורים עבור:

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

מנוע חיפוש (חיפוש אלסטיקה)

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

חוזק

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

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

חולשות

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

השתמש במנוע חיפוש כמו Elastisearch עבור:

  • שיפור חוויית המשתמש עם תוצאות חיפוש מהירות יותר
  • רישום

שיקולים אחרונים

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