首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >海量数据的数据库设计

海量数据的数据库设计
EN

Stack Overflow用户
提问于 2013-10-29 10:34:34
回答 3查看 2.5K关注 0票数 6

我想存储1000个符号的股票交易数据。数据实际上是从文本文件转换的,因此不需要插入和更新;只需要只读访问。

数据基本上是这样分组的:每个符号都有许多记录:{timestamp, price, quantity},每个记录代表一个交易。

一个符号的数据上限大约为5条记录/秒,每个工作日8小时,即5x60x60x8 =144 K/天。也就是说,1K符号每天将产生144百万条记录。

对数据的大多数操作应该如下所示:

  • 为期间日期D1、时间T1 to Date D2、时间T2的符号提供所有记录
  • 查找D1、T1...D2、T2期间的最低/最高/平均价格或数量

现在的问题是:在这种情况下,数据库的最佳设计是什么?

  • 我能把所有的交易都存储在一张桌子上吗?不过,在这种情况下,桌子很快就会变大。
  • 我应该每天/每周/每月创建一个单独的桌子吗?即2013年-10-25_ABC (ABC -符号名称)。在这种情况下,我们可以得到1K新表每天/周/月。
  • 或者,可能是纯文本文件在这种情况下就足够了?例如,将所有符号数据作为2013-10-15文件夹下的文件,从而在每个文件夹中生成1K文件。

数据库可以是MySQL或MySQL。总时间-最多5年。谢谢!

EN

回答 3

Stack Overflow用户

发布于 2013-10-29 10:45:21

第三种选择是最好的1,你需要高的阅读性能和几乎可以忽略不计的写入。

您的需求最适合于NoSql数据库。没有关系的单个表;MySQL会过度使用。更多信息-> NoSql数据库

票数 4
EN

Stack Overflow用户

发布于 2013-10-31 20:13:23

这是大量的数据。请看NoSQl。

使用SQL,以下是一些基本想法:

将所有价格数据放在一个表中,使用尽可能小的数据类型。使用SymbolId (int)引用符号、所需的最小日期时间类型、所需的最小货币类型。

去有机化。制作第二张表,每天的最小/最大值/avg和SymbolId。

研究水平分区和使用索引。

票数 4
EN

Stack Overflow用户

发布于 2013-10-29 16:47:46

因为您将从一个日期运行到另一个日期,所以我根本不会将表拆分。相反,学习更多关于切分的知识。下面是我将使用的模式:

代码语言:javascript
复制
symbols
    id          varchar(6) // MSFT, GOOG, etc.
    name        varchar(50) // Microsoft, Google, etc.
    ...

trades
    id              unsigned bigint(P)
    symbol_id       varchar(6)(F symbols.id)
    qwhen           datetime
    price           double
    quantity        double
    ...
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19655746

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档