معماری سیستمهای کلانداده
Architecture of Big-Data Systems
شماره درس: ۴۰۸۰۱.۱ | تعداد واحد: ۳ |
مقطع: کارشناسی ارشد | نوع درس: نظری |
پیشنیاز: – | همنیاز: – |
اهداف درس
هدف این درس، آشنا کردن دانشجویان کارشناسی ارشد و دکترا با مفاهیم و مسائل مطرح در طراحی و ساخت سامانههای بزرگ مبتنی بر داده هستند. عموم این سامانهها با حجم بزرگی از دادهها سر و کار دارند که انواع مختلفی دارند. در این درس نحوه حل مسائل و چالشهای مختلفی که در این سامانهّها اتفاق میافتند آموزش داده میشوند.
ریز مواد
- سیستمهای قابل اطمینان ، مقیاسپذیر و قابل نگهداری
- تفکر در مورد سیستم های داده
- قابلیت اطمینان (اشکالات سختافزاری، خطاهای نرمافزاری، خطاهای انسانی)
- مقیاس پذیری (شرح بار، شرح عملکرد، رویکردهای مقابله با بار زیاد)
- قابلیت نگهداری ( قابلیت استفاده: آسان کردن زندگی برای عملیات، سادگی: مدیریت پیچیدگی، تکامل پذیری: سهولت در تغییر)
- مدلهای داده و زبانهای پرس و جو
- مدل رابطهای در مقابل مدل سند (تولد NoSQL ، ناسازگاری رابطه و اشبا، روابط چند به یک و چند به چند، پایگاههای داده مبتنی بر سند و مقایسه آنها در با پایگاههای داده رابطهای)
- پرس و جو برای دادهها (پرسشهای اعلامی در وب، پرسش مبتنی بر نگاشت-کاهش)
- مدلهای دادهای مبتنی بر گراف (گرافهای ویژگی، زبان پرس و جو Cypher ، پرس و جوهای گرافی در SQL، ذخیرههای سه گانه و SPARQL ، Datalog)
- ذخیرهسازی و بازیابی
- ساختارهای داده در پایگاههای داده (نمایهسازی هش، SSTables و درختان LSM، درختان B، سایر ساختارهای نمایهسازی، ذخیره همه چیز در حافظه)
- پردازش تراکنش یا تجزیه و تحلیل؟ (ذخیره سازی دادهها، ستاره ها و دانه های برف)
- ذخیره سازی ستون محور (فشرده سازی ستون، مرتب سازی بر اساس ذخیره ستون، نوشتن در محل ذخیره ستون محور، تجمیع: مکعب داده ها و نمای مادی شده)
- کدگذاری و تکامل
- فرمتهای کدگذاری دادهها (فرمت های خاص زبان، JSON ، XML و انواع باینری، Thriftو Protocol Buffer، Avro ، مزایای طرحواره)
- حالت های جریان داده (جریان دادهها از طریق پایگاه های داده، REST و RPC ، جریان انتقال پیام، داده های توزیع شده)
- تکثیر
- رهبران و پیروان
- مشکلات مربوط به تأخیر تکثیر
- تکثیر با چند رهبر
- تکثیر بدون رهبر
- تقسیمبندی
- تقسیمبندی و تکثیر
- تقسیمبندی دادههای کلید-مقدار
- تقسیمیندی و نمایهسازیهای ثانویه
- متعادلسازی مجدد تقسیمبندیها
- مسیریابی درخواستها
- تراکنشها
- مفهوم تراکنش (ACID، عملیات تک شیای و چندشیای)
- سطوح ضعیف ایزولهسازی
- قابلیت سریالسازی (اجرای سریال واقعی، 2PL، SSI)
- مشکلات با سامانههای توزیعشده
- شکستها
- شبکههای غیرقابل اعتماد
- ساعتهای غیرقابل اعتماد
- ثبات و اجماع
- ضمانتهای ثبات
- خطیسازی سیستمها
- ضمانت سفارش
- تراکنشهای توزیعشده و اجماع (2PC، اجماع مقاوم در برابر شکست و …)
- پردازش دستهای
- پردازش دستهای با استفاده از ابزارهای Unix
- نگاشت-کاهش و فایلسیستمهای توزیعشده
- فراتر از نگاشت-کاهش (گراف و پردازش دنبالهای، API های سطح بالا، مادیسازی حالتها)
- پردازش جریانی
- ارسال جریان اتفاقات
- جریان و پایگاههای داده
- پردازش جریانّهای داده
- سایر مباحث مهم
- آشنایی CI/CD و DevOps
- آشنایی مجازیسازی و فناوری Container
- آشنایی فناوریهای Orchestration
- آشنایی فناوریهای Monitoring
- آشنایی فناوریهای Cache
- آشنایی فناوریهای Load Balancing
ارزیابی
- آزمون: آزمونهای میاننیمسال و پایاننیمسال (۴۰ درصد نمره)
- تمرین و پروژه : سه تمرین تئوری و یک پروژه عملی که در طول نیمسال تحویل داده میشوند (۴۰ درصد نمره).
- گزارش پژوهشی: موضوع پژوهش قبل از آزمون پایاننیمسال تعیین میشود. دانشجو کار پژوهش را با کمک استاد درس آغاز کرده و پس از انجام کار، نتیجه پژوهش را در قالب گزارش ارائه میدهد (۲۰ درصد نمره).
مراجع
- Kleppmann, Martin. Designing data-intensive applications: The big ideas behind reliable, scalable, and maintainable systems. O'Reilly, 2017.