<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    空間站

    北極心空

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      15 Posts :: 393 Stories :: 160 Comments :: 0 Trackbacks

    擴展您的架構

    developerWorks
    文檔選項
    將此頁作為電子郵件發送

    將此頁作為電子郵件發送

    未顯示需要 JavaScript 的文檔選項



    級別: 中級

    Sean Byrd (sabyrd@us.ibm.com), Americas Techworks SME, IBM

    2006 年 7 月 10 日

    即將發布的 Q Replication 將支持一種新的目標表,即 Consistent Change Data (CCD) 表。探索 Q Replication 用戶之所以需要這些表的原因,并考慮在使用 CCD 表作為目標的情況下,可能出現的一些新的復制架構。學習如何定義和使用 CCD 表,這需要對 Q Replication 的安裝和配置有基本的了解。另外,還看看在使用 CCD 表作為目標的情況下有哪些限制。

    簡介

    Consistent Change Data (CCD) 表一直是 SQL Replication 中一種流行的目標表。通過支持 CCD 表作為另一種目標選項,對于熟悉 Q Replication 的人來說,他們就可以利用這種新功能了。這時您可能要問,“為什么我應該在我的復制架構中考慮 CCD 表?” CCD 表通過關聯的跟蹤機制暴露數據,以便準確地描繪源表的事務歷史。換句話說,CCD 允許重現源表的歷史。讓我們看看用到 CCD 的三個例子。





    回頁首


    使用 CCD

    歷史表 —— 在任何系統中,都會有一些關鍵的表需要能夠恢復或重建。通過將關鍵的源表復制到一個 CCD 目標表,就可以逐個事務地從頭開始重建這個表。更棒的是,如果表中輸入了壞的數據,CCD 記錄還允許您查看哪些行受到影響,讓您很容易改變主意,或者正確地更新所需的值。

    扇出場景登臺(Fan out scenario staging)表 —— 傳統上,CCD 目標表用于幫助創建扇出架構,將一個源復制到多個目標。這意味著之前 SQL Replication 不能接受的一些高吞吐量的工作負載現在可以被復制到多個目標了。

    不受支持的數據庫登臺表 —— 對于將數據放到 Q Replication 受支持的結構之外的數據庫中這一任務而言,CCD 目標表也是一種理想的方法。有了最新的修復包(用于 Oracle 和 Sybase 的修復包版本為 9;用于 Microsoft SQL Server 和 Informix 的修復包版本為 10),DB2® 之外的數據庫可以作為 Q Replication 的目標數據庫,不過仍然有很多目標數據庫不可用。雖然 CCD 目標表不能自動將數據復制到不受支持的目標數據庫中,但是它通過用戶應用程序暴露數據。所以,只需簡單地從 IBMSNAP_OPERATION 列選擇數據到一個動作變量,然后結合對源列的值的選擇,使用一個用于 insert、update 和 delete 的 case 語句,便可以將事務復制到任何您想在其上編程的數據源。





    回頁首


    實現 CCD

    接下來我們看看如何創建 CCD 目標表。本節假設您已經知道如何配置 Q Replication —— 因此著重講解隊列映射和隊列訂閱的創建。以前,當選擇一種目標表類型時(如果使用 Replication Center's Create Queue Subscription 向導的話,就在這個向導中的第 5 步),您有兩個選擇 —— 表或存儲過程?,F在您可以選擇 CCD Table,但是必須指定您想要哪種類型的 CCD。如果使用的是 ASNCLP,那么語法如下:


    清單 1. ASNCLP CCD 語法
                            >>-CREATE QSUB--+------------+--+-------------------------+----->
                            '-SUBTYPE--U-'  '-USING REPLQMAP--mapname-'
                            ...
                            trg-clause
                            >--+-------------------------------+---------------------------->
                            '-TYPE--+-USERTABLE-----------+-'
                            +-STOREDPROC----------+
                            +-NICKNAME------------+
                            '-CCD--| ccd-clause |-'
                            ...
                            ccd-clause
                            |--+--------------------+--+-------------------+---------------->
                            '-CONDENSED--+-ON--+-'  '-COMPLETE--+-ON--+-'
                            '-OFF-'                '-OFF-'
                            

    要創建一個 CCD,必須指定兩個新屬性 —— condensed(壓縮的)和 complete(完整的)。表 1 展示了這些屬性如何影響目標表的創建:


    表 1. 完整的還是壓縮的?

    complete 目標表創建好之后,其中填充有源表中的所有行。 目標表創建好之后為空。
    condensed 目標表只包含行中最近被更改的值。 目標表包含所有行的所有歷史值。

    創建 CCD 目標表只要做這些就可以了。那么,有了 CCD 表之后,如何使用它呢?讓我們將這些值與之前介紹的那些用法聯系起來。


    表 2. 最佳匹配
    complete condensed 用法
    這種配置將支持扇出到多個目標。
    這是標準的歷史表。每個源行和目標的記錄使得表和事務可以被重建。還可以根據這種版本的 CCD 表創建新的用戶拷貝。
    這種版本的 CCD 表用于扇出場景的登臺表,在該場景中,遠程已經存在用戶數據的一個拷貝。由于缺少源行,因此不能從這種類型的 CCD 表創建新的用戶拷貝。
    這種 CCD 表用于作為只需要訪問被更改的數據的應用程序的登臺表。






    回頁首


    表格式

    接下來我們看看 CCD 表與源表有什么不同。CCD 表與源表的不同在于多了幾個附加的列:


    表 3. CCD 列
    列名 描述 數據類型
    IBMSNAP_INTENTSEQ 這是一個序號,惟一地標識一次更改。 CHAR(10) FOR BIT DATA
    IBMSNAP_OPERATION 該列表明對一個記錄的操作的類型:
    I -- Insert
    U -- Update
    D -- Delete
    CHAR(1)
    IBMSNAP_COMMITSEQ 這是一個序號,描述事務的提交順序。 CHAR(10) FOR BIT DATA
    IBMSNAP_LOGMARKER 這是數據被提交的時間。 TIMESTAMP


    這些列附件在行的后面,因此該 CCD 表可用于創建其他拷貝,更新其他拷貝,或者使應用程序可以訪問事務歷史。如果啟用了數據庫審計功能,那么 CCD 表中還可能提供以下幾列:


    表 4. 審計列
    列名 描述 數據類型
    IBMSNAP_AUTHID 與事務相關聯的授權 ID。這一列同時可用于 DB2 for Linux®、UNIX® 和 Windows® 以及 z/OS®。對于 z/OS,這是主授權 ID。 CHAR(128)
    IBMSNAP_AUTHTKN 與事務相關聯的授權標志。這一列僅用于 DB2 z/OS,它是相關 ID。對于 DB2 Linux、UNIX 和 Windows,這一列的值為 NULL。 CHAR(12)
    IBMSNAP_PLANID 與事務相關聯的計劃名稱。這一列僅用于 DB2 z/OS。對于 DB2 for Linux、UNIX 和 Windows,這一列的值為 NULL。 CHAR(128)
    IBMSNAP_UOWID 這個工作單元的日志記錄中的工作單元標識符。這一列同時可用于 DB2 for Linux、UNIX 和 Windows 以及 DB2 z/OS。 CHAR(10)


    如果手動創建 CCD 目標表,則語法應該像下面這個例子一樣。注意,<user data columns> 的數據類型應該與源表中相應的列的數據類型一致。


    例 2. CCD 目標表的 DDL
                            CREATE TABLE CCD (
                            IBMSNAP_INTENTSEQ CHAR(10) FOR BIT DATA NOT NULL,
                            IBMSNAP_OPERATION CHAR(1) NOT NULL,
                            IBMSNAP_COMMITSEQ CHAR(10) FOR BIT DATA NOT NULL,
                            IBMSNAP_LOGMARKER TIMESTAMP NOT NULL,
                            IBMSNAP_AUTHID CHAR(128),
                            IBMSNAP_AUTHTKN CHAR(12),
                            IBMSNAP_PLANID CHAR(128),
                            IBMSNAP_UOWID CHAR(10) FOR BIT DATA,
                            <user data columns>
                            );
                            





    回頁首


    限制

    幸運的是,您只需清楚三個限制,另外再注意一點:

    1. CCD 目標表只在單向架構中有效。
    2. CCD 目標表不能是別名。
    3. CCD 表中必須有惟一性約束 —— 可以通過主鍵或者源表或 CCD 表上的惟一索引實現。

    另外一個您可能失察的地方是 delete 的行為。如果您在使用一個壓縮 CCD 表,那么在處理 delete 操作時,現有的行將被更新,而 IBMQREP_OPERATION 列將被設為 ‘D’。如果這一行不存在,那么該行將被忽略,并且被記錄到異常表中。對于非壓縮 CCD 表,所有事務都生成新的行。delete 會生成一個新行,其中仍然使用當前各列的值,但是 IBMQREP_OPERATION 列被設為 'D'。

     





    回頁首


    結束語

    關于這個話題就講到這里了。希望本文提供的信息能幫助您利用擴展的架構,并將數據暴露給更多的用戶。



    參考資料

    學習
    posted on 2007-07-19 17:31 蘆葦 閱讀(444) 評論(0)  編輯  收藏 所屬分類: IBM
    主站蜘蛛池模板: 97av免费视频| 久久精品无码免费不卡| 4虎1515hh永久免费| 亚洲成AV人在线播放无码| 久久精品无码专区免费| 国产精品亚洲片在线| 99免费精品视频| 国产亚洲精品观看91在线| a毛片在线看片免费| 国产亚洲成av片在线观看| 中国极品美軳免费观看| 亚洲va无码va在线va天堂| 国产午夜无码精品免费看| 久久精品国产亚洲AV麻豆王友容| 国产免费AV片在线观看| 亚洲AV日韩精品久久久久| 8x8×在线永久免费视频| 亚洲不卡中文字幕| 全免费a级毛片免费看无码| 亚洲av无一区二区三区| 亚洲国产成人久久综合碰| 中文字幕在线视频免费观看| 久久亚洲精品无码| 91在线视频免费91| 美女被免费网站在线视频免费| 亚洲?v女人的天堂在线观看| 成人av片无码免费天天看| 亚洲乱亚洲乱淫久久| 成年在线网站免费观看无广告| 国产精品亚洲精品爽爽| 国产亚洲?V无码?V男人的天堂| 中文字幕的电影免费网站| 亚洲伊人tv综合网色| 德国女人一级毛片免费| 一级做a毛片免费视频| 久久精品国产亚洲AV麻豆网站| 午夜私人影院免费体验区| 久久国产一片免费观看| 亚洲欧洲精品久久| 国产一区二区三区免费在线观看 | 亚洲av最新在线网址|