اگر با جهان مهندسی داده آشنایی داشته باشید، احتمالا یکی از دو اصطلاح Data Pipeline (خطوط داده) و یا DAG را شنیدهاید. نکته جالب توجه در اینجا این است که این دو اصطلاح اساسا به یک مکانیزم اشاره دارند. در DAG هر نود (Node) یا گره وظیفه خاصی بر عهده دارند که در ادامه به آنها خواهیم پرداخت.
Data Pipeline از رویدادی رایج برای ارائه آنچه که در غیر این صورت فرآیندی غیر قابل رویت میبود، استفاده میکند. دادهها در واقع مانند یک لوله مجزا نیستند که از یک طرف شروع شوند و از طرف دیگر بیرون آیند؛ بلکه از دادههای دیگر در خلال این زمان مجزا هستند و سرعت دادهها میتواند فشار زیادی را بر سرورها ایجاد کند. آشنایی با این گونه مفاهیم در فضای بلاک چین و ارز دیجیتال اهمیت دارد.
DAG دقیقا به چه چیزی اشاره دارد؟
DAG کوتاه شده عبارت Directed Acyclic Graph است که به معنی گراف غیرمدور هدایتشده است. برای جلوگیری از آشفتگی و درک بهتر مفهوم این عبارت، به توضیح یک به یک کلمات میپردازیم.
اجازه دهید با مفهوم graph شروع کنیم. گراف در مهندسی داده به مجموعه محدودی از نقطهها و خطوط اشاره دارد که آنها را به یکدیگر متصل میکنند. البته در مورد DAG قضیه کمی فرق میکند و این نقطهها هر کدام نشاندهنده یک وظیفه پردازش داده هستند.
گره یا نود (node) اول یا همان نود A میتواند کدی برای بیرون کشیدن دادهها از یک API باشد.
نود B میتواند کدی برای ناشناس کردن دادهها و رها کردن هر آدرس IP باشد.
نود D میتواند کدی برای بررسی این باشد که هیچ آی دی (ID) ثبت شده المثنی موجود نباشد.
نود E میتواند این دادهها را در یک پایگاه داده بگذارد.
نود F میتواند یک بررسی SQL را بر روی فهرستهای جدید انجام دهد و داشبورد را به روز کند.
اگر به شکل بالا نگاه کنید، متوجه میشوید که این ساختار بسیار شبیه لوله است. این وظایف گسترش پیدا میکنند و با ورودیهای جدید در کنار هم قرار میگیرند. به همین دلیل است که نام Data Pipeline یا همان لولهکشی داده هنوز هم مورد استفاده قرار میگیرد.
توجه داشته باشید که در گراف بالا هر کدام از خطوط دارای جهت خاصی هستند و نودهای مختلف را به یکدیگر متصل میکنند. دادهها فقط میتوانند در جهت این خطوط حرکت کنند. این درست مانند حرکت آب و جریان لولهکشی است. نودهایی که بعد از نود قبلی میآیند در پایین جریان هستند و نودهایی که قبل از آن میآیند در بالای جریان قرار دارند.
توجه داشته باشید که علاوه بر این که دادهها در یک جهت حرکت میکنند، نودها نیز هرگز خودارجاع نخواهند شد. آنها هرگز به مطلع کردن خود نمیپردازند؛ زیرا این کار یک حلقه نامحدود ایجاد میکند.
پس دادهها میتوانند فرضا از A به B بروند و برگشت آنها در جهت عکس امکانپذیر نیست. دادههایی که از منبع جدیدی میآیند، قادر خواهند بود که به طرف یکی از نودها هدایت شوند، اما دیگر دادههای بعدی را نمیتوان به داخل آن نود گذر داد.
اگر F یک فرایند پایین جریان داشته باشد و D بعد از آن بیاید، گرافی مانند شکل زیر خواهیم داشت که D به اطلاع رسانی به E میپردازد و به این ترتیب این روند ادامه پیدا میکند. در این حالت، این معماری به صورت نامحدود ادامه پیدا میکند و به پایان نمیرسد.
این کل توضیحات در مورد DAG بود. برای به خاطر آوردن بهتر مطالب، حتما به نکات زیر توجه کنید:
- هدایت شده به این معنی است که وظایف متعددی موجود است و هر یک از این وظایف حداقل باید وظیفه قبلی یا بعدی داشته باشند. اگرچه داشتن هر دو نیز امکانپذیر است.
- غیرمدور یعنی اینکه دادهها به خودشان ارجاع داده نمیشوند که در صورت وجود این خودارجاعی، یک حلقه نامحدود ایجاد میشود و این خوب نیست.
- گراف یا نمودار هم به این معنی است که همه وظایف در یک ساختار واضح و با فرآیندهای مجزا ارائه شدهاند و همه آنها ارتباط واضحی با همدیگر دارند.
نظر شما چیست؟ آیا میتوانید ساختار DAG را به طور کامل درک کنید؟ نظرات خود را با ما در میان بگذارید.