<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 步),您有兩個選擇 —— 表或存儲過程。現在您可以選擇 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
    主站蜘蛛池模板: 亚洲电影在线免费观看| 亚洲成人中文字幕| 99亚洲精品卡2卡三卡4卡2卡| 91高清免费国产自产拍2021| 亚洲AV无码久久精品成人| a级黄色毛片免费播放视频| 国产AV无码专区亚洲AV漫画| 一级毛片免费全部播放| 亚洲精品97久久中文字幕无码| 无遮挡免费一区二区三区| 亚洲精品无码久久久| h视频免费高清在线观看| 国产亚洲精品激情都市| 国内精品免费在线观看| 亚洲精品亚洲人成在线观看麻豆| av无码国产在线看免费网站| 亚洲日本va一区二区三区| 又黄又爽的视频免费看| 九九全国免费视频| 久久久久久a亚洲欧洲AV| 51精品视频免费国产专区| 中文字幕亚洲男人的天堂网络 | 久久国产精品成人免费| 亚洲综合激情六月婷婷在线观看| 无码区日韩特区永久免费系列| 狠狠色香婷婷久久亚洲精品| 亚洲成a人一区二区三区| 两个人看的www高清免费视频| 91在线亚洲精品专区| 国产无遮挡吃胸膜奶免费看视频| 高清免费久久午夜精品| 久久精品国产亚洲av日韩| 成人免费视频一区| 中文字幕乱码系列免费| 亚洲一区二区三区在线| 国产免费卡一卡三卡乱码| 男人的天堂网免费网站| 亚洲精品无码久久久久A片苍井空| 国产亚洲精品精品国产亚洲综合| 亚洲精品视频免费看| 国产A∨免费精品视频|