سیستم‌های توزیع‌شده

1.1       سیستم‌های توزیع‌شده

سیستم عامل توزیع شده در یک محیط شبکه‌ای اجراء می‌شود. در این سیستم قسمتهای مختلف برنامه کاربر بدون آنکه خود او متوجه شود می‌توانند همزمان در چند کامپیوتر مجزا اجراء شده و سپس نتایج نهایی به کامپیوتر اصلی کاربر بازگردند.

کاربران نباید از این موضوع باخبر شوند که برنامه آنها در کجا اجرا می‌شود و یا فایلهای آنها در کجای شبکه قرار دارد و همه این کارها باید توسط سیستم عامل به صورت خودکار انجام گیرد. به عبارتی دیگر سیستم باید از دید کاربر شفاف باشد و هرچیز را با نام آن فراخوانی کند و کاری به آدرس آن نداشته باشد.

یکی از مزایای مهم سیستمهای توزیع شده سرعت بالای اجرای برنامه‌هاست چرا که یک برنامه همزمان می‌تواند از چندین کامپیوتر استفاده کند. همچنین به علت توزیع شدن اطلاعات، بانکهای اطلاعاتی حجیم می‌توانند روی تعدادی کامپیوترهای شبکه شده قرار بگیرند. لازم نیست که همه اطلاعات به یک کامپیوتر مرکزی فرستاده شود (که در نتیجه این نقل و انتقالات حجیم زمان زیادی به تلف می‌شود.)

به علت تأخیر‌های انتقال در شبکه و نویزهای احتمالی در خطوط انتقالی، قابلیت اطمینان اجرای یک برنامه در یک سیستم بیشتر از قابلیت اطمینان آن در یک سیستم توزیع شده است. همچنین درسیستم توزیع شده اگر یکی از کامپیوترهایی که وظیفه اصلی برنامه جاری را برعهده دارد خراب شود کل عمل سیستم مختل خواهد شد. از طرف دیگر اگر اطلاعاتی همزمان در چند کامپیوتر به صورت یکسان ذخیره گردد ویکی از کامپیوترها خراب شود، داده‌ها را می‌توان از کامپیوترهای دیگر بازیابی کرد از این نظر امنیت[1] افزایش می‌یابد.

به سیستم‌های توزیع‌شده گاهی سیستمهای ارتباط ضعیف[2] نیز می‌گویند، چرا که هر پردازنده فرکانس و حافظه مستقلی دارد و پردازنده‌ها از طریق خطوط مخابراتی مختلفی مثل گذرگاه‌های سریع یا خطوط تلفن ارتباط دارند.

هر سیستمی‌که بر روی مجموعه‌ای از ماشین‌ها که دارای حافظه اشتراکی نیستند، اجرا شده و برای کاربران به گونه ای اجرا شود که گویا بر روی یک کامپیوتر می‌باشند‌، یک سیستم توزیع شده است. در یک سیستم توزیع شده‌: یک نرم افزار یا مجموعه نرم افزاری واحد بر روی هر گره اجرا می‌شود. همه ماشینها یک هسته‌ی[3] مشابه را اجرا می‌کند. هر هسته منابع خود را کنترل می‌کند. مواردی که در طراحی سیستم توزیع شده باید در نظر گرفت: شفافیت،  قابلیت اطمینان، کارایی خوب، قابلیت گسترش.

قابلیت اطمینان: در دسترس بودن یک فاکتور مهم مرتبط با این سیستم‌ها است. طراحی نباید به گونه‌ای باشد که نیاز به اجرای همزمان مولفه‌‌های[4] اساسی باشد. افزونگی بیشتر داده‌ها باعث افزایش در دسترس بودن شده اما ناسازگاری را بیشتر می‌کند. قدرت تحمل نقص[5] باعث پوشاندن خطاهای ایجاد شده توسط کاربر می‌شود.

کارآیی: بدون کارآیی مناسب کلیه موارد استفاده نرم افزار بی‌فایده می‌باشد. اندازه گیری کارایی در سیستم‌های توزیع شده کار آسانی نیست. برای رسیدن به کارایی باید توازنی خاص در تعداد پیغامها و اندازه مولفه‌‌های توزیع شده برقرار باشد.

قابلیت گسترش: قابلیت گسترش یک اصل کلی برای توسعه سیستمهای توزیع شده می‌باشد. برای رسیدن به این قابلیت باید از مولفه‌‌ها، جداول و الگوریتمهای متمرکز دوری کرد. فقط باید از الگوریتمهای غیر متمرکز استفاده شود.

شکل2‑4- مثالی از یک سییستم توزیع شده  [47]

1.1.1       قانونهایی برای سیستمهای توزیع شده

قانون صفر: سیستمهای توزیع شده باید برای کاربر نهایی دقیقا به صورت سیستمهای متمرکز باشند[45]. استقلال محلی، عدم وابسته بودن به سایت مرکزی، عملیات پیوسته، استقلال Location، استقلال قطعات[6]، استقلال Replication، پردازش توزیع شده، پرس‌وجوها، مدیریت توزیع شده تراکنش[7]، استقلال سخت افزاری، استقلال سیستم عامل، استقلال شبکه، استقلال DBMS .

قانون 1: استقلال محلی: سایتها باید تا حد امکان(بیشترین حد ممکن) مستقل باشند. داده‌های محلی باید در محل ذخیره و مدیریت شوند(با توجه به در نظر گرفتن یکپارچگی و امنیت) عملیات محلی باید حتما در خود محل اجرا شوند. تمام عملیات در یک سایت باید توسط همان سایت کنترل شود. این بدین معناست که سایت X نباید برای انجام موفقیت آمیز عملیات خود وابسته به سایت Y باشد. در برخی موارد، از دست دادن مقدار کمی‌از استقلال، اجتناب ناپذیر است[45]:  مشکل قطعه قطعه شدن (قانون 5)  مشکل Replication (قانون 6)  به روز رسانی رابطه Replicate شده(قانون 6)  مشکل محدودیت یکپارچگی[8] بین چند سایت(قانون 7)

قانون 2: عدم وابسته بودن به سایت مرکزی: به هیچ عنوان نباید برای یک سرویس مرکزی به یک سایت وابسته بود. بعنوان مثال نباید دارای یک پردازشگر مرکزی(متمرکز) جستجوها یا مدیریت مرکزی(متمرکز) تراکنش بود، چرا که کل سیستم به یک سایت خاصی وابسته می‌شوند. وابسته بودن به یک سایت خاص، حداقل به دو دلیل زیر غیر مطلوب می‌باشد:  سایت مرکزی ممکن است یک گلوگاه[9] باشد.  سیستم ممکن است آسیب پذیر باشد. در یک سیستم توزیع شده، عملیات زیر (در میان سایر عملیات) حتما باید توزیع شده باشند:  مدیریت دیکشنری  پردازش جستجو  کنترل همزمان  کنترل بازیابی

قانون 3: عملیات پیوسته: هیچگاه نباید نیاز به خاموش کردن (از قبل پیش بینی شده) کل سیستم برای اعمال تغییرات داشته باشیم. اضافه کردن سایت جدید X به سیستم توزیع شده D، نباید باعث توقف کل سیستم شود. اضافه کردن سایت جدید X به سیستم توزیع شده D، نباید نیازمند تغییری در برنامه‌های کاربر یا فعالیتهای ترمینال باشد[45]. حذف سایت X از سیستم توزیع شده، نباید وقفه‌های غیر ضروری در سرویس ایجاد کند. ایجاد و حذف و تکثیر قطعات به صورت پویا باید در یک سیستم توزیع شده امکان پذیر باشد. باید بتوان بدون نیاز به خاموش کردن کل سیستم، DBMS یک سایت را به روز کرد.

قانون 4: استقلال مکان[10] : نه تنها کاربران نباید از محلی فیزیکی ذخیره داده‌ها مطلع باشند، بلکه از لحاظ منطقی باید تصور کنند که داده‌ها در سایتهای محلی خودشان قرار دارد. ساده کردن برنامه‌های کاربر و فعالیتهای ترمینال، اجازه تغییر سکو، فراهم کردن استقلال مکان  برای عملیات ساده ، بازیابی ساده‌تر از عملیات به روز رسانی می‌باشد. داشتن طرحی برای نام گذاری داده توزیع شده[11] و ایجاد پشتیبانی مناسب از طریق زیر سیستم دیکشنری[45]  مواردی که باید در مورد کاربران پیاده سازی شود: کاربر U باید شناسه معتبری برای ورود در سایتهای مختلف داشته باشد. پروفایل هر کاربر برای هر شناسه مجاز باید در دیکشنری باشد. دسترسی‌های هر کاربر در هر سایت به وی اختصاص داده شود.

شکل2‑5 – مثالی از یک Distributed Data Naming Scheme [48]

قانون 5: استقلال قطعات[12] :سیستمهای توزیع شده از قطعه قطعه شدن داده‌ها پشتیبانی می‌کنند، منوط به اینکه یک رابطه خاص قابلیت تقسیم به قسمتهای مختلف برای ذخیره در محلهای فیزیکی گوناگون را داشته باشد. سیستمی‌که این قابلیت را داشته باشد، از استقلال قطعات نیز پشتیبانی می‌کند. کاربران باید از لحاظ منطقی به گونه ای تصور کنند که گویا اصلا داده‌ها در قسمتهای مختلف ذخیره نشده‌اند. از دلایل قطعه قطعه شدن داده‌ها، می‌توان به افزایش کارآیی اشاره کرد. قطعه قطعه شدن افقی[13] و قطعه قطعه شدن عمودی[14] باید در متن یک پایگاه داده توزیع شده تعریف شود. استقلال قطعات همانند استقلال مکان باعث ساده‌تر شدن برنامه‌های کاربر و فعالیتهای ترمینال می‌شود. داده‌هایی که به کاربران نمایش داده می‌شود، از ترکیب منطقی قطعات مختلف (به واسطه الحاقها[15] و اجتماعات[16] مناسب) به دست می‌آید.

قانون 6: استقلال Replication : کاربران باید از لحاظ منطقی به گونه‌ای تصور کنند که گویا اصلا داده‌ها تکرار[17] نشده‌اند. سیستم توزیع شده از کپی برداری دادها پشتیبانی می‌کند، به شرط آن که یک رابطه( یا بطور کلی‌تر یک قطعه از رابطه) بتواند از لحاظ فیزیکی در کپی‌های مجزا و در سایتهای مجزا ذخیره شود. کپی برداری داده‌ها باید همانند قطعه قطعه شدن برای کاربران شفاف (غیر قابل تشخیص) [45] باشد. دلایل عمده کپی‌برداری داده‌ها کارآیی، در دسترس بودن (دسترسی)، مشکل انتشار، به روز رسانی است. استقلال Replication همانند استقلال قطعات و استقلال مکان باعث ساده‌تر شدن برنامه‌های کاربر و فعالیتهای ترمینال می‌شود.

شکل2‑6- دو نوع متفاوت از replication  در سیستم‌های توزیع شده

قانون 7: پردازش توزیع شده پرس‌وجوها[18]: یکی از مهمترین و حیاتی ترین نکات در مورد سیستمهای توزیع شده، انتخاب استراتژی مناسب برای پردازش توزیع شده پرس‌و‌جو می‌باشد. پردازش پرس‌وجوها در سیستم‌های توزیع شده شامل موارد زیر می‌باشد: عملیات محلی ورودی و خروجی[19] و CPU در سایتهای مجزا، تبادل اطلاعات میان سایتهای فوق الذکر[45]

قانون 8 مدیریت توزیع شده تراکنش[20] : دو نکته مهم برای مدیریت تراکنش، کنترل بازیابی[21] و کنترل سازگاری[22] می‌باشد که نیاز به اعمال دقت بیشتری در محیط‌های توزیع شده دارند. در یک سیستم توزیع‌شده، یک تراکنش می‌تواند باعث اجرای کد در چندین سایت شده که همین امر خود می‌تواند باعث عملیات به روز رسانی در سایتهای مختلف شود. هر تراکنش را می‌توان شامل چندین عامل[23] در نظر گرفت که هر عامل‌، فرآیندی است که از طرف تراکنش در سایت به خصوصی اجرا می‌شود.

قانون 9 استقلال سخت افزاری: صرف نظر از اینکه چه Platform سخت افزاری استفاده می‌شود، کاربران باید تصویر واحدی از سیستم داشته باشند.  بهتر است بتوان یک DBMS را بر روی سیستمهای سخت افزاری مختلف اجرا کرد.  بهتر است سیستم‌های مختلف سخت افزاری سهم یکسانی در یک سیستم توزیع شده داشته باشند اما نمی‌توان به راحتی فرض کرد که همواره می‌توان از سیستمهای همگن استفاده کرد. به همین دلیل یک DBMS باید بر روی سیستمهای مختلف سخت‌افزاری قابل اجرا باشد.

قانون 10 استقلال سیستم عامل: بهتر است که علاوه بر استقلال سخت افزاری، قادر به راه‌اندازی DBMS بر روی سیستم عاملهای مختلف (حتی سیستم عاملهای مختلف بر روی یک سخت افزار) باشیم.  حداقل سیستم عاملهای مهمی‌که باید DBMS پشتیبانی کند (با توجه به معیارهای تجاری)، عبارتند از: MVS/XA؛ MVS/ESA، VM/CMS، VAX/VMS، UNIX(محصولات مختلف)، OS/2، MS/DOS و WINDOWS

قانون 11: استقلال شبکه: مطلوب آن است که بتوانیم شبکه‌های نامتجانس مختلف را پشتیبانی نماییم. از دید یک سیستم توزیع شده، شبکه یک سرویس مطمئن انتقال پیغام می‌باشد. مفهموم مطمئن در عبارت فوق را می‌توان بدین صورت توصیف نمود که به طور مثال اگر شبکه پیغامی‌را از سایت X برای تحویل به سایت Y دریافت کرد، سرانجام آن پیغام را به سایت Y تحویل دهد.  نباید در محتوای پیغامها خللی ایجاد شده و پیغامها باید به ترتیب فرستاده شدن ارسال شده و بیش از یکبار نیز تحویل مقصد نشوند.  شبکه مسئول احراز هویت سایت[24] نیز می‌باشد.  یک سیستم ایده آل باید هم از شبکه‌های محلی[25] و هم از شبکه‌های گسترده[26] پشتیبانی نماید.  سیستمهای توزیع شده باید معماریهای مختلف شبکه را پشتیبانی نمایند.

قانون 12:استقلال DBMS: سیستم توزیع شده ایده آل باید استقلال DVBMS را مهیا سازد[45]

[1] integrity

[2] Loosely Coupled

[3] Kernel

[4] Component

[5] Fault tolerance

[6] Fragmentation

[7] Transaction

[8] integration

[9] Bottleneck

[10] Location

[11] Distributed Data Naming Scheme

[12] Fragmentation

[13] Select

[14] Project

[15] Joins

[16] Unions

[17] replicated

[18] Query

[19] I/O

[20] Transaction

[21] Recovery Control

[22] Consistency Control

[23] Agent

[24] Site Authentication

[25] LAN

[26] WAN