NoSQL ؟
به شما خواننده گرامی پیشنهاد میکنم مطلب قبلی " آشنایی با JSON؛ ساده – خوانا – کم حجم " که پیش درآمدی بر
این موضوع است را مطالعه کنید.
NoSQL یک مفهوم عام است و تعریف ساده آن "پایگاه داده بدون SQL است". به این معنی که در آن خبری از جدول ها، روابط بین آنها و … نیست!
- اما چرا باید با وجود اینکه SQL به اغلب نیازهای ما پاسخ داده است، باید سراغ تکنولوژیهای دیگر رفت؟
- وقتی نگاهی به لیست شرکتهای بزرگی میاندازیم که جز مشتریان پر و پا قرص NoSQL هستند( + و + )، تعجب میکنیم! آیا آنها از قدرت و قابلیتهای SQL بی خبراند؟
پاسخ این گونه از سوالها به تحلیل سیستم مربوط میشود. به عهده تحلیل گر است تا با توجه به اجزاء سیستم و ارتباط آنها بهترین روش را برای ذخیره سازی اطلاعات انتخاب کند.
NoSQL بر اساس نحوه پیاده سازی اش دسته بندی شده است؛ که مهمترین آنها در زیر آمده است :
- Wide Column Store
- Document Store
- Key Value / Tuple Store
- Graph Databases
- Multimodel Databases
- Object Databases
برای آشنایی بهتر با هر کدام به nosql-database.org مراجعه کنید.
انتخاب روش؛ یک مثال ساده :
فرض کنید روال استخدام نیروی کار جدید در یک سازمان، از قرار زیر باشد:
- ثبت مشخصات فردی
- ارائه مدارک تحصیلی
- شرکت در آزمون استخدامی
- شرکت در مصاحبه ( درصورت قبول شدن در آزمون )
- شرکت در دوره آموزشی ( در صورت قبول شدن در مصاحبه )
روشهای ممکن برای نگهداری اطلاعات :
روش اول، تهیه پوشه هایی برای نگهداری اطلاعات مربوط به هر مرحله به صورت مجزا است.
روش دوم، تهیه یک پرونده برای هر شخص و نگهداری اسناد مربوط به شخص ( در هر مرحله ) است.
انتخاب روش اول امکان پذیر است، اما باعث پیچیدهتر شدن سیستم و اتلاف زمان میشود که مطلوب نیست. برای پیاده سازی روش دوم، SQL پاسخ گوی نیاز پروژه نیست و با توجه به نیاز پروژه بهترین روش نگهداری اطلاعات، Document Store (نگهداری اطلاعات بر اساس ساختار اسناد) است.
خوش بختانه تعداد پایگاههای داده ای که بر اساس تکنولوژی Document Store پیاده سازی شده اند، زیاد است و از قدرتمندترین آنها میتوان به MongoDB ، CouchDB و RavenDB اشاره کرد. هرکدام از این انتخابها مزایا و معایبی دارند که باید با توجه به نیاز خود، مقایسه ای انجام داده و بهترین را انتخاب کنید.
انتخاب من RavenDB بوده است و دلایل آن :
- بر اساس زبان سی شارپ نوشته شده است و همچنین با LINQ خیلی خوب کار میکند.
- Transaction را پشتیبانی میکند.
- اساس ذخیره سازی آن JSON است.
- محیط Management Studio کاربر پسندی دارد.
نقطه آغازین بحث بعد RavenDB خواهد بود که Bryan Wheeler (مدیر توسعه بسترهای نرم افزاری در msn) در باره آن گفته :
RavenDB just rocked my world. It’s extremely approachable, even for non-database guys – it took me less than 30 minutes to get up and running