منبع اصلی نوشتار زیر در این لینک قرار دارد

درباره MongoDB بدانیم

MongoDB یک سیستم مدیریت پایگاه داده منبع باز (open source DBMS) است که از یک مدل داده سند-محور یا document-oriented استفاده می کند. این سیستم یک پایگاه داده NoSQL محسوب می شود، زیرا از مدل رابطه ای (relational model) استفاده نمی کند ، بنابراین از SQL هم به عنوان زبان پرس و جو (query language) خود استفاده نمی کند.

به اولین مطلب از هجده مطلب سری آموزشی MongoDB خوش آمدید!

سند-محور یا document-oriented بودن MongoDB را قادر می سازد تا بتواند داده های نیمه ساختار یافته یا semi-structured را که به یک ساختار (شِما) ثابت نیاز ندارند، ذخیره کند. این خاصیت با استفاده و به کارگیری اسناد JSON تحقق می یابد. این روزها MongoDB در همه جا حضور دارد و توسط برخی از بزرگترین شرکت های جهان از جمله فیس بوک ، گوگل ، نوکیا ، شبکه های MTV ، سیسکو ، فوربس و موارد دیگر استفاده می شود.

همچنین MongoDB یک سیستم cross platform است که می توان آن را روی ویندوز ، مک ، سولاریس و توزیع های مختلف لینوکس نصب و راه اندازی کرد. باید بدانید که یک بانک اطلاعاتی MongoDB با یک پایگاه داده رابطه ای متفاوت است؛ از این رو، MongoDB نه از مدل رابطه ای بلکه از یک مدل سند-محور یا document-oriented برای ذخیره داده ها استفاده می کند. در مدل سند-محور، داده ها در اسناد داخل یک کالکشن (مجموعه – collection) ذخیره می شوند. در مدل رابطه ای، داده ها در ردیف های یک جدول ذخیره می شوند (رکوردهای جدول).

کالکشن ها (مجموعه ها)

در MongoDB ، اصطلاح Collection در واقع برای مجموعه ای تعریف شده از اسناد است. یک مجموعه معمولاً شامل اسنادی است که موضوع مشابهی دارند (مانند کاربران ، محصولات ، ارسال ها و غیره). بنابراین ، مجموعه ها از بسیاری جهات شبیه به جداول مدل الگوی رابطه ای هستند.

داکیومنت ها (اسناد)

در MongoDB ، اسناد به صورت اسناد JSON ذخیره می شوند. JSON مخفف JavaScript Object Notation و یک استاندارد است که تبادل داده را تسهیل می کند. اسناد JSON مشابه اسناد XML است که در آن داده ها می توانند بصورت سلسله مراتبی ارائه شوند و توسط انسان ها و رایانه ها به طور مشابه قابل خواندن هستند.

در اینجا مثالی از یک سند JSON آورده شده است. این همان شکل و فرمی است که اسناد ذخیره شده در یک پایگاه داده MongoDB دارند.

{
    artistname : "Deep Purple",
    albums : [
                {
                    album : "Machine Head",
                    year : 1972,
                    genre : "Rock"
                }, 
                {
                    album : "Stormbringer",
                    year : 1974,
                    genre : "Rock"
                }
            ]
}

قسمت

id_
  شناسه منحصر به فرد برای یک سند است. MongoDB اجازه می دهد تا با استفاده از این قسمت، هر سند بازیابی و ارجاع شود. شما می توانید این شناسه و کلید دسترسی منحصر به فرد را خودتان مشخص کنید یا اجازه دهید MongoDB آن را برای داده هایتان تولید کند.

با استفاده از JSON ، نتایج پرس و جو را می توان به راحتی توسط JavaScript و بیشتر زبان های برنامه نویسی محبوب خواند و تجزیه و تحلیل کرد. این امر به این دلیل است که اسناد JSON از ساختار اسم / جفت (کلید / مقدار) و مفهوم آرایه ای بودن مقادیر استفاده می کند که برای زبان های برنامه نویسی مشهور مانند C ، C ++ ، C # ، Java ، JavaScript ، Perl ، Python و بسیاری دیگر آشنا و از قبل تعریف شده است. این موضوع زحمت کدنویسی لازمه برای تعریف فرم داده در پروزه های مختلف را کاهش می دهد.

در واقع و در پشت صحنه ، MongoDB اسناد JSON را با فرمتی باینری (دودویی) به نام BSON ذخیره می کند. BSON با پشتیبانی از انواع داده های اضافی، قابلیت های JSON را گسترش می دهد و برای رمزگذاری (encoding) و رمزگشایی (decoding) در زبان های مختلف کارآمدتر است.

خاصیت Schemaless (عدم نیاز به ساختار ثابت)

در سیستم MongoDB هر سند JSON در یک مجموعه می تواند ساختار خاص خود را داشته باشد.

بنابراین ، هیچ طرح بندی، ساختار و شِمای ثابتی وجود ندارد که بتواند نوع داده هایی را که می توان وارد یک پایگاه داده MongoDB کرد، محدود کند.

این خاصیت با ویژگی بنیادی پایگاه داده رابطه ای در تضاد است؛ در آن پایگاه داده ها قبل از وارد کردن هر داده ، ابتدا باید ساختار (شِما) را ایجاد کنید (یعنی جدول ها ، ستون ها ، انواع داده ها و غیره را تعریف کنید). پس در پایگاه داده رابطه ای اگر داده ها با شِما مطابق نباشند، وارد پایگاه داده نمی شوند و خطا رخ می دهد.

در یک پایگاه داده MongoDB ، هیچ قانونی برای بیان اینکه در یک سند کدام یک از فیلدها یا چند فیلد را باید داشته باشد وجود ندارد. به عنوان مثال ، یک سند از یک مجموعه ممکن است دارای نام ، آدرس و شماره تلفن باشد، در حالی که یک سند دیگر ممکن است دارای نام و آدرس ایمیل (به جای تلفن) باشد.