نحوه نصب MongoDB 5 در اوبونتو 20.04 | 18.04
نحوه نصب MongoDB 5 در اوبونتو 20.04 | 18.04 … MongoDB یکی از سرورهای محبوب پایگاه داده NoSQL است که در توسعه برنامه های پویا مدرن استفاده می شود. از اسناد JSON مانند و طرحواره های اختیاری استفاده می کند. اشیاء داده به عنوان اسناد جداگانه در یک مجموعه ذخیره می شوند، برخلاف ردیف ها و ستون های مورد استفاده در پایگاه های داده رابطه ای سنتی. MongoDB بسیار مقیاس پذیر و انعطاف پذیر است و پرس و جو و نمایه سازی آسان را برای توسعه دهندگان ارائه می دهد. با توجه به مقیاس افقی و قابلیت های تعادل بار، MongoDB بالاترین سطوح انعطاف پذیری و مقیاس پذیری را به توسعه دهندگان ارائه کرده است. MongoDB Atlas یک سرویس پایگاه داده ابری است و پیشرو در توسعه برنامه های کاربردی مدرن است و می تواند پایگاه داده های ابری کاملاً مدیریت شده را در Azure، AWS یا Google Cloud مستقر کند.
MongoDB هم یک نسخه جامعه را ارائه می دهد که برای دانلود و استفاده رایگان است و هم یک نسخه Enterprise که بخشی از اشتراک MongoDB Enterprise Advanced است. این نسخه Enterprise شامل پشتیبانی جامع برای استقرار MongoDB شما میشود و ویژگیهای متمرکز سازمانی مانند پشتیبانی LDAP و Kerberos، رمزگذاری روی دیسک و ممیزی را ارائه میدهد.

نحوه نصب MongoDB 5 در اوبونتو 20.04 | 18.04
ویژگی ها و مزایای پایگاه داده MongoDB
- مقیاس پذیری و انعطاف پذیری بالا را ارائه می دهد. failover خودکار و افزونگی داده ها
- یک زبان پرس و جوی رسا ارائه می دهد که یادگیری و استفاده از آن ساده است
- پرس و جوهای Ad-hoc برای تجزیه و تحلیل زمان واقعی
- از آرایه ها و اشیاء تودرتو به عنوان مقادیر پشتیبانی می کند و امکان طرحواره های انعطاف پذیر و پویا را فراهم می کند.
- نوشتن پرسشهایی که امکان مرتبسازی و فیلتر کردن را فراهم میکنند، مهم نیست که چقدر تو در تو باشد، آسان است و از تجمع، مکان جغرافیایی، سریهای زمانی، جستجوی نمودار و موارد دیگر پشتیبانی میکند.
- از تقسیمبندی پشتیبانی میکند که امکان تقسیم مجموعههای داده بزرگ را در مجموعههای توزیعشده چندگانه فراهم میکند که سپس پرسوجو را آسان میکند.
- پشتیبانی از چندین موتور ذخیره سازی
ویژگی های جدید MongoDB 50
MongoDB 5.0 آخرین نسخه منتشر شده در 13 جولای 2021 است. تعدادی اصلاحات از نسخه های قبلی و همچنین برخی ویژگی های اضافی وجود دارد که می توانید همه آنها را در یادداشت های انتشار رسمی MongoDB 5.0 بیابید . برخی از ویژگی های اضافی عبارتند از:
- معرفی مجموعههای سری زمانی که به طور موثر توالی اندازهگیریها را در یک دوره زمانی ذخیره میکنند.
- منسوخ شدن عملیات کاهش نقشه.
- معرفی عملگرهای جدید تجمع مانند $dateAdd، $dateDiff، $dateSubtract، $getField، $rand و بسیاری دیگر. سند مستندات را بررسی کنید.
- معرفی مرحله خط لوله $setWindowFields که امکان انجام عملیات بر روی یک گستره مشخص از اسناد در یک مجموعه را که به عنوان پنجره شناخته می شود، می دهد.
- قابلیت پیکربندی فیلترهای ممیزی در زمان اجرا را اضافه کنید.
MongoDB 5 را در اوبونتو 20.04 نصب کنید| 18.04
مراحل زیر ما را راهنمایی می کند که چگونه می توانیم MongoDB 5.0 را در اوبونتو 20.04 و اوبونتو 18.04 نصب کنیم.
مرحله 1: کلید MongoDB GPG را وارد کنید
ابتدا باید کلید GPG عمومی MongDB را به صورت زیر وارد کنیم:
$ wget -qO - https://www.mongodb.org/static/pgp/server-5.0.asc | sudo apt-key add -
OK
در صورت دریافت خطا مبنی بر عدم وجود gnup، می توانید با اجرای دستور زیر آن را نصب کنید و سپس دوباره کلید را اضافه کنید.
sudo apt update
sudo apt-get install gnupg
مرحله 2: افزودن مخزن MongoDB در اوبونتو 20.04/18.04
برای اینکه بتوانیم MongoDB را با apt نصب کنیم، باید مخزن MongoDB را اضافه کنیم.
اوبونتو 20.04:
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/5.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-5.0.list
اوبونتو 18.04:
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/5.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-5.0.list
مرحله 3: نصب MongoDB 5.0 در اوبونتو 20.04|18.04
ما قبلاً MongoDB GPG و مخزن را اضافه کرده ایم، به نصب MongoDB ادامه می دهیم. ابتدا بسته ها را به روز کنید
sudo apt-get update
sudo apt-get install -y mongodb-org
اگر می خواهید نسخه خاصی از MongoDB را نصب کنید، می توانید نسخه را مطابق شکل زیر ارسال کنید.
sudo apt-get install -y mongodb-org=5.0.2 mongodb-org-database=5.0.2 mongodb-org-server=5.0.2 mongodb-org-shell=5.0.2 mongodb-org-mongos=5.0.2 mongodb-org-tools=5.0.2
مرحله 4: MongoDB 5.0 را در اوبونتو 20.04/18.04 راه اندازی کنید
پس از اتمام مراحل نصب، شروع به شروع و فعال کردن MongoDB کنید
sudo systemctl start mongod
تأیید کنید که MongoDB واقعاً در حال اجرا است
$ systemctl status mongod
● mongod.service - MongoDB Database Server
Loaded: loaded (/lib/systemd/system/mongod.service; disabled; vendor prese>
Active: active (running) since Tue 2021-08-24 15:42:58 UTC; 11s ago
Docs: https://docs.mongodb.org/manual
Main PID: 14497 (mongod)
Memory: 61.6M
CGroup: /system.slice/mongod.service
└─14497 /usr/bin/mongod --config /etc/mongod.conf
Aug 24 15:42:58 lorna-ubuntu20 systemd[1]: Started MongoDB Database Server.
نسخه MongoDB را تایید کنید
$ mongod --version
db version v5.0.2
Build Info: {
"version": "5.0.2",
"gitVersion": "6d9ec525e78465dcecadcff99cce953d380fedc8",
"openSSLVersion": "OpenSSL 1.1.1f 31 Mar 2020",
"modules": [],
"allocator": "tcmalloc",
"environment": {
"distmod": "ubuntu2004",
"distarch": "x86_64",
"target_arch": "x86_64"
}
}
سپس می توانید MongoDB را فعال کنید تا به طور خودکار در راه اندازی مجدد سیستم شروع شود.
$ sudo systemctl enable mongod
Created symlink /etc/systemd/system/multi-user.target.wants/mongod.service → /lib/systemd/system/mongod.service.
مرحله 5: MongoDB 5.0 را در اوبونتو پیکربندی کنید
فایل پیکربندی MongoDB در /etc/mongod.conf یافت می شود . در اینجا، تنظیمات مربوط به مسیر db، مسیر logs را پیدا خواهید کرد. شما بسته به نیازهای نصب شما همیشه تغییراتی در این فایل ایجاد می کند. هر بار که تغییری در فایل ایجاد می کنید، سرویس mongod را مجددا راه اندازی کنید.
Mongodb احراز هویت رمز عبور را فعال کنید
بیایید احراز هویت رمز عبور mongodb را فعال کنیم تا کاربران بتوانند با یک رمز عبور برای خواندن یا ویرایش پایگاه داده وارد شوند. کامنت #Security را بردارید و محتوا را به شکل زیر اضافه کنید
security:
authorization: enabled
پس از آن سرویس mongod را مجددا راه اندازی کنید
sudo systemctl restart mongod
MongoDB دسترسی از راه دور را فعال کنید
به طور پیش فرض، MongoDB فقط به صورت محلی قابل دسترسی است. اگر میخواهید از راه دور به پایگاه داده دسترسی داشته باشید، تغییر کوچکی در فایل پیکربندی ایجاد میکنیم تا آدرس IP سرور MongoDB یا نام میزبان را مطابق شکل زیر درج کنیم.
# network interfaces
net:
port: 27017
bindIp: 127.0.0.1,mongodb-server-ip/hostname
تغییرات را ذخیره کنید و سرویس mongod را مجددا راه اندازی کنید. همچنین اگر فایروال خود را فعال کرده اید، باید آدرس های IP راه دور قابل اعتماد را در فایروال مجاز کنید.
sudo ufw allow from trusted-server-ip to any port 27017
مرحله 6: ایجاد کاربران و پایگاه داده در MongDB
برای دسترسی به پوسته MongoDB، دستور mongosh را مطابق شکل در ترمینال اجرا کنید
$ mongosh
Using MongoDB: 5.0.2
Using Mongosh: 1.0.5
For mongosh info see: https://docs.mongodb.com/mongodb-shell/
..........
>
برای فهرست کردن پایگاه های داده موجود
> show dbs
admin 135 kB
config 111 kB
local 73.7 kB
نحوه ایجاد کاربر و اضافه کردن نقش در MongoDB
بیایید ببینیم چگونه میتوانیم یک کاربر در MongoDB ایجاد کنیم و به آنها نقشهای مدیریتی و مجوز برای همه پایگاههای داده بدهیم.
> db.createUser({
user: "lorna",
pwd: "MyStrongPsswd",
roles: [{role: "userAdminAnyDatabase" , db: "admin"}]
});
{ ok: 1 }
برای اینکه کاربر اجازه دسترسی به یک پایگاه داده خاص را داشته باشد
db.createUser({
user: "tiff",
pwd: "MyStrongPsswd",
roles: [{role: "userAdmin" , db: "employees"}]
});
برای ایجاد یک پایگاه داده جدید در MongoDB، از دستور use استفاده می کنیم . MongoDB دستور ایجاد را ندارد. به عنوان مثال، یک پایگاه داده جدید به نام ” تست ” ایجاد کنید.
> use employees
switched to db employees
پیشنهاد ویژه قائم هاست خرید سرور مجازی ایران با هارد پرسرعت NVMe و ترافیک نامحدود با نصب و راه اندازی انواع سیستم عامل همچون لینوکس CentOS و Ubuntu با خدمات و پشتیبانی 24 ساعته حتی در ایام تعطیل ؛ جهت مشاوره و سوالات قبل از خرید از طریق ارسال تیکت با ما در ارتباط باشید.
شما باید مقداری اطلاعات را به DB اضافه کنید تا هنگام فهرست کردن پایگاههای داده فهرست شود.
db.Employees.insertOne({name: "hale" , age: 20 , department: "IT"})
{
acknowledged: true,
insertedId: ObjectId("61252c7492f10ccae358d787")
}
MongoDB insertOne و insertMany
توجه داشته باشید که Collection.insert() منسوخ شده است و باید از insertOne ، insertMany یا bulkWrite استفاده کنید.
حالا وقتی پایگاه داده ها را نشان می دهید، db جدید شما نیز باید لیست شود
> show dbs
admin 0.000GB
config 0.000GB
employees 0.000GB
local 0.000GB
مرحله 7: تنظیم MongoDB
هنگامی که MongoDB را نصب کردید، مهم است که مطمئن شوید عملکرد آن در تنظیمات بهینه است. با افزایش اطلاعات، نصب MongoDB ما باید بتواند همانطور که انتظار می رود مدیریت و پردازش کند. پوسته پوسته شدن می تواند هم به صورت افقی و هم به صورت عمودی رخ دهد. مقیاس افقی به معنای افزودن منابع سرور مانند RAM و CPU است در حالی که مقیاس عمودی معرفی سرورهای بیشتر در نصب ما است.
مقیاس عمودی، که در عملکرد کلی mongodb بسیار مهم است، تحت تأثیر عوامل خاصی از جمله موارد زیر است: استفاده از حافظه، تعداد اتصالات همزمان و کش WiredTiger و غیره. حافظه یکی از عوامل مهمی است که عملکرد MongoDB را بسیار تحت تاثیر قرار می دهد. MongoDB از WiredTiger به عنوان موتور ذخیره سازی پیش فرض خود استفاده می کند و بنابراین 50% (حافظه موجود -1) را برای WiredTiger حفظ می کند.
به عنوان مثال، سروری با رم 8 گیگابایتی دارای حافظه 0.5*(8-1) برای WiredTiger خواهد بود. برای بررسی آمار استفاده از حافظه پنهان و تعیین اینکه آیا نیاز به ایجاد تغییرات دارید، دستور زیر را اجرا کنید:
> db.serverStatus().wiredTiger.cache
{
'application threads page read from disk to cache count': 6,
'application threads page read from disk to cache time (usecs)': 46,
'application threads page write from cache to disk count': 184,
'application threads page write from cache to disk time (usecs)': 10501,
'bytes allocated for updates': 65768,
'bytes belonging to page images in the cache': 30285,
'bytes belonging to the history store table in the cache': 571,
'bytes currently in the cache': 104652,
'bytes dirty in the cache cumulative': 2813442,
'bytes not belonging to page images in the cache': 74366,
'bytes read into cache': 28042,
'bytes written from cache': 1283385,
'cache overflow score': 0,
'checkpoint blocked page eviction': 0,
'checkpoint of history store file blocked non-history store page eviction': 0,
'eviction calls to get a page': 2,
'eviction calls to get a page found queue empty': 2,
'eviction calls to get a page found queue empty after locking': 0,
'eviction currently operating in aggressive mode': 0,
'eviction empty score': 0,
'eviction passes of a file': 0,
'eviction server candidate queue empty when topping up': 0,
'eviction server candidate queue not empty when topping up': 0,
'eviction server evicting pages': 0,
'eviction server slept, because we did not make progress with eviction': 0,
'eviction server unable to reach eviction goal': 0,
'eviction server waiting for a leaf page': 0,
'eviction state': 64,
'eviction walk target pages histogram - 0-9': 0,
'eviction walk target pages histogram - 10-31': 0,
'eviction walk target pages histogram - 128 and higher': 0,
'eviction walk target pages histogram - 32-63': 0,
'eviction walk target pages histogram - 64-128': 0,
'eviction walk target pages reduced due to history store cache pressure': 0,
'eviction walk target strategy both clean and dirty pages': 0,
'eviction walk target strategy only clean pages': 0,
'eviction walk target strategy only dirty pages': 0,
'eviction walks abandoned': 0,
..............
از خروجی فوق، مهم ترین موارد زیر است:
- wiredTiger.cache.maximum bytes پیکربندی می شود
- wiredTiger.cache.bytes در حال حاضر در حافظه پنهان است
- wiredTiger.cache.بایت های کثیف را در حافظه پنهان ردیابی کرد
- wiredTiger.cache.pages در حافظه پنهان خوانده می شوند
- wiredTiger.cache.pages نوشته شده از کش
اندازه های فعلی موارد فوق باید ما را قادر سازد تا در مورد افزایش اندازه WiredTiger در سرورهای خود تصمیم بگیریم. مورد دیگری که به همان اندازه مهم است، استفاده از WiredTiger Concurrency Read and Write Ticket است که می توان آن را به صورت زیر بررسی کرد:
> db.serverStatus().wiredTiger.concurrentTransactions
{
write: { out: 0, available: 128, totalTickets: 128 },
read: { out: 1, available: 127, totalTickets: 128 }
}
اگر متوجه شدید که اعداد در حال افزایش هستند و به سمت تعداد هسته های موجود تمایل دارند، سرورهای شما ممکن است به اشباع CPU نزدیک شوند.
سایر مطالب مشابه »