مدل داده (Data Model) چگونگی ساماندهی و ساختار عناصر داده را نشان می دهد. همچنین بیانگر روابط بین عناصر مختلف داده نیز است. یک مدل داده برای ذخیره داده ها، تجزیه و تحلیل و پردازش سیستم های کلان داده در امروزه است. بر پایه مدل های گوناگون داده، سیستم های ذخیره سازی داده کنونی را می توان به دو خانواده بزرگ دسته بندی کرد: SQL و NoSQL

در دهه های گذشته، سیستم های مدیریت پایگاه داده رابطه ای (RDBMS) به عنوان راه حل غالب برای مدیریت داده ها در نظر گرفته می شده است ولی با رشد چشمگیر اندازه و تنوع و نرخ رشد داده ها، دیگر پایگاه داده های رابطه ای پاسخ پسندیده و درستی برای مدیریت داده ها نیستند، زیرا آنها توانایی پاسخ گویی به کلان داده ها و داده های نیمه ساخت یافته (Semi Structured) مانند اکسل، CSV، فرمت های JSON و XML و داده های غیر ساخت یافته (Unstructured) مانند تصویرها و فایل های دودویی را ندارند.

پایگاه داده های NoSQL

از این رو، برای پاسخ دادن به نیازهای تازه در زمینه نگهداری، تحلیل و پردازش انبوهی از داده های ساخت یافته و بی ساختار، سیستم مدیریت پایگاه داده تازه ای، به نام NoSQL توسعه داده شد. پایگاه داده های رابطه ای مدل رابطه ای (Relational Model) را برای مدل کردن و نگهداری داده به کار می گیرند. در مدل رابطه ای داده ها به ریخت جدول ها نگهداری می شوند که هر جدول یکی از موجودیت های (مانند دانشجو و استاد و درس) سیستم مدل شده را نشان می دهد. هر ستون جدول، یکی از ویژگی های موجودیت (مانند نام، نام خانوادگی، سن، میزان تحصیلات و ساعت و روز تشکیل درس) را نشان می دهند. سطرهای جدول نیز یکی از نمونه های آن موجودیت هستند.

پایگاه داده رابطه ای چیست

انواع رابطه میان جدول ها در پایگاه داده رابطه ای

مثال انواع رابطه میان جدول ها

مدل داده (Data Model) چگونگی ساماندهی و ساختار عناصر داده را نشان می دهد. همچنین بیانگر روابط بین عناصر مختلف داده نیز است. یک مدل داده برای ذخیره داده ها، تجزیه و تحلیل و پردازش سیستم های کلان داده در امروزه است. بر پایه مدل های گوناگون داده، سیستم های ذخیره سازی داده کنونی را می توان به دو خانواده بزرگ دسته بندی کرد: SQL و NoSQL

پایگاه داده های رابطه ای بر پایه ACID استوار هستند، ولی پایگاه داده های NoSQL قوانین ACID را رها کرده و برای به کارگیری در کلان داده ها بسیار کارآمد هستند. قواعد ACID بدین گونه هستند که یا همه دستور العمل های درون یک تراکنش انجام می شوند یا هیچ یک انجام نمی شوند (A=Atomic). یک تراکنش باید به گونه ای باشد که پایگاه داده را از حالت سازگار به حالتی سازگار دیگر ببرد. (C=Consistency). کارکرد و رفتار و تغییرات یک تراکنش باید جدا و مستقل از دیگری باشد، بنابراین تراکنش ها نباید به یکدیگر تاثیر بگذارند (I=Isolation). اثر تراکنش های نهایی شده (Committed Transaction) باید دائمی و پایا باشد و هرگز تصادفی از میان نروند. (D=Durability)

بیشتر سامانه های NoSQL در آغاز برای پشتیبانی از محیط های توزیع شده با نیاز به بهبود کارکرد و کارایی، با افزودن گره های تازه به محیط توزیع های شده، طراحی و ساخته شده اند. یک تئوری مشهور به نام CAP بیان می کند که یک سیستم توزیع شده تنها می تواند حداکثر دو مورد از سه ویژگی را داشته باشد: سازگاری (Consistency)، در دسترس بودن (Availability) و تحمل پارتیشن (Partition Tolerance). یک بنیاد اساسی سیستم های NoSQL به خطر انداختن سازگاری برای رسیدن به دسترس پذیری بالا (High Availability) و مقیاس پذیری (Scalability) است.

تئوری CAP می گویند از میان سه مولفه، نمی توانیم همزمان هر سه را داشته باشیم ولی در ACID هر چهار مولفه همزمان با هم نیاز هستند.

ویژگی هایی که از NoSQL می خواهیم

  • مقیاس پذیری بالا (High scalability): نیاز به توانایی مقیاس بندی افقی (Scale Up Horizontally) بر روی یک خوشه بزرگ از گره ها. در مفاهیم سیستم های توزیع شده، یک کلاستر (Cluster یا خوشه)، در برگیرنده چندین گره یا ماشین یا رایانه است که برای رسیدن به یک هدف، درون شبکه با یکدیگر کار می کنند. در انیجا، آن انگیزه، نگهداری پایدار و با دسترسی بالای داده ها است.
  • دسترس پذیری بالا و تحمل خطا (High availability and Fault Tolerance): که برای رسیدن به آنها، روش های تکرار و تکثیر (Replicating) و توزیع (Distributing) داده ها روی سرورهای توزیع شده، به کار گرفته می شود.
  • مدل های داده انعطاف پذیر: قابلیت تعریف و به روز رسانی ویژگی ها و برنامه ها به صورت پویا.
  • مدل های با سازگاری ضعیف تر: گفتیم که NoSQL بر پایه تئوری CAP است و برای رسیدن به دسترس پذیری بالا و تحمل پارتیشن، سازگاری فدای این دو می شود. به گفته دیگر، قواعد ACID را رها می کنند. در مفاهیم NoSQL ما با مدلی به نام BASE (کوتاه شده Basically Available, Soft state, Eventually consistent) روبرو هستیم.

دسترس پذیزی بالا

مدل داده Key-Value

یکی از مدل های داده در پایگاه داده های NoSQL، به گونه دوتایی های Key-Value هستند. در آن داده ها به عنوان یک مجموعه دوتایی از Key-Value در نظر گرفته می شوند، که در آن، کلیدها (Key) شناسه های یکتا برای هر داده هستند و همچنین در دسترسی به داده ها، نقش اندیس ها (Index) را ایفا می کنند.. مقدار ها ویژگی ها یا شی هایی هستند که اطلاعات واقعی داده ها را در می گیرند. شکل زیر نمایش ساده ای از مدل داده Key-Value را نشان می دهد. از نمونه این پایگاه داده ها می توان به Redis و Memchached اشاره کرد.

با استفاده از رابط های ساده می توان عملیات هایی مانند درج، حذف و جستجو با کلید را بر روی داده های درون پایگاه داده انجام دهیم. در پایگاه داده های NoSQL دوتایی های کلید-مقدار، به طور معمول، از کلیدهای ثانویه (Secondary Keys) و ایندکس گذاری (Indexing) پشتیبانی نمی شوند. در کنار این، این سیستم ها از مکانیسم پایداری همچون تکثیر (Replication)، قفل (Locking)، مرتب سازی (Sorting) و سایر ویژگی ها پشتیبانی می کنند.

مدل داده Document Stores

Document stores از ساختار داده پیچیده تر و قابلیت های غنی تری نسبت به سیستم های Key-Value برخوردار هستند. در فروشگاه های اسناد، واحد داده ها اسناد نامیده می شوند که در واقع یک شی است که می تواند شامل مجموعه ای دلخواه از فیلدها، مقادیر و حتی شی ها و آرایه های تو در تو باشد.

مدل داده Extensible-Record

مدل رکورد قابل گسترس (Extensible-Record) یا مدل ستونی (Column) در آغاز بدست پروژه Big Table گوگل معرفی شد. در این مدل داده، داده ها به گونه جدول ها با ردیف و ستون در نظر گرفته شده اند که هر دو ردیف و ستون را می توان بر روی گره های گوناگون پخش کرد. شکل زیر نمای ساده ای از مدل داده رکورد قابل گسترش را نشان می دهد.

با توجه به این که این مدل داده انعطاف پذیر و همراهی آزاده (Loosely Coupled) است بنابراین این سیستم ها از پارتیشن بندی افقی (Horizontal Partitioning) و عمودی (Vertical Partitioning) برای اهداف مقیاس پذیری (Scalability) پشتیبانی می کند. در کنار این، فیلدها / ستون های همبسته (Correlated)، برای تسهیل عملکرد پرس و جو در پارتیشن یکسان قرار دارند.

سیستمی Loosely Coupled است که هر یک از اجزای آن، هیچ آگاهی یا آگاهی اندکی نسبت به دیگر اجزای سیستم دارند. در اینجا این اجزا همان داده ها هستند.