تریگر فازی در SQL Server
با ايجاد سيستمهاي مديريت پايگاه داده عمده مشكلات ساختار، پشتيباني و مديريت دادههاي حجيم در سيستمهاي فايلي برطرف شد اما توجهي به جنبههاي رفتاري پايگاه داده نشد. به اين معنا كه با استفاده از قيود جامعيت شايد بتوان از منفي شدن مبلغ حقوق كارمندان جلوگيري نمود اما نميتوان مانع از بيشتر شدن حقوق آنها از مديرانشان شد. در چنين مواردي كاربران پايگاه داده با اجراي يك پرس و جو موارد نقض محدوديتهايي از اين قبيل را پيدا نموده و خود اقدام به اصلاح آنها مينمايند.
مواردي اين چنين و نيز گزارشات مديريتي در آغاز ماه از جمله كارهاي مشخص و داراي ضابطهاي ميباشند كه انجام آنها تكراري و قابل تفويض به سيستم است.
كاربران غيرمجاز با استفاده از يك سري گزارشات، غيرمستقيم به اطلاعات كليدي دست يافته و اقدام به تغيير آنها مينمايند. پيدا نمودن چنين تغييراتي كه معمولاً بعد از گزارشات اتفاق ميافتند، به راحتي امكانپذير نيست. همانطور كه مشاهده ميشود در يك پايگاه داده معمولي رديابي رويدادهايي كه در سيستم اتفاق افتادهاند (رخدادها) نيز ممكن نبوده و نياز به يك سيستم با پشتيباني جنبههاي رفتاري ميباشد.
يک پايگاه داده فعال نظير Oracle قادر به تشخيص رويدادهاي نظير اضافه، حذف و تغيير مقادير در پايگاه داده ميباشد. به عبارت ديگر اين سيستمها با ايجاد تغيير در يك قلم داده عكسالعمل نشان ميدهند.
پايگاه دادة فعال با افزودن قوانين به پايگاههاي داده امكان تعامل (كنش و واكنش) بين سيستم و پايگاه داده را ايجاد نمود. اين نوع پايگاه داده داراي دو بخش مديريت داده و مديريت قوانين ميباشد. بخش مديريت داده مسئول حفظ خواص پايگاه داده در سيستمهاي كاربردي بوده و بخش دوم با مديريت قوانين مسئول واكنش به رويدادهاي سيستم ميباشد. در اين نوع پايگاه داده طراحان سيستم قادرند با تعريف قوانين كه نزديكترين بيان به زبان طبيعي ميباشد، سيستم را وادار به عكسالعمل مناسب در مقابل رويدادهاي مهم نمايند [13].
پايگاه داده فعال با استفاده از قوانين قادر به «پشتيباني گستردهتر قيود جامعيت و سازگاري دادهها، واكنش در مقابل رخدادهاي سيستم كاربردي، عدم اجراي تقاضاهاي مشكوك، رديابي رويدادها، گزارشات ماهانه و...» ميباشد.
همانطور كه گفته شد آنچه كه به طور معمول باعث ميشود يك پايگاه داده را فعال بدانيم، عكسالعمل سيستم در مقابل وضعيتهايي است كه در پايگاه داده و يا حتي خارج از آن به وجود ميآيد. اين وضعيتها ميتواند شامل يك حذف غيرمجاز و يا تغيير وضعيت پايگاه داده باشد. بايد توجه داشت كه داشتن تعامل براي يك پايگاه داده لازم اما كافي نيست. بسياري از سيستمهاي پايگاه داده با رعايت اصول پايهاي كه در زير به آن اشاره ميشود به طور عام پايگاه دادة فعال ناميده مي شوند [14].
اينگونه سيستمها بايد يك پايگاه داده باشند، يعني در صورتي كه كاربر فراموش كرد، سيستم مورد نظر پايگاه دادة فعال است بتواند از آن به عنوان يك پايگاه داده معمولي استفاده نمايد (در صورت لزوم بتوان به عنوان يك پايگاه دادة معمولي از آن استفاده نمود).
در اينگونه سيستمها بايد امكان تعريف و مديريت قوانين وجود داشته باشد. اين قوانين در پايگاه داده فعال داراي سه جزء رويداد ، شرط و واكنش ميباشند.
اين سيستمها بايد داراي يك مدل اجرايي باشند. به اين ترتيب كه با بروز رويداد و صحت شرط، واكنش قانون اجرا شود. يك پايگاه داده فعال بايد قادر به آشكارسازي رويدادها و بررسي شرط قوانين فعال و اجراي فرامين واكنش باشد.
علاوه بر موارد فوق، بهتر است در اين سيستمها محيط مناسبي براي تعريف و امكان كامپايل كردن قوانين فراهم شود كه به كاربر در تعريف قوانين كمك كند.
فازيسازي پايگاههاي داده فعال با هدف نزديكتر نمودن زبان بيان قوانين به زبان طبيعي طراحان مطرح شد. اغلب تقاضاهاي كاربران پايگاه داده فعال، فازي ميباشد. به عنوان نمونه در تقاضاهايي نظير عدم تعلق پاداش به كارمندان «كمكار»، «افزايش» فشارخون، محاسبة حقوق كارمندان در «پايان» هر ماه و... از كلمات فازي استفاده شده است كه عدم پشتيباني مفاهيم فازي و به كار بردن مقادير دقيق منجر به حصول نتايج نامطلوب در برخي سيستمهاي كاربردي ميشود.
تفاوت اصلي در فازيسازي پايگاه دادة فعال با ساير سيستمهاي فازي، در نوع تعريف قوانين ميباشد. به اين ترتيب كه در تعريف قوانين در اينجا از سه جزء اصلي رويداد، شرط و واكنش استفاده ميشود در صورتي كه سيستمهاي مبتني بر قانون عموماً از دو جزء شرط و واكنش تشكيل شدهاند اما فازي نمودن شرط و واكنش قوانين در پايگاههاي داده فعال تفاوت چنداني با شرط و واكنش فازي در سيستمهاي مبتني بر قانون ندارد و در فازي نمودن رويداد نيز ميتوان از همان سياق رويدادهاي فازي استفاده نمود اين بحث توسط ولسكي و بوازيز در [7] مطرح شده است.
در اين پاياننامه سعي شده است بحثهاي مطرح شده در پايگاههاي داده فعال فازي بطور خلاصه بررسي شود. همچنين در ادامه با معرفي عمل رونوشت برداري و بکارگيري قوانين فازي(تريگرهاي فازي) در عمل رونوشت برداري روش بهبود يافته جديدي معرفي مي شود. 1-2 مروري بر فصول پاياننامه
در ادامه اين پاياننامه در فصل دوم مفاهيم پايگاه دادة فعال ارائه شده است. همچنين مدل اجرايي، نمونههايي از اين نوع پايگاه داده و برخي كاربردهاي پايگاه دادة فعال در ادامة اين فصل آمده است.
در فصل سوم مختصري از مفاهيم فازي ارائه شده است.
فصل چهارم شامل چگونگي پشتيباني مفاهيم فازي در بخشهاي مختلف يك پايگاه داده فعال ميباشد.
فصل پنجم به بيان طرح استفاده از تريگرهاي فازي در پايگاه دادة فعال جهت ارائه روش جديد رونوشت برداري فازي ميپردازد و مزاياي استفاده از روش رونوشت برداري فازي نسبت به روشهاي مرسوم قديمي غير فازي با يك نمونه پيادهسازي شده مقايسه مي گردد.
فصل ششم به بيان چگونگي پياده سازي تريگرهاي فازي در پايگاه دادة فعال غير فازي و نيز پياده سازي رونوشت برداري فازي بوسيله آن مي پردازد.
پايگاه داده فعال با هدف افزودن تعامل به پايگاه داده و با استفاده از تعريف قوانين ايجاد شد. اولين پايگاه داده فعال، توسط Dayal و همكارانش در يك پروژه دانشگاهي به نام [15]Hipac مطرح شد. پايگاه داده اين نرمافزار همانند [16]Samos شيءگرا ميباشد. علاوه بر پايگاههاي داده فعال شيءگرا سيستمهايي با پايگاه دادهي فعال رابطهاي نيز ايجاد شدهاند كه از جملة آنها ميتوان [17]Starburst و [18]Arial را نام برد، اين نوع پايگاههاي داده به جاي واكنش در مقابل فراخواني متد يا تغيير خصيصهها به تغيير، حذف و اضافه در جداول پايگاه داده حساس ميباشند [19].
پايگاه داده فعال داراي دو بخش مديريت داده و مديريت قوانين ميباشد. بخش مديريت داده مسئول حفظ خواص پايگاه داده نظير سازماندهي، مديريت و پشتيباني دادهها ميباشد. بخش دوم يا مديريت قوانين مسئول واكنش به رويدادهايي است كه در سيستم اتفاق ميافتند.
2-1 مديريت داده
اين بخش مسئول حفظ خواص پايگاه داده ميباشد، به طوري كه طراحان ميتوانند از قابليتهاي پايگاه داده فعال همانند يك پايگاه داده معمولي استفاده نمايند. ضمن اينكه ميتوان خواص پايگاه داده را در يك پايگاه داده فعال به صورت مطلوبتري ايجاد نمود.
برقراري قيود جامعيت پشرفته تر در پايگاه داده: اين قيود در يك پايگاه داده معمولي فقط روي يك جدول قابل تعريف ميباشند در حالي كه با استفاده از قوانين پايگاه داده فعال، امكان تعريف محدوديت بر روي چندين جدول نيز وجود دارد.
سازگاري بيشتر: سازگاري بين دادهها با استفاده از قوانين به صورت گستردهتري پشتيباني ميشود.
2-2 مديريت قوانين
پايگاه دادة فعال با استفاده از قوانين تعامل را به پايگاه داده ميافزايند. اين امر باعث ميشود بدون استفاده از كدهاي نرمافزارهاي خارجي به رويدادهاي سيستم در درون پايگاه داده پاسخ داده شود، در نتيجه تغيير در ضوابط سيستم كاربردي با كمترين هزينه و با تغيير قوانين به راحتي امكانپذير است.
در اين فصل انواع تعريف و پيچيدگيهاي رفتاري قوانين در اين نوع سيستمها و مدلهاي اجرايي متفاوت (با توجه به تعريف يك قانون) ارائه خواهد شد.
2-2-1 تعريف قانون
در پايگاه داده فعال هر قانون داراي سه بخش رويداد، شرط و واكنش ميباشد و قانوني داراي هر سه جزء فوق باشد اصطلاحاً ECA ناميده ميشود.
Rule Rule_Name
[ON Event]
[IF Condition]
THEN Action
به طور كلي وجود دو جزء رويداد و شرط در تعريف قوانين ميتواند اختياري و يا اجباري باشد. در برخي نمونههاي پيادهسازي شده پايگاه داده فعال تنها تعريف يكي از دو جزء اختياري است يعني امكان عدم تعريف رويداد در قانون وجود دارد و حضور شرط اجباري است. در زبانهايي كه تعريف هر دو جزء اختياري باشد، تعريف يكي از آنها در هر قانون الزامي است در غير اين صورت تبديل به يك قانون هميشه درست ميشود.
در صورت حذف شرط (EA Rule) با بروز رويداد، واكنش آن اجرا ميشود و با حذف رويداد (CA Rule) در صورت برقراري شرط، واكنش قانون مربوطه به اجرا درميآيد.
در اين قسمت ابتدا به شرح مختصري از هر سه جزء قانون و نكاتي كه در استفاده از ECA بايد رعايت شوند ميپردازيم و سپس انواع رفتارهاي مدل اجرايي پايگاه داده فعال بيان ميشود.
1) رويداد:
رويدادها در نقطهاي از زمان اتفاق ميافتند و به سه صورت تقسيمبندي ميشوند. در نوع اول با توجه به منبع به وجود آورندة خود به هفت گروه ساختاري، انتزاعي، تراكنش، كاربر، استثناء، زمان، خارجي تقسيم ميشوند.
در نوع دوم با توجه به اينكه از يك رويداد ساده تشكيل شدهاند يا از تركيب جبري منطقي رويدادهاي ساده به وجود آمدهاند به دو گروه ساده و مركب تقسيم ميشوند.
در نوع سوم با توجه به زمان بروز نمونههاي يك رويداد به سه گروه آغازين، مياني و پاياني تقسيم ميشوند كه در ادامه به شرح مختصري از انواع رويدادها در اين سه گروه ميپردازيم.
انواع رويدادها با توجه به منبع به وجود آورندة آنها عبارتند از [20][21]:
ساختاري: يك رويداد به دليل انجام عملياتي روي ساختار پايگاه داده فعال ميشود (در مدل رابطهاي تغيير و حذف و اضافة يك ركورد و در مدل شيءگرا تغيير خصيصهها، فراخواني متد و ارسال پيام).
ON Update emp.id
انتزاعي: رويداد به صورت واضح توسط طراح يا برنامة كاربردي فعال ميشود (طراح ميتواند گرفتن يك گزارش خاص را يك رويداد معرفي كند كه در صورتي كه يك مجموعة تهي توليد نكند يك رويداد انتزاعي است).
تراكنش: رويدادها، دستورالعملهاي تراكنشي نظير Start و Abort و Commit ميباشند.
ON Begin Transaction Emergency
كاربر: رويداد به دليل عملكردها و مكانيزمهاي برنامهنويسي فعال ميشود (دادن پيام مناسب به كاربري كه مشغول وارد كردن داده ميباشد).
استثناء: انجام عمليات غيرمجاز در سيستم موجب بروز اين نوع رويداد ميشود (دستيابي غيرمجاز كاربران به اطلاعاتي كه مجوز مناسب آن را ندارند).
زمان: اين نوع رويدادها در نقطهاي از زمان فعال ميشوند (مثلاً اول هر ماه).
خارجي: رويدادهايي كه به دليل وقوع رويدادي در خارج از سيستم بروز ميكنند در اين گروه قرار ميگيرند (فشردن كليد).
در نوع دوم رويدادها به دو دستة ساده و مركب تقسيم ميشوند. رويدادي كه تنها از يك جزء تشكيل شده است ساده و رويدادهايي كه از تركيب جبري و منطقي رويدادهاي ساده به دست ميآيند مركب ناميده ميشوند.
اين عملياتهاي جبري عبارتند از [14]:
And : رخ دادن هر دو رويداد (E1 And E2)
OR : رخ دادن يكي از دو رويداد (E1 Or E2)
Not : عدم رخ دادن رويداد در فاصلة زماني معين.
(E1; not E2;E3) به معني عدم بروز رويداد دوم در فاصلة زماني بين بروز رويداد اول و سوم
SEQ : نشاندهندة ترتيب اجراي دو رويداد ميباشد.
Seq (E1,E2) : به اين معنا است كه رخ دادن رويداد دوم بايد پس از رويداد اول انجام يافته باشد از نماد ":" نيز استفاده ميشود.
Times : بيانگر نمونة معين يك رويداد ميباشد
Times (n.E) يعني نمونة nام رويداد E
رويدادها در پايگاه دادة فعال ممكن است به دفعات رخ دهند. به رويدادهايي كه اتفاق افتادهاند و از يك نوع ميباشند، نمونههاي يك رويداد گفته ميشود.
در نوع سوم تقسيمبندي، بسته به زمان رخ دادن يك نمونه از رويداد، نمونهها به سه نوع آغازين ، مياني و پاياني تقسيم ميشوند.
نمونهاي از يك رويداد كه داراي كمترين مرتبة زماني در بين نمونههاي همان رويداد باشد نمونة آغازين و نمونهاي كه داراي بيشترين مرتبة زماني باشد نمونة نهايي رويداد ناميده ميشود به ساير نمونهها، نمونههاي مياني گفته ميشود [20].