NoSQL چیست؟

شاید شما هم این روزها این واژه رو خیلی جا ها تو اینترنت دیده باشید، به ویژه اگه مثل من اهل Twitter باشید یا تو سایت های مربوط به Developer ها زیاد گشت بزنید. اون طوری که من برداشت کردم، این نوع از دیتابیس ها، شکل جدیدی از دیتابیس ها هستند که برای نیاز های نرم افزاری حال حاضر طراحی شدند، و تفاوت های چشم گیری هم با دیتابیس هایی مثل   SQL Sever، Oracle و MySQL دارند. در ادامه توضیح دقیق تر رو از زبان یکی از متخصصین این نوع دیتابیس ها می خوانیم.

بابک فخریلو

آن طور که Martin Fowler، در وبلاگش می گوید، تعریف رسمی برای NoSQL وجود ندارد، اما در جمع بندی های که صورت گرفته می توان خصوصیات دیتابیس هایی از این دست را این گونه تعریف کرد:

  • عدم استفاده از  مدل رابطه ای  و زبان SQL
  • متن باز بودن
  • ویژه ی استفاده در cluster های بزرگ
  • مبتنی بر نیاز های وب در قرن حاضر
  • بدون Schema، که در نتیجه می توان به هر رکورد دلخواهی، هر فیلدی را اضافه کرد

البته باید اشاره کرد که این ویژگی ها در همه ی دیتابیس های که در این رده قرار می گیرند، مشترک نیستند و تعریف ها هم قطعی نیستند.

اما دانستن تعریف اولیه از NoSQL بدون در نظر گرفتن دیتابیس های Document-oriented ، خالی از لطف خواهد بود. آنچه که Wikipedia در مورد Document Oriented Database می گوید، این چنین است:

یک دیتابیس Doc-Oriented، برنامه ی کامپیوتری است که برای ذخیره سازی، بازیابی و مدیریت اطلاعات document-oriented یا به عبارتی نیمه ساختار یافته، به کار می رود. دیتابیس هایی از این دست از جمله ی دسته بندی های اصلی دیتابیس هایی هستند که NoSQL نام دارند. برخلاف دیتابیس های رابطه ای و مفهوم «رابطه» در آنها، این سیستم ها حول مفهوم انتزاهی به نام «Document» طراحی شده اند.

اما “Document” در اینجا دقیقا به چه چیزی اشاره دارد؟

مفهوم اساسی در یک دیتابیس از نوع  Doc-Oriented، یک Document است. در حالی که هر پیاده سازی از این مفهوم با دیگری متفاوت است، اما در کل، همه ی آنها فرض را بر این گذاشت اند که document ها، داده ها در فرمتی استاندارد کپسوله و کدگذاری می کنند. کدگذاری های مورد استفاده می تواند، XML، YAML، JSON و BSON باشد، یا فرمت های باینری مانند PDF و فرمت های Microsoft Office (Word, Excel…) باشد.

Document ها در چنین دیتابیسی، شباهتی به رکورد ها یا سطر ها در دیتابیس های رابطه ای دارند، اما با این تفاوت که انعطاف بیشتری دارند. نیازی نیست که حتما مقید به یک schema استاندارد باشند یا بخش بندی ها و کلید های مشابهی داشته باشند. به مثال زیر نگاه کنید:

و حالا Document دیگری می تواند به شکل زیر باشد:

 
می بینید که هر دو document، شباهت هایی دارند و البته تفاوت هایی هم دارند. برخلاف دیتابیس های رابطه ای، که در آن هر رکورد باید فیلد های مشترکی با بقیه رکوردها داشته باشد و فیلد های استفاده نشده حتما باید مقدار خالی به خود بگیرند، در مدل دیتابیس های doc-oriented، فیلد خالی وجود ندارد. در این سیستم، به راحتی می توان داده های جدید را اضافه کرد، بدون نگرانی از وجود فیلد های خالی و یا نبود فیلدهای یکسان برای رکوردها.

انواع مختلفی از دیتابیس های Doc-Oriented یا به عبارتی دیتابیس هایی که در گروه NoSQL قرار می گیرند وجود دارد، که از جمله ی آنها می توان به MongoDb و RavenDB اشاره کرد.

در مطالب بعدی، به معرفی RavenDB خواهم پرداخت که برای توسعه ی برنامه های مبتنی بر .NET طراحی شده و  از استقبال خوبی هم از طرف جامعه کاربران .NET روبرو شده است.

منابع:

http://en.wikipedia.org/wiki/Document-oriented_database

http://martinfowler.com/bliki/NosqlDefinition.html

دربارهٔ Persian Developer

I Love Developing applications

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

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

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

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

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

تصویر توییتر

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

عکس فیسبوک

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

عکس گوگل+

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

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

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