📚 فصل ۲: تفاوت پایگاه دادههای رابطهای و غیررابطهای
بخش ۱: مقدمه – چرا باید این تفاوت را بدانیم؟
قبل از اینکه وارد یادگیری SQL Server بشیم، باید دقیقاً بدونیم که اصلاً چه نوع پایگاهدادههایی وجود دارند و هر کدوم چه کاربردی دارند.
این دانش به ما کمک میکنه:
- انتخاب درستی برای پروژههامون داشته باشیم.
- بدونیم چرا گاهی SQL Server بهترین گزینه است و گاهی MongoDB.
- موقع مصاحبههای کاری، جوابهای دقیق بدیم.
📌 شاید بپرسی:
«من که قراره SQL Server یاد بگیرم، چرا باید NoSQL رو هم بشناسم؟»
جواب: چون کارفرما یا پروژه ممکنه دیتابیس موجود رو براساس نیاز انتخاب کنه. اگر تفاوتها رو ندونی، نمیتونی تشخیص بدی آیا پایگاهداده انتخاب شده مناسب هست یا نه.
بخش ۲: تعریف پایگاه داده رابطهای (Relational Database)
تعریف ساده:
پایگاه داده رابطهای یعنی دادهها در جداول ذخیره میشوند و این جداول میتوانند از طریق کلیدها به هم ارتباط داشته باشند.
📌 ویژگیها:
- دادهها ساختاریافته در قالب سطرها و ستونها هستند.
- از زبان SQL برای مدیریت آن استفاده میشود.
- میتوانیم با استفاده از کلیدها جداول مختلف را به هم وصل کنیم.
- دیتاها به شکل فرمتی مشخص و ثابت (Schema) ذخیره میشوند.
مثال واقعی
فرض کن یک پایگاه داده برای آموزشگاه زبان داری:
- جدول شاگردان (StudentID, نام, شماره تماس)
- جدول کلاسها (ClassID, نام کلاس, زبان)
- جدول ثبتنامها (StudentID, ClassID, تاریخ ثبتنام)
با استفاده از کلیدها:
- هر دانشآموز میتواند در چند کلاس باشد.
- هر کلاس میتواند چند دانشآموز داشته باشد.
- میتوانیم سریعاً بفهمیم «علی» در چه کلاسهایی ثبتنام کرده.
📌 این «ارتباط» بین جداول، دلیل اصلی نامگذاری «رابطهای» است.
بخش ۳: تعریف پایگاه داده غیررابطهای (NoSQL Database)
تعریف ساده:
پایگاه داده غیررابطهای یعنی دادهها فقط در قالب جدولهای سطر و ستون ذخیره نمیشوند، بلکه میتوانند به شکلهای دیگری مثل سند، کلید-مقدار، گراف یا ستونمحور نگهداری شوند.
📌 ویژگیها:
- ساختار داده انعطافپذیرتر است (نیازی به Schema ثابت نیست).
- برای دادههای حجیم و متغیر مناسب است.
- معمولاً برای سرعت بالا در خواندن/نوشتن داده طراحی شده.
- انواع مختلف دارد: Document-Based, Key-Value, Graph, Column-Family
مثال واقعی
فرض کن یک شبکه اجتماعی داری:
- هر کاربر پستهایی با متن، تصویر، ویدیو منتشر میکند.
- هر پست میتواند تعداد نامحدود نظر و واکنش داشته باشد.
- ساختار پستها با هم یکسان نیست (یکی عکس دارد، یکی فقط متن).
در این حالت پایگاهدادهای مثل MongoDB بهتر عمل میکند چون میتواند دادهها را در قالب JSON با ساختارهای متفاوت ذخیره کند.
بخش ۴: مقایسه رابطهای و غیررابطهای – جدول کامل
ویژگی | رابطهای (Relational) | غیررابطهای (NoSQL) |
---|---|---|
ساختار داده | جدول (Rows & Columns) | انعطافپذیر (مستند، کلید-مقدار، گراف…) |
زبان پرسوجو | SQL | متفاوت (Mongo Query, Gremlin, …) |
Schema | ثابت و از پیش تعریف شده | پویا و قابل تغییر |
مقیاسپذیری | عمودی (افزایش قدرت سرور) | افقی (اضافه کردن چند سرور) |
کاربرد نمونه | بانکداری، سیستم مالی | شبکه اجتماعی، چت، تحلیل داده بزرگ |
سرعت نوشتن | متوسط | بالا |
یکپارچگی داده | بالا (ACID) | متغیر (BASE) |
بخش ۵: مفاهیم کلیدی در پایگاه دادههای رابطهای
۵-۱. روابط (Relationships)
سه نوع اصلی رابطه:
- یک به یک (One-to-One)
- یک به چند (One-to-Many)
- چند به چند (Many-to-Many)
📌 مثال:
- یک دانشآموز → یک کارت دانشآموزی (یک به یک)
- یک کلاس → چند دانشآموز (یک به چند)
- چند دانشآموز ↔ چند کلاس (چند به چند)
۵-۲. کلید اصلی و کلید خارجی
- Primary Key → هویت منحصربهفرد هر رکورد را مشخص میکند.
- Foreign Key → به رکوردی در جدول دیگر اشاره میکند.
۵-۳. تراکنشها (Transactions) در RDBMS
پایگاه دادههای رابطهای معمولاً از ACID پشتیبانی میکنند:
- Atomicity → عملیات یا کامل انجام میشود یا اصلاً انجام نمیشود.
- Consistency → دادهها بعد از عملیات در وضعیت معتبرند.
- Isolation → تراکنشها روی هم تأثیر نمیگذارند.
- Durability → داده ذخیرهشده حتی بعد از خرابی سیستم باقی میماند.
بخش ۶: مفاهیم کلیدی در پایگاه دادههای غیررابطهای
انواع اصلی:
- Document-Based (مثل MongoDB) → ذخیره داده در اسناد JSON
- Key-Value Store (مثل Redis) → ذخیره اطلاعات با کلید و مقدار
- Column-Family (مثل Cassandra) → دادهها به صورت ستونی ذخیره میشوند
- Graph-Based (مثل Neo4j) → مناسب برای ارتباطات پیچیده بین موجودیتها
ویژگی مهم:
- معماری افقی (Scale Out) → افزودن چند سرور به جای قویتر کردن یک سرور.
بخش ۷: انتخاب درست بین RDBMS و NoSQL
شرایط پروژه | پیشنهاد |
---|---|
ساختار داده ثابت و تغییر کمی دارد | پایگاه داده رابطهای |
حجم داده بسیار زیاد و ساختار متغیر است | پایگاه داده غیررابطهای |
نیاز به تحلیل دقیق و گزارشگیری رسمی | رابطهای |
نیاز به دسترسی سریع و مقیاسپذیری بالا | غیررابطهای |
مثال ۱:
سیستم مالی یک بانک → رابطهای (به دلیل دقت و ACID)
مثال ۲:
پلتفرم پیامرسانی آنلاین → غیررابطهای (به دلیل سرعت بالای ذخیره پیامها)
بخش ۸: تست خودت – تمرین عملی
📌 تمرین:
- یک لیست از ویژگیهای پروژه خودت تهیه کن.
- بررسی کن ساختار دادهها ثابت است یا تغییر میکند.
- تصمیم بگیر RDBMS یا NoSQL مناسبتر است.
بخش ۹: نکته مهم برای مسیر یادگیری
حتی اگر NoSQL را خوب بلد نباشی، دانستن تفاوت آن با SQL بهت کمک میکند وقتی با تیمی کار میکنی که ترکیب هر دو نوع پایگاه داده را به کار میبرد، سریع متوجه نیاز آنها شوی.
بخش ۱۰: جمعبندی فصل ۲
- پایگاه داده رابطهای → ساختار جدول، زبان SQL، ارتباط بین دادهها
- پایگاه داده غیررابطهای → انعطاف بالا، انواع قالب، سرعت نوشتن زیاد
- برای دادههای ساختاریافته و حساس به یکپارچگی → RDBMS بهترین است
- برای دادههای حجیم و پویا → NoSQL انتخاب بهتری است