RavenDB

و نوشتن را مرضی است. اصلا این صفحه ی RavenDB چند روزه تو مرورگرم بازه، هی میخوام بشینم در موردش بنویسم، الان یه دفعه دیدمش دیگه دلم نیومد ننویسم. اصلا هم حوصله ندارما، یعنی دپسرده هم هستم.

در هر صورت، تو مطلب قبلی به دیتابیس های NoSQL اشاره کردم و گفتم که این نوع دیتابیس ها، چه تفاوت هایی با دیتابیس های از نوع SQL Server یا Oracle دارن. در انتها هم یکی از دیتابیس های از نوع NoSQL معرفی کردم به اسم RavenDB که برای محیط دات نت طراحی شده. تو این مطلب، به طور مفصل تری به این دیتابیس می پردازم.

بابک فخریلو

RavenDB یک دیتابیس از نوع Doc-Oriented، تراکنشی (transactional) و متن باز است که برای محیط دات نت طراحی شده، و مدل داده ای را ارائه می کند که برای نیاز های سیستم های که در دنیای واقعیت می بینیم، طراحی شده است. RavenDB به شما این امکان را می  دهد تا برنامه های کاربردی با عملکرد بالا و latency پایین را سریع و کارا طراحی کنید.

همان طور که جز خواص دیتابیس های نوع Doc-Oriented است، داده ها در RavenDB بدون schema و در قالب JSON ذخیره می شوند، و می توان خیلی ساده با استفاده از Linq، یا توابع RESTful (روشی برای دسترسی و دستکاری داده ها که در معماری های SOA استفاده می شود. بیشتر کاربرد آن در وب سرویس ها می باشد.) روی آنها Query دلخواه را به راحتی اجرا کرد. RavenDB در عملکرد درونی خود از Index ها استفاده می کند، که این ایندکس ها یا بر اساس استفاده شما به طور خوکار ایجاد می شوند، یا این که طور صریح و بر اساس نیاز شما ایجاد می گردند.

RavenDB پروژه هایی با گستره ی پروژه های تحت وب را مد نظر دارد، و ویژگی های چون replication و sharding (من به شخصه این ویژگی خیلی برام جالبه) را در خود دارد.

چطور باید از RavenDB استفاده کرد؟

RavenDB یک Server و یک Client دارد. Server مسئول مدیریت فضای ذخیره سازی داده و query ها، و client یک مصرف کننده است که با سرور در تعامل است. راه های به کار بستن RavenDB در پروژه تان محدود به یک روش نیست:

  • به صورت یک سرویس در سیستمی مجهز به سیستم عامل Windows
  • یکپارچه شده با IIS
  • Embedded در برنامه ی شما

وقتی که RavenDB Server را توانستید اجرا کنید و به کارش بندازید، اتصال به آن با استفاده از یک client برای دریافت و ذخیره سازی داده ها خیلی ساده است. جالب اینجاست که RavenDB با کلاس هایی که قبلا در سیستم خود تعریف کرده اید سازگار است، یعنی به راحتی با استفاده از همان کلاس هایی که برای Persistence استفاده می کردید، در اینجا هم می توانید استفاده کنید:

همان طور که متوجه شده اید، RavenDB از الگوی  Unit Of Work استفاده می کند، از این رو تمامی تغییرات که قبلا از فراخوانی session.SaveChnages() در نظر گرفته شده اند، در یک تراکنش رخ می دهند.

مفاهیم اولیه

همان طور که متوجه شده اید، RavenDB جزو معماریهای نوع  Client/Server است. یعنی داده ها روی یک سرور ذخیره می شوند، و  چندین Client می توانند درخواست دسترسی به این داده ها را از  سرور داشته باشند.

درخواست هایی که به سرور فرستاده می شوند، یا به وسیله ی Client API انجام می گیرند، که در کدهای برنامه های .NET قابل استفاده هستند، یا به طور مستقیم و به وسیله ی توابع RESTful.

اگر شما برنامه های خود را بر بستر .NET توسعه می دهید، بهترین روش استفاده از Client API است، چرا که ویژگی های فوق العاده ای را فراهم می کند و کار کردن با آن نیز ساده است. اما استفاده از توابع RESTful دسترسی به RavenDB را از بسترها و سکوهای دیگری مانند AJAX در صفحات وب، یا برنامه های غیر ویندوزی مانند Ruby And Rails، فراهم می سازد.

RavenDB Server

اجرای یک instance از RavenDB

همان طور که در بالا هم اشاره کردیم، راه های مختلفی برای اجرای یک instance از این دیتابیس وجود دارد. برای این که خیلی سریع تر روند یادگیری خود را پیش ببرید، پیشنهاد می کنم آخرین نسخه را دانلود کرده، پوشه را unzip کنید و از مسیر Server، برنامه ی    Raven.Server.exe را اجرا کنید. پنجره ای مشابه زیر باید برای شما باز شود:

توجه داشته باشید که به طور خودکار پورت 8080 برای شما انتخاب شده و پوشه ی داده های تان نیز به طور خودکار ایجاد شده است. این سرور، برای حالت debug است، و در صورتی که بخواهید برنامه ی خود را به طور رسمی منتشر کنید، باید از آن در قالب یکپارچه شده با IIS یا یک سرویس ویندوزی استفاده کنید.

تا زمانی که این پنجره باز باشد، Server  RavenDB در حال اجرا است. فشردن دکمه ی  Enter سبب بسته شدن Server خواهد شد و دیگر درخواست های جدید پردازش نمی شوند.

Documents، Collections و شناسه های Document

یک موجودیت منفرد در RavenDB، یک Document خوانده می شود، و تمامی Document ها در قالب JSON ذخیره می شوند. این فرمت به این علت انتخاب شده که می تواند داده ها را به صورت سلسله مراتبی، طوری که خوانایی بالایی داشته باشند ذخیره کند. هر document یک metadata دارد که به آن ضمیمه شده، و به طور پیش فرض صرفا داده هایی که توسط خود RavenDB مورد نیاز است را در بر دارد.

یک Collection مجموعه ای از Document هایی است که نوع موجودیت یکسانی دارند (مثلا مشخصات کارمند). باید توجه داشت که Collection معادل «Table» در دیتابیس های مانند SQL Server نیست، بلکه یک روش منطقی برای گروه بندی Document ها می باشد، و صرفا یک مفهموم انتزاعی است که هیچ معنی فیزیکی برای دیتابیس ندارد.

هر Document شناسه ی منحصر بفرد (ID) خود را دارد، و این یعنی اگر شخصی بخواهد دو موجودیت با id یکسان را ذخیره کند، دومی بدون هیچ اخطاری جایگزین اولی خواهد شد.

طبق اصول RavenDB، شناسه ی یک document، ترکیبی از نام collection و شناسه ی منحصر به فرد موجودیت در collection است، مثلا users/1. با این حال، این تنها یکی از اصول است، چرا که شناسه ی document ها متسقل از نوع موجودیت هستند، و از این رو لزومی ندارد که نام collection که به آن مرتبط هستند را شامل شوند.

The Management Studio

هر Instance از RavenDB Server را می توان با استفاده از یک برنامه ی نوشته شده با Silverlight مدیریت کرد. این برنامه Management Studio نام دارد، و می توان با استفاده از مرورگر وب و اشاره به آدرس سرور (همچنین پورت) به آن دسترسی داشت. در زیر تصویری از آن را می بینید:

برگرفته از :

http://ravendb.net/docs/intro/basic-concepts

دربارهٔ Persian Developer

I Love Developing applications

Posted on اکتبر 26, 2012, in NET., پایگاه داده, توسعه نرم افزار and tagged , , , , , , , . Bookmark the permalink. ۱ دیدگاه.

پاسخی بگذارید

در پایین مشخصات خود را پر کنید یا برای ورود روی شمایل‌ها کلیک نمایید:

نشان‌وارهٔ وردپرس.کام

شما در حال بیان دیدگاه با حساب کاربری WordPress.com خود هستید. بیرون رفتن / تغییر دادن )

تصویر توییتر

شما در حال بیان دیدگاه با حساب کاربری Twitter خود هستید. بیرون رفتن / تغییر دادن )

عکس فیسبوک

شما در حال بیان دیدگاه با حساب کاربری Facebook خود هستید. بیرون رفتن / تغییر دادن )

عکس گوگل+

شما در حال بیان دیدگاه با حساب کاربری Google+ خود هستید. بیرون رفتن / تغییر دادن )

درحال اتصال به %s

%d وب‌نوشت‌نویس این را دوست دارند: