Data-Intensive یا داده محور به نرمافزارهایی اشاره دارد که چالش اصلی آنها ذخیره، جستوجو، جابهجایی و پردازش قابل اعتماد داده است. در چنین برنامههایی حجم اطلاعات، تعداد درخواستهای همزمان، درستی نتایج و تحمل خرابی اهمیت بیشتری از محاسبات CPUمحور صرف دارند. مفهوم مقابل آن معمولاً Compute-Intensive است، یعنی بار اصلی روی محاسبات سنگین قرار دارد.
چه اجزایی در نرمافزار داده محور مهماند؟
| بخش | کارکرد | چالش |
|---|---|---|
| Database | ذخیره پایدار و تراکنش | کارایی و سازگاری |
| Cache | کاهش تاخیر خواندن | نامعتبر شدن داده کششده |
| Search Index | جستوجوی سریع متن یا ویژگی | بهروزرسانی ایندکس |
| Message Broker | انتقال کار یا رویداد غیرهمزمان | تکرار، ترتیب و تحویل پیام |
| Stream Processor | پردازش پیوسته رویدادها | تاخیر، Backpressure و بازپخش |
| Batch Processing | تحلیل دستهای حجم زیاد داده | زمان اجرا و بازیابی شکست |
مثال سیستم سفارش و گزارش فروش
یک فروشگاه ممکن است سفارش را در PostgreSQL ذخیره کند، صفحه محصول را از کش بخواند، رویداد پرداخت را در صف منتقل کند و گزارش روزانه را در انبار داده بسازد. چالش اصلی فقط تعداد خطوط کد نیست. مهم است سفارش گم نشود، گزارشها دیر بهروز نشوند و با خرابی یک گره، کل خدمت از کار نیفتد.
ویژگیهای یک طراحی خوب
سه محور شناختهشده برای این حوزه، قابلیت اعتماد (Reliability)، مقیاسپذیری (Scalability) و نگهداریپذیری (Maintainability) هستند. نسخهبندی Schema، ایندکس، Replication، Partitioning، کنترل همزمانی و الگوهای پردازش داده از ابزارهای دستیابی به این اهداف هستند.
ارتباط با کتاب DDIA
کتاب Designing Data-Intensive Applications موضوعات دیتابیس، ذخیرهسازی، Replication، Partitioning، تراکنش و پردازش داده را در همین چارچوب بررسی میکند. Data-Intensive به معنی صرفاً کار با «بیگ دیتا» یا هوش مصنوعی نیست.
دوره آموزشی: دوره طراحی اپلیکیشنهای داده محور
اصطلاحات فنی: سیستم دیزاین، سیستم توزیعشده، رپلیکیشن، پارتیشنبندی، خط لوله داده، دیتابیس.