سرعت پردازش بالاتر: پایگاه داده رابطهای در هر جستجو و یا در هر ذخیره داده باید شروط زیادی مانند روابط بین جدولها و صحت مقادیر رکوردها را بررسی کند که این پروسهها سربار RAM و CPU را به شدت افزایش میدهد در حالیکه مونگودیبی به دلیل ساختار NOSQL تنها دخیره و جستجو میکند و در نتیجه سرعت دستیابی و ذخیره دادهها به شدت کاهش مییابد.
دخیره حجم بالاتر دیتا: پایگاههای داده به دو شکل میتواند حجم دادههای قابل ذخیره در سیستم را افزایش دهند. horizontal-scaling و vertical-scaling.
vertical scaling: در این روش دیتاها روی یک node ذخیره میشود و برای افزاش حجم دادهها RAM و CPU یا Hard Disk (هارد) را افزایش میدهیم. از جمله پایگاه دادهای که از این روش استفاده میکنند میتوان MySQL را نام برد.
horizontal-scaling: در این روش داده در روی nodeهای متفاوت پخش، و هر قسمت از دادهها در یک سرور دخیره میشود، بدین ترتیب بار پردازش روی سرورهای متفاوت پخش خواهد شد و سرعت درسترسی به دادهها و حجم دادههای قابل ذخیره افزایش خواهد یافت. دیتابیسهایی که از این روش استفاده میکنند مونگودیبی و casanndra را میتوان نام برد.
همانطور که در بالا گفتیم در مونگودیبی میتوان با استاده از 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.
Range Based Sharding: در این روش دادهها را به تریبت shard key در دستههایی به نام chunk دخیره میکند. در نتیجه دادههای با shard key نزدیک به هم در یک chunk دخیره خواهند شد.مزیت این روش سرعت بالای جستجو در مواقعی است که بر اساس کلید جستجو میکنیم. و مشکل بارز آن پخش نشدن درست دادهها در chunk هاست. از آنجا که عموما دادهها به ترتیب کلید در دیتابیس دخیره میشوند و از آنجا که دادههای ورودی به دیتابیس کلید ترتیبی دارند همه دادهها در یک سری chunk دخیره خواهند شد.
Hash Based Sharding: در این روش مونگو از فیلدها یک هش تولید میکند سپس با استفاده از این هشها دیتا را در chunk ها پخش میکند. از آنجا که هش تولید شده از کیلدها کاملا متفاوت از کلید است در نتیجه دو سند با کلید برابر ممکن است در دو chunk کاملا متفاوت قرار داشته باشد.
در این روش بر خلاف روش Range Based Sharding دادهها کاملا در chunkها پخش میشوند و در نتیجه فشار پردازش روی یک node نخواهد بود. از معایب این روش این است که بر خلاف روش Range Based Sharding جستجو سریع بروی دادههای یک رنج آسان نیست.