معماری جریان داده (Data Flow Architecture)

معماری جریان داده (data flow architecture)در معماری جریان داده و یا data flow architecture، تمامی یک سیستم نرم افزاری به عنوان دنباله ای از تغییرات بر روی مجموعه ای از داده های ورودی پشت سر هم دیده می‌شوند. که در آن؛ داده ها و عملیات اتفاق افتاده بر روی داده ها مستقل از یکدیگر هستند. در این رویکرد؛ در ابتدا، داده به درون سیستم وارد شده و از module ها و component های مختلفی که در سیستم وجود دارند، یکی بعد از دیگری عبور می کند، تا زمانی که به مقصد نهایی خود برسد. این مقصد نهایی می تواند یک مخزن ذخیره سازی و یا data store باشد.اتصالات و ارتباطات مابین module ها و component ها در این سیستم، به روش های مختلفی از قبیل؛ I/O stream ها و I/O buffer ها و pipe ها، پیاده سازی می گردند. داده ها در سیستم می‌توانند بر اساس توپولوژی های مختلف گراف ها به حرکت در بیایند. برخی از این توپولوژی ها شامل؛ توپولوژی های مبتنی بر cycle و یا چرخه، توپولوژی های مبتنی بر خطوط صاف و یا linear که بدون چرخه هستند و یا حتی ساختارهای شبیه درخت ها می باشند.هدف اصلی این رویکرد؛ به دست آوردن کیفیت های قابلیت استفاده مجدد و همچنین قابلیت تغییر پذیری می باشد. این رویکرد برای آن دسته از سیستم های نرم افزاری مفید است که شامل مجموعه‌ای خوش تعریف از تغییرات مستقل بر روی داده ها و یا محاسبات ترتیبی بر روی داده های ورودی می باشند. این داده های ورودی نهایتاً به عنوان خروجی از سیستم خارج شده و تحویل نرم افزارهای دیگری از قبیل نرم افزارهای پردازش داده های تجاری و یا حتی compiler ها می‌شوند. به طور کلی؛ سه روش برای پیاده سازی کردن دنباله عملیات اجرایی بر روی داده ها و ما بین module ها وجود دارند که عبارتند از؛سیستم batch sequentialسیستم pipe and filter که با نام non-sequential pipeline mode نیز شناخته می شودسیستم process controlدر ابتدا در رابطه با سیستم batch sequential و در قسمت‌های بعدی در رابطه با دیگر سیستم‌های مربوط به این رویکرد صحبت خواهیم کرد.سیستم batch sequentialدر سیستم batch sequential که یک مدل پردازش داده سنتی است، یک زیر سیستم تغییر داده، فقط زمانی می‌تواند فرآیند خود را آغاز کند که زیر سیستم قبلی به صورت کامل عملیات خود را تکمیل کرده باشد.در این سیستم، جریان داده ها، یک مجموعه و یا دسته که معنی کلمه batch می باشد را که از داده ها تشکیل شده است، از یک زیر سیستم به سیستم دیگر حمل می‌کند.ارتباطات بین module ها بر اساس فایل های موقت میانی شکل می گیرد که می‌توانند توسط زیر سیستم های بعدی حذف گردند.از این روش برای آن دسته از نرم‌افزارهای استفاده می‌شود که در آن ها داده ها به صورت دستی و یا batch مورد استفاده قرار گرفته و هر زیر سیستم، فایل های ورودی مرتبط با خود را خوانده و در فایل های خروجی داده هایی را می نویسند.کاربرد معمول این معماری شامل؛ نرم افزارهای پردازش داده های تجاری در حوزه‌های مختلف از قبیل؛ بانکداری و صدور صورتحساب می‌باشد. تصویر زیر مثالی از این موضوع را نشان می‌دهد.در ادامه در رابطه با مزایا و معایب این سیستم صحبت خواهیم کرد.مزایای سیستم batch sequentialمهمترین مزیت این سیستم، فراهم کردن تفکیک ساده و مناسب مابین زیر سیستم ها می باشد.علاوه بر این؛ هر زیر سیستم می‌تواند به عنوان یک برنامه کاملاً مستقل، بر روی مجموعه ای از داده های ورودی کار کند و داده های خروجی خاص خود را تولید نماید.معایب روش batch sequentialیکی از مهمترین معایب این روش ایجاد کردن latency و یا تاخیر در ایجاد شدن خروجی کار و همچنین بهره بری پایین می باشد.علاوه بر این؛ انجام عملیات همروندی و یا concurrency، در این نوع از سیستم ها کمی دشوار است.گذشته از تمامی این موارد؛ کنترل از بیرون و یا اصطلاحاً external control برای پیاده‌سازی این گونه از سیستم ها مورد نیاز است.