معماری سیستم‌های کلان‌داده

Architecture of ‌Big-Data Systems

شماره درس: ۴۰۸۰۱.۱ تعداد واحد: ۳
مقطع: کارشناسی ارشد نوع درس: نظری
پیش‌نیاز: – هم‌نیاز: –

اهداف درس

هدف این درس، آشنا کردن دانشجویان کارشناسی ارشد و دکترا با مفاهیم و مسائل مطرح در طراحی و ساخت سامانه‌‌های بزرگ مبتنی بر داده هستند. عموم این سامانه‌ها با حجم بزرگی از داده‌ها سر و کار دارند که انواع مختلفی دارند. در این درس نحوه حل مسائل و چالش‌های مختلفی که در این سامانه‌ّ‌ها اتفاق می‌افتند آموزش داده می‌شوند.

ریز مواد

  1. سیستم‌های قابل اطمینان ، مقیاس‌پذیر و قابل نگهداری
    • تفکر در مورد سیستم های داده
    • قابلیت اطمینان (اشکالات سخت‌افزاری، خطاهای نرم‌افزاری، خطاهای انسانی)
    • مقیاس پذیری (شرح بار، شرح عملکرد، رویکردهای مقابله با بار زیاد)
    • قابلیت نگهداری ( قابلیت استفاده: آسان کردن زندگی برای عملیات، سادگی: مدیریت پیچیدگی، تکامل پذیری: سهولت در تغییر)
  2. مدل‌های داده و زبان‌های پرس و جو
    • مدل رابطه‌ای در مقابل مدل سند (تولد NoSQL ، ناسازگاری رابطه و اشبا، روابط چند به یک و چند به چند، پایگاه‌های داده مبتنی بر سند و مقایسه آن‌ها در با پایگاه‌های داده رابطه‌ای)
    • پرس و جو برای داده‌ها (پرسش‌های اعلامی در وب، پرسش مبتنی بر نگاشت-کاهش)
    • مدل‌های داده‌ای مبتنی بر گراف (گراف‌های ویژگی، زبان پرس و جو Cypher ، پرس و جوهای گرافی در SQL، ذخیره‌های سه گانه و SPARQL ، Datalog)
  3. ذخیره‌سازی و بازیابی
    • ساختارهای داده در پایگاه‌های داده (نمایه‌سازی هش، SSTables و درختان LSM، درختان B، سایر ساختارهای نمایه‌سازی، ذخیره همه چیز در حافظه)
    • پردازش تراکنش یا تجزیه و تحلیل؟ (ذخیره سازی داده‌ها، ستاره ها و دانه های برف)
    • ذخیره سازی ستون محور (فشرده سازی ستون، مرتب سازی بر اساس ذخیره ستون، نوشتن در محل ذخیره ستون محور، تجمیع: مکعب داده ها و نمای مادی شده)
  4. کدگذاری و تکامل
    • فرمت‌های کدگذاری داده‌ها (فرمت های خاص زبان، JSON ، XML و انواع باینری، Thriftو Protocol Buffer، Avro ، مزایای طرحواره)
    • حالت های جریان داده (جریان داده‌ها از طریق پایگاه های داده، REST و RPC ، جریان انتقال پیام، داده های توزیع شده)
  5. تکثیر
    • رهبران و پیروان
    • مشکلات مربوط به تأخیر تکثیر
    • تکثیر با چند رهبر
    • تکثیر بدون رهبر
  6. تقسیم‌بندی
    • تقسیم‌بندی و تکثیر
    • تقسیم‌بندی داده‌های کلید-مقدار
    • تقسیم‌یندی و نمایه‌سازی‌های ثانویه
    • متعادل‌سازی مجدد تقسیم‌بندی‌ها
    • مسیریابی درخواست‌ها
  7. تراکنش‌ها
    • مفهوم تراکنش (ACID، عملیات تک شی‌ای و چند‌شی‌ای)
    • سطوح ضعیف ایزوله‌سازی
    • قابلیت سریال‌سازی (اجرای سریال واقعی،‌ 2PL، SSI)
  8. مشکلات با سامانه‌های توزیع‌شده
    • شکست‌‌ها
    • شبکه‌های غیرقابل اعتماد
    • ساعت‌های غیرقابل اعتماد
  9. ثبات و اجماع
    • ضمانت‌های ثبات
    • خطی‌سازی سیستم‌ها
    • ضمانت سفارش
    • تراکنش‌های توزیع‌شده و اجماع (2PC، اجماع مقاوم در برابر شکست و …)
  10. پردازش دسته‌ای
    • پردازش دسته‌ای با استفاده از ابزارهای Unix
    • نگاشت-کاهش و فایل‌سیستم‌های توزیع‌شده
    • فراتر از نگاشت-کاهش (گراف و پردازش دنباله‌ای، API‌ های سطح بالا، مادی‌سازی حالت‌ها)
  11. پردازش جریانی
    • ارسال جریان اتفاقات
    • جریان و پایگاه‌های داده
    • پردازش جریان‌ّ‌‌های داده
  12. سایر مباحث مهم
    • آشنایی CI/CD‌ و DevOps
    • آشنایی مجازی‌سازی و فناوری Container
    • آشنایی فناوری‌های Orchestration
    • آشنایی فناوری‌های Monitoring
    • آ‌شنایی فناوری‌های Cache
    • ‌آشنایی فناوری‌های Load Balancing

ارزیابی

  • آزمون: آزمون‌های میان‌نیم‌سال و پایان‌نیم‌سال (۴۰ درصد نمره)
  • تمرین ‌و پروژه : سه تمرین تئوری و یک پروژه عملی که در طول نیم‌سال تحویل داده می‌شوند (۴۰ درصد نمره).
  • گزارش پژوهشی: موضوع پژوهش قبل از آزمون پایان‌نیم‌سال تعیین می‌شود. دانشجو کار پژوهش را با کمک استاد درس آغاز کرده و پس از انجام کار، نتیجه پژوهش را در قالب گزارش ارائه می‌دهد (۲۰ درصد نمره).

مراجع

  1. Kleppmann, Martin. Designing data-intensive applications: The big ideas behind reliable, scalable, and maintainable systems. O'Reilly, 2017.