فهرست مطالب
بخش اول: مفاهیم و تعاریف، کارهای انجام شده1
1-2 مروري بر فصول پاياننامه. 5
2-3 نمونههاي پيادهسازي شده21
2-3-3 NAOS.. 23
3-5 نتيجه. 30
فصل چهارم : پايگاه دادة فعال فازي ......................................................................... 31
4-1 تعريف فازي قوانين ..................................................................................... 32
4-1-1 رويداد فازي .................................................................................... 33
4-1-2 شرط فازي ....................................................................................... 37
4-1-3 واكنش فازي .................................................................................... 39....
4-1-4 تعيين فازي موقعيت زمانبندي ............................................................ 40
4-2 معماري و مدل اجرايي قوانين ....................................................................... 42
4-2-1 آشكارساز رويداد .............................................................................. 43
4-2-2 بررسي شرط .................................................................................... 44
4-2-3 اجرا ................................................................................................ 44
4-2-4 زمانبندي .......................................................................................... 44
4-3 نتيجه ........................................................................................................... 46
بخش دوم: کاربردی جدید از تریگر فازی، رونوشت برداری فازی، نتایج آزمایشات ..... 47
فصل پنجم: رونوشت برداری فازی ........................................................................... 48
5-1 رونوشت برداری .......................................................................................... 49
5-1-1 رونوشت برداری همگام .................................................................... 49
5-1-2 رونوشت برداری ناهمگام .................................................................. 50
5-1-3 ماشين پايه رونوشت برداري داده......................................................... 51
5-1-4 مقايسه دو روش همگام و ناهمگام...................................................... 52
5-2 رونوشت برداري فازي................................................................................... 55
5-2-1 استفاده از تريگرها براي فازي نمودن رونوشت برداري.......................... 56
5-3 کميت سنج هاي فازي................................................................................... 58
5-3-1 روش محاسبه کميت سنج هاي فازي................................................... 59
5-3-2 کميت سنج عمومي............................................................................ 60
5-3-3 کميت سنج جزئي.............................................................................. 63
5-3-4 کميت سنج جزئي توسعه يافته............................................................. 66
5-4 روش جديد محاسبه حد آستانه در تريگرهاي فازي براي رونوشت برداري فازي.............. 68
5-5 معماري ماشين رونوشت بردار فازي............................................................... 70
5-6 مثال............................................................................................................. 72
5-7 کارايي.......................................................................................................... 76
5-7-1 ترافيک در رونوشت برداري مشتاق..................................................... 78
5-7-2 ترافيک در رونوشت برداري تنبل........................................................ 79
5-7-3 ترافيک در رونوشت برداري فازي....................................................... 79
5-7-4 مقايسه تئوري هزينه رونوشت برداري فازي و تنبل............................... 80
5-8 جمع بندي.................................................................................................... 82
فصل ششم: پیاده سازی ........................................................................................... 83
6-1 Fuzzy SQL Server..................................................................................... 83
6-2 عملکرد اجزايFuzzy SQL Server............................................................... 84
6-3 پیاده سازی تريگرهاي فازي در پايگاه داده غير فازي........................................ 85
6-4 اجزاء تريگر فازي در پايگاه داده غير فازي...................................................... 86
6-5 جداول سيستمي مورد نياز.............................................................................. 86
6-6 مثال............................................................................................................. 88
6-7 کارهاي آتي.................................................................................................. 93
مراجع و منابع ........................................................................................................ 94
واژه نامه لاتین ........................................................................................................ 96
واژه نامه فارسی ...................................................................................................... 98
مفاهيم و تعاريف
کارهاي انجام شده
با ايجاد سيستمهاي مديريت پايگاه داده عمده مشكلات ساختار، پشتيباني و مديريت دادههاي حجيم در سيستمهاي فايلي برطرف شد اما توجهي به جنبههاي رفتاري پايگاه داده نشد. به اين معنا كه با استفاده از قيود جامعيت[1] شايد بتوان از منفي شدن مبلغ حقوق كارمندان جلوگيري نمود اما نميتوان مانع از بيشتر شدن حقوق آنها از مديرانشان شد. در چنين مواردي كاربران پايگاه داده با اجراي يك پرس و جو[2] موارد نقض محدوديتهايي از اين قبيل را پيدا نموده و خود اقدام به اصلاح آنها مينمايند.
مواردي اين چنين و نيز گزارشات مديريتي در آغاز ماه از جمله كارهاي مشخص و داراي ضابطهاي ميباشند كه انجام آنها تكراري و قابل تفويض به سيستم است.
كاربران غيرمجاز با استفاده از يك سري گزارشات، غيرمستقيم به اطلاعات كليدي دست يافته و اقدام به تغيير آنها مينمايند. پيدا نمودن چنين تغييراتي كه معمولاً بعد از گزارشات اتفاق ميافتند، به راحتي امكانپذير نيست. همانطور كه مشاهده ميشود در يك پايگاه داده معمولي رديابي رويدادهايي كه در سيستم اتفاق افتادهاند (رخدادها) نيز ممكن نبوده و نياز به يك سيستم با پشتيباني جنبههاي رفتاري ميباشد.
يک پايگاه داده فعال نظير Oracle قادر به تشخيص رويدادهاي نظير اضافه، حذف و تغيير مقادير در پايگاه داده ميباشد. به عبارت ديگر اين سيستمها با ايجاد تغيير در يك قلم داده عكسالعمل نشان ميدهند.
پايگاه دادة فعال با افزودن قوانين به پايگاههاي داده امكان تعامل (كنش و واكنش) بين سيستم و پايگاه داده را ايجاد نمود. اين نوع پايگاه داده داراي دو بخش مديريت داده و مديريت قوانين ميباشد. بخش مديريت داده مسئول حفظ خواص پايگاه داده در سيستمهاي كاربردي بوده و بخش دوم با مديريت قوانين مسئول واكنش به رويدادهاي سيستم ميباشد. در اين نوع پايگاه داده طراحان سيستم قادرند با تعريف قوانين كه نزديكترين بيان به زبان طبيعي ميباشد، سيستم را وادار به عكسالعمل مناسب در مقابل رويدادهاي مهم نمايند [13].
پايگاه داده فعال با استفاده از قوانين قادر به «پشتيباني گستردهتر قيود جامعيت و سازگاري دادهها، واكنش در مقابل رخدادهاي سيستم كاربردي، عدم اجراي تقاضاهاي مشكوك، رديابي رويدادها، گزارشات ماهانه و...» ميباشد.
همانطور كه گفته شد آنچه كه به طور معمول باعث ميشود يك پايگاه داده را فعال بدانيم، عكسالعمل سيستم در مقابل وضعيتهايي است كه در پايگاه داده و يا حتي خارج از آن به وجود ميآيد. اين وضعيتها ميتواند شامل يك حذف غيرمجاز و يا تغيير وضعيت پايگاه داده باشد. بايد توجه داشت كه داشتن تعامل براي يك پايگاه داده لازم اما كافي نيست. بسياري از سيستمهاي پايگاه داده با رعايت اصول پايهاي كه در زير به آن اشاره ميشود به طور عام پايگاه دادة فعال ناميده ميشوند [14].
اينگونه سيستمها بايد يك پايگاه داده باشند، يعني در صورتي كه كاربر فراموش كرد، سيستم مورد نظر پايگاه دادة فعال است بتواند از آن به عنوان يك پايگاه داده معمولي استفاده نمايد (در صورت لزوم بتوان به عنوان يك پايگاه دادة معمولي از آن استفاده نمود).
در اينگونه سيستمها بايد امكان تعريف و مديريت قوانين وجود داشته باشد. اين قوانين در پايگاه داده فعال داراي سه جزء رويداد[3]، شرط[4] و واكنش[5] ميباشند.
اين سيستمها بايد داراي يك مدل اجرايي باشند. به اين ترتيب كه با بروز رويداد و صحت شرط، واكنش قانون اجرا شود. يك پايگاه داده فعال بايد قادر به آشكارسازي رويدادها و بررسي شرط قوانين فعال و اجراي فرامين واكنش باشد.
علاوه بر موارد فوق، بهتر است در اين سيستمها محيط مناسبي براي تعريف و امكان كامپايل كردن قوانين فراهم شود كه به كاربر در تعريف قوانين كمك كند.
فازيسازي پايگاههاي داده فعال با هدف نزديكتر نمودن زبان بيان قوانين به زبان طبيعي طراحان مطرح شد. اغلب تقاضاهاي كاربران پايگاه داده فعال، فازي ميباشد. به عنوان نمونه در تقاضاهايي نظير عدم تعلق پاداش به كارمندان «كمكار»، «افزايش» فشارخون، محاسبة حقوق كارمندان در «پايان» هر ماه و... از كلمات فازي استفاده شده است كه عدم پشتيباني مفاهيم فازي و به كار بردن مقادير دقيق منجر به حصول نتايج نامطلوب در برخي سيستمهاي كاربردي ميشود.
تفاوت اصلي در فازيسازي پايگاه دادة فعال با ساير سيستمهاي فازي، در نوع تعريف قوانين ميباشد. به اين ترتيب كه در تعريف قوانين در اينجا از سه جزء اصلي رويداد، شرط و واكنش استفاده ميشود در صورتي كه سيستمهاي مبتني بر قانون عموماً از دو جزء شرط و واكنش تشكيل شدهاند اما فازي نمودن شرط و واكنش قوانين در پايگاههاي داده فعال تفاوت چنداني با شرط و واكنش فازي در سيستمهاي مبتني بر قانون ندارد و در فازي نمودن رويداد نيز ميتوان از همان سياق رويدادهاي فازي استفاده نمود اين بحث توسط ولسكي و بوازيز در [7] مطرح شده است.
در اين پاياننامه سعي شده است بحثهاي مطرح شده در پايگاههاي داده فعال فازي بطور خلاصه بررسي شود. همچنين در ادامه با معرفي عمل رونوشت برداري و بکارگيري قوانين فازي(تريگرهاي فازي) در عمل رونوشت برداري روش بهبود يافته جديدي معرفي ميشود.
در ادامه اين پاياننامه در فصل دوم مفاهيم پايگاه دادة فعال ارائه شده است. همچنين مدل اجرايي، نمونههايي از اين نوع پايگاه داده و برخي كاربردهاي پايگاه دادة فعال در ادامة اين فصل آمده است.
در فصل سوم مختصري از مفاهيم فازي ارائه شده است.
فصل چهارم شامل چگونگي پشتيباني مفاهيم فازي در بخشهاي مختلف يك پايگاه داده فعال ميباشد.
فصل پنجم به بيان طرح استفاده از تريگرهاي فازي در پايگاه دادة فعال جهت ارائه روش جديد رونوشت برداري فازي ميپردازد و مزاياي استفاده از روش رونوشت برداري فازي نسبت به روشهاي مرسوم قديمي غير فازي با يك نمونه پيادهسازي شده مقايسه ميگردد.
فصل ششم به بيان چگونگي پيادهسازي تريگرهاي فازي در پايگاه دادة فعال غير فازي و نيز پياده سازي رونوشت برداري فازي بوسيله آن مي پردازد.
پايگاه داده فعال با هدف افزودن تعامل به پايگاه داده و با استفاده از تعريف قوانين ايجاد شد. اولين پايگاه داده فعال، توسط Dayal و همكارانش در يك پروژه دانشگاهي به نام [15]Hipac مطرح شد. پايگاه داده اين نرمافزار همانند [16]Samos شيءگرا ميباشد. علاوه بر پايگاههاي داده فعال شيءگرا سيستمهايي با پايگاه دادهي فعال رابطهاي نيز ايجاد شدهاند كه از جملة آنها ميتوان [17]Starburst و [18]Arial را نام برد، اين نوع پايگاههاي داده به جاي واكنش در مقابل فراخواني متد يا تغيير خصيصهها به تغيير، حذف و اضافه در جداول پايگاه داده حساس ميباشند [19].
پايگاه داده فعال داراي دو بخش مديريت داده و مديريت قوانين ميباشد. بخش مديريت داده مسئول حفظ خواص پايگاه داده نظير سازماندهي، مديريت و پشتيباني دادهها ميباشد. بخش دوم يا مديريت قوانين مسئول واكنش به رويدادهايي است كه در سيستم اتفاق ميافتند.
اين بخش مسئول حفظ خواص پايگاه داده ميباشد، به طوري كه طراحان ميتوانند از قابليتهاي پايگاه داده فعال همانند يك پايگاه داده معمولي استفاده نمايند. ضمن اينكه ميتوان خواص پايگاه داده را در يك پايگاه داده فعال به صورت مطلوبتري ايجاد نمود.
برقراري قيود جامعيت پشرفتهتر در پايگاه داده: اين قيود در يك پايگاه داده معمولي فقط روي يك جدول قابل تعريف ميباشند در حالي كه با استفاده از قوانين پايگاه داده فعال، امكان تعريف محدوديت بر روي چندين جدول نيز وجود دارد.
سازگاري بيشتر: سازگاري بين دادهها با استفاده از قوانين به صورت گستردهتري پشتيباني ميشود.
پايگاه دادة فعال با استفاده از قوانين تعامل را به پايگاه داده ميافزايند. اين امر باعث ميشود بدون استفاده از كدهاي نرمافزارهاي خارجي به رويدادهاي سيستم در درون پايگاه داده پاسخ داده شود، در نتيجه تغيير در ضوابط سيستم كاربردي با كمترين هزينه و با تغيير قوانين به راحتي امكانپذير است.
در اين فصل انواع تعريف و پيچيدگيهاي رفتاري قوانين در اين نوع سيستمها و مدلهاي اجرايي متفاوت (با توجه به تعريف يك قانون) ارائه خواهد شد.
در پايگاه داده فعال هر قانون داراي سه بخش رويداد، شرط و واكنش ميباشد و قانوني داراي هر سه جزء فوق باشد اصطلاحاً ECA[6] ناميده ميشود.
Rule Rule_Name
[ON Event]
[IF Condition]
THEN Action
به طور كلي وجود دو جزء رويداد و شرط در تعريف قوانين ميتواند اختياري[7] و يا اجباري[8] باشد. در برخي نمونههاي پيادهسازي شده پايگاه داده فعال تنها تعريف يكي از دو جزء اختياري است يعني امكان عدم تعريف رويداد در قانون وجود دارد و حضور شرط اجباري است. در زبانهايي كه تعريف هر دو جزء اختياري باشد، تعريف يكي از آنها در هر قانون الزامي است در غير اين صورت تبديل به يك قانون هميشه درست ميشود.
در صورت حذف شرط (EA[9] Rule) با بروز رويداد، واكنش آن اجرا ميشود و با حذف رويداد (CA[10] Rule) در صورت برقراري شرط، واكنش قانون مربوطه به اجرا درميآيد.
در اين قسمت ابتدا به شرح مختصري از هر سه جزء قانون و نكاتي كه در استفاده از ECA بايد رعايت شوند ميپردازيم و سپس انواع رفتارهاي مدل اجرايي پايگاه داده فعال بيان ميشود.
رويدادها در نقطهاي از زمان اتفاق ميافتند و به سه صورت تقسيمبندي ميشوند. در نوع اول با توجه به منبع به وجود آورندة خود به هفت گروه ساختاري، انتزاعي، تراكنش، كاربر، استثناء، زمان، خارجي تقسيم ميشوند.
در نوع دوم با توجه به اينكه از يك رويداد ساده تشكيل شدهاند يا از تركيب جبري منطقي رويدادهاي ساده به وجود آمدهاند به دو گروه ساده و مركب تقسيم ميشوند.
در نوع سوم با توجه به زمان بروز نمونههاي يك رويداد به سه گروه آغازين، مياني و پاياني تقسيم ميشوند كه در ادامه به شرح مختصري از انواع رويدادها در اين سه گروه ميپردازيم.
ساختاري: يك رويداد به دليل انجام عملياتي روي ساختار پايگاه داده فعال ميشود (در مدل رابطهاي تغيير و حذف و اضافة يك ركورد و در مدل شيءگرا تغيير خصيصهها، فراخواني متد و ارسال پيام).
ON Update emp.id
انتزاعي: رويداد به صورت واضح توسط طراح يا برنامة كاربردي فعال ميشود (طراح ميتواند گرفتن يك گزارش خاص را يك رويداد معرفي كند كه در صورتي كه يك مجموعة تهي توليد نكند يك رويداد انتزاعي است).
تراكنش: رويدادها، دستورالعملهاي تراكنشي نظير Start و Abort و Commit ميباشند.
ON Begin Transaction Emergency
كاربر: رويداد به دليل عملكردها و مكانيزمهاي برنامهنويسي فعال ميشود (دادن پيام مناسب به كاربري كه مشغول وارد كردن داده ميباشد).
استثناء: انجام عمليات غيرمجاز در سيستم موجب بروز اين نوع رويداد ميشود (دستيابي غيرمجاز كاربران به اطلاعاتي كه مجوز مناسب آن را ندارند).
زمان: اين نوع رويدادها در نقطهاي از زمان فعال ميشوند (مثلاً اول هر ماه).
خارجي: رويدادهايي كه به دليل وقوع رويدادي در خارج از سيستم بروز ميكنند در اين گروه قرار ميگيرند (فشردن كليد).
در نوع دوم رويدادها به دو دستة ساده و مركب تقسيم ميشوند. رويدادي كه تنها از يك جزء تشكيل شده است ساده و رويدادهايي كه از تركيب جبري و منطقي رويدادهاي ساده به دست ميآيند مركب ناميده ميشوند.
And : رخ دادن هر دو رويداد (E1 And E2)
OR : رخ دادن يكي از دو رويداد (E1 Or E2)
Not : عدم رخ دادن رويداد در فاصلة زماني معين.
(E1; not E2;E3) به معني عدم بروز رويداد دوم در فاصلة زماني بين بروز رويداد اول و سوم
SEQ : نشاندهندة ترتيب اجراي دو رويداد ميباشد.
Seq (E1,E2) : به اين معنا است كه رخ دادن رويداد دوم بايد پس از رويداد اول انجام يافته باشد از نماد ":" نيز استفاده ميشود.
Times : بيانگر نمونة معين يك رويداد ميباشد
Times (n.E) يعني نمونة nام رويداد E
رويدادها در پايگاه دادة فعال ممكن است به دفعات رخ دهند. به رويدادهايي كه اتفاق افتادهاند و از يك نوع ميباشند، نمونههاي يك رويداد گفته ميشود.
در نوع سوم تقسيمبندي، بسته به زمان رخ دادن يك نمونه از رويداد، نمونهها به سه نوع آغازين[11]، مياني[12] و پاياني[13] تقسيم ميشوند.
نمونهاي از يك رويداد كه داراي كمترين مرتبة زماني در بين نمونههاي همان رويداد باشد نمونة آغازين و نمونهاي كه داراي بيشترين مرتبة زماني باشد نمونة نهايي رويداد ناميده ميشود به ساير نمونهها، نمونههاي مياني گفته ميشود [20].
در مثال زير E1(1) يك نمونة آغازين و E1(4) يك نمونة پاياني رويداد E1 ميباشند.
E1(1); E1(2); E1(3); E1(4)
امكان وقوع همزمان نمونههاي يك رويداد موجب ايجاد ناسازگاري در تعيين نوع نمونهها ميشود. بحث همزماني رويدادها در يك سيستم متمركز تنها در دو صورت امكانپذير است.
يكي از رويدادها زماني و ديگري غيرزماني باشد.
يك رويداد ساده با حداقل يك رويداد مركب ميتوانند همزمان رخ دهند.
لازم به ذكر است دو رويداد ساختاري همزمان اتفاق نميافتند به عبارت ديگر رخ دادن رويداد اضافه همزمان با رويداد حذف امكانپذير نيست [22].
Last Exclusive وLast Shared : علاوه بر مرتبة رخ دادن نمونهها ترتيب رخ دادن نمونههاي يك نوع رويداد و نمونههاي رويدادهاي ديگر نيز قابل توجه است كه آغازين و نهايي شدن نمونهها را تحت تأثير قرار ميدهد. مثلاً در توالي دو رويداد، انتخاب نمونة نهايي رويداد اول، ميتواند نمونه رويداداول ديگري باشد كه قبل از كلية نمونههاي رويداد دوم اتفاق افتاده است (Exclusive) و يا نمونه رويداد اولي باشد كه به عنوان آخرين نمونة رويداد اول اتفاق افتاده است حتي اگر بين آن رويداد اول آخر و رويداد اول آغازين رويدادهاي دوم و سوم ديگري اتفاق افتاده باشد (Shared) [20].
E1(1); E1(2); E2(1); E1(3)
E1(2) Last Exclusive
E1(3) Last Shared
بخش دوم قانون شرط ميباشد. پس از بروز يك رويداد نوبت به بررسي شرط قوانين رويداد مربوطه ميرسد و در صورت صحت شرط، قانون مربوط در صف اجرا قرار ميگيرد.
در قسمت شرط، يك مقايسه و يا يك پرس و جو[14] ميتواند قرار بگيرد، در صورتي كه نتيجة پرس و جو تهي نباشد، شرط برقرار است.
انتخاب زمان بررسي شرط يك قانون پس از بروز رويداد آن از سياستهايي است كه توسط سيستم تعيين ميشود. اين زمان ميتواند فوري[15]، تأخيري[16] و يا مجزا[17] باشد. برخي سيستمها تنها يك سياست را پشتيباني ميكنند (نظير NAOS) و برخي نيز همة سياستها را پشتيباني ميكنند (Hipac). در چنين سيستمهايي در هر قانون سياست مورد نظر طراح تعريف ميشود و در صورت عدم تعريف، يك سياست به عنوان پيشفرض براي همة قوانين در نظر گرفته ميشود.
در تعيين شرط هر قانون، طراح بايد بتواند براي ارزيابي شرط از مقادير قبل و يا بعد از رويداد استفاده نمايد. نام تراكنشي كه رويداد در آن اتفاق افتاده است و يا نام كاربري كه باعث بروز رويداد شده نيز ممكن است در قسمت شرط استفاده شود. اين مقادير به همراه رويداد ارسال ميشود و پارامترهاي رويداد ناميده ميشود [23].
واكنش هر قانون كلية عملياتي است كه در صورت وقوع رويداد و صحت شرط بايد اجرا شود. اين عمليات عبارتند از اضافه، حذف و تغيير دادهها در پايگاه داده، تغيير مجموعهاي از قوانين، فراخواني خارجي، ارسال پيام به مسئول و يا كاربران سيستم، انصراف از اتمام كار يك تراكنش و در نهايت به جاي فرامين واكنش يك سري فرامين ديگر اجرا شود (به عنوان نمونه به جاي انجام عمليات حذف پيامي به مسئول سيستم ارسال شود).
برخي زبانها قادر به تعريف دو نوع متفاوت از اجراي واكنش يك قانون ميباشند. در نوع اول، ارزيابي و اجرا قبل از اجراي فرمان رويداد صورت ميگيرد به عنوان مثال در SAMOS با استفاده از كلمة كليدي Before انجام رويداد به بعد از اجراي فرامين واكنش موكول ميشود و كلمة كليدي After به معناي اجراي واكنش پس از اجراي رويداد ميباشد [19]. به عنوان مثال با رسيدن فرمان حذف يك ركورد ابتدا يك پشتيبان تهيه و سپس عمل حذف انجام شود.
قابل ذكر است كه تشخيص بروز يك رويداد قبل از رخ دادن آن در برخي از حالات نظير تقاضاي تغيير يك مقدار امكانپذير است و در صورتي كه يك رويداد خارجي باشد غيرممكن است (دادن اخطار قبل از فشرده شدن يك كليد).
انتخاب زمان اجراي واكنش يك قانون پس از ارزيابي شرط آن از سياستهايي است كه توسط سيستم تعيين ميشود. اين زمان ميتواند فوري، تأخيري و يا مجزا باشد. برخي سيستمها تنها يك سياست را پشتيباني ميكنند و برخي نيز همة سياستها را پشتيباني ميكنند که در اين صورت مي بايد براي هر قانون اين سياست تعيين ميشود. هر يك از اين سياستها در بخش بعد تشريح خواهد شد [14].
اين مدل چگونگي اجراي مجموعة قوانين را در زمان اجرا نشان ميدهد. اگرچه اين مدل با جنبههاي زيربنايي پايگاه داده (ساختار، محيط و مديريت اجرايي) مرتبط است اما به طور كلي چندين مرحله در ارزيابي عمومي قوانين وجود دارد كه در ادامه شرح داده خواهد شد.
سيگنال[18]: يك منبع بروز رويداد، منجر به وقوع رويداد ميشود.
فعالسازي[19]: بررسي رويدادها و يافتن قوانين نظير رويدادي كه در مرحلة قبل سيگنال داده شده است.
ارزيابي[20]: بررسي شرط قوانين فعال در اين مرحله انجام ميشود. قوانيني كه شرط آنها برقرار است، مجموعهاي به نام Rule Conflict را تشكيل ميدهند. واكنش كلية قوانين اين مجموعه بايد اجرا شود.
اجرا[21]: واكنش قوانين مجموعة RC دراين مرحله اجرا ميشود. اجراي فرامين واكنش منجر به بروز رويدادهاي جديدي شده و به مرحلة سيگنال وارد ميشوند و اين روند به صورت آبشاري ادامه خواهد داشت.
زمانبندي [22]: زمان بررسي شرط و اجراي واكنش قوانين مجموعة RC در اين مرحله تعيين ميشود. براي زمانبندي قوانين سياستهاي متفاوتي وجود دارد كه در ادامه شرح داده خواهد شد.
مراحل بالا الزاماً نبايد پشت سر هم اجرا شوند اما به بروز رويداد و صحت شرط وابسته ميباشند. يعني براي ارزيابي شرط لزوماً بايد رويداد قانون اتفاق افتاده و براي اجراي واكنش مربوط به قانون بايد ارزيابي شرط انجام شده باشد.
زمان بررسي و اجراي رويداد –شرط- واكنش بستگي به سياست اتخاذ شده توسط سيستم دارد. برخي سيستمهاي پايگاه دادة فعال همة اين سياستها را پشتيباني نموده و طراح در تعريف قوانين خود زمان بررسي شرط و زمان اجراي فرامين واكنش را نيز تعريف مينمايد. اين زمان و مقادير ارسالي به شرط و واكنش (نام تراكنش، نام كاربر، مقادير داده) از جمله موارد تمايز سيستمها ميباشند.
اين سيستمها (موقعيتهاي زمانبندي[23]) عبارتند از:
فوري: يعني بلافاصله بعد از بروز رويداد ، ارزيابي شرط و بعد از ارزيابي شرط، اعمال واكنش انجام ميشود.
تأخيري: در اين حالت ارزيابي شرط (اجراي فرامين و واكنش) در همان تراكنش ميباشد اما لزوماً در اولين فرصت نيست (معمولاً در پايان تراكنش)، اين زمان قابل تعريف توسط طراح نيز ميباشد.
مجزا: در اين حالت بروز رويداد و ارزيابي شرط (ارزيابي شرط و اجراي فرامين واكنش) در دو تراكنش مجزا صورت ميگيرد. در چنين حالتي اجراي واكنش ميتواند وابسته يا مستقل از به سرانجام رسيدن تراكنش باشد، ولي به هر حال رويداد اتفاق افتاده است و ارزيابي شرط انجام شده است و در صورت صحت شرط، فرامين واكنش در تراكنش ديگري اجرا ميشود.
ارتباط بين رويداد و قانون ميتواند يك به يك و يا يك به چند باشد. در حالت اول به ازاء هر رويداد فقط يك قانون فعال ميشود ولي در حالت دوم بروز يك رويداد ميتواند چند قانون را فعال نمايد.
از جمله مشكلاتي كه سيستمهاي مبتني بر قانون با آن مواجه هستند حصول نتايج متفاوت، در زمانهاي اجرايي مختلف ميباشد. اين امر ناشي از اجراي قوانين با توجه به ترتيب نوشته شدن آنها ميباشد. مشكل ديگر فعال نمودن قوانين توسط يكديگر ميباشد. اين امر زماني مشكلآفرين ميشود كه يك سري از قوانين در يك حلقه، يكديگر را براي اجرا فعال نمايند
آخرين خصوصيتي كه در مدل اجرايي بايد در نظر گرفته شود پشتيباني مديريت خطا[24] توسط سيستم ميباشد. اكثر سيستمها به راحتي سياست انصراف از تراكنش را در پيش ميگيرند. برخي سيستمها نيز با حذف قانون به ادامة پردازش قوانين ديگر ميپردازند.
زماني كه چند قانون همزمان با هم فعال ميشوند سيستم بايد سياستي را براي ترتيب فعال نمودن آنها اتخاذ نمايد. انواع اين سياستها در يك پايگاه داده فعال همانند سياستهايي است كه معمولاً در سيستمهاي خبره استفاده ميشود. سادهترين روش براي فعال نمودن قوانين، انتخاب آنها با همان ترتيب نوشته شدن قوانين توسط طراح ميباشد.
امكان تعيين اولويت در هنگام تعريف قانون، روش ديگري است. در اين روش مقادير عددي به قوانين نسبت داده ميشوند و قوانين مهمتر داراي اولويت بالاتري هستند. در صورت عدم تعريف اولويت، براي قوانين پيشفرض صفر در نظر گرفته ميشود و براي انتخاب قوانين هم اولويت روش اول جايگزين ميشود.
حالت خاص ديگر دادن ارتباط است يعني اگر دو قانون R1 و R2 با هم فعال شوند ابتدا قانون R1 اجرا شود و سپس قانون R2. در غير اين صورت ترتيب مهم نيست. در واقع تعيين اولويت براي برخي از قوانين انجام ميشود.
مشخص كردن برخي قوانين كه حتماً قبل از هر قانون ديگري اجرا شوند از ديگرسياستها ميباشد[18].
در اين بخش يك معماري ساده از پايگاه دادة فعال كه قادر به پردازش قوانين و پاسخ به تقاضاهاي كاربر باشد ارائه خواهد شد.
شكل (1-2) ساختار يك معماري ساده براي پايگاه دادة فعال ميباشد اين ساختار بر پاية ساختار ارائه شده در [19] ميباشد
شکل (1-2): معماري پايگاه داده فعال[19].
اين سيستم شامل چهار بخش اصلي آشكارساز رويداد، بررسي شرط، زمانبند و اجرا ميباشد كه در ادامه به شرح هر يك از اين بخشها ميپردازيم.
بخش آشكارساز رويداد خود شامل دو بخش مجزا براي تشخيص رويدادهاي «ساده»[25] و «مركب»[26] ميباشد. در بخش بررسي شرط به مقادير متفاوتي (قبل و بعد از وقوع رويداد نياز است). بخش اجرا شامل دو بخش اجراي واكنش قوانين و پاسخ به پرسوجوهاي پايگاه داده[27] ميباشد.
بخش زمانبندي نيز به دليل وجود تعيين دو زمان متفاوت براي ارزيابي شرط و اجراي واكنش قانون به دو بخش اصلي تقسيم ميشود. اين ساختار ساده پاية يك پايگاه دادة فعال ميباشد.
بخش زمانبندي نيز به دليل وجود تعيين دو زمان متفاوت براي ارزيابي شرط و اجراي واكنش قانون به دو بخش اصلي تقسيم ميشود. اين ساختار ساده پاية يك پايگاه دادة فعال ميباشد. در ادامه به شرح مختصر هر يك از اين بخشها ميپردازيم. اين معماري بر پاية مدلي است كه در [19] ارائه شده است.
[1] - Integrity Constraints
[2] - Query
[3] - Event
[4] - Condition
[5] - Action
[6] - Event Condition Action
[7] - Optional
[8] - Mandatory
[9] - Event Action
[10] - Condition Action
[11] - Initiator
[12] - Mediator
[13] - Terminator
[14] - Query
[15] - Immediate
[16] - Deferred
[17] - Detached
[18] - Signaling
[19] - Triggering
[20] - Evaluation
[21] - Execution
[22] - Scheduling
[23] - coupling Mode
[24] - Error Handing
[25] - Primitive Event Detector
[26] - Composite Event Detector
[27] - Query Database
مبلغ قابل پرداخت 24,300 تومان