מדריך MongoDB: יבוא וייצוא

כך מייצאים ומייבאים מסדי נתונים, collections או אפילו חלקים מ-collections באמצעות mongodump

במדריך הקודם דיברנו על GridFS – כיצד מאחסנים קבצים עם MongoDB. במדריך הזה אנו נדבר על ייבוא וייצוא של MongoDB ממכונה אחת למכונה שניה. ייבוא וייצוא נעשים לכמה מטרות – לעתים זה חלק מתהליך deployment – כלומר מעבר מסביבה אחת לאחרת. לעתים זה למטרות גיבוי.

ב-MongoDB, בדומה ל MySQL, יש שימוש בכלים חיצוניים על מנת לייצא ולייבא. כל הדוגמאות הן בלינוקס, אך מי שעקב אחרי המדריכים הקודמים שלי על MongoDB יודע שאת כל הדוגמאות מלינוקס אפשר להעתיק לחלונות – איך? פותחים cmd, הולכים אל התיקיה שהצבנו בה את MongoDB בהליך ההתקנה ומשם מריצים את הפקודה של לינוקס בצירוף exe. – אם למשל הפקודה בלינוקס היא mongorestore, בחלונות הפקודה תהיה mongorestore.exe. קל ופשוט, לא?
האמת שהכי קל זה פשוט לעבוד עם לינוקס. אם אתם לא עובדים עם דוט.נט, אז באמת אין שום סיבה שלא תעבדו עם לינוקס. זה פשוט ואפשר לעשות את זה עם Virtual Machine.

אחרי ההטפה – איך מייצאים? די בקלות. יש לנו שתי דרכים לבצע ייצוא – הראשונה והאמינה יותר היא mongodump שמייצרת לנו קבצי JSON ו-BSON. מה הבעיה? שקבצי ה-JSON הם קבצים שכוללים מידע לא סטנדרטי ולפיכך מערכות אחרות (לא MongoDB) יתקשו להתמודד איתם. אם אתם רוצים להעביר מ-MongoDB ל-MongoDB זו השיטה.
במידה ואתם רוצים JSON או CSV נקי – תצטרכו להשתמש ב-mongorestore שדומה מאוד מבחינת השימוש ל-mongodump, אבל הוא עלול להוציא קבצים שונים מעט ממה שיש במערכת שלכם – במיוחד אם יש לכם מידע מיוחד.

איך משתמשים? פשוט כותבים mongodump והוא ישפוך לכם את כל מסדי הנתונים לתוך תיקית dump מהמקום שהרצתם אותו. אחרי הייצוא, בתיקיה תראו שיש הרבה תיקיות – כל אחת ייחודית למסד הנתונים ובכל תיקיה, הס פן תעיר, ישנים להם קבצי ה-collection – שהם קבצי BSON ו-JSON. האחד הוא בינארי (BSON) והשני הוא JSON.

ואם אני רוצה לייצא רק מסד נתונים אחד ולא את כולם? מאוד פשוט:


mongorestore -d test

השורה שלעיל תייצא רק את מסד הנתונים test.

רגע, ומה אם אני רוצה רק collection?


mongodump -d test -c pages

רגע! ומה אם אני לא רוצה את כל ה-collection אלא רק documents שעונים לתנאי מסוים? למשל רק כאלו שה-title שלהם נגמר ב"61".


mongodump -d test -c pages -q '{"title":/61$/}'

רגע! ומה אם אני רוצה לקבוע לאן הקובץ יגיע? ואני רוצה גם שהוא ישטוף לי את הבית ויעשה לי מסאז' תוך כדי?

את כל זה ועוד אפשר לדעת אם עושים mongodump –help או מסתכלים בדוקומנטציה של mongodump. אפילו שלא הייתי בונה על שטיפת הבית או מסאז'.

אחרי שייצאנו, הגיע הזמן לייבא! איך מייבאים? מאוד פשוט – mongorestore. באותו מקום שיש בו את תיקית ה-dump. אם אתם לא במקום שבו יש את תיקית ה-dump, אז אפשר לעשות משהו בסגנון הזה:


mongorestore www/dump/test/

יש עוד כמה וכמה אפשרויות ל-mongorestore. איפה מוצאים אותן? אתם כבר יודעים איפה. או בדוקומנטציה של mongorestore או פשוט להקליד mongorestore –help.

כיף כיף כיף!

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

במאמר הבא נדבר על איך משתמשים ב-MongoDB ב-PHP.

פוסטים נוספים שכדאי לקרוא

DALL·E 2024-09-06 12.34.24 - A visually engaging post about Python and cryptographic problems. The image should feature a dark-themed background with a glowing, futuristic Python
פתרונות ומאמרים על פיתוח אינטרנט

בעיות במימוש של פונקציות קריפטוגרפיות בפייתון

היום (16 לספטמבר) ממש, אני מעביר הרצאה ב-PyconIL 2024 על בעיות קריפטוגרפיות באפליקציות פייתון. לצערי אי אפשר להכניס את כל הבעיות הקריפטוגרפיות להרצאה אחת או

רספברי פיי

הרצת גו על רספברי פיי

עולם הרספברי פיי והמייקרים ניתן לתפעול בכל שפה – לא רק פייתון או C – כאן אני מסביר על גו

גלילה לראש העמוד