نشان دیپکدهدیپکده
مهندسی نرم افزار

۱ - مبانی طراحی سیستم‌های داده‌محور

بر اساس کتاب Designing Data-Intensive

دوره متنی و تعاملی
سیدمهدی حسین زاده
سیدمهدی حسین زاده
۱ - مبانی طراحی سیستم‌های داده‌محور

درباره دوره

معرفی دوره

چرا برخی سیستم‌های نرم‌افزاری سال‌ها با پایداری بالا و بدون افت عملکرد کار می‌کنند، در حالی که سیستم‌های دیگر با رشد کاربران و حجم داده‌ها فرو می‌ریزند؟ پاسخ در درک عمیق تریدآف‌های معماری (Architectural Trade-offs) نهفته است. در دنیای نرم‌افزارهای مدرن، چالش اصلی دیگر محدودیت پردازشی CPU نیست؛ بلکه حجم، تنوع و سرعت تغییرات داده‌ها تعیین‌کننده موفقیت یا شکست یک سیستم است.

در این دوره بر اساس بینش‌های کتاب مرجع Designing Data-Intensive Applications اثر مارتین کلپمن، از سطح صفر با سه ستون بنیادین سیستم‌های داده (پایایی، مقیاس‌پذیری و نگه‌پذیری) آغاز می‌کنید، مدل‌های مختلف داده را مقایسه و ارزیابی می‌کنید، موتورهای ذخیره‌سازی را کالبدشکافی می‌کنید و در نهایت یاد می‌گیرید چگونه اسکیمای سیستم‌های زنده را بدون خرابی تکامل دهید.

سرفصل‌های دوره:
  • فصل ۱ — مبانی پایایی و ارزیابی کارایی: تعریف فنی پایایی، مقیاس‌پذیری و نگه‌پذیری؛ اندازه‌گیری کارایی واقعی با صدک‌ها و تشخیص تأخیر دُم.
  • فصل ۲ — مدل‌های داده و انتخاب مدل مناسب: مقایسه تحلیلی مدل‌های رابطه‌ای، سندمحور و گراف‌محور و تصمیم‌گیری مبتنی بر سناریو.
  • فصل ۳ — کالبدشکافی موتورهای ذخیره‌سازی: ساختارهای LSM-Tree و B-Tree، تفاوت OLTP و OLAP و نقش ذخیره‌سازی ستونی.
  • فصل ۴ — سریال‌سازی و تکامل سازگار اسکیما: فرمت‌های باینری (Protobuf، Thrift، Avro) و استراتژی‌های تغییر اسکیما بدون Downtime.
  • فصل ۵ — پروژه نهایی و ارزیابی جامع: طراحی معماری داده برای یک سناریو واقعی و آزمون یکپارچه تمام مفاهیم دوره.
اهداف و دستاوردهای یادگیری:
  • ارزیابی تریدآف‌های سه‌گانه پایایی (Reliability)، مقیاس‌پذیری (Scalability) و نگه‌پذیری (Maintainability) در تصمیمات معماری سیستم‌های داده
  • اندازه‌گیری و تفسیر کارایی واقعی سیستم با صدک‌ها (Percentiles) و تشخیص علل تأخیر دُم (Tail Latency)
  • انتخاب مدل داده مناسب (رابطه‌ای، سندمحور، گراف‌محور) بر اساس الگوی دسترسی و ماهیت روابط داده‌ها
  • کالبدشکافی و مقایسه موتورهای ذخیره‌سازی LSM-Tree و B-Tree و تشخیص کاربرد هریک بر اساس بار کاری
  • تمایز سیستم‌های تراکنشی (OLTP) از تحلیلی (OLAP) و درک نقش ذخیره‌سازی ستونی در انباره‌های داده
  • طراحی استراتژی تکامل سازگار اسکیما (Forward/Backward Compatibility) برای سیستم‌های زنده و بدون Downtime

سرفصل‌ها و درس‌ها

ساختار دوره را فصل به فصل مرور کن و هر ویدیو را پخش کن.

5 فصل
مبانی پایایی و ارزیابی کارایی4 درس
01معرفی و اهداف فصل: مبانی پایایی و ارزیابی کارایی
02سه ستون اصلی سیستم‌های داده
03صدک‌ها و معمای تأخیر دُم
04آزمون فصل ۱: مبانی پایایی و ارزیابی کارایی
مدل‌های داده و انتخاب مدل مناسب4 درس
01معرفی و اهداف فصل: مدل‌های داده و انتخاب مدل مناسب
02مدل‌های رابطه‌ای در برابر مدل‌های سندمحور
03انتخاب مدل داده بر اساس سناریو
04آزمون فصل ۲: مدل‌های داده و انتخاب مدل مناسب
کالبدشکافی موتورهای ذخیره‌سازی5 درس
01معرفی و اهداف فصل: کالبدشکافی موتورهای ذخیره‌سازی
02ذخیره‌سازی مبتنی بر لاگ و درختان LSM
03ذخیره‌سازی صفحه‌محور و درختان B-Tree
04پردازش تراکنشی در برابر تحلیلی و ذخیره‌سازی ستونی
05آزمون فصل ۳: کالبدشکافی موتورهای ذخیره‌سازی
سریال‌سازی و تکامل سازگار اسکیما4 درس
01معرفی و اهداف فصل: سریال‌سازی و تکامل سازگار اسکیما
02فرمت‌های سریال‌سازی باینری
03تکامل اسکیما و استقرار تدریجی
04آزمون فصل ۴: سریال‌سازی و تکامل سازگار اسکیما
پروژه نهایی و ارزیابی جامع3 درس
01معرفی و اهداف فصل: پروژه نهایی و ارزیابی جامع
02پروژه معماری: طراحی پلتفرم تحویل غذا
03آزمون جامع پایانی: مبانی طراحی سیستم‌های داده‌محور