Mongo Database
سطر ۱: | سطر ۱: | ||
[[Category:Programming]] | [[Category:Programming]] | ||
__TOC__ | __TOC__ | ||
− | <div dir=rtl lang= | + | <div dir=rtl lang=fa> |
==MongoDB چیست؟== | ==MongoDB چیست؟== | ||
سطر ۲۶: | سطر ۲۶: | ||
===دیتابیس=== | ===دیتابیس=== | ||
این مفهوم دست نخورده باقیمانده و همان مفهوم DB در دیتابیس های رابطهای میباشد. | این مفهوم دست نخورده باقیمانده و همان مفهوم DB در دیتابیس های رابطهای میباشد. | ||
+ | |||
+ | |||
+ | ==ویژگی ها== | ||
+ | === سندگرا === | ||
+ | * سندها بسیار شبیه به نوع داده ایی دیکشنری در زبانهای برنامه نویسی بوده و به همین منظور برای برنامه نویس بسیار راحت میباشد. | ||
+ | * قابلیت سندگرا و آرایه ای بودن نیاز به اتصال های اضافی را کاهش داده است. | ||
+ | * اسکیمای داینامیک آن باعث ایجاد چندریختی های آسانتر شده | ||
+ | * هر سند دارای یک کلید مخصوص “_id” هست که در بین سندهای یک مجموعه یکتا هست. | ||
+ | |||
+ | === قدرتمند و سریع === | ||
+ | * وجود سرعت بسیار زیاد در خواندن و نوشتن دادهها | ||
+ | * ایجاد ایندکس گذاری بر روی کلیدها(key) | ||
+ | * در هر زمانی ممکن است پردازش بصورت offload و منطقی سمت کلاینت انجام گیرد که این طراحی سبب بالا بردن کارایی MongoDB شده. | ||
+ | === میرورینگ و کلاسترینگ === | ||
+ | مونگو هم چنین دارای سرویس کلاسترینگ میباشد. | ||
+ | |||
+ | سرویس کلاسترینگ MongoDB بیشتر برای سازمان و شرکتهایی به کار میرود که برنامه ی آنها تحت هر شرایطی باید اجرا شود و در حالت اجرا باقی بماند حتی زمانی که یکی از سرورها از سرویس خارج شده باشد. در سرویس کلاسترینگ تمامی سرورها همان برنامه و قوانینی را که باقی سرورها اجرا میکنند اجرا خواهند کرد لذا اگر سروری از سرویس خارج شود باقی سرورها بلافاصه شروع به کار خواهند کرد که به آن Failover گفته میشود. زمانی که سرور از سرویس خارج شده دوباره به کار افتاد باقی سرورها آگاه میشوند و روند عادی دوباره ادامه خواهد یافت. به این عمل Failback گفته میشود | ||
+ | |||
+ | === گسترش پذیری آسان === | ||
+ | زمانی که چند سرور برنامه MongoDB را با یکدیگر اجرا میکنند که نتیجه آن احتمال خطای کمتر و سرعت لود بالاتربرنامه هاست. | ||
+ | MongoDB بر پایه scale out بودن طراحی شده است، سندگرا بودن مدل دادهها این اجازه را میدهد که دادهها به طور جداگانه در روی چندین سرور پخش شوند که دادهها و لود کردن یک گروه را به تعادل میرساند. توزیع مجدد دسته ها اتوماتیک است که این امکان را میدهد که برنامه نویسان بدون نگرانی از ذخیره دادهها روی برنامه نویسی تمرکز کنند | ||
+ | به این تکنیک شارد(Shard) گفته میشود که مجموعه ها و داده را در بین چندین سرور بصورت خودکار و اتوماتیک انجام میدهد. | ||
+ | |||
+ | === رابط چندگانه === | ||
+ | |||
+ | دارای API های زبانهای عمومی بوسیله Driverها و shell مونگو میباشد. | ||
+ | |||
+ | ==شروع آموزش== | ||
+ | ===سند ها=== | ||
+ | سندها بصورت object میباشند: | ||
+ | <div dir=ltr lang=en> | ||
+ | {'key': 'value'} | ||
+ | </div> | ||
+ | ترتیب و ارزشها اهمیت دارند: | ||
+ | <div dir=ltr lang=en> | ||
+ | {'key2': 'value2', 'key1': 'value1'} | ||
+ | </div> | ||
+ | متفاوت از | ||
+ | <div dir=ltr lang=en> | ||
+ | {'key1': 'value1', 'key2': 'value2'} | ||
+ | </div> | ||
+ | مونگو case-sensitive و type-sensitive میباشد. | ||
+ | |||
+ | سند در مونگو نمیتواند دارای کلید تکراری باشد! سند زیر غلط میباشد: | ||
+ | <div dir=ltr lang=en> | ||
+ | {'key': 'value2', 'key': 'value1'} | ||
+ | </div> | ||
+ | |||
+ | ===mongo=== | ||
+ | برای کار با مونگو در محیط shell بنویسید | ||
+ | |||
+ | <div dir=ltr lang=en> | ||
+ | mongo | ||
+ | </div> | ||
+ | |||
+ | برای وصل شدن به دیتا بیسی باید از دستور use استفاده کنید. | ||
+ | |||
+ | توجه داشته باشید که شما حتی بدون اینکه از پیش پایگاه داده ای را ایجاد کرده باشید دستور use عمل سوییچ به آن پایگاه را برای شما آنجام میدهد، زیرا که دیتابیس و collection ها در ورود اولین سند بصورت runtime ساخته میشود. | ||
+ | <div dir=ltr lang=en> | ||
+ | use test | ||
+ | </div> | ||
+ | |||
+ | ===ایجاد سند=== | ||
+ | |||
+ | برای ساخت سند باید از دستور insert استفاده شود: | ||
+ | <div dir=ltr lang=en> | ||
+ | db.test.insert({exam: “test1”}) | ||
+ | </div> | ||
+ | |||
+ | با دستور find میتوانیم از صحت ورود اطلاعات اطمینان حاصل نماییم: | ||
+ | <div dir=ltr lang=en> | ||
+ | db.test.find() | ||
+ | </div> | ||
+ | |||
+ | خروجی بصورت زیر خواهد بود، | ||
+ | <div dir=ltr lang=en> | ||
+ | { _id : ObjectId("4bf9bec50e32f82523389314"),username : ”test1” } | ||
+ | </div> | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | </div> |
نسخهٔ ۲۶ نوامبر ۲۰۱۴، ساعت ۱۳:۰۱
محتویات |
MongoDB چیست؟
تمرکز در: سرعت و قدرت، انعطاف پذیری، مقیاس پذیری، گسترش پذیری
مقدمه
پایگاه داده MongoDB یکی ازبهترین پایگاه داده های بدون رابطه ایی میباشد که بسیار انعطاف پذیر و قوی و سریع و گسترش پذیر میباشد. مدل دادها بصورت json می باشند. قواعد و دستورالعملها همان قواعد نحوی(syntax) جاوا اسکریپت میباشند که رابط shell آن از قواعد جاوا اسکریپت پیروی میکند.بنابراین بسیار ساده و آسان میباشد. بعضی از ویژگیهای مونگو بسیار شبیه به مدل پایگاه داده sql می باشد، اما بعضی ویژگیهای در مونگو وجود ندارند. نظیر:join ها یا trigger ها یا تراکنش های چند سطری پیچیده، که پیاده سازی آنها به روش های برنامه نویسی قابل انجام است.
مفاهیم اصلی
سندها یا Documents
سندها همان مفهوم ردیف ها در دیتابیس های رابطه ایی(sql) می باشند
مجموعه ها یا collection
مجموعه ها همان جداول در دیتابیس های رابطه ایی میباشد.
دیتابیس
این مفهوم دست نخورده باقیمانده و همان مفهوم DB در دیتابیس های رابطهای میباشد.
ویژگی ها
سندگرا
- سندها بسیار شبیه به نوع داده ایی دیکشنری در زبانهای برنامه نویسی بوده و به همین منظور برای برنامه نویس بسیار راحت میباشد.
- قابلیت سندگرا و آرایه ای بودن نیاز به اتصال های اضافی را کاهش داده است.
- اسکیمای داینامیک آن باعث ایجاد چندریختی های آسانتر شده
- هر سند دارای یک کلید مخصوص “_id” هست که در بین سندهای یک مجموعه یکتا هست.
قدرتمند و سریع
- وجود سرعت بسیار زیاد در خواندن و نوشتن دادهها
- ایجاد ایندکس گذاری بر روی کلیدها(key)
- در هر زمانی ممکن است پردازش بصورت offload و منطقی سمت کلاینت انجام گیرد که این طراحی سبب بالا بردن کارایی MongoDB شده.
میرورینگ و کلاسترینگ
مونگو هم چنین دارای سرویس کلاسترینگ میباشد.
سرویس کلاسترینگ MongoDB بیشتر برای سازمان و شرکتهایی به کار میرود که برنامه ی آنها تحت هر شرایطی باید اجرا شود و در حالت اجرا باقی بماند حتی زمانی که یکی از سرورها از سرویس خارج شده باشد. در سرویس کلاسترینگ تمامی سرورها همان برنامه و قوانینی را که باقی سرورها اجرا میکنند اجرا خواهند کرد لذا اگر سروری از سرویس خارج شود باقی سرورها بلافاصه شروع به کار خواهند کرد که به آن Failover گفته میشود. زمانی که سرور از سرویس خارج شده دوباره به کار افتاد باقی سرورها آگاه میشوند و روند عادی دوباره ادامه خواهد یافت. به این عمل Failback گفته میشود
گسترش پذیری آسان
زمانی که چند سرور برنامه MongoDB را با یکدیگر اجرا میکنند که نتیجه آن احتمال خطای کمتر و سرعت لود بالاتربرنامه هاست. MongoDB بر پایه scale out بودن طراحی شده است، سندگرا بودن مدل دادهها این اجازه را میدهد که دادهها به طور جداگانه در روی چندین سرور پخش شوند که دادهها و لود کردن یک گروه را به تعادل میرساند. توزیع مجدد دسته ها اتوماتیک است که این امکان را میدهد که برنامه نویسان بدون نگرانی از ذخیره دادهها روی برنامه نویسی تمرکز کنند به این تکنیک شارد(Shard) گفته میشود که مجموعه ها و داده را در بین چندین سرور بصورت خودکار و اتوماتیک انجام میدهد.
رابط چندگانه
دارای API های زبانهای عمومی بوسیله Driverها و shell مونگو میباشد.
شروع آموزش
سند ها
سندها بصورت object میباشند:
{'key': 'value'}
ترتیب و ارزشها اهمیت دارند:
{'key2': 'value2', 'key1': 'value1'}
متفاوت از
{'key1': 'value1', 'key2': 'value2'}
مونگو case-sensitive و type-sensitive میباشد.
سند در مونگو نمیتواند دارای کلید تکراری باشد! سند زیر غلط میباشد:
{'key': 'value2', 'key': 'value1'}
mongo
برای کار با مونگو در محیط shell بنویسید
mongo
برای وصل شدن به دیتا بیسی باید از دستور use استفاده کنید.
توجه داشته باشید که شما حتی بدون اینکه از پیش پایگاه داده ای را ایجاد کرده باشید دستور use عمل سوییچ به آن پایگاه را برای شما آنجام میدهد، زیرا که دیتابیس و collection ها در ورود اولین سند بصورت runtime ساخته میشود.
use test
ایجاد سند
برای ساخت سند باید از دستور insert استفاده شود:
db.test.insert({exam: “test1”})
با دستور find میتوانیم از صحت ورود اطلاعات اطمینان حاصل نماییم:
db.test.find()
خروجی بصورت زیر خواهد بود،
{ _id : ObjectId("4bf9bec50e32f82523389314"),username : ”test1” }