سیستمهای اطلاعات توزیعی
یکی دیگر از گروههای مهم سیستمهای توزیعی در سازمانهایی مشاهده میشود که گرچه با مجموعهای از برنامههای کاربردی شبکهای شده سروکار دارند، اما قابلیت کار با هم برای آنها تجربهای بسیار سخت است. بسیاری از راه حل های میان افزاری موجود نتیجه کار با زیرساختی[۸۶] است که در آنها ادغام برنامههای کاربردی در یک سیستم اطلاعاتی شرکتی[۸۷] آسانتر بوده است.
(( اینجا فقط تکه ای از متن درج شده است. برای خرید متن کامل فایل پایان نامه با فرمت ورد می توانید به سایت nefo.ir مراجعه نمایید و کلمه کلیدی مورد نظرتان را جستجو نمایید. ))
ادغام[۸۸] در سطوح مختلفی قابل تشخیص است. در بسیاری از موارد، یک برنامه کاربردی شبکهای شده فقط متشکل از خدمتگزار اجرا کننده آن برنامهکاربردی (در اغلب موارد مجهز به یک پایگاه دادهای) بود که در اختیار برنامههای از راه دوری بنام مشتریان قرار میگرفت. این مشتریان قادر به ارسال درخواست اجرای یک عملیات خاص برای خدمتگزار و متعاقب آن دریافت پاسخ بودند. ادغام در پایینترین لایه به کاربران اجازه میداد تا تعدادی از درخواستها را، که گاهی اوقات برای خدمتگزارهای مختلف بودند، در قالب یک درخواست بزرگ بستهبندی کرده و تحت عنوان تراکنش توزیعی[۸۹] اجرا کند. ایده اصلی آن بود که یا تمام درخواستها اجرا شود و یا هیچیک از آنها. با پیشرفتهتر شدن برنامههای کاربردی و تفکیک تدریجی آنها به مولفههای مستقل (خصوصاً تمایز بین مولفههای پایگاه دادهای از مولفههای پردازشی)، مشخص شد که بهتر است ادغام، از طریق ایجاد امکان ارتباط مستقیم برنامههای کاربردی با یکدیگر هم انجام شود. این ویژگی اکنون منجر به صنعت عظیمی به نام ادغام برنامه کاربردی شرکتی EAI[90] شده است. در ادامه بیشتر راجع به این دو شکل از سیستمهای توزیعی صحبت خواهیم کرد.
سیستمهای پردازش تراکنش[۹۱]: برای روشنتر شدن بحث، روی برنامههای کاربردی پایگاه دادهای تمرکز میکنیم. در عمل، عملیات روی پایگاه دادهای معمولاً در قالب تراکنشها انجام میشود. برنامهنویسی با بهره گرفتن از تراکنشها مستلزم آشنایی با عملهای پایهای[۹۲] خاصی است که یا باید بوسیله سیستم توزیعی زیربنایی[۹۳] تامین شود و یا از طریق سیستم زمان اجرای زبان[۹۴]. برخی از نمونههای عملهای پایهای تراکنش در جدول ۲-۳ ارائه شده است. لیست دقیق عملهای پایهای بستگی به نوع اشیاء مورد استفاده در تراکنش دارد ]۱۲[. مثلاً در یک سیستم پستی، با عملهای پایهای ارسال، دریافت و پیشبردن پست مواجه هستیم. اما در یک سیستم حسابداری، ممکن است عملهای پایهای کاملاً متفاوتی به چشم بخورد. اما READ و WRITE از نمونههای معروف و متداول در اغلب سیستمها هستند. جملههای عادی[۹۵]، فراخوانیهای روال و امثال آن هم در تراکنشها مجاز هستند. همانطور که در ادامه خواهیم گفت، فراخوانیهای روال دور (RPCها) هم غالباً به شکل تراکنش بستهبندی شده و چیزی بهنام RPC تراکنشی[۹۶] بوجود میآورد.
جدول ۲‑۲- نمونه ای از عمل های پایه در تراکنش ها ]۱۱[
شرح | عملهای پایه |
آغازتراکنش را علامتگذاری کن | BEGIN_TRANSACTION |
تراکنش را خاتمه بده و تلاش کن متعهد شوی | END_TRANSACTION |
تراکنش را نابود کن و مقادیر قدیمی را بازگردان | ABORT_TRANSACTION |
دادهها را از یک فایل، جدول یا امثال آن بخوان | READ |
دادهها را به یک فایل، جدول یا امثال آن بنویس | WRITE |
از BEGIN_TRANSACTION و END_TRANSACTION جهت مشخص کردن محدوده تراکنشها استفاده شده و عملیات بین آنها بدنه تراکنش را تشکیل میدهند. ویژگی بارز تراکنش آن است که با تمام این عملیاتها اجرا میشوند و یا هیچیک از آنها. عملیات ممکن است بسته به نوع پیادهسازی، فراخوانیهای سیستم، روالهای کتابخانهای، یا جملات داخل پرانتز یک زبان باشند. این ویژگی یا همه چیز یا هیچ چیز تراکنشها یکی از چهار ویژگی عمده تمام تراکنشها است. به بیان دقیقتر، تراکنشها دارای ویژگیهای زیر هستند ]۳[:
اتمی[۹۷]: از دید دنیای خارج، تراکنش بصورتی تفکیک ناپذیر انجام میشود.
پایدار[۹۸]: تراکنش ثابتهای سیستم را مخدوش نمیکند.
ایزوله[۹۹]: تراکنشها همزمان با یکدیگر تداخل ندارند.
دائمی[۱۰۰]: تغییرات ناشی از تراکنشها دائمی هستند.
گاهی اوقات این ویژگیها با چسباندن حروف اول آنها، در مجموع ACID (اسید) خوانده میشوند. اولین ویژگی مهم تمامی تراکنشها اتمی بودن است. براساس این ویژگی، تمامی تراکنشها یا بهطور کامل و البته طی فقط یک اقدام فوری و تفکیک ناپذیر، انجام میشود و یا اصلاً رخ نمیدهد. در حین انجام فرایند، فرآیندهای دیگر (چه خود آنها در تراکنشها شرکت داشته باشند چه نه) قادر به مشاهده هیچیک از وضیعتهای میانی[۱۰۱] تراکنش نیستند.
دومین ویژگی پایداری تراکنش است. به این معنی که سیستم دارای ثابتهایی است که باید همواره برقرار باشند. بهعنوان مثال، در سیستمهای بانکداری، یکی از ثابتهای مهم قانون حفاظت از پول است. پس از هر نقل و انتقالی داخلی، مقدار وجه موجود در بانک باید معادل مقدار آن پیش از انتقال باشد. اما در صورت از بین رفتن ثبات در حین تراکنش، حتی بهصورت لحظهای هم، این اشکال از دید دنیای بیرون کاملاً مخفی خواهد ماند.
ویژگی سوم به این معناست که تراکنشها ایزوله یا قابلیت سری شدن[۱۰۲] دارند. به این معنا که چنانچه دو یا چند تراکنش به صورت همزمان در حال انجام باشند، نتیجه نهایی برای هر یک از آنها و برای فرآیندهای دیگر، چنان است که گویی تمام تراکنشها با ترتیب مشخص (وابسته به سیستم) انجام شدهاند.
ویژگی چهارم دائمیبودن است. به این معنی است که تراکنشها در صورت تعهد، بدون کوچکترین توجهی به رویدادها و اتفاقات جانبی، به پیش رفته و نتایج دائمی میشوند. پس از انجام تعهد، هیچ خرابی نمیتواند نتایج را ملغی کرده یا باعث مفقود شدن آنها شود.
تا به اینجا، تراکنشها یک پایگاه دادهای منفرد تعریف شده است. مطابق شکل ۲-۶، تراکنش جاسازی شده[۱۰۳] از تعدادی زیرتراکنش تشکیل میشود. ممکن است در بالاترین سطح تراکنش با منشعب کردن فرزندانی[۱۰۴] که به صورت موازی باهم، اما روی ماشینهای مختلف اجرا میشوند، باعث افزایش عملکرد یا تسهیل برنامهنویسی شود. هر یک از این فرزندان هم ممکن است یک یا چند زیر تراکنش اجرا کرده و یا فرزندان خود را منشعب کنند.
شکل ۲‑۴- تراکنش تو در تو ]۱۱[
زیرتراکنشها اشکالی کوچک اما مهم را مطرح میکند. فرض کنید که یک تراکنش چندین زیرتراکنش را بهصورت موازی با هم راهاندازی و یکی از آنها را خود اجرا میکند و همین امر باعث قابل رویت شدن نتایج برای تراکنش والد[۱۰۵] میشود. با پیشروی محاسبات، پدر فرزند خود را قطع[۱۰۶] کرده و کل سیستم را به وضیعت پیش از آغاز تراکنش بالاترین لایه باز میگرداند. بنابراین، نتایج زیرتراکنش تعهد شده باید خنثی[۱۰۷] شود. بنابراین مفهوم ماندگاری که در بالا گفته شد، فقط در مورد تراکنشهای بالاترین لایه[۱۰۸] صدق میکند.
از آنجاییکه تراکنشها را میتوان با عمق دلخواه جایگذاری کرد، برای انجام درست کارها نیازمند مدیریت اجرایی قابل ملاحظهای هستیم. اما معانی مشخص هستند. با آغاز هر تراکنشها یا زیرتراکنش، از نظر مفهومی کپی اختصاصی از تمامی دادههای موجود در کل سیستم در اختیار آنها قرار داده میشود تا در صورت لزوم این دادهها را دستکاری کند. در صورت قطع شدن، دنیای خصوصی آن ناپدید میشود به طوری که گویا اصلاً وجود نداشته است. در صورت تعهد، این دنیای خصوصی جایگزین دنیای والد میشود. بنابراین، چنانچه یک زیرتراکنش تعهد شده و سپس زیرتراکنش جدیدی آغاز شود، زیرتراکنش[۱۰۹] اخیر نتایج تولیدی بوسیله زیرتراکنش اول را مشاهده خواهد کرد. به همین ترتیب، در صورت قطعشدن تراکنش (سطح بالاتر) در بر گیرنده سایر تراکنشها، تمامی زیرتراکنشها آن هم قطع خواهند شد ]۱۱[.
تراکنشها جایگذاری شده، از آنجایی که روش طبیعی برای توزیع تراکنش در بین ماشینهای مختلف بوجود میآورند، در سیستمهای توزیعی دارای اهمیت هستند. این تراکنشها از تقسیمبندی منطقی[۱۱۰] کار تراکنش اصلی تبعیت میکنند. مثلاً، تراکنش مربوط به طرحریزی سفری را که باید برای آن سه پرواز مختلف رزرو شوند، میتوان منطقاً به سه زیرتراکنش تقسیم کرد. هر یک از این زیرتراکنشها بهصورتی جداگانه و مستقل از دوتای دیگر قابل مدیریت است.
در اوایل ابداع سیستمهای میانافزاری شرکتی[۱۱۱]، مولفهای که کار تراکنشها توزیعی (یا جایگذاری شده) را انجام میداد، در واقع هسته ادغام کننده برنامههای کاربردی در سطح خدمتگزار یا پایگاهدادهای را تشکیل میداد. این مولفه ناظر پردازش تراکنش[۱۱۲] یا بهطور خلاصه ناظر TP خوانده میشد. وظیفه این مولفه، ایجاد امکان دسترسی برنامههای کاربردی به پایگاههای دادهای/خدمتگزاران متعدد از طریق ارائه یک مدل برنامهنویسی تراکنشی به آن، مشابه شکل ۲-۷ بود.
شکل ۲‑۵- نقش ناظر TP در سیستم های توزیعی ]۱۱[
ادغام برنامه کاربردی شرکتی: با افزایش تعداد برنامههای کاربردی جداشده از پایگاهدادهای زیربنایی خود، لزوم وجود امکاناتی برای تلفیق برنامههای کاربردی بهصورتی مستقل از پایگاههای دادهای آنها بیشتر آشکار شد. به خصوص اینکه، مولفههای برنامه کاربردی بایستی قادر به ارتباط مستقیم با یکدیگر باشند، و نه اینکه فقط از طریق رفتار درخواست/پاسخ که در سیستمهای پردازش تراکنش مورد پشتیبانی است، با یکدیگر ارتباط داشته باشند.
همین نیاز به وجود ارتباط در میان برنامههای کاربردی باعث ایجاد مدلهای ارتباطی مختلف شد. مطابق شکل ۲-۸، ایده اصلی آن بود که برنامههای کاربردی موجود بتوانند مستقیماً با یکدیگر تبادل داده کنند.
شکل ۲‑۶- میان افزار به عنوان تسهیل کننده ارتباط در جامعیت برنامه کاربردی سازمانی ]۱۱[
انواع مختلفی از نرمافزارهای ارتباطی وجود دارند. در فراخوانیهای روال دور RPC[113]، مولفههای برنامه کاربردی میتوانند با فراخوانی روال محلی، درخواستی را برای مولفههای دیگر برنامه کاربردی ارسال کند. در ادامه، درخواست بهصورت یک پیام بستهبندی و برای فراخوان شده[۱۱۴] ارسال میشود. نتیجه هم بازگردانده شده و بهعنوان نتیجه فراخوانی روال به برنامه کاربردی عودت داده میشود.
همگام با افزایش مقبولیت فنآوری شیگرا، تکنیکهایی هم برای فراخوانیهای اشیاء از راه دور ایجاد شدند که امروزه تحت عنوان فراخوانیهای متد دور RMI[115] شناخته میشود. RMI اساساً همان RPC، اما با این تفاوت جزیی است که بهجای برنامههای کاربردی، روی اشیاء عمل میکند.
نقطه ضعف RMI و RPC آن است که فراخواننده و فراخوان شده هر دو باید در زمان ارتباط برقرار و در حال اجرا باشند. بهعلاوه، باید دقیقاً از نحوه ارجاع به یکدیگر اطلاع داشته باشند. این وابستگی عمیق غالباً یک نقطه ضعف جدی تلقی شده و منجر به تولید چیزی به نام میانافزار پیامگرا[۱۱۶] یا بهطور ساده MOM شده است. در این حالت، برنامههای کاربردی صرفاً پیامهایی را به نقاط تماس منطقی[۱۱۷] ارسال میکنند که غالبا بهوسیله یک موضوع تعریف شدهاند. به همین ترتیب، برنامه های کاربردی میتوانند علاقه خود را به نوع خاصی از پیام اعلان کرده و پس از آن، میان افزار اتباطی مراقب ارائه همان پیامها به آن برنامههای کاربردی خواهد شد. سیستمهای مرسوم به انتشار/اشتراک[۱۱۸] یکی از مهمترین و روبه گسترشترین گروههای سیستمهای توزیعی هستند.
[یکشنبه 1400-09-28] [ 09:33:00 ب.ظ ]
|