معرفی دوره آموزشی: پایگاه داده مونگو بعنوان یکی از محبوب ترین پایگاه های داده و معماری توزیعی و زبان شبه JASON محیطی جذاب با کارایی و سرعت پردازش بسیار بالا ایجاد کرده است.با توجه به افزایش روز افزون حجم و نرخ تولید داده ها و ساختارمند نبودن بسیاری از این داده ها نیاز به پایگاه های داده ای مانند مونگو بیش از پیش احساس می شود.هدف از برگزاری این دوره آشنایی کاربران با معماری، نصب و پیکر بندی و مباحث مدیریت پایگاه داده MongoDB می باشد تا بتوان در محیط های نیازمند جوابگویی سریع به درخواستها و پردازش آنها مورد استفاده قرار گیرد پس از پایان دوره قادر خواهید بود تا بخوبی مدل ها و طرح های پایگاه داده مونگو را برنامه ریزی کرده و در کسب و کار خود بکار گیرید

 

 

محتوای آموزشی: آموزش کاربردی MongoDB Administration

 

مخاطبین دوره MongoDB: اگر شما برنامه نویس، مدیر پروژه و توسعه دهنده نرم افزار، مدیر پایگاه داده، مدیر سیستم و یا فارغ التحصیل علاقه مند به یادگیری محبوب ترین پایگاه داده NoSQL هستید این دوره برای شما کاملا مناسب است.

 

سطح دوره آموزشی: مقدماتی تا پیشرفته - برای آگاهی از سطح دوره و جایگاه آن در مسیر آموزشی به لینک "نقشه راه" مراجعه کنید.

 

مدت زمان آموزش: ۳۶ ساعت

 

نحوه برگزاری: آنلاین / حضوری

 

پیش نیاز آموزش: دوره LPIC-1 پیشنهاد می گردد.


Introduction to NoSQL

  • What Is NoSQL?
  • Why NoSQL databases are required.
  • Types of NoSQL Database
  • NoSQL vs SQL Comparison
  • ACID & BASE Property
  • CAP Theorem
  • Benefits of NoSQL databases
  • Installation
  • Start and Stop the mongodb process



Architecture

  • Document, Collection, Databases
  • JSON and BSON
  • Storage Engines (WiredTiger and MMAP)
  • Read Path
  • Journaling
  • Write Path
  • Working Set
  • Capped Collection
  • Oplog collection



CRUD Operations

  • Mongodb Data Types
  • Inserting, Update, Deleting the documents
  • Querying the documents
  • Bulk insert operation
  • Updating multiple document
  • Limiting documents
  • Filtering documents



Schema Design and Data modeling

  • Dynamic Schema
  • What is Data modeling?
  • RDBMS and Mongodb Data modeling difference
  • Embedding Document
  • Reference Document



Indexes

  • Index concepts in mongodb
  • Types of indexes
  • Indexes and its use cases
  • Creating Indexes
  • Managing Indexes
  • Index strategies



Database Administration

  • Database status
  • Troubleshooting issues
  • Current Operations
  • Rotating log files
  • Users and Roles
  • Copy and Clone database
  • DB and Collection Stats



Backup and Security

  • Concept of backups
  • mongoexport/mongoimport
  • mongodump/mongorestore
  • Oplog backups
  • LVM Backups
  • Backups using MMS/Ops Manager
  • Purpose of security
  • Authentication and authorization
  • Role based access control



Replication

  • Concept of replication
  • ReplicaSet member roles
  • Voting and Electing primary
  • Role of Oplog in replication
  • Read and Write Concern
  • Arbiter, Hidden and Delayed replica node
  • Priority settings
  • Replicaset nodes health check
  • Concept of resyncing the nodes
  • Rollbacks during failover
  • Keyfile authentication



Scalability

  • Concept of Scalability
  • Sharding concept
  • Shardkey and Chunks
  • Choosing shardkey
  • Sharding components
  • Types of Sharding
  • Balanced data distribution
  • Sharded and Non-sharded collection
  • Sharded Replicaset
  • Tag aware sharding


MongoDB

کلمه "پایگاه داده" بلافاصله تصویری از یک جدول با سطر و ستون در ذهن شما ایجاد می‌کند. بطور معمول، هر معمار سیستمی دارای یک سیستم مدیریت پایگاه داده رابطه‌ای (RDBMS) برای ذخیره داده‌ها می‌باشد. داده‌ها در RDBMS در جداولی حاوی سطرها و ستون ها ذخیره می‌شوند و جداول از طریق مدل های رابطه‌ای به یکدیگر متصل می‌شوند. برای مثال می‌توانیم به مواردی چون Oracle ،MySQL ،Microsoft SQL Server ، DB2 و غیره اشاره کنیم. این پایگاه‌های داده برای مدت زمان قابل توجهی در بازار حضور داشته‌اند زیرا بسیار کارآمد هستند و عملکرد بسیار خوبی را ارائه دادند.

MongoDB یک پایگاه داده متن باز مبتنی بر NoSQL است که توسط 10gen (اکنون MongoDB ، Inc.) با استفاده از زبان ++ C نوشته شده است. NoSQL روند جدیدی در توسعه پایگاه داده ارائه داده است و بطور کلی به پایگاه‌های داده‌ای که شمای (schema) ثابتی ندارند، اشاره دارد. چنین پایگاه‌های اطلاعاتی معمولاً امنیت تراکنش کمتری دارند ولی در دستیابی به داده‌ها بسیار سریع و بسیار مقیاس پذیرتر از پایگاه داده های رابطه‌ای می‌باشند. MongoDB یکی از پایگاه‌های داده جدید مبتنی بر NoSQL است که در سال 2009 توسعه داده شد. ریشه نام "Mongo" چندان روشن نیست: برخی تصور می‌کنند که این واژه از کلمه انگلیسی "humongous" (غول پیکر) ناشی شده باشد، برخی دیگر فرض می‌کنند که نام آن بر اساس شخصیت "Mongo" از فیلم Blazzing Saddles است.

MongoDB یک سیستم مدیریت پایگاه داده توزیع شده، مدرن، همه منظوره و مبتنی بر سند است که توسط MongoDB Inc توسعه، توزیع و پشتیبانی می‌شود. MongoDB یک پایگاه اسناد قدرتمند و انعطاف پذیر، چابک NoSQL (غیر رابطه ای) است. MongoDB، محبوب ترین پایگاه داده NoSQL، یک پایگاه داده اسناد محور متن باز است. اصطلاح "NoSQL" به معنای "غیر رابطه‌ای" است و بدان معناست که MongoDB براساس ساختار پایگاه داده رابطه‌ای جدول مانند نیست بلکه مکانیزم کاملاً متفاوتی را برای ذخیره و بازیابی داده ها فراهم می‌کند. به این قالب ذخیره سازی BSON گفته می‌شود (مشابه قالب JSON).

پایگاه داده MongoDB از مجموعه‌ای از پایگاه های داده تشکیل شده است که هر پایگاه داده شامل چندین مجموعه ( Collection ) است. از آنجا که MongoDB با شِما های پویا کار می‌کند، هر مجموعه می‌تواند شامل انواع مختلفی از اشیا باشد. هر شی - که سند ( Document ) نیز نامیده می‌شود - به عنوان یک ساختار JSON نشان داده می‌شود: لیستی از جفت های مقدار-کلید. این مقدار می‌تواند سه نوع داشته باشد: یک مقدار ابتدایی، یک آرایه از اسناد یا یک لیست دیگر از جفت های کلید-مقدار (سند).

MongoDB همراه با مجموعه‌ای گسترده از ابزارها برای مدیریت آسان داده‌ها و برای توسعه برنامه‌های مدرن و برای زیر ساخت های ابری ساخته شده است و برای استفاده توسط توسعه‌دهندگان، تحلیل‌گران داده و دانشمندان داده در نظر گرفته شده است.

MongoDB همچنین ویژگی Auto-Scaling را فراهم می‌کند. از آنجا که MongoDB یک پایگاه داده کراس-پلتفرم است، می‌تواند بر روی سیستم عامل های مختلف مانند ویندوز، لینوکس و غیره نصب شود.

MongoDB در دو نسخه مختلف ارائه می‌شود: MongoDB Community Server که نسخه متن باز و رایگان برای استفاده از MongoDB است و نسخه MongoDB Enterprise Server که بخشی از اشتراک MongoDB Enterprise Advanced است. 

به زبان ساده، هنگام توسعه برنامه های نرم افزاری که باید داده هایی با ساختار های مختلف را به روشی مقیاس پذیر اداره کنند، بیشتر و سریعتر پیش بروید. در این صورت شما به MongoDB مطمئنا نیاز خواهید داشت.

این فناوری بر یکی از بزرگترین مشکلات سیستم های پایگاه داده سنتی یعنی مقیاس پذیری غلبه کرده است. با نیازهای روزافزون مشاغل، سیستم های پایگاه داده آنها نیز باید بروز شوند. MongoDB مقیاس پذیری استثنایی را ارائه داده است. واکشی داده ها را آسان می‌کند و ادغام مداوم و خودکار را فراهم می‌کند. همراه با این مزایا، دلایل مختلفی وجود دارد که شما به MongoDB نیاز دارید.

MongoDB برای افرادی ساخته شده است که در حال ساخت برنامه های کاربردی اینترنتی و تجاری هستند که نیاز به پیشرفت سریع و مقیاس ظریف دارند. اگر این کار را می‌کنید، باید MongoDB را در نظر بگیرید. گزارش شده است كه شركتهایی از جملهGoogle ،Facebook ،EA Sports ،Adobe ،Uber ،Cisco ، Verizon و بسیاری دیگر از MongoDB در بخشهای مختلف خود استفاده می‌كنند.


MongoDB برای موارد زیر بسیار توصیه می‌شود:

  • کاتالوگ محصولات تجارت الکترونیکی.
  • وبلاگ ها و مدیریت محتوا.
  • تجزیه و تحلیل بصورت Real-time و ورود به سیستم با سرعت بالا، ذخیره سازی، و مقیاس پذیری بالا.
  • مدیریت پیکربندی.
  • نگهداری داده های مبتنی بر مکان - داده های مکانی.
  • سایت های شبکه های تلفن همراه و شبکه های اجتماعی.
  • داده های در حال تکامل.
  • اهداف غیر متمرکز - طراحی ممکن است با گذشت زمان تغییر کند.

 

MongoDB یک اکوسیستم پلتفرم بزرگ و بالغ ایجاد کرده است، که بدین معنی است:

  • MongoDB دارای جامعه‌ای بزرگ توسعه‌دهندگان و مشاورانی در سراسر جهان می‌باشد، بنابراین کمک گرفتن و بدست آوردن پاسخ مشکلات خود بسیار آسان است.
  • MongoDB بر روی همه پلتفرم ها، و حتی در محیط های ابری (ابرهای خصوصی و عمومی مانند AWS، Azure و Google Cloud) نیز کار می‌کند.
  • MongoDB را می‌توان با تمام زبان های برنامه نویسی ترند بازار استفاده کرد.
  • MongoDB از کلیه سیستمهای اصلی مدیریت داده و ETL قابل دسترسی است.
  • MongoDB از پشتیبانی سازمانی برخوردار است.

 

MongoDB چگونه کار می‌کند؟

MongoDB بر روی یک مدل کلاینت-سرور ساخته شده است که در آن یک سرویس دهنده اتصالات مشتری ها را می‌پذیرد و اقدامات پایگاه داده را برای آنها پردازش می‌کند. سرور باید در حال اجرا باشد تا مشتریان بتوانند با پایگاه داده ارتباط برقرار کنند.

ذخیره اطلاعات در MongoDB با پایگاه های داده سنتی متفاوت است. یک رکورد در MongoDB یک سند است (یک ساختار داده متشکل از جفت فیلد و مقدار، مشابه اشیا JSON) و اسناد در مجموعه ها ذخیره می‌شوند (مشابه جداول در RDBMS).

 MongoDB در سناریوهای زیر بر RDBMS ترجیح داده می‌شود:

  • کلان داده ها یا Big Data: اگر مقدار زیادی داده برای ذخیره در جدول دارید، قبل از پایگاه داده RDBMS به MongoDB فکر کنید. MongoDB راه حلی برای تقسیم داده و حتی تقسیم پایگاه داده شما ایجاد کرده است.
  • شِمای ناپایدار یا Unstable Schema: افزودن ستون جدید در RDBMS کار سختی است در حالی که MongoDB دارای شمای ثابتی نیست. افزودن یک قسمت جدید، اسناد قدیمی را تحت تأثیر قرار نمی‌دهد و این کار بسیار آسان خواهد بود.
  • داده های توزیع شده یا Distributed data: از آنجا که چندین نسخه از داده ها در سرورهای مختلف ذخیره می‌شوند، حتی در صورت خرابی سخت افزار، بازیابی اطلاعات فوری و ایمن است.

 

ویژگی های اصلی MongoDB

در زیر ویژگی های اصلی MongoDB آورده شده است:


  • سند گرا یا Document Oriented :

MongoDB موضوع اصلی را در حداقل تعداد اسناد ذخیره می‌کند و نه با تجزیه آن در چندین ساختار رابطه‌ای مانند RDBMS. به عنوان مثال، تمام اطلاعات رایانه را در یک سند به نام Computer و نه در ساختارهای رابطی متمایز مانندCPU ، RAM، Disk و غیره ذخیره می‌کند.


  • Indexing:

بدون Indexing، یک پایگاه داده باید هر سندی از یک مجموعه را اسکن کند تا متناسب با کوئری گزینه مورد نظر را انتخاب کند که بدین شکل ناکارآمد است. بنابراین، برای جستجوی کارآمد، indexing امری ضروری است و MongoDB از آن برای پردازش حجم عظیمی از داده ها در زمان بسیار کم استفاده می‌کند.


  • مقیاس پذیری یا Scalability:

MongoDB به صورت افقی با استفاده از Sharding (پارتیشن بندی داده ها روی سرورهای مختلف) مقیاس بندی می‌شود. داده ها با استفاده از کلید Shard به تکه های داده تقسیم می‌شوند و این تکه های داده به طور مساوی در Shard هایی که در بسیاری از سرورهای فیزیکی قرار دارند توزیع می‌شوند. همچنین، ماشین های جدید می‌توانند به راحتی به یک پایگاه داده در حال اجرا اضافه شوند.


  • تکثیر و در دسترس بودن بالا یا Replication and High Availability

MongoDB با چندین نسخه از داده ها در سرورهای مختلف، در دسترس بودن داده ها را افزایش می‌دهد. با ارائه افزونگی، از پایگاه داده در برابر خرابی های سخت افزاری محافظت می‌کند. اگر یک سرور خراب شود، داده ها می‌توانند به راحتی از سایر سرورهای فعال که داده های ذخیره شده نیز دارند، بازیابی شوند.


  • تجمیع یا Aggregation:

عملیات تجمیع پرونده‌ها را پردازش می‌کند و نتایج محاسبه شده را بر می‌گرداند. این مشابه بند GROUPBY در SQL است. چند عبارت تجمع عبارتند از جمع، میانگین، مینیمم، حداکثر و غیره.


از مزایای دیگر این فناوری می توان به موارد زیر اشاره کرد:

  • MongoDB برای عملکرد بالا و ماندگاری داده ها طراحی شده است. MongoDB از مدل های داده جاسازی شده پشتیبانی می‌کند که فعالیت I / O را در سیستم پایگاه داده کاهش می‌دهد. علاوه بر این، نمایه های آن پرس و جوهای سریعتر را امکان پذیر می‌کند و مهمتر از همه، آنها می‌توانند کلیدهای اسناد و آرایه های جاسازی شده را شامل شوند.
  • MongoDB با یک زبان پرس و جو غنی و قدرتمند (برای پشتیبانی از عملیات خواندن و نوشتن) ارائه می‌شود، از تجمیع داده ها و سایر موارد استفاده مدرن مانند جستجوی متن، جستجوی نمودار و پرس و جوهای فضایی پشتیبانی می‌کند.
  • برای ایمن سازی استقرار پایگاه داده، MongoDB ویژگی های امنیتی مختلفی مانند تأیید اعتبار و مجوز، کنترل دسترسی، رمزگذاری TLS / SSL، حسابرسی و موارد دیگر را فراهم می‌کند.
  • همچنین ، MongoDB یک چک لیست امنیتی ارائه داده است که لیستی از اقدامات امنیتی توصیه شده است که شما برای محافظت از استقرار MongoDB باید اجرا کنید. همچنین اطمینان حاصل کنید که امنیت شبکه و لایه سرور را سخت تر کرده‌اید.

 

نتیجه گیری

برای پاسخ به سوال اصلی: "چه زمانی باید از MongoDB به جای MySQL استفاده کرد؟" شما باید نیازهای پروژه و اهداف بعدی خود را در نظر بگیرید. MySQL بخاطر عملکرد بالا، انعطاف پذیری، محافظت از داده های قابل اعتماد، در دسترس بودن بالا و سهولت مدیریت بسیار شناخته شده است. نمایه سازی مناسب داده ها می‌تواند با عملکردی بالا همراه باشد، تعامل را تسهیل کند و از استحکام اطمینان حاصل کند. اما اگر "داده های شما بدون ساختار و پیچیده است، یا اگر نمی‌توانید طرح خود را از قبل تعریف کنید، بهتر است MongoDB را انتخاب کنید." علاوه بر این، اگر شما نیاز به کنترل حجم زیادی از داده ها و ذخیره آنها به عنوان اسناد دارید MongoDB به شما کمک می‌کند تا با این چالش ها روبرو شوید.