בחלק הקודם הצגתי לכם את היתרונות העיקריים של MongoDB וקצת מבוא ל-JSON ו-BSON. בחלק הזה נתחיל לדבר קצת על התכלס: איך מתקינים, איך מתחילים לעבוד ואיך מעלים את שרת ה-MongoDB. במאמר נדבר על התקנה בסביבה של Windows אבל חשוב לציין ש-MongoDB קיים גם ב-Linux (ואפילו יותר נפוץ בו).
התקנה של MongoDB ושימוש ב Shell
המבנה של MongoDB דומה לזה של RSBMS: לשניהם יש database. טבלה ב RDBMS מקבילה ל-Collection ב MongoDB כאשר שורה ב RDBMS הוא document ב MongoDB. ב-Mongo shell ניתן לרשום פקודות Database שונות: למשל פקודות ספירה (count) שמוצאת את מספר ה documents ב collection. בנוסף, ניתן לבצע פקודות אדמיניסטרציה כמו הפקודה copydb המעתיקה DB Instance. בהמשך אדגים נראה כיצד מבצעים מתוך ה-shell ניהול ה DB ואחזור נתונים ב 3 אופנים:
- Database commands
- Mongo shell JavaScript helper methods
- Mongo shell help methods
התקנה של MongoDB 3.2.0, Standalone
לצורך הנוחות נדגים במאמר זה עבודה עם MongoDB על גבי Windows, כך שתוכלו לתרגל זאת במחשב האישי שלכם. קובץ ההתקנה של MongoDB 3.2. עבור מערכת הפעלה Windows הוא mongodb-win32-x86_64-2008plus-ssl-3.2.0-signed.msi. בכול מקרה יש להוריד את הגרסה המתאימה מהכתובת :
http://www.mongodb.org/downloads
במידה והייתה התקנה קודמת של MongoDB ויצרו Service עבור MongoDB יש לבצע לו stop לפני ההתקנה. רק אז יתאפשר לגשת למחיצה בה מותקנים קבצי ה Data וה Log של MongoDB ולבצע לה שינוי שם או מחיקה.
ההתקנה תעשה באופן הבא : יש לבחור בקובץ ההתקנה, מקש ימני ולבחור ב Run As Administrator. ההתקנה היא פשוטה. בסיום ההתקנה יש להוסיף את מחיצת ה Bin ש ל MongoDB למשתנה path של מערכת ההפעלה (למשל D:\Program Files\MongoDB\Server\3.2\bin).
מחיצת ה- Bin של MongoDB
לאחר ההתקנה של MongoDB, במחיצת ה- bin, בדוגמא D:\Program Files\MongoDB\Server\3.2\bin, יהיה קבצי האפליקציה הבאים, שזהים עבור Linux ו- Windows. הנה הפירוט שלהם בקצרה :
Application Function ----------- --------------------------------------------------------------- bsondump Reads contents of BSON-formatted rollback files. mongo The database shell. mongod The core database server. mongodump Database backup utility. mongoexport Export utility (JSON, CSV, TSV), not reliable for backup. mongofiles Manipulates files in GridFS objects. mongoimport Import utility (JSON, CSV, TSV), not reliable for recoveries. mongooplog Pulls oplog entries from another mongod instance. mongoperf Check disk I/O performance. mongorestore Database backup restore utility. mongos Mongodb shard process. mongosniff Sniff/traces MongoDB database activity in real time, Unix-like systems only. mongostat Returns counters of database operation. ngotop Tracks/reports MongoDB read/write activities. mongorestore Restore/import utility.
הרצה של MongoDB Enterprise
הקמת הסביבה
מחיצת ההתקנה של MongoDB היא D:\Program Files\MongoDB\Server\3.2.MongoDB דורש מחיצה עבור המידע. מחיצת ברירת מחדל היא \data\db. אנחנו ניצור את המחיצות הבאות ידנית או ע"י הפקודה md.
מחיצה עבור קובץ הקונפיגורציה :
D:\mongodb
מחיצה עבור קבצי ה- DBs :
D:\mongodb\data\db
מחיצה עבור קובץ ה- log :
D:\mongodb\data\log
אפשר להגדיר מחיצה אלטרנטיבית ע"י האופציה –dbpathשל mongod.exe. דוגמא :
D:\mongodb\bin\mongod.exe --dbpath d:\test\mongodb\data
אם שם הנתיב מכיל רווחים, יש להשתמש בגרשיים כפולים. דוגמא :
D:\mongodb\bin\mongod.exe --dbpath "d:\test\mongo db data"
אפשר לציין את dbpath בקובץ הקונפיגורציה. בהמשך.
העלאה תהליך MongoDB ה- Database
בשביל להתחיל את רכיב השרת הראשי של MongoDB database שנקרא mongod, יש להריץ את mongod.exe מ – cmd. במקרה שלנו :
"D:\Program Files\MongoDB\Server\3.2\bin\mongod.exe"
אנו נעלה את רכיב השרת עם הערכים המתאימים עבור הפרמטרים –dbpath ו –logpath באופן הבא :
C:\>"D:\Program Files\MongoDB\Server\3.2\bin\mongod.exe" --dbpath=D:\mongodb\data\db --logpath D:\mongodb\log\mongod.log
אם זה לא פעם ראשונה שהעלינו את התהליך של mongodb, לקובץ ה Log הקודם יתבצע שינוי שם ותוספת התאריך, וייווצר קובץ mongod.log חדש במחיצה D:\mongodb\log. נקבל את ההודעה הבאה :
2016-01-06T11:38:10.769+0200 I CONTROL [main] log file "D:\mongodb\log\mongod.log" exists; moved to "D:\mongodb\log\mongod.log.2016-01-06T09-38-10".
אם בסוף קובץ ה log D:\mongodb\log\mongod.log, נקבל את ההודעה waiting for connections זה סימן שהתהליך mongod.exe רץ בהצלחה.
אם לא נשתמש בפרמטרים –dbpath ו –logpath עם ערכי מחיצות שלא קימות נקבל את ההודעה הבאה בחלון ה CMD:
2016-01-05T16:52:06.584+0200 I STORAGE [initandlisten] exception in initAndListen: 29 Data directory D:\db not found., terminating 2016-01-05T16:52:06.584+0200 I CONTROL [initandlisten] dbexit: rc: 100
[h2]יצירה קובץ קונפיגורציה עבור MongoDB[/h2]
הפקדות הבאות מייצרות קובץ קונפיגורציה עם D:\mongodb\mongod.cfg עם הפרמטרים logpath ו dbpath.
echo logpath=D:\mongodb\log\mongod.log > "D:\mongodb\mongod.cfg" echo dbpath= D:\mongodb\data\db >> "D:\mongodb\mongod.cfg"
את תוכן הקובץ mongod.cfg נוכל לראות ע"י הפקודה type באופן הבא :
type "D:\mongodb\mongod.cfg"
[h2]יצירה של MongoDB service[/h2]
אנחנו רוצים ש MongoD יעלה באופן אוטומאטי. אם יצרנו service בשם MongoDB בתקנות קודמות נמחק אותו באופן הבא:
C:\>sc.exe delete mongodb
פלט במידה ונמחק ה service :
[SC] DeleteService SUCCESS
את ה- service של MongoDB ניתן ליצור ע"י הפקודה sc עם האופציה create. מתוך cmd נוכל לראות את האופציות השונות ע"י הרצת הפקודה sc.exe create.
את ה- service של MongoDb נוכל ליצור באופן הבא :
sc.exe create MongoDB binPath= "\"D:\Program Files\MongoDB\Server\3.2\bin\mongod.exe\" --service --config=\"D:\mongodb\mongod.cfg\"" DisplayName= "MongoDB" start= "auto"
אם יצירת ה Service הצליחה הפלט יהיה
[SC] CreateService SUCCESS
את service של MongoDB נוכל להוריד ולהעלות ע"י הפקודות net stop ו net start בהתאמה . דוגמא :
C:\> net start MongoDB The MongoDB service was started successfully. C:\>net stop Mongodb The MongoDB service is stopping.. The MongoDB service was stopped successfully.
מובן שאפשר לבצע את כל הפעילות הנ"ל ב כמובן שאפשר לבצע זאת ב PowerShell. קובץ ה-log מוגדר בפרמטר logpath שמוגדר בקובץ הקונפיגורציה. במקרה שלנו : logpath=D:\mongodb\log\mongod.log . קובץ זה יוןצר מחדש כל פעם שנעלה MongoDB. קובץ ה- log הנוכחי mongod.log, קבצי ה- log הקודמים יהיה בפורמט mongod.log.DDDD-MM-DDTHH-MM-SS למשל : mongod.log.2016-01-05T14-52-06.
כדי לדעת אם MongoDB עלה בהצלחה ניפתח את קובץ ה- log mongod.log. בסופו צ"ל רשום
[initandlisten] waiting for connections on port 27017
אם ננסה להפעיל את mongodb למרות שה- service למעלה נקבל את ההודעה הבאה
2016-01-07T10:00:24.892+0200 E NETWORK [initandlisten] listen(): bind() failed errno:10048 Only one usage of each socket address (protocol/network address/port) is normally permitted. for socket:.0.0:27017
התחברות ל MongoDB ע"י ה Mongo Shell.
בשביל להתחבר ל MongoDB דרך mongo.exe נפתח חלון cmd אחר.
"D:\Program Files\MongoDB\Server\3.2\bin\mongo.exe"
Hotfix KB2731284 or later update is not installed, will zero-out data files
אחת הסיבות לקבלת ההודעה הזו היא ש MongoDB מותקן על מחיצה עם רווחים בשם כמו D:\Program Files\MongoDB\Server\3.2. אם זו הסיבה אפשר להתעלם מההודעה. אם הסיבה לכך היא שהמחיצה D:\data\db לא קיימת, יש ליצור את המחיצה.
בשביל לפתוח mongo shell בלי להתחבר נבצע :
>mongo –nodb
לאחר מכן נפתח Connection ע"י שימוש ב Constructor של JavaScript : Mongo(). בררת המחדל שלו הוא localhost ופורט 27017.
>connection=new Mongo()
getDB() הוא method ב Mongo shell שמאפשר לקבוע עם איזה DB נעבוד. אם בסיס נתונים test לא היה קיים הוא יוותר האופן אוטומאטי.
>db=connection.getDB("test")
שימוש ב Mongo(), שהוא constructor, הוא שימושי אם מתחברים לשרת ופורט שהם לא בררת מחדל. למשל מטעמי אבטחה. לחילופין ניתן להשתמש ב method בשם connect שמאפשרת להתחבר ל MongoDB ב MongoDB Shell אחרי שהתחברנו ל mongo shell עם האופציה mongo –nodb.
>db = connect("localhost:27017/test");
דוד יצחק
Latest posts by דוד יצחק (see all)
- MongoDB ל DBA ומפתחים הלכה למעשה – חלק ב - 16/02/2016
- MongoDB ל DBA ומפתחים הלכה למעשה - 07/02/2016
- בדיקת ביצועים של Clustered ColumnStore Index - 06/11/2014
השאר תגובה: