DDIAفصل چهارم: کدگذاری و تکامل (DDIA)
درختواره صفحه‌ها
فصل چهارم: کدگذاری و تکامل داده‌ها (Encoding & Evolution)

طراحی سیستم‌های داده‌محورDesigning Data-Intensive Applications

راهنمای جامع، اسلاید به اسلاید و مهندسی برای ارائه مفاهیم تکامل اسکیما، سازگاری رو به عقب و جلو، کالبدشکافی بایت‌های باینری، تله‌های پروداکشن و معماری جریان داده‌ها.

مشاهده بخش‌های ۴گانه کتاب
۲۱
اسلاید تفصیلی با یادداشت سخنران
۴
بخش محوری معماری و طراحی سیستم
۳۲ بایت
یک رکورد نمونه در Apache Avro، در مقایسه با JSON
Rolling
سازگاری دوطرفه در به‌روزرسانی تدریجی
ساختار ارائه

بخش‌های اصلی فصل چهارم کتاب

روی هر کارت کلیک کنید تا ویزارد تمام‌صفحه تعاملی و شبیه‌سازی انیمیشنی بوم آن باز شود.

۰۱
مبانی معماری

مفاهیم پایه، سازگاری و تکامل سیستم

اسلایدهای ۱ تا ۴

چالش تغییر ناپذیر سیستم‌های نرم‌افزاری، استراتژی Rolling Upgrade و دو جهت سازگاری رو به عقب و جلو

ورود به ویزارد و بوم انیمیشنی ←4 موضوع
۰۲
کدگذاری و اسکیما

فرمت‌های Encoding؛ از متنی تا باینری

اسلایدهای ۵ تا ۱۴

کالبدشکافی JSON/XML، باگ اعداد ۶۴ بیتی، جادوی فشرده‌سازی Protobuf و پارادایم بدون تگ در Apache Avro

ورود به ویزارد و بوم انیمیشنی ←10 موضوع
۰۳
جریان داده و شبکه

جریان داده در معماری سیستم‌ها (Dataflow)

اسلایدهای ۱۵ تا ۲۱

سه حالت جریان داده: دیتابیس‌ها و تله دیتای گمشده، مقایسه REST و RPC، و پیام‌رسانی ناهمگام با صف‌ها

ورود به ویزارد و بوم انیمیشنی ←7 موضوع
۰۴
ترید‌آف‌های مهندسی

کالبدشکافی عمیق بایت‌ها و جدول جامع ترید‌آف‌ها

تحلیل پیشرفته و سناریوها

بررسی باگ‌های هگزادسیمال، حمله RCE در سریالایزیشن زبانی، ZigZag Encoding و جدول جامع تصمیم‌گیری

ورود به ویزارد و بوم انیمیشنی ←5 موضوع
نکات طلایی و تله‌های معماری

کالبدشکافی تله‌های بحرانی در سیستم‌های پروداکشن

باگ اعداد ۶۴ بیتی در JSONاسلاید ۶

جاوااسکریپت و JSON بین عدد صحیح و ممیز شناور فرقی نمی‌گذارند. عدد 9007199254740993 به دلیل سقف دقت 2^53 به 9007199254740992 گرد شده و ۱ واحد ناپدید می‌شود!

مشاهده شبیه‌سازی در ویزارد ←
تله از دست رفتن داده (Lost Data Trap)اسلاید ۱۷

کاربر با اپ جدید V2 فیلد عکس را ثبت می‌کند؛ سپس با نود قدیمی V1 پروفایل را ویرایش می‌کند. چون مدل V1 فیلد عکس را ندارد، ذخیره مجدد باعث پاک شدن عکس برای همیشه می‌شود!

مشاهده شبیه‌سازی در ویزارد ←
سقوط حجم به ۳۳ بایت با Protobufاسلاید ۸

حذف کامل نام فیلدها و جایگزینی با تگ‌های عددی ۱ بایتی و فشرده‌سازی اعداد با Varint، حجم رکورد را از ۸۱ بایت متنی به ۳۳ بایت باینری می‌رساند.

مشاهده شبیه‌سازی در ویزارد ←
مشکلات ذاتی فراخوانی از راه دور (RPC)اسلاید ۱۹

تلاش برای شبیه‌سازی تابع لوکال در شبکه شکست می‌خورد. گم شدن پاسخ شبکه و تلاش مجدد (Retry) بدون Idempotency Key منجر به برداشت مکرر از حساب مشتری می‌شود!

مشاهده شبیه‌سازی در ویزارد ←