股票数据库设计,望高手指点

hhh_hao 2009-11-18 04:31:38
要为公司建立一个股票历史数据库, 主要用来查询,当然还有数据的更新,插入
基本上是近几年的历史数据,记录的是每分钟的数据,每条记录包括时间,价格,成交量等,一年每只股票就有数十万条记录。股票加上外汇基金等有数万只,
比较容易想到的两个方案:
1、建一个数据库,把这些历史数据都放在一个表里, 数据量太大
2、为每个股票单独做表,表太多了

大家都投个意见吧,谢谢了
...全文
518 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
jinguanding 2009-11-24
  • 打赏
  • 举报
回复
1.可以把股票,外汇,基金分为三类分别存储,因为三类之间的发生关系的业务操作可能性不大

2.每个分类建议是使用分区表的方式存储,可以按年创建分区
备注:可以考虑先创建好5-10年的分区(或者写个 SHELL脚本自动创建)
若是决定不够细分:再月创建子分区,分为两级分区
或者按年分表,再按月创建分区

3.使用分区或分表的好处,可以方便地定期删除多少年前的数据
wondyfox 2009-11-24
  • 打赏
  • 举报
回复
对一种股票建表,然后再考虑数据量,根据时间来分表,做成,一种股票一个序列的数据表,以此建仓
hhh_hao 2009-11-24
  • 打赏
  • 举报
回复
还有其他的想法的吗?
hhh_hao 2009-11-19
  • 打赏
  • 举报
回复
谢楼上的,像外汇这些是一天24小时交易的
vinsonshen 2009-11-19
  • 打赏
  • 举报
回复
时间上分表,可以根据你的数据量及主要应用的查询来灵活组合。
vinsonshen 2009-11-19
  • 打赏
  • 举报
回复
一年每只股票就有数十万条记录。股票加上外汇基金等有数万只,
主要用于查询某只股票某个时间段数据的查询

------------------------------------
按时间分表即可,每表按股票代码建立索引
因为你是以查询为主,可以在架构上建立master-多slave的架构,再结合lvs访问多slave,这样的架构扩展性强,很容易满足扩展你查询的容量负荷。
WWWWA 2009-11-19
  • 打赏
  • 举报
回复
外汇这些是一天24小时交易的:建议用ORACLE之类的大型数据库,性能、安全性比较高
ACMAIN_CHM 2009-11-19
  • 打赏
  • 举报
回复
哦,不了解外汇,学习了。

那建议你直接用数据文件了。一个股票一个文件,这样速度可以达到最快。
这样,日期你可以直接打开二进制文件直接定位。
ACMAIN_CHM 2009-11-18
  • 打赏
  • 举报
回复
一年 250 天 * 4 小时/天 * 60 分钟/小时 = 60000 记录,并没有你所说的 一年每只股票就有数十万条记录。

每条记录包括(股标代码)时间,价格,成交量等,约 80-100字节。

一年60000记录*100Bytes = 6MB 近几年的历史数据 估计在30MB左右。 问题并不大。


但你 股票加上外汇基金等有数万只 20000 * 30MB = 600GB 。这个数据库不算小了。

如果你的需求仅是 主要用于查询某只股票某个时间段数据的查询
则你还不如直接用数据文件来存储,一个股票一个文件,这样速度可以达到最快。
ACMAIN_CHM 2009-11-18
  • 打赏
  • 举报
回复
[Quote] 主要用于查询某只股票某个时间段数据的查询[/Quote]

如果查询都是基于 select * from tbl where data between xxx and yyy and stockid=123

这样,你可以使用方案二。不过仍然建议你使用时间做为分区表。
hhh_hao 2009-11-18
  • 打赏
  • 举报
回复
主要用于查询某只股票某个时间段数据的查询
WWWWA 2009-11-18
  • 打赏
  • 举报
回复
你估计数据量多大,有多少人使用,要查询多少只股票,

一年每只股票就有数十万条记录,如果有1000只股票的话,就是1亿条记录
似乎MYSQL不适合这么大的数据量
ACMAIN_CHM 2009-11-18
  • 打赏
  • 举报
回复
你的主要查询应用是什么?

如果只是查某个股票,则可以选用你的方案二,每个一张表
但如果你需要查询本日最高,最低这种分析,则建议使用方案一,一张表。

如果你的查询经常基于时间来查,则可以考虑分区表。

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧