• 1. 基于MongoDB的 大规模高频金融交易数据处理Ymall.com技术总监 巨建华
  • 2. Page 2目 录@2011证券交易数据及应用背景1业内常见交易数据存储方案2为什么选择Mongodb3系统规划要点4高频交易数据领域的使用经验5Q&A:面临的挑战及未来展望6
  • 3. Page 31证券交易数据及应用背景@2011
  • 4. 常见证券数据类型@2011Page 4
  • 5. 应用场景1:行情数据终端@2011Page 5
  • 6. 应用场景2:自动交易及模型数据挖掘@2011Page 6
  • 7. Page 72业内常见交易数据存储方案@2011
  • 8. 存储方案1:自定义文件系统+sql@2011Page 8单独使用关系型数据库实现财务数据及资数据的存储。 问题: 1.开发异常复杂 2.实时性差 3.管理困难 4.数据结构灵活性差
  • 9. 存储方案2:Oracle Timesten@2011Page 9问题: 1.软硬件成本昂贵 2.横向扩展难度较大 3.有使用经验的技术人员较少
  • 10. 数据存储方案面临的挑战应用复杂性 高可用性 高性能,低延迟实时数据呈现 任意历史盘中实时数据挖掘 支持用户自定义脚本实现数据提取与运算 数据规模 财务,金融+历史汇总交易数据: 40G 新闻资讯及研报: 200G 06年9月至今level-2交易数据: 1.6T 每个交易日数据增量:1.5~2G @2011Page 10
  • 11. Page 113为什么选择Mongodb@2011
  • 12. Benchmark漂亮的Benchmark@2011Page 12注: 1.该测试数据为单台数据节点的测试结果 2. 将Mysql作为最简单的Key-value数据库使用与实际差别较大 3. MongoDB的分片优势在该测试中无法体现出来 4.相对于插入,数据更新性能更能体现出差异,不过未在上图中体现数据来源:nosqlfan
  • 13. 符合业务需求的系统特性ReplicaSet Automatic failover 轻松增删数据结点 Shard 自动分片 轻松增删分片结点,自动数据迁移 mongos自动路由 数据管理 对单个文档的原子更新 对任意属性建立索引 小记录空间利用率 查询支持 丰富的查询语法 查询优化及监控机制完善 @2011Page 13
  • 14. 其它理由文档完善,官方文档覆盖了所有问题 官方客户端API支持我们用的开发语言(c++,python,.net,js..) 一直维持着较快的版本更新速度 对社区关注度高,积极推动社区活动 已获得红杉等著名投资机构3000万美金支持,后续升级及服务有保障@2011Page 14
  • 15. Page 154系统规划要点@2011
  • 16. 数据分布规划-分布式数据库CAP理论应用结合业务需求,选择数据分布模式: CP replicaSet开启SlaveOk查询,设置写入节点数w=replicaSet数据节点数 AP replicaSet,默认设置w=1,查询开启slaveOk CA replicaSet,默认设置w=1,查询不开启slaveOk @2011Page 16
  • 17. 系统容量规划索引要求全部能装载到内存中 热数据最好能全部装载内存 结合业务需求规划性能及数据容量,做出相应预估 关键:提前在性能和容量达到瓶颈前增加硬件资源 @2011Page 17规划的关键原则: Memory > index+hot data
  • 18. 循序渐近引入生产环境广告点击日志数据Web Server Session数据库4台服务器,4个分片:交易数据挖掘数据库 只存储最近1个月逐笔数据27台服务器,9个片:产品数据库 完全存储交易数据@2011Page 18Mongodb还比较新,在引入生产环境之前建议先在非关键业务上试运行,积累开发及运维经验,找出可能存在的风险,以下是我们使用Mongodb的过程:
  • 19. Page 195高频交易数据领域的使用经验@2011
  • 20. 服务器架构@2011Page 20
  • 21. 数据分片键选择证券相关的数据,分片键设定:证券代码+日期 设定的理由依赖于业务规则:大多数的查询都是获得指定证券代码在一小段时间内的某种业务数据 经实践证明采用该键分片,使数据可以平衡分布到多个数据结点,达到了读写分散均匀,并在最大程度上保证了单次查询的独立性(扫描一个shard)@2011Page 21
  • 22. 实时数据挖掘应用简单Master->worker模式的分布式异步RPC框架@2011Page 22
  • 23. 简单强大的实时数据推送实现@2011Page 23使用capped collection 实现的tailable cursor 实时向应用服务器推送成交消息,更新股价,财报,逐笔等各类实时数据
  • 24. 服务运维监控Mongostat Profiler Web控制台 MongoDB Monitoring Service@2011Page 24
  • 25. Page 25Thanks!巨建华 xiaokangcn@gmail.com http://weibo.com/xwarrior@2011