儲存選項和時間序列數據以進行回測的最有效方法是什麼?
我想知道你們會使用什麼數據庫來儲存大約 500GB-1TB 的期權和時間序列刻度數據。
這個想法是將它用於回測,因此它必須盡可能高效。
我也對你們將使用什麼服務來線上儲存它感興趣,以便更多人可以訪問它。
如果唯一的目的是對數據進行回測,則主要(在某些情況下,僅)訪問模式是尋找開始時間並連續讀取所有數據直到結束時間。然後,有一個強有力的論據將其儲存在具有二進制編碼的普通平面文件中,即將其記憶體佈局中的資料結構直接轉儲到磁碟。
使用 kdb 或 Vertica 之類的 DBMS 儲存它是非常浪費的,因為 (i) 您不需要任何查詢功能,(ii) 有大量的學習和維護曲線,(iii) 許可可能很昂貴,(iv)優化的潛力較小。
如果您偶爾有使用 REPL 或腳本語言探索數據的案例,那麼使用具有某種結構的二進制磁碟格式(例如 HDF5 或 Parquet)可能是有意義的。
我也對你們將使用什麼服務來線上儲存它感興趣,以便更多人可以訪問它。
如果您希望其他人可以通過 WAN 訪問它,這主要是基礎架構和網路設置的獨立問題。您可以將它託管在自己的機器上並打開防火牆,但這需要一些專業知識和初始資本支出。此外,需要大量工作來優化您的儲存以支持大量並發讀取並將您的儲存擴展到超過單個主機、2-4U 物理外形尺寸。
在這裡使用雲提供商是一個不錯的選擇,因為它降低了自己管理網路和儲存的一些複雜性以及大部分初始資本支出。例如,您可以使用 AWS S3 並使用與在本地 POSIX 儲存中儲存它們的方式非常相似的鍵名來儲存這些文件。這使使用者可以輕鬆地通過 HTTP/S3 API 訪問數據。如果您需要 POSIX 語義或記憶體映射,也可以使用 EFS。
或者,如果您仍然想自託管,因為您的佔用空間非常小(例如,<30 TB 和 <10 個回測主機)並且只需要內部使用者通過 VPN 或 LAN 訪問相同的數據,一個不錯的選擇是設置啟動 Btrfs 或 ZFS 文件管理器。您可以支付少量溢價從 Synology 或 FreeNAS 獲得現成的,並且可以通過 Tailscale 等 VPN 服務將數據公開給內部使用者。