מדריך למפתחים: שייקון מסד נתונים עם MongoDB

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

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

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

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

אסטרטגיות שיערוך

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

  • שיערוך מבוסס טווח: הנתונים מחולקים על פי טווח ערכים ספציפי (למשל, משתמשים עם מזהה 1-1000 בשירד 1, משתמשים עם מזהה 1001-2000 בשירד 2).
  • חלוקה מבוססת חשיש: פונקציית חשיש מופעלת על תכונה ספציפית (למשל, מזהה משתמש), והתוצאה קובעת לאיזה חלוקת הנתונים שייכים. שיטה זו מבטיחה פיזור מאוזן של הנתונים בין החלקים.
  • חלוקה מבוססת קבצי קצה: שירות חיפוש נפרד או טבלה משמשים לקביעה לאיזה חלוקת נתונים שייך נתון מסוים. גישה זו מספקת גמישות בהוספה או הסרה של חלקים אך עשויה להוסיף שכבה נוספת של מורכבות.
  • חלוקה מבוססת גיאוגרפיה: הנתונים מחולקים על פי המיקום הגיאוגרפי של המשתמשים או המשאבים, מה שמפחית את העיכוב עבור משתמשים מפוזרים גיאוגרפית.

יישום חלוקה ב-MongoDB

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

1. הגדר שרת תצורה

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

Shell

 

mongod --configsvr --dbpath /data/configdb --port 27019 --replSet configReplSet

2. התחל את קבוצת שרתי התצורה

פקודה זו מתחילה קבוצת שרתים חדשה על מופע MongoDB המתנהל בפורט 27019.

Shell

 

mongo --port 27019

> rs.initiate()

3. הגדר שרתי חלוקה

התחל כל שרת חלוקה עם האפשרות --shardsvr ו--dbpath ייחודי.

Shell

 

mongod --shardsvr --dbpath /data/shard1 --port 27018

mongod --shardsvr --dbpath /data/shard2 --port 27017

4. הפעל את תהליך mongos

התהליך mongos פועל כנתב בין הלקוחות לבין המבנה המפולג.

Shell

 

mongos --configdb configReplSet/localhost:27019

5. התחברו למצב mongos והוסיפו את המפזרים

Shell

 

mongo
> sh.addShard("localhost:27018")
> sh.addShard("localhost:27017")

6. הפעלו מפזרות עבור מסד נתונים ספציפי ואוסף

Shell

 

> sh.enableSharding("myDatabase")
> sh.shardCollection("myDatabase.myCollection", {"userId": "hashed"})

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

סיכום

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

שמחים בלמידה!!

Source:
https://dzone.com/articles/a-developers-guide-to-database-sharding-with-mongo