搞土炮平臺的前期,分析歷史報價數據,做策略開發,這和商業智能、數據挖掘場景中的數據倉庫比較類似。面向金融分析的需求特點是:海量time-series數據,上百上千只個股日內歷史數據;字段值長度類型固定,不出OHLCV;查詢操作多于寫入操作,查詢速度要求先于寫入速度,并行處理需求有限,后期live上線運行才需要實時并行讀取與追加寫入;桌面單機布署優先于分布式布署,復雜計算的暫不考慮吶。 商業上滿足這些需求的數據庫,比較知名的就是Sybase IQ和Kdb+了。他們的一個共同點就是使用了面向列(column-oriented)結構來儲存數據,可以明顯提高查詢速度。以此為線索,偶搜索了相關的開源列儲存數據庫項目,通過了解ET上老外對各類數據庫的評價,整理如下(全部支持Windows): SQL 支持SQL語法的數據庫優先考慮,學習曲線低,應用實現廣泛,易于移植維護。 MySQL、PostgreSQL 成熟度高,解決方案完善,易于布署。在豐富的文檔資源支持下,任何問題都能搜索到相關的優化方法。傍上這棵大樹不用擔心投資失去價值。缺點是查詢速度慢,需要通過硬件升級來優化。 http://www.mysql.com http://www.postgresql.org Infobright、InfiniDB 這是兩個基于MySQL后端的列式數據庫。專門面向商業智能分析領域,都有商業版和社區版。Infobright社區版有CPU、并發限制,只能查詢,LOAD DATA INFILE操作,不能DML追加寫入操作;InfiniDB沒有限制,查詢速度上高于前者,數據壓縮比低于前者,硬件配置有一定要求,影響力稍低。 http://www.infobright.org http://infinidb.org http://tech.it168.com/a2008/1024/209/000000209206_1.shtml http://www.webarchs.net/others/10067/ http://www.mysqlsystems.com/2010/06/opensourcedatawarehouse_infobright.html http://www.mysqlperformanceblog.com/2010/01/07/star-schema-bechmark-infobright-infinidb-and-luciddb/ http://old.nabble.com/-CPyUG--求助,海量日志文件分析-td28218497.html SQLite、Berkeley DB SQLite一直是嵌入式數據庫的代表,開發接口友好,但數據庫級獨占鎖定是其并發局限,海量數據會使其性能下降,可做日線以上低數據量分析的選擇。 http://www.sqlite.org Berkeley DB是工業強度的嵌入式數據庫,其海量數據處理及并行性能出色,在大量程序中得到應用,MySQL也曾用其做后端引擎。Berkeley DB原本一直只提供鍵值操作,在Oracle接手后,加入了SQL支持,官方說接口和SQLite完全一致,可做替代。需注意其雙license授權模式,個人使用免費,商業使用或商業性分發,則需要開源或者購買商業授權。 http://www.jroller.com/mrettig/entry/time_series_database_with_berkeley http://www.oracle.com/technology/global/cn/products/berkeley-db/index.html http://www.bdbchina.com/2010/09/oracle-berkeley-db-产品家族介绍/ http://www.bdbchina.com/2010/03/oracle-berkeley-db-支持sql啦!/ http://www.bdbchina.com/2010/03/更多关于oracle-berkeley-db-sql的报道/ http://www.bdbchina.com/2009/11/berkeley-db三大产品收费模式/ NoSQL 速度和分布式是這類數據庫的特點。支持鍵值不支持SQL是弱項。 HDF5 HDF5格式主要面向GIS或科學數據儲存,NCSA開發,支持高速并行處理海量數據、超大文件。Matlab有其應用。其內部儲存結構非常類似于*NIX的目錄樹。不支持SQL。須用使用底層開發接口,或High Level APIs進行業務操作。適合于tick數據儲存場景。 http://www.hdfgroup.org http://www.pytables.org/moin http://hdf5serie.berlios.de http://www.puppetmastertrading.com/blog/2009/01/04/managing-tick-data-with-hdf5/ http://www.puppetmastertrading.com/blog/2009/01/06/tick-data-hdf5-part-2/ Tokyo Cabinet/Kyoto Cabinet 日本人寫的Tokyo Cabinet在多項測評中速度已經超過Berkeley DB。其設計初衷是為了支撐SNS網站,在并發性和大數據量吞吐都經受住了考驗。只支持鍵值操作。Tokyo Cabinet是用C開發的,已經成熟。作者為了便于維護和移植,改用C++開發,易名為Kyoto Cabinet。新版比起舊版,在單線程性能降低,但在高并行性能提高了。并增加了適合多種不同場景的索引參數。 http://fallabs.com http://yinhm.appspot.com/2010/05/no...ngodb-vs-redis-for-time-series-data-benchmark http://yinhm.appspot.com/2010/05/tokyo-cabinet-hidden-features-for-time-series-data MongoDB 不少老外青睞MongoDB,有商業公司支持,項目成熟完善。海量數據處理和并發性能比較出色。最受歡迎的是其強大的非SQL查詢語言。但因為是面向文檔的數據庫,偶覺得不是最適合于偶們的應用場景。 http://www.mongodb.org http://www.wentrue.net/blog/?p=772 http://www.cnblogs.com/Seapeak/archive/2010/06/28/1767091.html http://blog.zhaojie.me/2010/02/mongodb-tokyo-tyrant-benchmark-1-basic-cru-operations.html http://blog.zhaojie.me/2010/02/mongodb-tokyo-tyrant-benchmark-2-concurrent-insert.html 還有一些開源數據庫項目,雖然在查詢速度個別指標上占優,但受其它條件約束:JAVA開發、項目活躍度、只支持*NIX、面向分布式環境、沒有商業后續支持等等,就排除掉不予考慮了。看官若有更好的推薦,或不同意見,歡迎跟帖。 參考資料: http://sebug.net/paper/databases/nosql/Nosql.html
近期的收獲是找到一個叫「R-Tree」的東東,據說是高維數據快速檢索算法,GIS空間地理信息用得比較多。感覺對時間序列數據也是適用的。各大數據庫都有實現,但偶不確定此算法占用的資源及效率如何。 http://en.wikipedia.org/wiki/R-tree http://blog.csdn.net/chenyq2008/archive/2008/03/02/2140477.aspx http://www.rtreeportal.org/ http://gist.cs.berkeley.edu/ MySQL(有提到股票數據的應用) http://dev.mysql.com/tech-resources/articles/4.1/gis-with-mysql.html http://dev.mysql.com/doc/refman/5.1/en/optimizing-spatial-analysis.html http://forums.mysql.com/read.php?20,42111,42111#msg-42111 Developing Time-Oriented Database Applications in SQL(EBOOK) http://www.cs.arizona.edu/people/rts/publications.html PostgreSQL http://www.pgsqldb.org/pgsqldoc-8.1c/xindex.html Berkeley DB http://www.bdbchina.com/2010/04/bdb11gr2的r-tree功能/ Sqllite http://www.sqlite.org/rtree.html HDF5 http://vis.lbl.gov/Events/SC05/HDF5FastQuery/index.html
巨建华:基于MongoDB的大规模高频金融交易数据处理 http://cloud.csdn.net/a/20111125/308132.html Twitter Storm 实时数据处理框架分析总结 http://www.cnblogs.com/aga-j/archive/2012/02/03/2337440.html
VoltDB,面向大数据的内存数据库,高并发分布式,据称可用于金融行情tick数据,已有马来西亚股票交易所应用案例。 http://voltdb.com/no-limits/apps-gallery.php http://highscalability.com/blog/2010/12/6/what-the-heck-are-you-actually-using-nosql-for.html SciDB,科学数据库,面向时间序列大数据分析,提供R支持。 http://www.scidb.org/