正确的数据库设计可在数据库中存储大量的股票加密货币数据

时间:2018-07-06 13:43:25

标签: mysql sql database-design nosql bigdata

我想在db中存储大量加密货币数据。然后,我想在网页上显示带有历史价格的漂亮javascript价格图。 问题是,我不确定正在使用哪种数据库设计来解决此问题,我当时正在考虑使用Mysql DB,但在这种情况下,也许我认为NOSQL db更好。

我需要什么

  • 我需要跟踪至少100种具有历史和 当前价格和其他库存信息,例如交易量等...
  • 我将每10分钟为每个加密货币插入一个新数据((6 记录/小时* 24小时* 365天)*每个加密货币100 = 5256 000 每年有新记录)
  • 我需要查询每种硬币的不同时间范围,才能在网页上绘制图形。

我的想法:

我提供了这种解决方案,但我需要知道这是否可行,或者我完全错误并且天真。 在这种情况下,我将有2个表,第一个父表将存储有关硬币的所有必要信息,子表将存储所有价格,但该子表将必须包含大量数据,这使我感到担忧。 / p>

我的表结构示例:

tbl_coin_detail:

id.   |Tick_name    | Name      |Algorithm   |Icon  

1     | BTC         |Bitcoin    |SHA256      |path/to/img   
2     | ETH         |Ethereum   |Ethash      |path/to/img
.
.
.

tbl_prices:

id  | price_USD     | price_EUR | datetime              | Volume_Day_BTC        | FK_coin       

1   | 6537.2        | 5 632,28  | 2018-07-01 15:00:00   | 62121.7348556964      | 1

2   | 466.89        | 401.51    | 2018-07-01 15:01:00   | 156373.79481106618    | 2
.
.
.

另一种想法是为每个硬币价格制作一个单独的表格,这意味着100张具有所有历史价格和当前价格以及股票信息的表格,而不是一张巨大的表格。 我真的不确定在哪里,哪个更好,一个表中的所有价格都适合简单查询,但是我想这可能是巨大的性能瓶颈,使来自分离表的查询对于查询来说会更糟,因为我需要编写查询每个表,但可以帮助提高性能。

您能指出正确的方向如何解决这个问题吗? SQL DB或NOSQL有什么更好的? 预先谢谢你。

2 个答案:

答案 0 :(得分:1)

MySQL建议...

您有Volume_Day_BTC,但您说的是“每小时6条记录” —是每天或更细的记录。

数据量不是很大,但是在开始之前缩小数据类型将是有益的。

id是不必要的;改用PRIMARY KEY(coin, datetime)

请仔细考虑价格和数量的数据类型。在一个极端是空间(因此在某种程度上是速度)。另一方面,精度。

DOUBLE -- 8 bytes, about 16 significant digits, large range
DECIMAL(17, 11) -- 8 bytes, limited to $1M and 11 decimal places (not enough?)
DECIMAL(26, 13) -- 12 bytes, maybe big enough?
etc.

例如可以节省一个月的时间来汇总数据吗?每小时或每天平均/高/低等。这对于加快获取图形数据非常有用。

特别是,我建议按硬币+天,数量,价格等来保存汇总表。考虑使用FLOAT(4字节,7个有效数字,足够的范围)对绘制图形来说已经足够了。 / p>

所以,我建议3张桌子:

Coins -- 100 rows with meta info about the currencies.
Prices -- 5M rows/year of details -- unless trimmed  (400MB/year)
Summary -- 36500 rows/year for graphing range more than, say, a week. (4MB/yr)

为小范围图表提供每小时摘要表可能是值得的。不需要每周或每月的摘要;它们可以每天高效地获取。

使用InnoDB。

Summary tables

答案 1 :(得分:0)

说实话,这远非“巨大”。我们在这里谈论的不是数十亿条记录,因此任何索引正确的数据库都可以。