<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
    主站蜘蛛池模板: 亚洲一区免费观看| 亚洲神级电影国语版| 亚洲图片中文字幕| a级黄色毛片免费播放视频| 免费人成视频在线观看不卡| 亚洲美女在线观看播放| 日韩免费无码一区二区三区| 亚洲av永久无码精品漫画| 中国毛片免费观看| 亚洲网红精品大秀在线观看| 亚洲成AV人片一区二区密柚| a级毛片免费观看网站| 久久久久久亚洲精品不卡| 黄色网址免费在线| 免费a级毛片在线观看| 人人爽人人爽人人片av免费| 亚洲精品国产日韩无码AV永久免费网 | 精品成人免费自拍视频| 精品久久久久久亚洲| 中文无码成人免费视频在线观看 | 国产成人综合久久精品亚洲| 免费人成视网站在线观看不卡| 四虎影视久久久免费观看| 亚洲精品中文字幕无码蜜桃| 免费无码又爽又刺激高潮视频| 亚洲精品国产情侣av在线| 成年人免费网站在线观看| 亚洲国产精品ⅴa在线观看| 免费成人黄色大片| 伊人久久综在合线亚洲91| 亚洲成人网在线播放| 国产精品成人观看视频免费 | 黄页免费视频播放在线播放| 亚洲欧洲国产精品香蕉网| 在线免费中文字幕| 亚洲精品无码少妇30P| 久久久久亚洲AV无码专区桃色| 真实国产乱子伦精品免费| 亚洲丰满熟女一区二区哦| 亚洲午夜久久久久久噜噜噜| 19禁啪啪无遮挡免费网站|