R:在連接到 R 的數據庫中儲存和使用刻度數據的可行性如何?
我希望將一些 tickdata .csv 文件轉換為本地磁碟上的數據庫,然後使用 R 呼叫數據並進行各種分析和建模。
可以推薦哪些最佳實踐/實施技術來最大程度地減少麻煩?
注意到諸如此類的軟體包有
mmap
很大幫助,但希望嘗試找到更“永久”的解決方案。哪個是最好的db?MySQL 似乎不是最理想的,因為它是關係型的(而不是面向列的)。q/KDB 似乎有一個試用版可以玩,但學習曲線非常陡峭。哪個是處理和提供滴答請求的最佳數據庫?
非常感謝任何幫助。平台無關,但我想 Linux 是我的首選平台。
有許多專門用於 HF 報價數據的產品。除了您提到的 KDB,還有 OneTick、Vertica、Infobright 和一些開源的,如 MonetDB 等(參見http://en.wikipedia.org/wiki/Column-oriented_DBMS)。
我的經驗是,當涉及到分時數據時,面向列的數據庫被高估了,因為您經常請求整個分時或柱記錄(而不是只記錄的一列 - 即面向列的數據庫針對什麼進行了優化)。根據我的經驗,提高速度的關鍵在於為數據庫使用聚集索引,從而定義數據在硬碟上的儲存順序。如果您主要查詢給定工具的時間序列(而不是一組工具的最新價格),那麼您希望按 (Instrument, TickTimestamp) 進行分群,即使對於巨大的表大小,查詢也非常快。
然後還有一個學派在玩弄 NoSQL 角落的新替代品,例如 BigTable、MongoDB 等。這是一個有趣的領域,但我個人認為它們主要是為靈活的數據模型而設計的,這不是我們的核心要求。你可以讓它們工作,它們會很快工作,但這是以更多過時的工具支持、更陡峭的學習曲線等為代價的。
多年來,我一直在使用許多不同的數據庫(Oracle、MySQL、SQLServer、MongoDB、MonetDB),我的結論是,如果您了解它們並相應地設計它們,它們中的大多數都可以很好地儲存金融時間序列數據。目前,我主要使用 SQLServer,它比 MySQL 快一些,對較小的數據集免費,並且可以完成我想要的大部分事情。通過 ODBC R 包對 R(以及 Matlab 和許多其他環境)的支持非常好。