هر آنچه در رابطه با پایگاه داده MongoDB باید بدانید
پایگاه داده MongoDB یک نوع پایگاه داده بدون اسکیما و غیررابطهای (NoSQL) میباشد که به صورت مستند و از نوع اسناد (Document) دادهها را ذخیره میکند. MongoDB از مدل دادهای “اسناد” استفاده میکند که به صورت اشیاء JSON شبیه سازی شدهاند، به این معنی که دادهها به صورت ترکیبهایی از فیلدها ذخیره میشوند که میتوانند انواع مختلف داده از جمله متن، عدد، تاریخ و غیره را نمایش دهند.
ویژگیهای مهم MongoDB شامل موارد زیر میشوند:
۱. مقیاسپذیری افقی (Horizontal Scalability): MongoDB قابلیت مقیاسپذیری افقی را دارد، به این معنی که میتوان به راحتی سرورهای جدید را به سیستم اضافه کرد تا عملکرد و ظرفیت آن افزایش یابد.
۲. انعطافپذیری در طراحی دادهها: MongoDB اجازه میدهد تا ساختار دادهها به تطبیق نیازهای اپلیکیشن تغییر کند، بدون نیاز به تغییرات شمایی (Schemaless) پایگاه داده.
۳. پرفورمنس بالا: به خاطر معماری خود، MongoDB سریع و کارآمد در عملیات دستیابی و درخواستهای ساده است.
۴. پشتیبانی از پرسوجوهای پیشرفته: MongoDB امکان پرسوجوهای پیچیدهتری را از جمله پرسوجوهای مبتنی بر مکان (GeoSpatial Queries) و پرسوجوهای تجمیعی (Aggregation Queries) فراهم میکند.
۵. پشتیبانی از توزیع مکانی داده (Geographic Distribution): MongoDB میتواند دادهها را در مناطق مختلف فیزیکی جهان توزیع کند و این امر برای اپلیکیشنهایی که به تعامل با کاربران در نواحی مختلف نیاز دارند بسیار مفید است.
از MongoDB برای انواع مختلف اپلیکیشنها، از جمله وبسایتها، اپلیکیشنهای موبایل، اپلیکیشنهای تجارت الکترونیک، تجزیه و تحلیل داده، و بسیاری موارد دیگر، استفاده میشود.
تاریخچه MongoDB
MongoDB در سال ۲۰۰۷ توسط شرکت “۱۰gen” (که اکنون به نام “MongoDB, Inc.” شناخته میشود) توسعه داده شد. این پایگاه داده با توجه به نیازهای مدرن و امکانات پیشرفته طراحی شد تا باعث ارتقاء کارایی و مقیاسپذیری برای اپلیکیشنهای مدرن شود. در ادامه مهمترین مراحل تاریخچه MongoDB آمده است:
۱. تأسیس ۱۰gen و آغاز توسعه (۲۰۰۷): شرکت ۱۰gen توسط الیاسن دورسکی (Eliot Horowitz) و دوان ویکی (Dwight Merriman) تأسیس شد. آنها ابتدا به ایجاد پایگاه دادهای که با مشکلاتی که در دیتابیسهای رابطهای مواجه بودند مقابله میکند، فکر کردند.
۲. نسخه اولیه (۲۰۰۹): نسخه اولیه MongoDB در سال ۲۰۰۹ منتشر شد. این نسخه ابتدا برای استفاده داخلی توسعهدهندگان در ۱۰gen ایجاد شد.
۳. تأیید اولیه از سوی جامعه (۲۰۱۰): پس از انتشار نسخه اولیه، MongoDB به سرعت جذب توجه توسعهدهندگان و جامعه متنباز شد. این دیتابیس به عنوان یک ابزار مدرن و مقیاسپذیر به شدت توسط شرکتها و توسعهدهندگان مورد توجه قرار گرفت.
۴. رشد و انتشار نسخههای جدید (۲۰۱۰-۲۰۲۰): در دهه اول از تأسیس، MongoDB رشد قابل توجهی داشت و نسخههای جدید با امکانات پیشرفته و بهبودهای عمده ارائه شد. این پایگاه داده به یکی از محبوبترین پایگاههای داده NoSQL در جهان تبدیل شد.
۵. IPO و رشد تجاری (۲۰۲۰ و بعد): در سال ۲۰۲۰، MongoDB, Inc. به بورس نیویورک رفت. MongoDB همچنان به عنوان یکی از ابزارهای محبوب برای ذخیرهسازی دادههای نسل جدید و اپلیکیشنهای مقیاسپذیر شناخته میشود.
به عنوان یک دیتابیس پرتوان، MongoDB از جامعهی فعال توسعهدهندگان و سازمانهایی که از آن به عنوان ابزار اصلی برای مدیریت دادهها استفاده میکنند، بهرهمند شده است.
آموزش نصب MongoDB در لینوکس
در این قسمت تصمیم داریم نحوه نصب پایگاه داده mongodb را در سیستم عامل اوبونتو آموزش دهیم. دستورات زیر را به ترتیب وارد نمایید:
$sudo apt update
$sudo apt upgrade
$sudo apt-key adv –keyserver hkp://keyserver.ubuntu.com:80 –recv 4B7C549A058F8B6B
$echo “deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu $(lsb_release -cs)/mongodb-org/4.4 multiverse” | sudo tee $/etc/apt/sources.list.d/mongodb-org-4.4.list
$sudo apt update
$sudo apt install -y mongodb-org
$sudo systemctl start mongod
$sudo systemctl enable mongod
آموزش پیکربندی MongoDB
پیکربندی MongoDB شامل تنظیمات مرتبط با تنظیمات پایگاه داده، امنیت، مدیریت کاربران، شبکه و دیگر پارامترهاست. در ادامه، نحوه پیکربندی MongoDB را در یک توزیع معمول لینوکسی (مثل Ubuntu) آموزش میدهیم:
۱. پیکربندی فایل تنظیمات MongoDB:
فایل تنظیمات اصلی MongoDB برای توزیعهای مبتنی بر Debian (مانند Ubuntu) در مسیر `/etc/mongod.conf` قرار دارد. با ویرایش این فایل، میتوانید تنظیمات مورد نیاز خود را تغییر دهید. میتوانید از ویرایشگر متنی مانند Nano یا Vim استفاده کنید:
$sudo vim /etc/mongod.conf
در داخل این فایل، میتوانید تنظیماتی مانند مسیر دادهها، آدرس IPهایی که MongoDB به آنها گوش میدهد، پورت، راهاندازی مجدد پایگاه داده و موارد مشابه را تنظیم کنید.
همانطور که گفتیم فایل تنظیمات mongod.conf حاوی تنظیمات مربوط به پایگاه داده MongoDB میباشد. در این فایل میتوانید پارامترها و تنظیمات مختلفی را تغییر دهید که بر روی عملکرد و امنیت MongoDB تأثیر میگذارند. در زیر، مهمترین تنظیماتی که در فایل `mongod.conf` قرار میگیرند، آورده شده است:
۱. storage.dbPath: مسیر فیزیکی برای ذخیره دادههای MongoDB. این تنظیم باید به یک مکانی با دسترسی خوب و فضای کافی در سیستمتان اشاره کند.
۲. systemLog.path: مسیر فایل لاگ MongoDB. در اینجا لاگهایی که توسط MongoDB ایجاد میشوند ذخیره میشوند.
۳. net.port: پورتی که MongoDB برای شنیدن اتصالها باید استفاده کند. پورت پیشفرض ۲۷۰۱۷ است.
۴. bindIp: آدرس IP که MongoDB باید به آن گوش کند. میتوانید مقدار “۰.۰.۰.۰” را برای شنیدن از تمام آدرسهای IP سیستم و یا آدرس مشخصی مانند “۱۲۷.۰.۰.۱” را برای شنیدن تنها از لوکال هاست تنظیم کنید.
۵. security.authorization: این تنظیم به شما اجازه میدهد تا روش احراز هویت (authentication) و مجوزها (authorization) را تنظیم کنید. مقدار “enabled” برای فعال کردن احراز هویت توصیه میشود.
۶. security.keyFile: مسیر فایل کلید برای تنظیمات ترکیبی رمزگذاری در محیط توزیعهای توانی و غیر رمزگذاری (replica sets) و مشابه.
۷. replication.replSetName: اگر شما یک replica set را پیکربندی میکنید، باید نام آن را اینجا تعیین کنید. Replica Set یک مدل توزیعی برای ایجاد اعتبارپذیری و ردیابی پایداری دادهها است. در این مدل، مجموعهای از اینستانسهای MongoDB به نام “نودها” (nodes) که هر کدام میتوانند از نظر فیزیکی در مکانهای مختلف قرار گیرند، با یکدیگر هماهنگ میشوند تا یک کپی همگام از دادهها (replica) را نگهداری کنند. همچنین یکی از نودها به عنوان “Primary” انتخاب میشود تا درخواستهای نوشتاری را پردازش کند و تغییرات را به بقیه نودها انتقال دهد.
۸. storage.engine: موتور ذخیرهسازی که MongoDB باید استفاده کند. انتخابهای معمول شامل “wiredTiger” و “mmapv1” هستند.
۹. operationProfiling.mode: اگر شما میخواهید MongoDB برای پروفایل عملکرد استفاده شود، میتوانید این تنظیم را فعال کنید و حالت را تعیین کنید.
این فقط چند مثال از تنظیماتی است که در فایل `mongod.conf` قرار میگیرند. برای تنظیمات کامل و دقیقتر، به مستندات رسمی MongoDB و نیازهای خاص پروژهی شما مراجعه کنید. همچنین توجه داشته باشید که پس از تغییر تنظیمات، باید سرویس MongoDB را مجدداً راهاندازی کنید تا تغییرات اعمال شوند.
نمونهای از یک کانفیگ فایل mongod.conf را در زیر مشاهده مینمایید:
mongod.conf
storage:
dbPath: /var/lib/mongodb
journal:
enabled: true
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
net:
port: 27017
bindIp: 171.24.2.80
processManagement:
timeZoneInfo: /usr/share/zoneinfo
security:
authorization: “enabled”
۲. راهاندازی مجدد MongoDB:
پس از اعمال تغییرات در فایل تنظیمات، باید سرویس MongoDB را مجدداً راهاندازی کنید تا تغییرات اعمال شوند:
$sudo systemctl restart mongod
۳. مدیریت کاربران MongoDB:
برای ایجاد و مدیریت کاربران در MongoDB، از خط فرمان `mongo` به عنوان کلاینت MongoDB استفاده کنید:
$mongo
درون محیط `mongo`، میتوانید دستوراتی برای مدیریت کاربران، دسترسیها و تنظیمات امنیتی دیگر اجرا کنید.
کار کردن با کلاینت Mongo
برای مشاهده محتویات داخل MongoDB میتوانید از کلاینت MongoDB مثل `mongo` یا از ابزارهای دیگری که با MongoDB ارتباط برقرار میکنند، استفاده کنید. در اینجا از کلاینت `mongo` برای نمونه استفاده میکنیم.
۱. اجرای کلاینت mongo:
#mongo
این دستور به شما اجازه میدهد به محیط کلاینت MongoDB وصل شوید و دستورات MongoDB را اجرا کنید. البته اگر این دیتابیس داری یوزنیم و پسورد باشد و تنها به آی پی خودش پاسخ دهد، باید از دستوری مانند دستور زیر استفاده نمایید:
#mongo –host 127.0.0.1 –username <username> –password <password>
۲. نمایش دیتابیسها:
برای مشاهده دیتابیسهای موجود در MongoDB، از دستور زیر در کلاینت `mongo` استفاده کنید:
#show dbs
این دستور تمام دیتابیسهایی که در MongoDB وجود دارند را نمایش میدهد.
۳. انتخاب دیتابیس:
برای انتخاب یک دیتابیس برای کار، از دستور زیر استفاده کنید (مثلاً انتخاب دیتابیس با نام “mydatabase”):
#use mydatabase
۴. نمایش کالکشنها:
کالکشنها در دیتابیسها مشابه جداول در پایگاه دادههای رابطهای هستند. برای نمایش کالکشنهای موجود در دیتابیس انتخابشده، از دستور زیر استفاده کنید:
#show collections
۵. نمایش محتویات کالکشن:
برای نمایش محتویات یک کالکشن، از دستور `find()` استفاده میکنیم. به عنوان نمونه، اگر دیتابیس “mydatabase” و کلکشن “mycollection” با دادهها وجود داشته باشد:
#db.mycollection.find()
این دستور تمام مستندات (documents) موجود در کالکشن “mycollection” را نمایش میدهد.
توجه داشته باشید که این فقط یک مقدمه اولیه به نمایش محتویات MongoDB است. شما میتوانید از دستورات پیچیدهتر برای جستجو، فیلترینگ و تغییر دادهها استفاده کنید. به مستندات MongoDB مراجعه کرده و با دستورات مختلف آشنا شوید تا بتوانید به بهترین شکل از MongoDB استفاده کنید.
چه کاربری به چه دیتابیسی چه دسترسی دارد؟
برای اینکه متوجه شوید که چه کاربری به چه دیتابیسی در mongo دسترسی دارد، دستورات زیر را وارد نمایید:
#mongo
#show dbs
#use <database>
#db.getUsers()
آموزش بکاپ گیری از MongoDB
برای ایجاد پشتیبان از دیتابیس MongoDB میتوانید از ابزار mongodump استفاده کنید. این ابزار به شما اجازه میدهد که نسخه پشتیبان از دادههای MongoDB را ایجاد کنید. در ادامه، نحوه استفاده از ابزار mongodump برای ایجاد بکاپ دیتابیس MongoDB را نشان میدهیم:
۱. اجرای دستور mongodump:
برای ایجاد بکاپ از دیتابیس MongoDB، از دستور mongodump در ترمینال یا خط فرمان استفاده کنید. این دستور به صورت زیر است:
#mongodump –db <database-name> –out <output-directory>
در این دستور:
- <database-name>: نام دیتابیسی که میخواهید بکاپ بگیرید را وارد کنید.
- <output-directory>: مسیر دایرکتوری که میخواهید فایلهای بکاپ در آن ذخیره شوند را تعیین کنید. بکاپ به یک زیردایرکتوری با نام دیتابیس ایجاد میشود.
به عنوان مثال، اگر میخواهید از دیتابیس با نام “mydatabase” بکاپ بگیرید و فایلهای بکاپ را در دایرکتوری “/backup” ذخیره کنید، دستور زیر را اجرا کنید:
#mongodump –db mydatabase –out /backup
۲. مشاهده فایلهای بکاپ:
پس از اجرای دستور بالا، فایلهای بکاپ به یک زیردایرکتوری با نام دیتابیس شما (در این مثال “mydatabase”) در مسیر مشخص شده (در این مثال “/backup”) ذخیره میشوند. میتوانید به این دایرکتوری بروید و فایلهای بکاپ را بررسی کنید.