بررسی Data Warehouse

بررسی انباره داده بخش سی و یکم

به همين ترتيب همين script  را با اتصال به دو شمای ديگر در بانک GDB اعمال کنيد.

---
---
---
SQL>CONNECT REPADMIN1/REPADMIN1@GDB

SQL>CREATE OR REPLACE TRIGGER "REPADMIN1"."TRG_CATALOG" AFTER
INSERT ON "REPADMIN1"."TBL_CATALOG"
REFERENCING OLD AS OLD NEW AS new FOR EACH ROW BEGIN
INSERT INTO ADMIN.TBL_CATALOG
VALUES(:new.PK_CATALOG_ID          
,:new.CATALOG_VALUE          
,:new.FK_CATALOG_TYPE_ID);
END;
---
---
---
SQL>CONNECT REPADMIN1/REPADMIN1@GDB

SQL>CREATE OR REPLACE TRIGGER "REPADMIN1"."TRG_PERSON" AFTER
INSERT ON "REPADMIN1"."MV_PERSON"
REFERENCING OLD AS OLD NEW AS new FOR EACH ROW BEGIN
INSERT INTO ADMIN.TBL_PERSON
VALUES(:new.PER_PK_PERSON_ID
      ,:new.PER_PERSON_CODE
      ,:new.PER_FIRST_NAME
      ,:new.PER_LAST_NAME
      ,:new.PER_FATHER_NAME
      ,:new.PER_NATIONAL_NO
      ,:new.PER_BIRTH_DATE
      ,:new.PER_BIRTH_PLACE
      ,:new.PER_TEL
      ,:new.PER_ADDRESS
      ,:new.PER_BASE_SAL
      ,:new.PER_FK_MARRIED_ID
      ,:new.PER_FK_SEX_ID
      ,:new.PER_FK_POSITION_ID
      ,:new.PER_FK_WORK_UNIT_ID
      ,:new.PER_DB_ID);
END;
/

SQL>CREATE OR REPLACE TRIGGER "REPADMIN1"."TRG_WORK_TIME" AFTER
SQL>CREATE OR REPLACE TRIGGER "REPADMIN1"."TRG_PAYMENT_SALARY" AFTER
INSERT ON "REPADMIN1"."MV_PAYMENT_SALARY"
REFERENCING OLD AS OLD NEW AS new FOR EACH ROW BEGIN
INSERT INTO ADMIN.TBL_PAYMENT_SALARY
VALUES(:new.PAY_PK_PAYMENT_ID      
,:new.PAY_FK_PERSON_ID       

به همين ترتيب همين script  را با اتصال به دو شمای ديگر در بانک GDB اجرا کنيد.
 
نمايش نحوه اعمال تغييرات
دراين بخش نيز مرحله به مرحله به اقدام به انجام يک تغيير در يکی از بانکهای توزيع شده می نماييم وقصد داريم تااين تغييررا در بانک اطلاعاتی سراسری نيز اعمال کنيم .بدين منظور و برای روشن تر شدن مطلب ابتدا مرحله به مرحله به صورت دستی اقدام به انجام سری اعمال زير می نماييم.سپس قصد داريم که چند مرحله از سری اعمال زير را به عهده خود RDBMS  گذاشته تا به صورت خودکار انجام شود.
درابتدا برای نمايش نحوه عمليات دو صفحه SQL*PLUS باز کرديم به طوريکه هر صفحه از طريق TNS به يک بانک متصل شده اند.يکی از طريق شمای RepAdmin1 به بانک DB1 و ديگری از طريق شمای Admin به بانک سراسری GDB متصل شده است.به طور همزمان دو درخواست از يک سری اطلاعات يکسان از هر دو بانک اجرا می کنيم. همانطور که در شکل نشان داده شده است نتيجه هر دو در خواست يکسان می باشد.
در مرحله بعد اقدام به اعمال يک تغيير در يکی از فيلدهای انتخابی مرحله گذشته در بانک DB1 می نماييم. اين تغيير مبتنی بر تغيير شماره تماس پرسنل انتخاب شده می باشد.
سپس دوباره درخواست قبلی مبنی بر انتخاب يک سری اطلاعات پرسنل قبلی را از بانک GDB  می نماييم و مشاهده می کنيم که هيچ تغييری مبنی برتغيير شماره تلفن مشاهده نشده است .
انباره  داده
در مرحله بعد به بانک اطلاعاتی GDB از طريق شمای RepAdmin1 متصل می شويم و Script  زير را اجرا می نماييم.
EXECUTE DBMS_MVIEW.REFRESH('MV_PERSON','?');
 
انبار داده
 
شايان ذکر است از طريق اجرای اين Script  يک Refresh  دراطلاعات Materialized View مورد نظر اتفاق می افتد. علامت سئوال در اين Script  به معنی انجام يک Refresh  به صورت Force  می باشد. 
اکنون دوباره به شمای Admin از بانک GDB متصل شده و دوباره درخواست قبلی را اجرا نماييد.مشاهده می کنيد فيلد جديدی با اطلاعات به روز شده به جدول اضافه شده است .اين همان مفهوم داده تاريخدار در انبار داده می باشد.
انبار داده
پاسخگويی به درخواستهای مديريتی
تااينجای بحث يک انبار داده ايجاد کرديم که قادر به پاسخگويي درخواستهايی باشد که درقسمت ابتدايی فصل بيان شد.حل نوبت به آن است که به طور عملی نحوه پاسخگويی انبار به اين سری درخواستها را نشان دهيم.
درخواست 1: می خواهيم بدانيم کل پرداختی شرکت به واحد تحقيقات شعبه يک چقدر بوده است؟
SELECT SUM(PAY.PAY_PAYMENT_AMOUNT)
FROM    TBL_PAYMENT_SALARY   PAY
               ,TBL_PERSON                        PER
              ,TBL_WORK_UNIT                UNIT
WHERE PER.PER_PK_PERSON_ID=PAY.PAY_FK_PERSON_ID
انباره داده

در خواست 2 : در صد حقوق پرداختی در شعبه شماره 2 نسب به کل پرداختی شعب چند در صد است؟
SELECT  (A.S1/B.S2)*100
FROM    (SELECT   SUM(PAY.PAY_PAYMENT_AMOUNT) S1
  FROM     TBL_PAYMENT_SALARY      PAY
 
درخواست 3 :درصد حقوق پرداختی واحد تحقيات شعبه شماره 1 نسبت به کل پرداختی دراي« شعبه چقدراست؟
SELECT  (A.S1/B.S2)*100
FROM     (SELECT SUM(PAY.PAY_PAYMENT_AMOUNT) S1
   FROM     TBL_PAYMENT_SALARY PAY
          ,TBL_PERSON                      PER
          ,TBL_WORK_UNIT             UNIT
  WHERE PER.PER_PK_PERSON_ID=PAY.PAY_FK_PERSON_ID
  AND   PER.PER_DB_ID = PAY.PAY_DB_ID
 AND   PER.PER_FK_WORK_UNIT_ID=UNIT.PK_WORK_UNIT_ID
 AND   PER.PER_DB_ID='1'
 

 

 

0 نظر

نظر محترم شما در مورد مقاله های وب سایت برنامه نویسی و پایگاه داده

نظرات محترم شما در خدمات رسانی بهتر ما را یاری می نمایند. لطفا اگر مایل بودید یک نظر ما را مهمان فرمائید. آدرس ایمیل و وب سایت شما نمایش داده نخواهد شد.

حرف 500 حداکثر