وضعیت سرورها

وبــلاگ

وضعیت سرورها
  • بررسی MongoDB

    مهدی عطائیان سه شنبه ۲۵ تیر ۱۳۹۲ آموزش , لینوکس , معرفی نرم‌افزار , مقالات

    mongoDB (مونگودی‌بی)  یک Document-oriented database (پایگاه داده سند-گرا) است. و در گروه پایگاه‌های داده NOSQL قرار دارد.دراین نوع پایگاه داده  جدول و رکورد وجود ندارد و از collection (مجموعه) و سند استفاده می‌شود. می‌توان گفت مجموعه شبیه به جدول و سند شبیه به رکورد در پایگاه داده رابطه‌ای است.

    در این پایگاه داده، داده‌ها ساختار ثابت ندارند و هر دو سند (شبیه رکورد در پایگاه رابطه‌ای) می‌تواند ساختار کاملا متفاوت داشته باشد، به این نوع ساختار BSON می‌گویند. به عنوان مثال ممکن است دو سند از یک موجودیت در این پایگاه‌داده به اشکال‌ زیر موجود باشد:

    سند ۱:

    id_ – name – age

    سند ۲:

    id_ – family

    BSON چیست؟ مونگودی‌بی داده‌ها را به شکل json ذخیره می‌کند. به این ساختار در مونگودی‌بی BSON می‌گویند. ساختار BSON به شکل زیر است.

    از مزیت‌های پایگاه داده مونگودی‌بی نسبت سایر پایگاه‌های داده رابطه‌ای (مانند MySQL) امکان پردازش و جستجو در حجم بسیار بالاتری از داده‌ها در لحظه و همچنین امکان دخیره حجم بالاتری از داده‌ها است.

    SQL-to-MongoDB

    SQL to MongoDB

    سرعت پردازش بالاتر: پایگاه‌ داده رابطه‌ای در هر جستجو و یا در هر ذخیره داده باید شروط زیادی مانند روابط بین جدول‌ها و صحت مقادیر رکوردها را بررسی کند که این پروسه‌ها سربار RAM و CPU را به شدت افزایش می‌دهد در حالیکه مونگودی‌بی به دلیل ساختار NOSQL تنها دخیره و جستجو می‌کند و در نتیجه سرعت دستیابی و ذخیره داده‌ها به شدت کاهش می‌یابد.

    دخیره حجم بالاتر دیتا: پایگاه‌های داده به دو شکل می‌تواند حجم داده‌های قابل ذخیره در سیستم را افزایش دهند. horizontal-scaling و vertical-scaling.

    1. vertical scaling: در این روش دیتاها روی یک node ذخیره می‌شود و برای افزاش حجم داده‌ها RAM و CPU یا Hard Disk (هارد) را افزایش می‌دهیم. از جمله پایگاه‌ داده‌ای که از این روش استفاده می‌کنند می‌توان MySQL را نام برد.
    2. horizontal-scaling: در این روش داده در روی nodeهای متفاوت پخش، و هر قسمت از داده‌ها در یک سرور دخیره می‌شود، بدین ترتیب بار پردازش روی سرورهای متفاوت پخش  خواهد شد و سرعت درسترسی به داده‌ها و حجم داده‌های قابل ذخیره افزایش خواهد یافت. دیتابیس‌هایی که از این روش استفاده می‌کنند مونگودی‌بی و casanndra را می‌توان نام برد.
    MongoDB Structure

    ساختار MongoDB

    همانطور که در بالا گفتیم در مونگودی‌بی می‌توان با استاده از horizontal-scaling که shard نامیده می‌شود حجم داده قابل ذخیره  و همچین سرعت دسترسی به داده را افزایش داد.
    مزیت‌های استفاده از shard:

    • با گسترش کلاستر تعداد پردازش‌هایی که هر shard انجام می‌دهد کاهش می‌یابد (به دلیل پخش شدن پردازش‌ها بین shardها)، در نتیجه سرعت دسترسی به داده‌ها افزایش می‌یابد.
    •  همچنین با افزایش تعداد shardها حجم داده‌ی قابل ذخیره نیز افزایش می‌یابد.
    shard mongodb

    نصب مونگودی‌بی MongoDB به صورت shard

    مونگودی‌بی داده‌ها را در سطح مجموعه پخش می‌کند. به این معنی که داده‌های یک مجموعه را در بین nodeها و shardها پخش می‌شود. مونگودی‌بی برای مدیرت نحوه پخش شدن داده‌ها از shard key استفاده می‌کند. shard key یه کلید ساده و یا یک کلید ترکیبی است که در همه سندها وجود دارد. عموما id_ می‌تواند به عنوان یک shard key استفاده شود.
    مونگودی‌بی برای پخش داده‌ها از دو نوع shard key استفاده می‌کند. range based partitioning و hash based partitioning.

    1. Range Based Sharding: در این روش داده‌ها را به تریبت shard key  در دسته‌هایی به نام chunk دخیره می‌کند. در نتیجه داده‌های با shard key نزدیک به هم در یک chunk دخیره خواهند شد.مزیت‌ این روش سرعت بالای جستجو در مواقعی است که بر اساس کلید جستجو می‌کنیم. و مشکل بارز آن پخش نشدن درست داده‌ها در chunk هاست. از آنجا که عموما داده‌ها به ترتیب کلید در دیتابیس دخیره می‌شوند و از آنجا که داده‌های ورودی به دیتابیس کلید ترتیبی دارند همه داده‌ها در یک سری chunk دخیره خواهند شد.

      chunk مونگودی‌بی

      chunk مونگودی‌بی

    2. Hash Based Sharding: در این روش مونگو از فیلدها یک هش تولید می‌کند سپس با استفاده از این هش‌ها دیتا را در chunk ها پخش می‌کند. از آنجا که هش تولید شده از کیلدها کاملا متفاوت از کلید است در نتیجه دو سند با کلید برابر ممکن است در دو chunk کاملا متفاوت قرار داشته باشد.
    Hash Based Sharding

    Hash Based Sharding

    در این روش بر خلاف روش Range Based Sharding داده‌ها کاملا در chunkها پخش می‌شوند و در نتیجه فشار پردازش روی یک node نخواهد بود. از معایب این روش این است که بر خلاف روش Range Based Sharding جستجو سریع بروی داده‌های یک رنج آسان نیست.

    0

    برچسب ها :

با عضویت در خبرنامه شما را از آخرین تجربیات مان و مطالب تخصصی آگاه خواهیم کرد.

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *