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 به معنی صرفاً کار با «بیگ دیتا» یا هوش مصنوعی نیست.

دوره آموزشی: دوره طراحی اپلیکیشن‌های داده محور

اصطلاحات فنی: سیستم دیزاین، سیستم توزیع‌شده، رپلیکیشن، پارتیشن‌بندی، خط لوله داده، دیتابیس.