پشتیبانی: 09131253620
ارتباط با ما
تلگرام: 09131253620

برجسته ترین ها
گروه های مقاله ها
HyperLink


بررسی انباره داده بخش سی ام تاریخ درج: ١٣٩۴/٠٩/١٠

 اما همانطور که در فصلهای گذشته ذکر شد هدف اصلی پروژه پيکربندی بالا نيست .در واقع هدف، ايجاد نوعی تجميع اطلاعات در يک مکان است تا بتوانيم به درخواستهايی پاسخ دهيم که با وجود سيستمهای موجود و پراکنده امروزی قادر به پاسخگويی به آنها نبوديم. بنابراين برای ايجاد يک چنين محيطی می بايست سايت سراسری يعنی GDB نيز قادر به مشاهده اطلاعات موجود در هر يک از سه سايت موجود باشد. لذا به سايت GDB  متصل شده و از جداول موجود در هر شمای سايتهای ديگر يک Materialized View  در شمای مربوطه ايجاد می نماييم.

انباره داده

 شايان ذکر است انجام اعمال زير از سه روشی که قبلا ذکر شد نيز قابل انجام است که به دليل سرعت استفاده از Script در اين بخش تنها کل Script  لازم بری ايجاد را می آوريم.
---
SQL>CONNECT REPADMIN1/REPADMIN1@GDB

SQL>CREATE MATERIALIZED VIEW MV_PAYMENT_SALARY
          REFRESH
         WITH ROWID
         FOR UPDATE
        AS
              SELECT 
                         PAY.PK_PAYMENT_ID        PAY_PK_PAYMENT_ID
          ,PAY.FK_PERSON_ID            PAY_FK_PERSON_ID
          ,PAY.PAYMENT_YEAR         PAY_PAYMENT_YEAR
          ,PAY.PAYMENT_AMOUNT  PAY_PAYMENT_AMOUNT
          ,PAY.DB_ID                             PAY_DB_ID
             FROM TBL_PAYMENT_SALARY@DB1.COM PAY
/

SQL>CREATE MATERIALIZED VIEW MV_PERSON
          
SQL>CREATE MATERIALIZED VIEW MV_WORK_TIME
         REFRESH
         WITH ROWID
         FOR UPDATE
        AS
              SELECT 
                           OUT.PK_WORK_TIME_ID    OUT_PK_WORK_TIME_ID
               ,OUT.OPR_DATE                    OUT_OPR_DATE
                           ,OUT.START_TIME                OUT_START_TIME
                      ,OUT.END_TIME                    OUT_END_TIME
              ,OUT.WORK_TIME                OUT_WORK_TIME
             ,OUT.OVERTIME                   OUT_OVERTIME
             ,OUT.UNDERTIME                OUT_UNDERTIME
             ,OUT.FK_PERSON_ID           OUT_FK_PERSON_ID
             ,OUT.DB_ID                           OUT_DB_ID
               FROM TBL_WORK_TIME@DB1.COM OUT
کل script های بالا را می توان برای دو شمای ديگر RepAdmin2  با DBLink  بانام DB2.COM  و RepAdmin3  با DBLink  بانام DB3.COM  اجرا کرد و بدين ترتيب قادر به مشاهده اطلاعات هر سه سايت از سايت سراسری خواهيد بود. 
تجميع اطلاعات در يک شما
تاکنون و تا اينجای بحث در بررسی لايه ETL دو قسمت استخراج و تغيير شکل داده انجام شد ،البته در پروژه حاضر به دليل همگن بودن ساختارهای داده ای و ابزارها و محيط های عملياتی قسمت تغيير شکل داده بسيار کمرنگ بوده است، چراکه اگر چه ساختار حاضر پديد امده اما نيازی به اعمالی که در بخش تغيير شکل انجام می شود از قبيل بعضی تصحيحات و اضافات در مقادير داده ای نداريم. بهتر است مروری اجمالی به فعاليتهای انجام شده داشته باشيم ؛ تاکنون يک سايت سراسری داريم با سه کاربر که در هر يک با سه ساختار داده ای يکسان مواجهيم، اما اطلاعات هر يک متفاوت است و مختص همان کاربر در سايت Materialized View  است. همانطور که در بخش دوم از همين فصل بررسی شد به منظور پاسخگويی به درخواستهای مديريتی می توانيم يک سری درخواستهايی را به صورت توزيع شده به روش الف يا ب انجام داد.اما روش پيشنهادی در اين بخش تجميع کليه ساختارها در يک شما به نام Admin  است.توجه داشته باشيد که در صورتي اين روش قابل اعمال است که کليه ساختارها چه از نظر نام جداول جه از نظر نام فيلد و نوع فيلد و غيره همگن باشند. به منظور ايجاد چنين ساختاری ابتدا يک شما با نام Admin به روش زير ايجاد می نماييم.
---
---
---
SQL>CONNECT SYSTEM/MANAGER@GDB

SQL>CREATE USER ADMIN  PROFILE "DEFAULT" 
          IDENTIFIED 
 

سپس برای هرMaterialized View  موجود در هر شما جدولی با join جداول هر شما ايجاد می نماييم. 
انباره داده
انباره داده

---
SQL>CONNECT ADMIN/ADMIN@GDB

SQL>CREATE TABLE TBL_PERSON
AS 
SELECT  PER1.PER_PK_PERSON_ID       
,PER1.PER_PERSON_CODE        
,PER1.PER_FIRST_NAME         
,PER1.PER_LAST_NAME          
,PER1.PER_FATHER_NAME        
,PER1.PER_NATIONAL_NO        
,PER1.PER_BIRTH_DATE         
,PER1.PER_BIRTH_PLACE        
,PER1.PER_TEL                
,PER1.PER_ADDRESS            
,PER1.PER_BASE_SAL           
,PER1.PER_FK_MARRIED_ID      
,PER1.PER_FK_SEX_ID          
,PER1.PER_FK_POSITION_ID     
,PER1.PER_FK_WORK_UNIT_ID    
,PER1.PER_DB_ID              
FROM REPADMIN1.MV_PERSON PER1
UNION
SELECT  PER2.PER_PK_PERSON_ID       
,PER2.PER_PERSON_CODE        
,PER2.PER_FIRST_NAME         
,PER2.PER_LAST_NAME          
,PER2.PER_FATHER_NAME        
,PER2.PER_NATIONAL_NO        

SQL>CREATE TABLE TBL_WORK_TIME
AS 
SELECT  OUT1.OUT_PK_WORK_TIME_ID    
,OUT1.OUT_OPR_DATE           
,OUT1.OUT_START_TIME         
,OUT1.OUT_END_TIME           
,OUT1.OUT_WORK_TIME          
,OUT1.OUT_OVERTIME           
,OUT1.OUT_UNDERTIME          
,OUT1.OUT_FK_PERSON_ID       
,OUT1.OUT_DB_ID              
FROM REPADMIN1.MV_WORK_TIME OUT1
UNION
SELECT  OUT2.OUT_PK_WORK_TIME_ID    
,OUT2.OUT_OPR_DATE           
,OUT2.OUT_START_TIME         
,OUT2.OUT_END_TIME           
---
SQL>CREATE TABLE TBL_ADDSUB
AS 
SELECT ADSU1.ADSU_PK_ADDSUB_ID
,ADSU1.ADSU_FK_PERSON_ID
,ADSU1.ADSU_ADDSUB_DATE       
,ADSU1.ADSU_INSURANCE         
,ADSU1.ADSU_TAX               
,ADSU1.ADSU_MISSION           
,ADSU1.ADSU_OVERTIME          
,ADSU1.ADSU_DB_ID
FROM REPADMIN1.MV_ADDSUB ADSU1
UNION
SELECT  ADSU2.ADSU_PK_ADDSUB_ID
,ADSU2.ADSU_FK_PERSON_ID
,ADSU2.ADSU_ADDSUB_DATE       
,ADSU2.ADSU_INSURANCE         
,ADSU2.ADSU_TAX               
,ADSU2.ADSU_MISSION           
,ADSU2.ADSU_OVERTIME          
,ADSU2.ADSU_DB_ID
FROM REPADMIN2.MV_ADDSUB ADSU2
UNION
SELECT  ADSU3.ADSU_PK_ADDSUB_ID
        ,ADSU3.ADSU_FK_PERSON_ID
,ADSU3.ADSU_ADDSUB_DATE       
,ADSU3.ADSU_INSURANCE         
,ADSU3.ADSU_TAX               
,ADSU3.ADSU_MISSION           
 

اين روش را نه تنها بايد برای Materialized View  موجود در شماه بلکه برای جداول پايه موجود نيز می بايست انجام داد .درواقع باانجام اين روش يک لايه انتزاعی از کليه شما ها در يک شما ايجاد می نماييم که مزايای آن در مبحث بعد مورد بررسی قرر می گيرد.
---
SQL>CREATE TABLE TBL_CATALOG
AS 
SELECT   CAT1.PK_CATALOG_ID          
,CAT1.CATALOG_VALUE          
,CAT1.FK_CATALOG_TYPE_ID
FROM REPADMIN1.TBL_CATALOG CAT1
UNION
SELECT   CAT2.PK_CATALOG_ID          
,CAT2.CATALOG_VALUE          
,CAT2.FK_CATALOG_TYPE_ID
FROM REPADMIN2.TBL_CATALOG CAT2
UNION
SELECT   CAT3.PK_CATALOG_ID          
,CAT3.CATALOG_VALUE          
,CAT3.FK_CATALOG_TYPE_ID
FROM REPADMIN3.TBL_CATALOG CAT3
/

SQL>CREATE TABLE TBL_POSITION
AS 
SELECT  POS1.PK_POSITION_ID         
,POS1.POSITION_NAME          
,POS1.ENGLISH_TITLE          
,POS1.FK_POSITION_TYPE_ID
FROM REPADMIN1.TBL_POSITION POS1
UNION
SELECT  POS2.PK_POSITION_ID         
 
البته وجود اين جداول به تنهايی به منظور ديدن کليه اطلاعات موجود در شماهای مختلف کافی نمی باشد .چراکه به محض تغيير يا Refresh هر کدام از  Materialized View ها هيچگونه تغييری در جداول لايه بالاتر نخواهيم ديد.بنابر اين نياز به ايجاد مکانيزمی داريم که به وسيله آن هر گونه تغييری در هر کدام از  Materialized Viewآن تغيير در روی جداول لايه بالاتر نيز اعمال شود.با استفاده از Trigger می توان اين تغييرات را اعمال کرد .بنابر اين روی کليه جداول و Materialized View های هر سه شما Script زير را اعمال کنيم.

تگها: data warehouse   استخراج اطلاعات   انبار داده   انباره داده   پردازش اطلاعات   مدیریت داده ها   
 

HyperLink

ارسال نظر در مورد این مطلب
نام :  
آدرس ایمیل :  
متن پیام :  
کد امنیتی :  
   
   
نظری برای نمایش وجود ندارد
 
این مطلب را به اشتراک بگذارید: