多重數據庫( Multi-DB )說明
張貼日期:Jun 24, 2014 4:29:17 AM
初接觸DTS系統, 經常會對註冊數據庫的設定碼(如: 0x0020=PATS )感到疑惑,
因為目前大多數應用都是單一數據庫, 所以感覺就是全部資料都收下來為何還需要設定,
而實際上DTS支援多重數據庫功能, 設定註冊碼時可以選擇其中部分所需的數據庫即可,
例如: 0x1001=CME,0x1002=CBOT 可註冊兩個數據庫, 同理視需求可以註冊更多,
前提是DTS上須有所要的數據庫提供, 先前只有陸股行情會以 0x0001 與 0x0002
同時提供上證(show2003.dbf)與深證(sjshq.dbf)兩個行情數據庫,
其他FTDC,PatsRaw/Emu等系列都只提供單一行情數據庫而已~
現在 PatsRaw/Emu 也開始提供多重行情數據庫功能應用了!
PatsRaw/Emu系列的Tag #1欄位, 為以交易所與商品代碼組成可作為全局性唯一的商品Key
使用多重數據庫模式時, 便是以Tag #1的 '|' 之後的商品來源作為群組識別碼, 若不啟用多重功能,
所有商品都會在原本的單一數據庫中, 該預設數據庫於多重功能啟動時其群組識別碼為 '$Default',
當有指定不同之DbfId來作為某群組識別碼的服務數據庫時,
符合的商品將被抽離預設數據庫而篩選到新的數據庫代碼中提供服務
圖中為PatsEmu-CME的設置範例, 透過參數 /GroupMap 指定設定檔
設定檔內容
'for Option by key as "Contract|Exchange" , the others using "Exchange" as key
'Example:
' "CME_CBT",0xA100
' "TOCOM",0xA200
' "GOLD|TOCOM",0xA201
"HFOCX",0xCA00 'Gcbullion Test
"XCME=HW",0x8000
"XNYM=CL",0x8100
"XNYM=NG",0x8200
此案例中, 原本單一數據庫共有7927個商品行情, 將HW,CL,NG三組期貨抽離後只剩3789個
其中期貨HW本身就有3498個商品接近半數~
下游的應用則可視需求給予註冊碼
只收CL商品
0x8100=輕原油
收CL和NG兩組商品
0x8100=CL輕原油,0x8200=NG天然氣
收其他未分群商品全部
0x0022=MyCME
將所有數據庫接收下
0x0022=A,0x8000=A0,0x8100=A1,0x8200=A2
前列註冊碼的示範 與熟悉的 0x0020=PATS 或 0x0021=RMDS 或 0x0022=CME 是同樣的意義
Code=Name 的 Code 是指上游的資料庫代碼 如 0x0020 , 0x0021
而Name的部分則是供讀取數據庫的應用端口可以識別的代碼, 依本身應用需求可自行任意命名