天天看點

資料庫改造方案 | 同花順、弘源泰平真實案例分享

在金融量化交易場景中,每天都會産生大量的交易記錄和交易資訊需要存儲,同時對資料也有較高要求的查詢需求,整體需求概括起來就是曆史資料的存儲、實時資料的接收以及資料的監控和分析。對于這類有典型時序特征的資料,很多企業在業務初期選擇了團隊熟悉的 HBase、MySQL、MongoDB 等資料庫。但是随着業務的快速發展,這些資料庫已經無法滿足大體量資料的寫入、存儲、分析監控等業務需求。

為了幫助一衆金融企業尋找到合适的資料庫解決方案,我們彙總了幾個比較有代表性的企業客戶案例,希望他們的相關實踐經驗應該能夠給到行業從業者一些解決思路。

TDengine x 同花順

“目前從大資料監控這個場景看,TDengine 在成本、性能和使用便利性方面都顯示出非常大的優勢,尤其是在節省成本方面給我們帶來了很大驚喜。在預研和項目落地過程中,濤思資料的工程師也提供了專業、及時的幫助,後續我們也将在同花順的更多場景中嘗試應用 TDengine。”

業務背景

同花順每天需要接收海量交易所行情資料,確定行情資料的資料準确。但由于該部分資料過于龐大,而且使用場景頗多,每天會産生很多的加工資料,整個系統除了對實時資料的讀寫性能及延時有較高要求外,還需要聚焦曆史日級别資料做投資組合的各種分析,在整個分析過程中,涉及巨量的資料集,這對曆史資料庫的讀寫性能也提出了很高的要求。之前采用的 Postgres+LevelDB 資料存儲方案,除了依賴多、穩定性較差外,性能方面也無法滿足需求(點選下方案例連結擷取具體業務痛點問題)。通過對 ClickHouse、InfluxDB、TDengine 等時序資料存儲方案的調研,最終其選擇了 TDengine。

架構圖

::: hljs-center

資料庫改造方案 | 同花順、弘源泰平真實案例分享

:::

改造後性能對比

::: hljs-center

資料庫改造方案 | 同花順、弘源泰平真實案例分享

:::

::: hljs-center

點選案例檢視更多技術細節

:::

TDengine x 弘源泰平

“在寫入上,單節點TDengine可以輕松實作每秒大概 3 萬行資料的寫入量,同時消耗伺服器資源又比 InfluxDB 與 MySQL 要小很多。目前我們通過 TDengine 錄入的兩個信号表已經寫入了 82 億條資料,原資料大概為 92GB,實際占用存儲空間為 20G 左右,壓縮率高達 23%。除了寫入與存儲,TDengine 進行日常查詢的速度也十分優秀,面對幾十億級别的大表,也能實作毫秒級響應。”

業務背景

弘源泰平的量化交易系統每天要接收大量的行情資料,也要基于行情産生大量的決策信号。這些資料都需要及時存下來,供盤中和盤後使用。傳統存放行情資料的方式有檔案系統、關系型資料庫或者文檔資料庫。此前他們分别嘗試了 MySQL 和知名的時序資料庫(Time Series Database) InfluxDB,但是性能都沒有達到預期,出現了響應時間長、資源浪費等諸多問題(點選下方案例連結擷取具體業務痛點問題)。最終,其改用 TDengine 徹底解決了實時寫入大量資料點和快速查詢的問題。

資源消耗

伺服器配置如下:64G記憶體+40核 1.8GHz CPU+機械硬碟。在業務運作期間,taosd 的 CPU 在 4% 上下浮動,程序使用的實體記憶體百分比為 11.2%。由于其 vnode 配置較多,而每個 vnode 都有自己固定的記憶體緩沖區,是以記憶體占用稍多,但後續即便是繼續大量增加新表或者加大寫入量,記憶體占用也不會再有明顯的浮動了。

::: hljs-center

資料庫改造方案 | 同花順、弘源泰平真實案例分享

:::

::: hljs-center

點選案例檢視更多技術細節

:::

TDengine x 同心源(三亞)基金

“對入庫的總資料量進行下估算,粗略計算為 408*320 億行,大概 12TB 左右,後面經過統計最終實際占用磁盤空間卻隻有2T左右,這令我們十分震驚——壓縮率高達 16.7%。在查詢方面,從TDengine用戶端伺服器使用Python從服務端拉取連續兩個月的期貨行情資料,耗時僅需 0.16 秒。”

業務背景

從同心源的業務模式出發,業務人員主要通過資料挖掘和自動模式識别這兩種方式來發現市場的交易規律,其工作場景基于大量的金融資料之上。經過多年發展,股票市場資料量越發龐大,随着每日新資料的清洗寫入,總量變得更加水漲船高。對于十幾 TB 的資料量,單是進行存儲已經不易,如果還要對資料進行查詢下載下傳等操作,更是難上加難。種種問題疊加,同心源對市面上的主流資料庫逐漸喪失信心,嘗試使用更有針對性的時序資料庫,TDengine 便是他們的選擇之一。

::: hljs-center

點選案例檢視更多技術細節

:::

TDengine x 青島金融研究院

“根據不同類型的業務,我們建立了 7 張不同的超級表,子表數量為 33076 張,目前我們導入的資料總量已經達到了 46 億之多,其中最大的一張超級表達到了 26 億行,實際磁盤占用大概在 130GB 左右。”

業務背景

在其業務場景中,TDengine 主要負責三點:一是對回測的資料支援,二是基于以上資料進行的回測資料分析,三是部分盤中政策的資料預加載。目前其資料入庫方式是使用 Python 連接配接器直接寫入 TDengine(6030 端口)。具體方式為:會通過券商的直連接配接口将他們提供的資料做一個 SQL 拼接,利用拼接 SQL 的方式,單個 SQL 寫入幾千行資料,将大批資料一次性寫入到一個表中。

::: hljs-center

點選案例檢視更多技術細節

:::

寫在最後