MongoDB ל DBA ומפתחים הלכה למעשה - ilDBA Portal

MongoDB ל DBA ומפתחים הלכה למעשה

07/02/2016 | פורסם על ידי

אין טעם לחזור ולספר מה החשיבות של בסיסי נתונים Nosql. על פי הסקרים האחרונים בין ה Nosql מסוג Document DB, MongoDB הוא המוביל. בסדרה זו אני אציג ניהול של MongoDB דרך ה Shell וכלי הניהול החדשים של גרסה 3.2. בהקשר של פיתוח : כיצד מבצעים כוונון, ניהול תנועות, ופיתוח Java Client ו C# בסביבת מול MongDB.Net. אני אדגים אינטגרציה בין MongoDB ל Oracle, SQL Server 2016 והגירה של בסיסי הנתונים הללו ל MongDB. בנוסף עבודה עם תשתית Hadoop ו MongoDB שתכלול  Apache Hive Table, Spring Data ו Kundera . אני אשווה בין המתחרים Couchbase, Apache Cassandra ו Microsoft Document DB, כיצד מבצעים הגירה מהם ל MongoDB וכיצד עובדים גם איתם (שומו שמיים.). הדגש יהיה על מינימום תיאוריה ומקסימום ידע מעשי שצברתי. בסדרה נעבוד גרסת MongoDB 3.2 האחרונה בסביבת Windows לשם הנוחות, ואעדכן אותה במהלך הסדרה אם תצא סדרה חדשה.

MongoDB ו Document Databases Nosql והמתחרים.

MongoDB הוא בסיס נתונים Nosql מסוג Document. על פי המקורות השונים המתחרה השקול של mongodb הוא Coachbase, נדבר עליו בהמשך הסדרה. אני אציג את MongoDB גם מול את המתחרה החדש של מיקרוסופט : Azure DocumentDB.

MONGODB בקצרה

  • אתר : mongodb.com
  • רישיון מסחרי ותמיכה מלאה ע"י 10Gen 10gen.com))
  • מתוחזק ע"י החברה 10gen כ open source תחת הרישיון GNU AGPL v3.0
  • פופולאריות גדלה.
  • ה- DBs מורכבים מ
  • Collections מורכבים מ documents שמורכבים מ fields.
  • ניתן לבנות אינדקס ל Collections, לשיפור ביצועים.

היתרונות העיקריים של MongoDB

הנה בקצרה כל היתרונות של MongDB :

  • בניגוד ל- RDBMS אין לו סכימה כי הוא מבוסס על serialization של אובייקטים.
  • המידע מתואר כ- Document וכול Document מעודכן בנפרד.
  • מיועד בעיקר למפתחים וכביכול אינו דורש DBA. אין לו downtime בגלל הוספת עמודות.
  • הביצועים יכולים להיות טובים כי כאשר שומרים את כל המידע באותו מסמך במקום מספר טבלאות.
  • מבוסס Java Object Notation (JSON) ו\או Binary JSON (BSON)..
  • JSON:
    • JSON במקור משפת Javascript.
    • טקסטואלי ומאוד קל לקריאה וכתיבה. קל למחשב לטפל ונתמך בכול שפות התכנות. הכי יעיל שצריך ליצר דוחות באופן דינאמי מרכיבים שמשתמים כל הזמן.
    • דוגמא : מילוי מסמכים במערכת הבריאות כשהנתונים מבוססים על פרופיל החולה (ביטוח רפואי, הכנסה, מוצא וכולי )
    • סטנדרט פופולארי ב- Big Data.
  • מעשית MongoDB לא משתמש ב- JSON אלא ב- BSON (קיצור ל Binary JSON) שפותח ע"י צוות הפיתוח של MongoDB.
    • BSON תומך ב- Data types שלא נתמכים ע"י JSON, טיפול במידע בינארי ומאפשר ביצועים טובים יותר וסקלאביליות.
  • ל MongDB קצב כתיבה גבוה לפחות 10K הכנסות לשנייה ע"ג מכונה וירטואלית.
  • יכולת בניה מהירה של פתרון זמינות גבוהה (High Availability).בניית cluster אורכת לא יותר משעה
  • תמיכה ב- sharding בצורה מובנית. בהמשך.

 

JSON (Java Script Object Notation), BSON ו- MongoDB על קצה המזלג

אז מה זה JSON ?

  • JSON מכיל מידע מובנה, בניגוד ל- XML הוא קריא יותר.
  • מאפשר serialization של אובייקטים דרך התוכנה. למשל ל Python יש מודל בשם JSON שממיר אובייקטים ל- JSON.
  • כל אובייקט של JSON או document מכיל את כל המידע הנדרש שכולל ערך ומפתח. אם אין key/value אזי המסמך לא קיים.
  • לא חייב להיות ערך בכול שדה, מה שנקרא : Unknown.דוגמא : אם אין מספר טלפון פשוט לא רושמים אותו .

בו נדגים. נניח שנתון קובץ CSV הבא

Lastname, Firstname, Phone Number
Shaked, David, +972 1234 5678
Yuval, Maayan, +76 1234 5678

בפורמט  JSON הרשומה של Shaked תראה כך, תחת ההנחה שיש לה 2 מספרי טלפון :

{
"firstname": "Shaked ",
"lastname": " David ",
"phone_numbers": [
"+972 1234 5678",
"+44 1234 565 777"
]
}

 

Embedded documents

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

 

{
"firstname": "Yuval",
"lastname": "David",
"Phone_Numbers": [
{
 "phone": "+972 1234 5678"
},
{
 "fax": "+44 1234 565 555"
}
]
}

 

MongoDB ו BSON

MongoDB משתמש ב BSON שהוא הרחבה של JSON לפרמט בינארי.אין סטנדרט רשמי ל- BSON המפרט באתר : http://bsonspec.org. CouchDB המתחרה העיקרי של MongDB משתמש ב- JSON וגם DocumentDB של מיקרוסופט.

אז למה להשתמש ב- BSON ?

  • יותר קל לאנדקס BSON. צורך מעט יותר מקום מ JSON.
  • פשוט ומהיר יותר להמיר אובייקטים ממגוון רחב של שפות תכנות לפורמט בינארי מאשר להמיר ל- JSON.
  • BSON יש סט גדול יותר של data types ויותר גמיש כשמדובר ב dates, timestamps, numbers Javascript object.

הנה כמה דגשים לשימוש ב BSON :

  • JSON תקורה נמוכה יותר מ- BSON ולכן עדיף כאשר יש דיסק I\O, זיכרון ורוחב פס בעיתיים.
  • ב- BSON יש תקורה בביצועים כשמבצעים serializing ו- de-serializingלאובייקטים משפות strongly-typed כמו C#, Java וכולי

 

להתראות בחלק הבא נתחיל לתרגל !

The following two tabs change content below.

דוד יצחק

דוד יצחק , DBA אפליקטיבי ותשתיתי של SQL Server, Oracle ,Sybase Anywhere מזה 17 שנה עם התמחות בשיפור ביצועים, שרידות, זמינות גבוהה, רפלקציה, תוספים גיאוגרפיים, אבטחת מידע ו-Business Intelligence. הוא מרכז את פורום DBA צפון של ilOUG ומרצה בפורום משתמשי SQL Server.

תגובה אחת ל- “MongoDB ל DBA ומפתחים הלכה למעשה”

[…] בחלק הקודם הצגתי לכם את היתרונות העיקריים של MongoDB וקצת מבוא ל-JSON ו-BSON. בחלק הזה נתחיל לדבר קצת על התכלס: איך מתקינים, איך מתחילים לעבוד ואיך מעלים את שרת ה-MongoDB. במאמר נדבר על התקנה בסביבה של Windows אבל חשוב לציין ש-MongoDB קיים גם ב-Linux (ואפילו יותר נפוץ בו). […]

השאר תגובה:

שם (חובה):
אימייל (לא יפורסם) (חובה):
תגובה (חובה):

*



מאמרים קשורים

http://hadoop.apache.org

עולם ה-Big Data ופתרון ה- Hadoop

זהר אלקיים במאמר מעניין בנושא Big Data [...]
Copyright 2017 ilDBA Portal. Brought to you by Brillix - Israel Leading DBA company. Sponsored by: DBSnaps - Database Video Tutorialss
Website Security Test
%d בלוגרים אהבו את זה: