بررسی انباره داده بخش بیست و سوم
پيكربنديهاي ترکيبی Materialized view, Multimaster
كپي سازي Materialized view, Multi master ها ميتواند در يك تركيب يا يک پيكربندي متداخل تركيب شوند تا نيازمنديهاي نرم افزاري مختلف را پوشش دهد. در پيكربندي ترکيبی ميتوان تعدادي سايتهاي Master و چندين سايت Materialized view براي هر Master وجود داشته باشد.
براي مثال همانطوريكه در شكل زير نشانده داده شده كپي سازي Multimaster (يا چند راهي) بين دو Master ميتواند از كپي كل جدول بين بانكهاي اطلاعاتي حمايت كند كه در دو ناحيه جغرافيايي وجود دارد. Materialized view ها ميتوانند حاوی کپی كل جداول يا زير مجموعهاي از آنها كه در سايتهاي نواحي مختلف كپي شده اند، تعريف شوند.
تفاوتهاي كليدي بين Materialized view ها و جداول اصلي كپي شده شامل موارد زير است:
جداول اصلي كپي شده بايد شامل داده براي كل جدولي باشد كه كپي شده، در حاليكه Materialized view ها ميتوانند زير مجموعه ای از داده جدول اصلي را كپي كنند.
كپي سازي Multimaster شما را قادر ميسازد تا تغييرات را براي هر تراكنش كه تغييري را ايجاد ميكند، اعمال كنيد. Refresh ها مجموعه گرا هستند، انتشار تغييرات از چندين تراكنش كه مؤثرترند، دستهگرا عمل ميكند، اما در فواصل با فركانس كمتر.
اتصالات زمانبندي شده
هم سايتهاي اصلي و هم سايتهاي Materialized view از اتصالات زماندار براي انتشار تغييرات داده در ساير سايتها استفاده ميكنند. يك اتصال زماندار يك اتصال بانك اطلاعاتي است كه توسط يك كاربر تعريف شده تا تراكنشهاي معوقه خود را Refresh كند. يك اتصال زماندار تعيين ميكند كه چطور يك سايت اصلي ، صف تراكنش معوقه خود را در ساير سايتهاي اصلي منتشر كند يا چطور يك سايت Materialized view صف تراكنش معوقه خود را در ساير سايتهاي اصلي منتشر كند.
وقتي يك اتصال زماندار ايجاد ميشود، Oracle يك Job در صف Job محلي ايجاد ميكند تا صف تراكنش معوقه به ساير سايتها در سيستم Push داده شود.
در فصلهای پيش درباره مفاهيم بنيادی و اصلی انبار داده بحث شد،در اين فصل قصد داريم بر اساس آنچه گفته شد گام به گام اقدام به طراحی و ايجاد يک انبار داده آزمايشی با شرايط و مفروضات زير بپردازيم:
انبارداده براساس سيستم بانک اطلاعاتی حقوق و دستمزد يک شرکت مفروض طراحی می شود.
کليه بانکهای اطلاعاتی همگن هستند.
ساختار کليه بانکهای اطلاعاتی توزيع شده ، يکسان است.
انبارداده آزمايشی براساس چند درخواست آماری ساخته می شود که در فواصل بحث به انها اشاره خواهد شد .
دراين پروژه تکيه بحث بيشتر روی لايه ETL و نحوه پياده سازی آن می باشد.
شايان ذکر است شرايط و امکانات پروژه اجازه کار در يک کاملا توزيع شده از نظر فيزيکی را نمی داد.لذا کليه فعاليتهای انجام شده روی يک سيستم کامپيوتری شبيه سازی شده است .
محيط بانک اطلاعاتی در نظر گرفته شده Oracle 9i می باشد.البته از اين نسخه به بعد اين شرکت ابزار های متعددی ازجمله Oracle Warehouse Builder ، ِdiscoverer ، Viewer و... را برای طراحی و ساخت انبار داده و ايجاد و طراحی گزارشهای مديريتی آماده کرده است.به دليل نمايش کليه جزئيات طراحی و پياده سازی يک انبار داده ترجيح دادم کمتر از ابزار ها استفاده کرده و توسط script های لازم که در هر بخش source آن آورده می شود،کليه مراحل شرح داده شود،چراکه اگرچه کار با ابزار امکانات و کارايی بهتری را ايجاد می کند ولی مستلزم شناخت انتزاعی تری از محيط است و در آن شرايط نکات پشت صحنه کمتر مورد توجه قرار خواهد گرفت.
باتوجه به بحث بالا شروع به توصيف مرحله به مرحله ايجاد يک انبار داده می نماييم.لازم به ذکر است با انجام کليه مراحل زير قادر به ايجاد يک انبارداده آزمايشی خواهيم بود.
مدل بانک اطلاعاتی حقوق و دستمزد
در پروژه حاضر فرض براين است که سه بانک اطلاعاتی به نامهای DB1 ،DB2 ، DB3 وجود دارند که هر سه بانک اطلاعاتی مربوط به سيستم حقوق و دستمزد شعب يک شرکت بوده که در سه نقطه فرضی همانطور که در شکل نشان داده شده قرار دارند.
هدف کلی پروژه تجميع اطلاعات در يک بانک اطلاعاتی به نام GDB می باشد.ساختار حاضر برمبنای معماری data mart های مستقل است که در فصل دوم به آنها اشاره شد.در اين نوع معماری mart ها از نظر فيزيکی در نقاط مختلفی قرار دارند و ممکن است در هر کدام از بانکهای اطلاعاتی سيستمهای ديگری اعم از سيستم انبار،اتوماسيون اداری و... نيز موجود باشند.به منظور رعايت خصوصيت موضوع گرا بودن انبارداده بحث پروژه بيشتر برمبنای سيستم حقوق و دستمزد است.
همانطور که در مفروضات پروژه ذکر شد،ساختار هرسه بانک اطلاعاتی يکسان و بانکها از نظر ساختار همگن بايد باشند.(همه بانکها Oracle 9i می باشند).در غير اينصورت در مراحل ETL می بايست ساختار استاندارد انتخاب شده و موارد اضافی جهت يکی سازی ساختارها انجام گيرد که در فصل دوم به طور کامل بررسی شد.مدل داده ای در نظر گرفته شده برای پروژه برمبنای مدل زير است :
در مدل حاضر جدول پرسنل حاوی اطلاعات مربوط به پرسنل اعم از مشخصات فردی،مشخصات آدرسی و غيره است.جدول کارکرد شامل اطلاعات مربوط به کارکرد پرسنل مثل زمان شروع کار ،زمان پايان کار ،مقدار اضافه کاری و... است . همانطور که از مفهوم هر جدول و اطلاعات آن متوجه می شويم بعضی از جداول مثل پستهای سازمانی ، محلهای خدمت و کاتالوگ جداول پايه هستند. جداول پايه معمولا به جداولی گفته می شود که مستقيما پس از ايجاد مقدار دهی شده و درطی راه اندازی و استفاده از بانک کمتر دستخوش تغيير می شوند .درعين حال جداولی مثل پرسنل ، کارکرد هميشه درحال تغيير بوده که در اصطلاح به جداول Transactional معروفند.شايان ذکر است درجه تراکنش در هر يک از جداول متفاوت است که اين مورد کمتر مورد بحث مااست.
شکل زير تقسيم بندی کلی اين جداول را از منظر تراکنشی بودن نشان می دهد.
نوع جدول
|
نام جداول
|
تراکنشی
|
TBL_PERSON,TBL_WORK_TIME,TBL_ADDSUB,
TBL_PAYMENT_SALARY
|
پايه
|
TBL_CATALOG,TBL_POSITION,TBL_WORK_UNT
|
طراحی مدل انبار داده
همانطور که در فصل دوم در بخش از نيازمندی تا طراحی بحث شد ،انبار داده براساس شمای Star يا Snowflake ايجاد می شود .در صورتيکه هيچ بانکی از ابتدا وجود نداشته باشد،طراحی و ايجاد انبارداده براساس مدلهای حاضر مستقيما فقط از طريق بررسی وتحليل درخواستهای مديران می باشد .اما درصورتيکه مدل بانک اطلاعاتی موجود باشد ،مدل انبار داده بايد هم براساس مدل بانک اطلاعاتی موجود و هم درخواستهای مديريتی با تشخيص و تحليل جداول بعد و Fact ايجاد شود. در زير چند درخواست مديريتی و آماری که قرار است براساس آنها مدل انبار داده طراحی شود ،ليست شده است:
حقوق دريافتی در شعبه B چند در صد حقوق دريافتی در کل شعب می باشد؟
ساعات کارکرد شعبه C چند درصد کل ساعات کارکرد در کل شعب است؟
نسبت کارکرد به حقوق در شعبه B چند درصد نسبت کارکرد به حقوق در شعبه کل است؟
درصد کارکرد داخل ساعت کاری درکليه شعب چقدراست؟
درصد کارکرد خارج ساعت کاری در کليه شعب چقدر است؟
کمترين و بيشترين ميزان کل کارکرد درماه خرداد سال 1380مربوط به کدام شعب بوده است؟
نسبت ميزان اضافه کاری به کل کارکرد فصل پاييز در کدام شعبه بيشتر بوده است؟
مجموع کل حقوق پرداختی شرکت از سال 1370 تا سال 1380 چقدر بوده است؟
درکدام شعبه ميزان ورود به موقع کارکنان از همه بيشتر بوده است؟
کدام کارمند درکدام شعبه دارای ميزان ورود به موقع بيشتری بوده است؟