بانکهای اطلاعاتی سندگرا

شروع کار با مانگو در سی شارپ

ماهنامه شبکه – این مقاله در ویژه نامه جنبش NoSQL ماهنامه شبکه به تاریخ خرداد ۹۱ نگارش یافته است و منبع اصلی آن نیز مقاله ای در سایت دکتر دابز است . در این قسمت از سری مقاله‌ها شروع کار با MongoDB، به ایجاد یک برنامه کاربردی با استفاده از زبان برنامه‌نویسی #C پرداخته و سعی خواهیم کرد تا پایگاه داده ساخته شده در قسمت نخست را به یک محیط با قابلیت تعامل با کاربران واقعی منتقل کنیم.

در قسمت نخست از موضوع کار با پایگاه‌های داده‌ MongoDB سعی شد تا در کنار نحوه نصب و راه‌اندازی این پایگاه داده روی پلتفرم ویندوز ۶۴ بیتی، با بیان موضوعاتی مانند انواع داده‌ای و ساختار انتزاعی پایگاه داده و معرفی مفاهیم پایه‌ای مانند مجموعه و سند، مروری سریع و کاربردی بر پایگاه‌های داده‌ غیررابطه‌ای انجام شود و چگونگی تغییر نگاه از طراحی رابطه‌ای به طراحی غیر رابطه‌ای برای پایگاه داده MongoDB تشریح شود. برای این منظور از مثال یک پایگاه داده بازی موسوم به retrogames بهره‌گرفتیم و نشان دادیم چگونه یک مدل رابطه‌ای را می‌توان به یک مدل مبتنی ‌بر سند یا سندگرا که اساس کار MongoDB بر آن استوار است، مهاجرت داد. سپس با استفاده از محیط دستوری مبتنی ‌بر جاوااسکریپت این پایگاه داده به اجرای پرس‌و‌جوهای گوناگون روی پایگاه داده غیررابطه‌ای خود پرداختیم و نشان دادیم که چگونه با استفاده از دستوراتی مانند ()find() ،update و… می‌توان تمامی نیازهای موجود برای کار با یک پایگاه داده‌ را پوشش داد. اگرچه آگاهی یافتن از مفاهیم و دستورات کار با یک پایگاه داده، جزء ضروریت‌های کار با آن است، اما واقعیتی که باید به آن توجه داشت آن است که بدون متصل ساختن هر پایگاه داده‌ای به یک زبان برنامه‌نویسی و فراهم‌آوردن قابلیت تعامل کاربران با پایگاه‌ داده، کار هرگز به سرانجام نرسیده است. برای همین منظور در این قسمت از سری مقاله‌ها شروع کار با MongoDB، به ایجاد یک برنامه کاربردی با استفاده از زبان برنامه‌نویسی #C پرداخته و سعی خواهیم کرد تا پایگاه داده ساخته شده در قسمت نخست را به یک محیط با قابلیت تعامل با کاربران واقعی منتقل کنیم.

محیطی گرافیکی برای MongoDB

اگر شما جزء آن‌دسته از حرفه‌ای‌هایی نباشید که علاقه وافری به تایپ کردن همه چیز در پوسته دستوری دارند، به‌طور حتم از قسمت پیشین این مقاله به‌ یاد دارید که وعده معرفی ابزاری گرفیکی برای تعامل با MongoDB را دادیم. ابزارهای گوناگونی برای تعامل با این پایگاه‌داده غیررابطه‌ای عرضه شده است (کافی است MongoDB GUI را جست‌وجو کنید). یکی از ابزارهای سبک و بسیار کارا در این زمینه برای کار روی پلتفرم ویندوز، MongoVUE است که در دو نسخه رایگان و پولی (با افزودن قابلیت ورود اطلاعات خاص و ابزارهای مدیریتی MongoDB) قابل استفاده است. اما جای نگرانی نیست. اگر شما هم قصد استفاده از این ابزار را برای مقاصد برنامه‌نویسی و توسعه دارید، همان‌طور که در ادامه خواهید دید، نسخه رایگان به‌طور کامل نیازهای شما را برآورده خواهد ساخت. برای دریافت این فایل کافی است تا به آدرس mongovue.com مراجعه کرده و از بخش downloads آخرین نسخه آن را دریافت کنید (شکل‌۱).

Mongo0

شکل ۱

یکی از نکته‌های جالب در‌مورد این ابزار گرافیکی تعامل با MongoDB، نمایش دستورات اجرا شده در زمان اعمال یک فرآیند در این ابزار است. به‌عبارت دیگر، هرگاه که شما فرآیند ی را روی پایگاه داده خود انجام می‌دهید (برای مثال، مستندی را درون مجموعه اضافه می‌کنید یا فیلدی را به‌روزرسانی می‌کنید) دستور معادل آن عمل که قابلیت اجرا در پوسته دستوری MongoDB را دارد، به نمایش در می‌آید. موضوعی که می‌تواند در یادگیری دستورات پوسته نیز کمک شایانی به توسعه‌دهندگان کند.
نخستین‌‌بار که MongoVUE را اجرا کنید، نیاز است تا یک اتصال به پایگاه داده MongoDB موجود روی سیستم خود ایجاد کنید. برای این منظور کافی است تا روی دکمه + در پنجره Connect کلیک کنید تا صفحه Create New Connection روی نمایشگر شما ظاهر شود .

gasmon1

شکل ۲

برای مقداردهی این فرم تنها لازم است تا دو فیلد را مقداردهی کنید. نخست فیلد اطلاعاتی Name که می‌توانید هر نامی را برای آن انتخاب کنید. گزینه دوم Server نام دارد که چنان‌چه پایگاه ‌داده را روی سیستم محلی خود نصب کرده‌اید کافی است تا مانند آن‌چه در شکل ۲ نمایش داده شده است از واژه localhost استفاده کنید.

ذکر این نکته ضروری است که چنان‌چه فیلدهای اطلاعاتی Username و Password را با استفاده از پوسته دستوری، مقداردهی نکرده‌اید، خالی گذاشته و با کلیک روی دکمه Test منتظر دریافت پاسخ برقراری ارتباط موفق بمانید.با نمایان شدن این پیغام روی دکمه Save کلیک کنید تا نام اتصال انتخابی شما در صفحه Connect ظاهر شود.سپس دکمه Connect را کلیک‌کرده و منتظر شوید تا لیست پایگاه‌های داده ساخته شده در MongoDB در قسمت Database Explorer به نمایش درآید (شکل ۳).

gasmon2

شکل ۳

در قسمت Data Explorer بسته به آن‌که تا‌کنون چه پایگاه‌های ‌داده‌ای ساخته باشید، لیستی از پایگاه‌های داده شناسایی شده نمایش داده خواهد شد که طبیعتاً پایگاه داده retrogames یکی از آن‌ها است. کافی است روی علامت + کنار آن کلیک کنید تا مجموعه‌های درون آن‌را مشاهده کنید. همچنین با مرور درخت زیرین هر مجموعه مانند games این امکان وجود خواهد داشت تا ایندکس‌های هر مجموعه را نیز مشاهده کرده، ایندکس جدید ایجاد یا ایندکس موجود را از حذف کنید. توجه کنید که هر کلیک شما در محیط گرافیکی یک، یا بیش‌تر دستور متناظر در قسمت پایینی برنامه موسوم به Learn Shell را نمایان می‌سازد که در واقع همان فضای یادگیری است که پیش‌تر در مورد آن صحبت شد.
یکی دیگر از فعالیت‌هایی که می‌توانید در این محیط گرافیکی انجام دهید، دوبارکلیک متناوب یا Double-click روی هر یک از اقلام موجود در Database Explorer است. برای مثال، چنان‌چه روی retrogames دوبار کلیک کنید، در پنل سمت راست، لیست مجموعه‌های موجود درون آن‌ها به نمایش در می‌آید (شکل ۳).

موضوعی که در مورد دوبار کلیک روی خود مجموعه‌ها صادق بوده و برای مثال می‌توانید با انجام این فرآیند، ۱۰۰ رکورد آخر موجود در مجموعه games را مشاهده کنید .

ذکر این نکته ضروری است که در نمایش مستندات درون یک مجموعه مانند games همان ساختار JSON که در قسمت اول به آن اشاره شد مورد استفاده قرار گرفته که در نمایش، به یک درخت سلسه مراتبی تبدیل شده است. بنابراین، لازم است تا با انتخاب هر سند برای مشاهده تمامی اطلاعات موجود در فیلدهای آن، درخت‌ها را تا انتها باز کنید.

gasmon5

شکل ۴

یکی ویژگی بسیار دوست‌داشتنی دیگر در مورد نرم‌افزار MongoVUE که آن‌را به ابزاری بسیار مناسب برای مهاجران از تفکر رابطه‌ای تبدیل می‌کند، امکان نمایش شکل جدولی مجموعه‌ها است. برای مثال، اگر شما روی مجموعه players دوبار کلیک کنید تا مستندات آن نمایان شود، قادر خواهید بود با کلیک روی زبانه Table View شکل جدولی مستندات را نیز مشاهده کنید تا دید بهتری نسبت به نحوه ذخیره‌سازی اطلاعات در MongoDB بیابید (شکل۴).

توجه کنید که در این ساختار برخی فیلدهای اطلاعاتی – مانند فیلد scores در players – ممکن است با نام Array[n] مقداردهی شده باشند،‌ به این معنا که آرایه‌ای از اطلاعات در این فیلد ذخیره شده است که برای مشاهده آن کافی است تا نشانگر ماوس را روی آن فیلد قرار دهید (شکل ۵).

gasmon4

شکل ۵

همچنین با کلیک روی زبانه Text View محتوای مجموعه در قالب JSON نمایش داده می‌شود. اما به‌جز نمایش اطلاعات، MongoVUE قادر به انجام کارهای دیگری نیز هست! برای مثال، بگذارید در این مرحله به‌روزرسانی که در قسمت قبل با استفاده از پوسته دستوری انجام دادیم، این‌بار در محیط گرافیکی این ابزار به انجام برسانیم. برای این منظور مراحل زیر را دنبال کنید:
از آنجا که قصد افزودن امتیازی جدید را به یک بازیکن – مجموعه players – داریم، در بخش Database Explorer مجموعه players را انتخاب می‌کنیم.
در مرحله بعد روی دکمه Update در نوار ابزار کلیک می‌کنیم. این گزینه از طریق منوی Collection نیز قابل دستیابی است. با کلیک روی این گزینه، چنان‌چه مرحله قبل را نیز به درستی انجام داده باشیم، باید محیطی برای به‌روزرسانی داده‌ها نمایان شود.

حال در قسمت Enter Find Json کد زیر را وارد کنید:

 { name: "PUZZLEGAMESMASTER" }

چنان‌چه از قسمت قبل به یاد داشته باشید، این همان نامی است که ما برای بازیکن خود در مجموعه players انتخاب کردیم.
سپس کد زیر را در قسمت Update Json وارد کنید:

{$push: { scores: { game_id: new ObjectId(“۵۱e10c50085977bc3cd92a65”),
game_name: “Invaders 2013”,
score: 87925,
score_date: new Date(2013, 7, 26)
}
}
}

پس از ورود این اطلاعات، روی دکمه Count در زیر کادر متنی Enter Find Json کلیک کنید. در این زمان باید هشداری را مشاده کنید که در آن نتیجه اجرای دستور زیر برابر ۱ است:

db.players.find({ "name" : "PUZZLEGAMESMASTER" }).count();

به این معنا که تنها یک بازیکن با نام PUZZLEGAMESMASTER در پایگاه‌داده شما وجود دارد. البته، چنان‌چه این عدد مقداری بزرگتر از یک را نیز نمایش دهد، تنها به معنای وجود بیش از یک بازیکن با این نام است که مشکل چندانی برای برنامه ما به‌وجود نخواهد آورد.
حال از قرار‌گرفتن گزینه Safe Mode در حالت انتخاب اطمینان حاصل کرده و گزینه Updated Documents (using Find query) را نیز انتخاب کنید.
در نهایت دکمه Update… را کلیک کنید، تا امتیاز جدید به بازیکن مورد نظر افزوده شود. (شکل ۶)

gasmon6

شکل ۶

با حرکت در این فرآیند، بخش آموزش نرم‌افزار یا همان Learn Shell کد زیر را تولید می‌کند:

db.players.update(
{ «name» : «PUZZLEGAMESMASTER», «$atomic» : «true» },
{ $push:
{ scores:
{
game_id: new ObjectId(«۵۱e10c50085977bc3cd92a65»),
game_name: «Invaders 2013»,
score: 87925,
score_date: new Date(2013, 7, 26)
}
}
}
, false, true);

1 2 3برگهٔ بعدی

مجتبی بنائی

دانشجوی دکترای نرم‌افزار دانشگاه تهران (yun.ir/smbanaie)، مدرس دانشگاه و فعال در حوزه توسعه نرم‌افزار و مهندسی داده که تمرکز کاری خود را در چند سال اخیر بر روی مطالعه و تحقیق در حوزه کلان‌داده و زیرساخت‌های پردازش داده و تولید محتوای تخصصی و کاربردی به زبان فارسی و انتشار آنها در سایت مهندسی داده گذاشته است. مدیریت پروژه‌های نرم‌افزاری و طراحی سامانه‌های مقیاس‌پذیر اطلاعاتی از دیگر فعالیتهای صورت گرفته ایشان در چند سال گذشته است.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

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

دکمه بازگشت به بالا