دوره پیش نیاز: مبانی طراحی سیستمهای دادهمحور
معرفی دوره در دنیای مهندسی نرمافزار، همزمانی (Concurrency) یکی از پیچیدهترین و خطازاترین مباحث است. باگهای ناشی از اجرای همزمان تراکنشها معمولاً نادیدنی، غیرقابلتولید مجدد در محیطهای تستی (Non-deterministic) و وابسته به زمانبندیهای میلیثانیهای هستند. اغلب توسعهدهندگان تصور میکنند صرف استفاده از یک پایگاه داده رابطهای با واژه تجاری «ACID» سیستم آنها را در برابر هرگونه فساد داده بیمه میکند؛ در حالی که این تصور یک اشتباه پرهزینه است. در این دوره بر اساس آموزههای کتاب مرجع Designing Data-Intensive Applications اثر مارتین کلپمن، گامبهگام لایههای زیرین تراکنشها را کالبدشکافی میکنیم. از تعریف فنی و تفکیکشده ACID و بررسی ناهنجاریهای ظریف سطوح ایزولاسیون ضعیف گرفته تا ساختار داخلی MVCC، پدیده Write Skew، الگوریتمهای مدرن سریالپذیری بهینهبینانه (SSI) و اصل صحت انتها به انتها با کلیدهای توانرسانی، تمام مفاهیم را در قالب سناریوهای ملموس و چالشهای تحلیلی پلتفرم دیپ یار فرا خواهید گرفت. سرفصلهای دوره: فصل ۱ — کالبدشکافی ACID و تضمینهای ایمنی: تفکیک دقیق Atomicity از همزمانی، چرایی تعلق Consistency به اپلیکیشن، و تراکنشهای تکموجودیتی در برابر چندموجودیتی. فصل ۲ — سطوح ایزولاسیون ضعیف و ناهنجاریهای همزمانی: بررسی Read Committed، رفع ناهنجاری Dirty Read و مهار Lost Update با قفلهای صریح و عملیات اتمیک. فصل ۳ — ایزولاسیون اسنپشات و کنترل همزمانی چندنسخهای: ساختار داخلی MVCC، قاعده «خوانندگان مانع نویسندگان نمیشوند»، ناهنجاری انحراف در نوشتن (Write Skew) و پدیده فانتومها. فصل ۴ — مکانیزمهای سریالپذیری و اصل صحت انتها به انتها: مقایسه ۲PL و SSI، محدودیتهای تراکنش محلی دیتابیس در برابر خطاهای مرزی شبکه و توانرسانی (Idempotency). فصل ۵ — پروژه نهایی و ارزیابی جامع: طراحی سیستم دفترکل تراکنشی و سامانه رزرواسیون با ۵ گیت تصمیم معماری + آزمون جامع پایانی. اهداف و دستاوردهای یادگیری: کالبدشکافی تضمینهای چهارگانه ACID و تمایز دقیق اتمیسیته از ایزولاسیون و چرایی وابستگی سازگاری به منطق اپلیکیشن شناسایی و پیشگیری از ناهنجاریهای همزمانی نظیر Dirty Read, Lost Update, Non-repeatable Read, Phantom Read و Write Skew درک مکانیزم داخلی کنترل همزمانی چندنسخهای (Snapshot Isolation / MVCC) و قوانین دیدپذیری سطرها مقایسه فنی و ارزیابی تریدآفهای سه روش سریالپذیری: اجرای متوالی واقعی، قفلگذاری دوفازی (2PL) و ایزولاسیون اسنپشات سریالپذیر (SSI) به کارگیری اصل صحت انتها به انتها (End-to-End Correctness) و پیادهسازی کلیدهای توانرسانی (Idempotency Keys) برای مهار خطاهای مرزی شبکه و سرور
دوره پیش نیاز: مبانی طراحی سیستمهای دادهمحور
معرفی دوره وقتی حجم دادهها، نرخ ترافیک نوشتن و خواندن، یا نیازمندیهای دسترسیپذیری جغرافیایی از توان یک ماشین واحد فراتر میرود، چارهای جز ورود به دنیای سیستمهای توزیعشده وجود ندارد. با این حال، توزیع دادهها بهای سنگینی به همراه دارد: شبکههای نامطمئن با قطعیهای غیرمنتظره، ساعتهای سختافزاری با انحراف زمانی، ناهماهنگی در کپی دادهها و پدیده شکستهای جزئی (Partial Failures). در این دوره بر اساس بینشهای عمیق کتاب مرجع Designing Data-Intensive Applications اثر مارتین کلپمن، گامبهگام با اصول معماری دادههای توزیعشده آشنا میشوید. از استراتژیهای رپلیکیشن و تکنیکهای پارتیشنبندی گرفته تا مدیریت ساعتهای نامطمئن، تضمینهای خطیپذیری و پروتکلهای اجماع توزیعشده، تمامی مفاهیم همراه با سناریوهای ملموس مهندسی و چالشهای تعاملی پلتفرم دیپ یار کالبدشکافی میشوند. سرفصلهای دوره: فصل ۱ — چرا توزیع میکنیم و اصل طراحی برای شکست: انگیزههای مقیاسپذیری و پایایی، درک شکستهای جزئی و دگرگونی تفکر در سیستمهای توزیعشده. فصل ۲ — استراتژیهای رپلیکیشن و ناهنجاریهای تأخیر: کالبدشکافی مدلهای تکلیدری، چندلیدری و بدون لیدر، تضمینهای سازگاری و تکنیک کووروم (Quorum). فصل ۳ — پارتیشنبندی و توزیع بار: تقسیم داده بر اساس بازه کلید و هش، هشینگ پایدار (Consistent Hashing) و چالشهای شاخصهای ثانویه. فصل ۴ — شبکههای نامطمئن، ساعتها و توقفهای زمانی: خطرات ساعتهای سختافزاری، پرشهای زمانی، توقفهای GC و تکنیک Fencing Tokens. فصل ۵ — خطیپذیری، اجماع و تعهد توزیعشده: تفاوت خطیپذیری و سریالپذیری، قضیه CAP، پروتکلهای 2PC، Raft و Paxos. فصل ۶ — پروژه نهایی و ارزیابی جامع: طراحی گامبهگام معماری پایگاه داده توزیعشده برای یک سرویس مقیاس بزرگ جهانی و آزمون جامع پایانی. اهداف و دستاوردهای یادگیری: انتخاب استراتژی رپلیکیشن بهینه (تکلیدری، چندلیدری و بدون لیدر Dynamo-style) متناسب با نیازمندیهای بار و تحمل خطا شناسایی و خنثیسازی ناهنجاریهای ناشی از تأخیر رپلیکیشن از طریق تضمینهای سازگاری نظیر Read-Your-Own-Writes و Monotonic Reads طراحی معماری پارتیشنبندی مقیاسپذیر با استفاده از هشینگ پایدار (Consistent Hashing) و مدیریت ایندکسهای ثانویه تحلیل عمیق خطرات ساعتهای نامطمئن، انحرافات زمانی و توقفهای Garbage Collection و پیادهسازی مکانیزمهای Fencing تمایز دقیق خطیپذیری (Linearizability) از سریالپذیری (Serializability) و تحلیل محدودیتهای قضیه CAP ارزیابی پروتکلهای اجماع توزیعشده (Raft, Paxos, Zab) در مقایسه با تعهد دو مرحلهای (2PC) در شرایط شکست شبکه
بر اساس کتاب 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