چگونه مهندسی داده 2023 را یاد بگیرم؟
شروع حرفه ای در مهندسی داده می تواند با ابزارها و فن آوری های مختلف موجود در بازار بسیار زیاد باشد.

معمولاً سؤالاتی از این قبیل وجود دارد: «آیا ابتدا باید Databricks یا Snowflake را یاد بگیرم؟ آیا باید روی Airflow تمرکز کنم یا Hadoop؟”
در این وبلاگ، شما را از سطح پایه به سطح پیشرفته تمام منابع و مهارت هایی که برای تبدیل شدن به یک مهندس داده نیاز دارید، می رسانیم.
ما مهارت ها را به 3 مختلف تقسیم کرده ایم:
- برای افرادی که کاملاً در این زمینه تازه کار هستند و می خواهند حرفه خود را به مهندسی داده از رشته های دیگر تغییر دهند.
- برای افرادی که اصول اولیه را می دانند و می خواهند بدانند چگونه به جلو حرکت کنند.
- برای افرادی که تجربه دارند و می خواهند در حرفه خود رشد کنند.

بخش 1- کاوش ناشناخته(Exploring Unknown)
آیا به دنبال تغییر حرفه خود به مهندسی داده هستید، اما از تعداد ابزارها و فناوری های موجود غرق شده اید؟ تو تنها نیستی.
بسیاری از افراد خود را در موقعیت یکسانی میبینند، چه در یک شغل غیرفناوری کار میکنند، چه دانشجو باشند یا تازهکار، یا در یک شغل فنی متفاوت کار میکنند و به دنبال تغییر هستند.
اگر در هر یک از این دسته بندی ها قرار می گیرید، اولین کاری که باید انجام دهید تسلط بر مبانی علم کامپیوتر است.
اگر در این زمینه کاملاً تازه کار هستید، باید مفاهیم اولیه و اصطلاحات مورد استفاده در علوم کامپیوتر را قبل از غواصی در مهندسی داده درک کنید.
یک منبع عالی برای این کار، مجموعه های موجود در یوتیوب است که توسط CS50 هاروارد ارائه شده است.
https://www.youtube.com/watch?v=IDDmrzzB14M&list=PLhQjrBD2T380F_inVRXMIHCqLaNUd7bN4
با تماشای این مجموعه ویدیویی، بدون نیاز به مدرک تحصیلی یا صرف ماهها صرف یادگیری اصول، به درک پایهای از علوم کامپیوتر دست خواهید یافت.
هنگامی که اصول علوم کامپیوتر خود را پاک کردید، می توانید به مرحله بعدی بروید: یادگیری مهارت های مورد نیاز برای مهندسی داده.
سه مهارت اساسی برای مهندسان داده وجود دارد:
زبان های برنامه نویسی:
شما به عنوان یک مهندس داده، کارهای تبدیل زیادی را می نویسید، اسکریپت ها را پیاده سازی می کنید، اعتبارسنجی و آزمایش می کنید، و برای این کار، باید به یک زبان برنامه نویسی تسلط داشته باشید.
سه انتخاب محبوب جاوا، اسکالا و پایتون هستند. اگر مبتدی هستید، پایتون یک گزینه عالی است زیرا یادگیری و درک آن آسان است.
SQL:
زبان پرس و جو ساختاریافته پادشاه صنعت داده است. چه به عنوان یک تحلیلگر داده، مهندس داده یا دانشمند داده کار کنید، خواهید دید که اغلب از SQL استفاده می کنید.
SQL روشی است که شما با یک پایگاه داده رابطه ای ارتباط برقرار می کنید و درک نحوه استفاده از آن برای انتخاب، درج، به روز رسانی و حذف داده ها بسیار مهم است.
دستورات لینوکس:
بیشتر کارهای مهندسی داده بر روی ماشین های راه دور یا پلتفرم های ابری انجام می شود و این ماشین ها عموماً روی سیستم عامل های لینوکس اجرا می شوند.
درک نحوه کار با این ماشین ها و درک دستورات اصلی لینوکس بسیار مهم است.
بخش 2: ایجاد یک پایه قوی
در این مرحله، هدف شما باید یادگیری حداقل سطح مهارت مورد نیاز برای مهندسی داده و نحوه شروع کار خود به عنوان یک مهندس داده باشد.
شما مجبور نیستید زمانی را صرف یادگیری در مورد هر مهارت یا ابزار موجود در بازار کنید. شما فقط باید روی مجموعه مهارت های بسیار مورد نیاز و مهم مورد نیاز برای مهندسی داده در این مرحله تمرکز کنید.
در این مرحله، ما بر ایجاد یک پایه قوی برای مهندسی داده تمرکز خواهیم کرد.
اولین مهارت اساسی که باید روی آن تمرکز کنید، درک data warehouses است.
این دو بخش دارد:
– یادگیری در مورد اصول data warehouses
– یادگیری در مورد ابزارهایی مانند Snowflake یا BigQuery.
اصول data warehouses عموماً شامل درک OLTP، جداول ابعاد، استخراج، تبدیل، بارگذاری و مدلسازی دادهها مانند درک جداول واقعیت و ابعاد است.
اگر ترجیح میدهید از یک کتاب یاد بگیرید، میتوانید « The Data Warehouse Toolkit» نوشته رالف کیمبال(Ralph Kimball) را بخوانید.

این یکی از بهترین کتاب هایی است که در مورد data warehouses نوشته شده است.
هنگامی که اصول data warehouses را یاد گرفتید، می توانید آنچه را که یاد گرفته اید در یک ابزار خاص اعمال کنید.
data warehouses مختلفی مانند Snowflake، BigQuery و Redshift در بازار موجود است.
من توصیه می کنم Snowflake را یاد بگیرید، زیرا تقاضای آن روز به روز در حال افزایش است.
علاوه بر درک ذخیره سازی داده ها، شما همچنین باید چارچوب های پردازش داده ها را درک کنید.
دو چارچوب اصلی وجود دارد:
— پردازش دسته ای: پردازش داده ها به صورت دسته ای، مانند پردازش داده های ماه گذشته یک یا دو بار در روز.
– پردازش بلادرنگ: پردازش دادهها همانطور که وارد میشوند، در زمان واقعی.
برای پردازش دسته ای، اکثر شرکت ها از آپاچی اسپارک(Apache Spark) استفاده می کنند. این یک چارچوب منبع باز برای پردازش داده است.

می توانید با یادگیری اصول Apache Spark شروع کنید و سپس ابزاری را یاد بگیرید که محیط Apache Spark را تقویت می کند، مانند Databricks، AWS EMR، GCP Data Proc یا هر ابزار دیگری که در بازار پیدا می کنید.
پیشنهاد من این است که با Spark روی Databrick تمرین کنید و از PySpark (Python) به عنوان زبان استفاده کنید.

برای پردازش بلادرنگ، چارچوب ها و ابزارهایی مانند آپاچی کافکا، آپاچی فلینک و طوفان آپاچی داریم. می توانید یکی را انتخاب کنید و در مورد آن بیاموزید.
روشی که ما یاد می گیریم این است که مسائل مختلف را به قطعات کوچکتر تقسیم می کنیم.
ابتدا، ما بر یادگیری اصول تمرکز می کنیم و سپس یک ابزار بسیار مورد تقاضا در بازار را می آموزیم تا بتوانید دانش اساسی خود را به کار ببرید.
سومین مهارتی که به عنوان یک مهندس داده باید به آن مسلط شوید یادگیری در مورد پلتفرم های ابری است.
سه انتخاب اصلی موجود است:
– مایکروسافت آزور
– خدمات وب آمازون (AWS)
– Google Cloud Platform (GCP)
من کارم را با AWS شروع کردم، اما شما میتوانید هر پلتفرم ابری را انتخاب کنید، زیرا وقتی یکی را یاد گرفتید، تسلط بر بقیه آسانتر خواهد بود. مفاهیم اساسی پلتفرمهای ابری مشابه هستند، با تفاوتهای جزئی در رابط کاربری، هزینه و سایر عوامل.
در مهندسی داده، شما باید خطوط لوله داده را برای پردازش داده های خود ایجاد کنید. خطوط لوله داده، همچنین به عنوان خطوط لوله ETL شناخته می شوند، برای استخراج داده ها از یک پایگاه داده رابطه ای، اعمال تحولات و منطق تجاری، و سپس بارگذاری داده ها در یک مکان هدف استفاده می شوند. برای مدیریت این عملیات، باید با ابزارهای مدیریت گردش کار آشنا شوید.
یکی از گزینه های محبوب Apache Airflow است.

Airflow یک ابزار مدیریت گردش کار منبع باز است که به شما امکان می دهد خطوط لوله داده را ایجاد، زمان بندی و نظارت کنید. این به طور گسترده در صنعت استفاده می شود و جامعه کاربران زیادی دارد. با یادگیری Airflow، میتوانید خطوط لوله داده ایجاد کنید و فرآیند ETL را خودکار کنید و کار خود را به عنوان یک مهندس داده بسیار آسانتر میکنید.
بخش 3: Modern Data Stack و مهارت های سطح پیشرفته
به عنوان یک مهندس داده، ابزارها و رویکردهای مختلفی در بازار موجود است.
به روز ماندن و یادگیری در مورد همه آنها مهم است. علاوه بر این، شما همچنین باید بیاموزید که چگونه کل زیرساخت دادهها را طراحی کنید، چگونه سیستم را مدیریت و مقیاس کنید و بر مهارتهای پیشرفته تسلط پیدا کنید.
در این بخش، ما بر یادگیری مهارت های سطح پیشرفته مورد نیاز برای مهندسی داده تمرکز خواهیم کرد.
اولین چیزی که توصیه می کنم کاوش در Modern Data Stack (MDS) است.

فهرستی از ابزارها وجود دارد که می توانید در مورد آنها بیشتر بدانید و موارد استفاده اصلی آنها را درک کنید.
یکی از ابزارهایی که من به شدت پیشنهاد میکنم آن را بررسی کنید، DBT (ابزار ساخت داده) است زیرا شرکتهای زیادی از آن استفاده میکنند و در بازار محبوبیت پیدا میکند.
با این حال، مهم است که به ابزارهای زیادی وابسته نشوید، فقط مورد استفاده اصلی هر یک را درک کنید.
جنبه مهم دیگر درک امنیت، شبکه، استقرار و سایر موضوعات مرتبط است.
همچنین میتوانید درباره Docker یا Kubernetes، که هنگام استقرار pipelines داده در تولید مفید هستند، بیاموزید.

خواندن این کتاب ها را توصیه می کنیم:
– طراحی برنامه های کاربردی داده فشرده(Designing Data-Intensive Applications)

– مبانی مهندسی داده(Fundamentals of Data Engineering)

علاوه بر این، خواندن مطالعات موردی مشتری در پلتفرم هایی مانند AWS و GCP می تواند درک بهتری از نحوه استفاده از این ابزارها در سناریوهای دنیای واقعی به شما بدهد.
