دادهها در اطراف شما حضور دارند و هر روز در حال رشد هستند. منطقی است که مهندسی نرمافزار به گونهای تکامل یافته است که شامل مهندسی داده به عنوان یک زیرشاخه میشود که مستقیماً بر انتقال، تغییر شکل و ذخیرهسازی دادهها تمرکز دارد.
شاید شما آگهیهای شغلی مربوط به کلان داده را مشاهده کرده باشید و به پردازش دادهها در مقیاس پتابایت علاقهمند شوید. شاید شما هرگز حتی در مورد مهندسی داده چیزی نشنیده باشید اما به اینکه چگونه توسعهدهندگان مقادیر گسترده دادههای لازم برای اکثر برنامههای امروزی را کنترل میکنند، علاقهمند باشید.
فارغ از اینکه در کدام گروه قرار میگیرید، این مقاله برای شما مناسب است. شما یک نمای کلی در این باره خواهید داشت، از جمله اینکه مهندسی داده چیست و چه کارهایی را در بر میگیرد.
مهندسان داده چه کاری انجام میدهند؟
مهندسی داده یک رشته بسیار گسترده است که دارای عناوین متعددی میباشد. در بسیاری از سازمانها حتی ممکن است عنوان خاصی نداشته باشد. به همین دلیل، احتمالاً بهتر است ابتدا اهداف مهندسی داده را شناسایی کرده و سپس بررسی کنید که چه نوع کار نتایج مطلوبی را به همراه دارد.
هدف نهایی مهندسان داده، فراهم آوردن جریان دادهای منظم و منسجم برای فعال کردن کار دادهمحور است، مانند:
این جریان داده را میتوان از هر طریقی به دست آورد و مجموعه ابزارها، تکنیکها و مهارتهای مورد نیاز در تیمها، سازمانها و نتایج دلخواه بسیار متفاوت خواهد بود. با این حال، یک الگوی معمول، سیستمی متشکل از برنامههای مستقل است که عملیات مختلفی را روی دادههای ورودی یا جمعآوری شده انجام میدهند.
دادهها میتوانند از هر منبعی تهیه شوند:
- دستگاههای اینترنت اشیا
- فیدهای دادههای املاک و مستغلات
- فعالیت عادی کاربر در یک برنامه وب
- هر مجموعه یا ابزار اندازهگیری دیگری که فکرش را بکنید.
بسته به ماهیت این منابع، دادههای ورودی در جریانهای زمان واقعی یا در برخی ردیابیهای منظم به صورت دستهای پردازش میشوند.
تیمهای مهندسی داده مسئولیت طراحی، ساخت، نگهداری، گسترش و غالباً زیرساختهای پشتیبانی کننده از خطوط داده را بر عهده دارند. همچنین ممکن است آنها مسئول دادههای دریافتی یا مدل داده و نحوه ذخیره شدن نهایی آن اطلاعات باشند.
وظایف مهندسان داده چیست؟
مشتریانی که به مهندسان داده اعتماد می کنند به اندازه مهارتها و نتایج تیمهای مهندسی داده متنوع هستند. مهم نیست که چه زمینهای را دنبال میکنید، مشتریان همیشه تعیین میکنند که چه مشکلاتی را چگونه حل کنید.
در این بخش، با چند مشتری مشترک تیمهای مهندسی داده آشنا خواهید شد:
- تیمهای علوم داده و هوش مصنوعی
- تیمهای تجزیه و تحلیل هوش تجاری
- تیمهای تولیدی
قبل از اینکه هر یک از این تیمها بتوانند به طور موثر کار کنند، نیازهای خاصی باید برآورده شود. به طور خاص، دادهها باید:
- به سیستم گستردهتر منتقل شود.
- به یک مدل داده معقول نرمالسازی شود.
- تمیز شود تا خلاء مهم پر گردد.
- برای همه اعضای مرتبط قابل دسترسی باشد.
شما به عنوان یک مهندس داده، مسئولیت رسیدگی به نیازهای مشتری خود را بر عهده دارید. با این حال، از روشهای مختلفی برای سازگاری با گردش کار فردی آنها استفاده خواهید کرد.
گردش دادهها
برای انجام هر کاری با دادهها در سیستم، ابتدا باید اطمینان حاصل کنید که آنها میتوانند به طور قابل اعتماد به سیستم وارد شوند. ورودی میتواند تقریباً هر نوع دادهای باشد که میتوانید تصور کنید، از جمله:
- پخش جریانی مستقیم دادههای JSON یا XML
- دسته فیلمهایی که هر ساعت به روز میشوند
- دادههای ماهانه خونگیری
- دستههای هفتگی از تصاویر دارای برچسب
- تلهمتری از حسگرهای مستقر شده
مهندسین داده اغلب مسئول مصرف این دادهها و طراحی سیستمی هستند که بتواند این دادهها را از یک یا چند منبع به عنوان ورودی گرفته، تبدیل و سپس برای مشتریان خود ذخیره کند. این سیستمها اغلب خطوط ETL نامیده میشوند که مخفف استخراج، تبدیل و بارگیری (Extract, Transform, Load) است.
مسئولیت جریان داده بیشتر در مرحله استخراج است. اما مسئولیت مهندس داده تنها در انتقال دادهها به خطوط خلاصه نمیشود. آنها باید اطمینان حاصل کنند که خطوط داده به اندازه کافی مقاوم هستند تا بتوانند در برابر دادههای غیرمنتظره یا ناقص، منابع آفلاین و اشکالات مهلک زنده بمانند. زمان کار بسیار مهم است، به ویژه هنگامی که شما دادههای زنده یا حساس به زمان را مصرف میکنید.
نرمالسازی و مدلسازی دادهها
انتقال جریان دادهها به یک سیستم عالی است. با این حال، در برخی موارد، دادهها باید مطابق با نوعی استاندارد معماری باشند. عادیسازی دادهها شامل وظایفی است که دادهها را برای کاربران قابل دسترسیتر میکند. این شامل مراحل زیر است:
- حذف موارد تکراری
- رفع دادههای متناقض
- مطابقت دادهها با یک مدل داده مشخص
این فرایندها ممکن است در مراحل مختلف اتفاق بیفتد. به عنوان مثال، تصور کنید که شما در یک سازمان بزرگ با دانشمندان داده و یک تیم هوش تجاری کار میکنید، هر دو به دادههای شما اعتماد میکنند. شما میتوانید دادههای بدون ساختار را در یک دریاچه داده ذخیره کنید تا توسط مشتریان برای تجزیه و تحلیل دادههای اکتشافی استفاده شود. شما همچنین میتوانید دادههای نرمال شده را در یک پایگاه داده رابطهای یا یک انبار داده با هدف بیشتر ذخیره کنید تا توسط تیم هوش تجاری در گزارشها استفاده شود.
اگر مشتری شما یک تیم محصول است، بنابراین یک مدل داده با معماری صحیح بسیار مهم است. یک مدل داده صحیح میتواند تفاوت بین یک برنامه کند و برنامهای باشد که میداند که کاربر میخواهد به چه دادههایی دسترسی پیدا کند. این نوع تصمیمات اغلب نتیجه همکاری تیمهای مهندسی داده و محصول است.