我想存储1000个符号的股票交易数据。实际上,数据是从文本文件转换而来的,因此不需要插入和更新;只需要只读权限。
数据基本上按如下方式分组:每个符号都有许多记录:{timestamp, price, quantity}
,每条记录代表一笔交易。
一个符号的近似数据上限为5个记录/秒,每个工作日为8小时,即每天5x60x60x8 = 144K。即1K符号每天会产生144M记录。
对数据的大多数操作都是这样的:
现在的问题是:在这种情况下,数据库的最佳设计是什么?
数据库可以是MS SQL或MySQL。总时间 - 最长5年。 谢谢!
答案 0 :(得分:3)
第三个选项是最好的1.您需要高读取性能且写入几乎可以忽略不计。
您的要求最适合NoSql数据库。单表没有关系; MySQL会有点矫枉过正。更多信息 - > NoSql Databases 强>
答案 1 :(得分:2)
由于您将从一个日期时间到另一个日期时间运行查询,因此我根本不会拆分表。相反,请详细了解sharding。以下是我将使用的架构:
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
...
答案 2 :(得分:2)
这是一大堆数据。看看NoSQl。
使用SQL,这里有一些基本的想法:
将所有价格数据放在表格中,使用尽可能小的数据类型。使用SymbolId(int)引用符号,所需的最小日期时间类型,所需的最小货币类型。
做反规范化。制作第二张桌子,每天使用min / max / avg和SymbolId。
研究水平分区和使用索引。