نحوه نصب 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 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 نزدیک شوند.

سایر مطالب مشابه »

5/5 - (9 امتیاز)