日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

SQL Server數據源

SQL Server數據源為您提供讀取和寫入SQL Server雙向通道的功能,本文為您介紹DataWorks的SQL Server數據同步的能力支持情況。

支持的版本

SQL Server Reader使用驅動版本是com.microsoft.sqlserver sqljdbc4 4.0,驅動能力具體請參見官網文檔。該驅動支持的SQL Server版本如下所示:

版本

支持性(是/否)

SQL Server 2016

SQL Server 2014

SQL Server 2012

PDW 2008R2 AU34

SQL Server 2008 R2

SQL Server 2008

SQL Server 2019

SQL Server 2018

Azure SQL Managed Instance

Azure Synapse Analytics

Azure SQL Database

使用限制

離線同步支持讀取視圖表。

支持的字段類型

SQL Server全量的字段類型請參見SQL Server幫助文檔。以下以SQL Server 2016為例,為您列舉常見的字段類型的支持情況。

sql server 2016字段類型

SQL Server Reader

SQL Server Writer

bigint

支持

支持

bit

支持

支持

decimal

支持

支持

int

支持

支持

money

支持

支持

numeric

支持

支持

smallint

支持

支持

smallmoney

支持

支持

tinyint

支持

支持

float

支持

支持

real

支持

支持

date

支持

支持

datetime2

支持

支持

datetime

支持

支持

datetimeoffset

不支持

不支持

smalldatetime

支持

支持

time

支持

支持

char

支持

支持

text

支持

支持

varchar

支持

支持

nchar

支持

支持

ntext

支持

支持

nvarchar

支持

支持

binary

支持

支持

image

支持

支持

varbinary

支持

支持

cursor

不支持

不支持

hierarchyid

不支持

不支持

sql_variant

支持

支持

Spatial Geometry Types

不支持

不支持

table

不支持

不支持

rowversion

不支持

不支持

uniqueidentifier

支持

支持

xml

支持

支持

Spatial Geography Types

不支持

不支持

SQL Server Reader和SQL Server Writer針對SQL Server的類型轉換列表,如下所示。

類型分類

SQL Server數據類型

整數類

BIGINT、INT、SMALLINT和TINYINT

浮點類

FLOAT、DECIMAL、REAL和NUMERIC

字符串類

CHAR、NCHAR、NTEXT、NVARCHAR、TEXT、VARCHAR、NVARCHAR(MAX)和VARCHAR(MAX)

日期時間類

DATE、DATETIME和TIME

布爾型

BIT

二進制類

BINARY、VARBINARY、VARBINARY(MAX)和TIMESTAMP

創建數據源

在進行數據同步任務開發時,您需要在DataWorks上創建一個對應的數據源,操作流程請參見創建并管理數據源詳細的配置參數解釋可在配置界面查看對應參數的文案提示

數據同步任務開發

數據同步任務的配置入口和通用配置流程可參見下文的配置指導。

單表離線同步任務配置指導

整庫離線讀同步任務配置指導

操作流程請參見數據集成側同步任務配置

常見問題

  • 主備同步數據恢復問題

    主備同步問題指SQL Server使用主從災備,備庫從主庫不間斷通過binlog恢復數據。由于主備數據同步存在一定的時間差,特別在于某些特定情況,例如網絡延遲等問題,導致備庫同步恢復的數據與主庫有較大差別,從備庫同步的數據不是一份當前時間的完整鏡像。

  • 一致性約束

    SQL Server在數據存儲劃分中屬于RDBMS系統,對外可以提供強一致性數據查詢接口。例如一次同步任務啟動運行過程中,當該庫存在其他數據寫入方寫入數據時,由于數據庫本身的快照特性,SQL Server Reader完全不會獲取到寫入的更新數據。

    上述是在SQL Server Reader單線程模型下數據同步一致性的特性,SQL Server Reader可以根據您配置的信息使用并發數據抽取,因此不能嚴格保證數據一致性。

    當SQL Server Reader根據splitPk進行數據切分后,會先后啟動多個并發任務完成數據同步。多個并發任務相互之間不屬于同一個讀事務,同時多個并發任務存在時間間隔,因此這份數據并不是完整的、一致的數據快照信息。

    針對多線程的一致性快照需求,目前在技術上無法實現,只能從工程角度解決。工程化的方式存在取舍,在此提供以下解決思路,您可以根據自身情況進行選擇。

    • 使用單線程同步,即不再進行數據切片。缺點是速度比較慢,但是能夠很好保證一致性。

    • 關閉其他數據寫入方,保證當前數據為靜態數據,例如鎖表、關閉備庫同步等。缺點是可能影響在線業務。

  • 數據庫編碼問題

    SQL Server Reader底層使用JDBC進行數據抽取,JDBC天然適配各類編碼,并在底層進行了編碼轉換。因此SQL Server Reader不需您指定編碼,可以自動獲取編碼并轉碼。

  • 增量數據同步的方式

    SQL Server Reader使用JDBC SELECT語句完成數據抽取工作,因此您可以使用SELECT…WHERE…進行增量數據抽取,方式如下:

    • 數據庫在線應用寫入數據庫時,填充modify字段為更改時間戳,包括新增、更新、刪除(邏輯刪除)。對于該類應用,SQL Server Reader只需要where條件后跟上一同步階段時間戳即可。

    • 對于新增流水型數據,SQL Server Reader在where條件后跟上一階段最大自增ID即可。

    對于業務上無字段區分新增、修改數據的情況,SQL Server Reader無法進行增量數據同步,只能同步全量數據。

  • SQL安全性

    SQL Server Reader提供querySql語句交給您自己實現SELECT抽取語句,SQL Server Reader本身對querySql不進行任何安全性校驗。

附錄:腳本Demo與參數說明

離線任務腳本配置方式

如果您配置離線任務時使用腳本模式的方式進行配置,您需要按照統一的腳本格式要求,在任務腳本中編寫相應的參數,詳情請參見通過腳本模式配置離線同步任務,以下為您介紹腳本模式下數據源的參數配置詳情。

Reader腳本Demo

{
    "type":"job",
    "version":"2.0",//版本號。
    "steps":[
        {
            "stepType":"sqlserver",//插件名。
            "parameter":{
                "datasource":"",//數據源。
                "column":[//字段。
                    "id",
                    "name"
                ],
                "where":"",//篩選條件。
                "splitPk":"",//如果指定splitPk,表示您希望使用splitPk代表的字段進行數據分片。
                "table":""http://數據表。
            },
            "name":"Reader",
            "category":"reader"
        },
        {
            "stepType":"stream",
            "parameter":{},
            "name":"Writer",
            "category":"writer"
        }
    ],
    "setting":{
        "errorLimit":{
            "record":"0"http://錯誤記錄數。
        },
        "speed":{
            "throttle":true,//當throttle值為false時,mbps參數不生效,表示不限流;當throttle值為true時,表示限流。
            "concurrent":1 //作業并發數。
            "mbps":"12",//限流,此處1mbps = 1MB/s。
        }
    },
    "order":{
        "hops":[
            {
                "from":"Reader",
                "to":"Writer"
            }
        ]
    }
}

如果您想使用querySql查詢,Reader部分腳本代碼示例如下(SQL Server數據源是sql_server_source,待查詢的表是dbo.test_table,待查詢的列是name)。

{
    "stepType": "sqlserver",
    "parameter": {
        "querySql": "select name from dbo.test_table",
        "datasource": "sql_server_source",
        "column": [
            "name"
        ],
        "where": "",
        "splitPk": "id"
    },
    "name": "Reader",
    "category": "reader"
},

Reader腳本參數

參數

描述

是否必選

默認值

datasource

數據源名稱,腳本模式支持添加數據源,該配置項填寫的內容必須要與添加的數據源名稱保持一致。

table

選取的需要同步的表名稱,一個作業只能支持一個表同步。

column

所配置的表中需要同步的列名集合,使用JSON的數組描述字段信息 。默認使用所有列配置,例如[ * ]。

  • 支持列裁剪,即列可以挑選部分列進行導出。

  • 支持列換序,即列可以不按照表schema信息順序進行導出。

  • 支持常量配置,您需要按照MySQL SQL語法格式,例如["id", "table","1", "'mingya.wmy'", "'null'", "to_char(a+1)", "2.3" , "true"]

    • id為普通列名。

    • table為包含保留字的列名。

    • 1為整型數字常量。

    • 'mingya.wmy'為字符串常量(注意需要加上一對單引號)。

    • 'null'為字符串。

    • to_char(a + 1)為函數表達式。

    • 2.3為浮點數。

    • true為布爾值。

  • column必須顯示指定同步的列集合,不允許為空。

splitPk

SQL Server Reader進行數據抽取時,如果指定splitPk,表示您希望使用splitPk代表的字段進行數據分片。數據同步系統因此會啟動并發任務進行數據同步,這樣可以提高數據同步的效能。

  • 推薦splitPk用戶使用表主鍵,因為表主鍵通常情況下比較均勻,因此切分出來的分片也不容易出現數據熱點。

  • 目前splitPk僅支持整型數據切分,不支持字符串、浮點、日期等其他類型 。如果您指定其他非支持類型,SQL Server Reader將報錯。

where

篩選條件,SQL Server Reader根據指定的columntablewhere條件拼接SQL,并根據該SQL進行數據抽取。例如在測試時,可以將where條件指定為limit 10。在實際業務場景中,往往會選擇當天的數據進行同步,將where條件指定為gmt_create > $bizdate

  • where條件可以有效地進行業務增量同步。

  • where條件為空,視作同步全表所有的信息。

querySql

使用格式:"querysql" : "查詢statement",在部分業務場景中,where配置項不足以描述所篩選的條件,您可以通過該配置型來自定義篩選SQL。當配置此項后,數據同步系統就會忽略tables、columns配置項,直接使用這項配置的內容對數據進行篩選,例如需要進行多表join后同步數據,使用select a,b from table_a join table_b on table_a.id = table_b.id。當您配置querySql時,SQL Server Reader直接忽略columntablewhere條件的配置。

fetchSize

該配置項定義了插件和數據庫服務器端每次批量數據獲取條數,該值決定了數據集成和服務器端的網絡交互次數,能夠提升數據抽取性能。

說明

fetchSize值過大(>2048)可能造成數據同步進程OOM。

1024

  • 對于您配置的tablecolumnwhere等信息,SQL Server Reader將其拼接為SQL語句發送至SQL Server數據庫。

  • 對于您配置的querySql信息,SQL Server直接將其發送至SQL Server數據庫。

Writer腳本Demo

{
    "type":"job",
    "version":"2.0",//版本號。
    "steps":[
        {
            "stepType":"stream",
            "parameter":{},
            "name":"Reader",
            "category":"reader"
        },
        {
            "stepType":"sqlserver",//插件名。
            "parameter":{
                "postSql":[],//執行數據同步任務之后率先執行的SQL語句。
                "datasource":"",//數據源。
                "column":[//字段。
                    "id",
                    "name"
                ],
                "table":"",//表名。
                "preSql":[]//執行數據同步任務之前率先執行的SQL語句。
            },
            "name":"Writer",
            "category":"writer"
        }
    ],
    "setting":{
        "errorLimit":{
            "record":"0"http://錯誤記錄數。
        },
        "speed":{
            "throttle":true,//當throttle值為false時,mbps參數不生效,表示不限流;當throttle值為true時,表示限流。
            "concurrent":1, //作業并發數。
            "mbps":"12"http://限流,此處1mbps = 1MB/s。
        }
    },
    "order":{
        "hops":[
            {
                "from":"Reader",
                "to":"Writer"
            }
        ]
    }
}

Writer腳本參數

參數

描述

是否必選

默認值

datasource

數據源名稱,腳本模式支持添加數據源,此配置項填寫的內容必須要與添加的數據源名稱保持一致。

table

選取的需要同步的表名稱。

column

目標表需要寫入數據的字段,字段之間用英文逗號分隔。例如"column":["id","name","age"]。如果要依次寫入全部列,使用*表示,例如"column":["*"]

preSql

執行數據同步任務之前率先執行的SQL語句。目前向導模式僅允許執行一條SQL語句,腳本模式可以支持多條SQL語句,例如清除舊數據。

postSql

執行數據同步任務之后執行的SQL語句。目前向導模式僅允許執行一條SQL語句,腳本模式可以支持多條SQL語句,例如加上某一個時間戳。

writeMode

選擇導入模式,可以支持insert方式。 當主鍵/唯一性索引沖突時,數據集成視為臟數據但保留原有的數據。

insert

batchSize

一次性批量提交的記錄數大小,該值可以極大減少數據同步系統與SQL Server的網絡交互次數,并提升整體吞吐量。如果該值設置過大,會導致數據同步運行進程OOM異常。

1,024