مقدمه‏ ای بر MongoDB

مقدمه‏ ای بر MongoDB

در این مقاله MongoDB و No SQL را خواهید آموخت. با تعریف NoSQL و MongoDB شروع خواهیم کرد. تا پایان این مقاله همراه ما باشید. تا به بررسی این دو بانک اطلاعاتی بپردازیم.

مقدمه‏ ای بر MongoDB

MongoDB یکی از محبوب‌ترین پایگاه‌های داده بر پایه‌ی NoSQL است که در سال‌های اخیر توانسته خود را با کارایی بالا معرفی کند.

MongoDB یا Mongo DataBase انواع پایگاه داده است که مبتنی بر NoSQL بوده و تقریبا در سال ۲۰۰۹، به صورت متن باز و رایگان منتشر شده است.

MongoDB بر اساس زیان برنامه‌نویسی C، C++ و جاوا اسکرپیت نوشته شده است و نسبت به سیستم عامل، مستقل است به این معنا که روی اکثر سیستم عامل‌ها نصب شده و به راحتی می‌توان آن را راه‌اندازی کرد.

NoSQL چیست؟

NoSQL نشان گر Not Only SQL  است. NoSQL پایگاه داده‏ ای مبتنی بر رابطه نیست. پایگاه داده‏ ای NoSQL از قوانین RDMS پیروی نمی‏کنند؛ و از SQL برای کوئری گرفتن از داده‏ ها استفاده نمی‏کنند.

پایگاه داده ای NoSQL می‏توانند به ۴ دسته تقسیم شوند:

  1.  Document Store (ذخیره‏ ی سند)
  2. Graph Store (ذخیره‏ ی گراف)
  3.  Column Value Store (ذخیره‏ ی مقدار ستون)
  4. Key-Value Store (ذخیره‏ ی مقدار کلید)

MongoDB در زیر گروه پایگاه داده ‏ی Document Store قرار می‏گیرد .همراه ما در مقدمه‏ ای بر MongoDB باشید.

Document Store Databases:

در Document Store Database، داده‏ ها در قالب اسناد ذخیره می‏شوند. این پایگاه داده، Key-Value Store Database Concept را گسترش می‏دهد.

MongoDB و CouchDB دو پایگاه داده‏ ی اصلی Document Store هستند. MongoDB داده‏ ها را در قالب Documentها ذخیره می‏کند.

در اینجا مثالی از سند نمونه آمده است.

Mongo DB

راه ‏اندازی MongoDB بر روی ماشین

MongoDB را از سایت رسمی MongoDB دانلود کنید (فایل MSI را بر اساس سیستم عامل خود دانلود کنید).

فایل MSI را نصب کنید (در صورت استفاده از سیستم عامل ویندوز، محل پیش فرض C:\Program Files\MongoDB است)

این پوشه را کپی کرده و در درایو C خود یا هر درایو دیگری قرار دهید و پوشه ‏ای در درایو C به نام data و پوشه‏ ای به نام db داخل پوشه‏ ی data ایجاد کنید.

بنابراین اکنون در درایو C دو پوشه داریم:

  •  MongoDB (کپی شده از محل نصب)
  •  data/db (ایجاد یک پوشه به نام data و پوشه ‏ای به نام db داخل پوشه‏‏ ی data)

راه ‏اندازی MongoDB

به پوشه‏ ی bin که داخل پوشه ‏ی MongoDB در درایو C قرار دادیم بروید.

به طور پیش فرض، پوشه‏ ی bin درون پوشه‏ ی MongoDB قرار دارد (می‏تواند درون پوشه‏ ی server بصورت زیر نیز باشد)

C:\Program Files\MongoDB\Server\3.0\bin  و بر روی Mongod.exe جفت کلیک کنید ( این کار یک خط فرمان باز کرده و سرور MongoDB را راه‏ اندازی خواهد کرد).

آخرین خط باید “Waiting for connections…” را بصورت زیر نشان دهد، این بدین معناست که سرور MongoDB ما با موفقیت راه ‏اندازی شده است.

Waiting for connections

دانلود RoboMongo

RoboMongo یک ابزار متن باز چند پلتفرمی مبتنی بر Shell جهت مدیریت MongoDB است. این بدین معناست که می‏توانید از مهارت‏ های موجود MongoDB Shell خود در RoboMongo مجدد استفاده کنید.

می‏توانیم RoboMongo را از سایت اصلی RoboMongo به نام RoboMongo.org دانلود کنیم.

هنگامیکه آن را دانلود کردید، فایل exe را اجرا کرده و به File–>Connect بروید (اطمینان حاصل کنید که سرور mongodb شما، که در مرحله‏ ی آخر از طریق Mongod.exe اجرا کردیم، آماده و در حال کار است)

اصطلاحات MongoDB

پیش از ادامه کار، باید اصطلاحات MongoDB را بشناسیم،

مقدمه‏ ای بر MongoDB

نکات کلیدی MongoDB

  •  MongoDB داده‏ ها را در قالب Json ذخیره می‏کند (به آن BSON) Binary JSON) میگوییم.
  • JSON نشان گر JavaScript Object Notations (نشانه گذاری شیء JavaScript ) و بصورت {“Name”:“Vijay”} است.
  •  اسناد JSON داده‏ ها را در جفت کلیدمقدار مانند {“X”:۱,“Y”:۲,“Z”:۳} ذخیره می‏کنند.
  •  دو ساختار پایه درون JSON وجود دارد،

 Array – فهرست اشیاء در List of Items [……..] نمایش داده می‏شود.
Dictionaries – نگاشت‏ های ارتباط {Key:Value}

برای مثال {Name : ‘Vijay’,City : ‘Shamli’,interest : [“Sport” ,“Music” ]}

Name و City، dictionary هستند و Interest یک Array است.

  • MongoDB، Schema Less است، Schema Less یعنی نیازی نیست دو سند، طرح یکسانی داشته باشند.
  • First Document در یک مجموعه می‏تواند بدین صورت باشد:

{Name:“Vijay”,Email:“VijayRana1091@gmail.com”}

  •   Second Document در همان مجموعه می‏تواند بدین صورت باشد:

{Name:“Vijay”,Email:“VijayRana1091@gmail.com”,Address : “Delhi”}

  • MongoDB از Joins (اتصالات) پشتیبانی نمی‏کند.
  • MongoDB از Transactions (تراکنش ‏ها) پشتیبانی نمی‏کند.

زمان کوئری گرفتن

در اینجا برخی کوئری‏ هایی که در Sql Server بطور روزمره اجرا می‏کنیم و کوئری‏ های معادل در MongoDB را خواهیم دید.

برای این کار، جدولی در SQL Server با طرح زیر و مجموعه‏ ای یکسان در MongoDB (به خاطر داشته باشید که جدول، مجموعه‏ ای در MongoDB است) ایجاد کرده ‏ام.

Query Time

جدولی یکسان در MongoDB و عملیاتی متفاوت در این جدول با استفاده از MongoDB ایجاد خواهیم کرد.

مقدمه‏ ای بر MongoDB

Select Database

پیامی بصورت “switched to db Test” دریافت خواهیم کرد،

insert Record MongoDB

Insert Record

نکته: id به عنوان یک کلید اصلی در MongoDB عمل می‏کند. اگر هیچ مقداری در این ستون درج نکنیم، MongoDB بطور خودکار ID منحصر بفردی را در Table درج خواهد کرد.

درج چند رکورد بیشتر هم در Sql Server و هم در MongoDB (الصاق اسکریپت Sql و اسکریپت MongoDB).

InsertRecord.zip را از ابتدای این مقاله دانلود کنید.

پس از اجرای اسکریپت ها، داده های زیر را در جدول Student (در پایگاه داده های Sql Server و MongoDB) خواهیم داشت.

id MongoDB

select columns MongoDB

student.find MongoDB

clause MongoDB

student MongoDB

select student MongoDB

MongoDB

below quary

table student MongoDB

and

table selection MongoDB

table

select tabell MongoDB

مقدمه‏ ای بر MongoDB

count sort

sort

count MongoDB

 Code Query

Query Update MongoDB

Culomn

 

Delete

Query MongoDB

Top

Select

log

 

توابع MongoDB

در پایگاه داده‏ ای MongoDB می‏توانیم توابعی مشابه آنچه در Sql Server است ایجاد کنیم.

MongoDB مجموعه‏ ای به نام System.js را برای این کار در اختیار ما قرار می‏دهد.

مجموعه‏ ی System.js حاوی دو کلید است :

  1. _id :id نام تابع است.
  2. value : value حاوی تعریف واقعی تابع است.

برای مثال، فرض کنید می‏خواهیم تابعی ایجاد کنیم که دو پارامتر به نام firstname و lastname را پذیرفته و full name را برگرداند.

db.system.js.save    
({    
    _id: "FullName",    
    value: function(FirstName, LastName)     
    {    
        return FirstName + ' ' + LastName;    
    }    
}) 

به منظور فراخوانی این تابع، نیاز است ابتدا اسکریپت ‏های سرور را بارگذاری کرده، و سپس می‏توانیم این تابع را بصورت زیر فراخوانی کنیم.

db.loadServerScripts();  
FullName('Vijay', 'Rana')  

زمانی که این تابع را فراخوانی کنیم، Vijay Rana نتیجه‏ ی آن خواهد بود.

افزایش خودکار ID Identity در Sql Server در MongoDB

در MongoDB ، id به عنوان یک کلید اصلی عمل می‏کند.

اگر هیچ مقداری در فیلد id درج نکنیم، MongoDB بصورت خودکار یک مقدار هگزادسیمال (مبنای شانزده) منحصر بفرد در این ستون درج می‏کند.

اما اگر بخواهیم مقدار افزایش خودکار عدد صحیح (مانند Identity در Sql Server یا Sequence در Oracle) را در این فیلد وارد کنیم، هیچ روش مستقیمی برای این کار وجود ندارد. برای این کار نیاز است مراحل زیر را دنبال کنیم.

مرحله۱ :

یک مجموعه (Identity) که شمارنده را نگه خواهد داشت، ایجاد کنید.

db.createCollection("Identity") // Identity is my collection Name   

مرحله۲ :

سندی در این مجموعه با مقدار اولیه ی شمارنده درج کنید.

db.Identity.insert    
({    
    _id: "incrementID",    
    sequence_value: 0    
}) 

مرحله۳ :

تابعی ایجاد کنید که این sequence_value را افزایش و آن تابع را در system.js بصورت زیر اضافه کند.

db.system.js.save    
({    
    _id: "getNextIdentity",    
    value: function getNextIdentity(sequenceName)     
    {    
        var sequenceDocument = db.Identity.findAndModify    
        ({    
            query:    
            {    
                _id: sequenceName    
            },    
            update:    
            {    
                $inc:     
                {    
                    sequence_value: 1    
                }    
            },    
            new: true    
        });    
        return sequenceDocument.sequence_value;    
    }    
})  

مرحله۴ :

هنگام درج یک سند می‏توانیم این تابع را فراخوانی کنیم، که یک مقدار افزوده شده را بصورت زیر باز خواهد گرداند.

db.Employee.insert     
({    
    "_id": getNextIdentity("incrementID"),    
    "EmpName": "Vijay",    
    "Age": "30"    
}) 

در مقاله بعدی درباره بقیه دستورات MongoDB صحبت خواهیم کرد.

ما چگونه ID Auto Increment Generate را به طور معمول در Sql Server Identity Column  تولید خواهیم کرد و اتصالات Net. با MongoDB را مشاهده خواهیم کرد.

امیدوارم مقاله مقدمه‏ ای بر MongoDB شما را با این پایگاه داده آشنا کرده باشد.

زهره سلطانیان

نوشته‌های مرتبط

دیدگاه‌ها

*
*

این سایت از اکیسمت برای کاهش هرزنامه استفاده می کند. بیاموزید که چگونه اطلاعات دیدگاه های شما پردازش می‌شوند.

    REZA پاسخ

    سلام. خیلی خوب بود. چند وقت بود سایتتون رو چک نمیکردم. امروز به واسطه ی تلگرام مجددا این پست جذاب رو خوندم.