我正计划为自己的目的从CoinMarketCap API保存记录。 我想每隔15分钟将价格信息保存在前100个加密硬币上,我想将它保存在Azure Cosmos数据库中。建模Azure Cosmos DB
由于im新的文档db的整个概念,我需要一些建模文档的帮助。
首先我从这个模型开始。
[
{
"id": "bitcoin",
"name": "Bitcoin",
"symbol": "BTC",
"rank": "1",
"price_usd": "573.137",
"price_btc": "1.0",
"24h_volume_usd": "72855700.0",
"market_cap_usd": "9080883500.0",
"available_supply": "15844176.0",
"total_supply": "15844176.0",
"percent_change_1h": "0.04",
"percent_change_24h": "-0.3",
"percent_change_7d": "-0.57",
"last_updated": "1472762067"
},
{
"id": "ethereum",
"name": "Ethereum",
"symbol": "ETH",
"rank": "2",
"price_usd": "12.1844",
"price_btc": "0.021262",
"24h_volume_usd": "24085900.0",
"market_cap_usd": "1018098455.0",
"available_supply": "83557537.0",
"total_supply": "83557537.0",
"percent_change_1h": "-0.58",
"percent_change_24h": "6.34",
"percent_change_7d": "8.59",
"last_updated": "1472762062"
},
...
]
但是,由于每次我写入数据库时id都没有变化,记录只是更新了,而没有汇总。我想这是预期的。
因此,为了确保记录汇总,我重写了这个模型。
[
{
"id": <timestamp>_bitcoin
"identifier": "bitcoin",
"name": "Bitcoin",
"symbol": "BTC",
"rank": "1",
"price_usd": "573.137",
"price_btc": "1.0",
"24h_volume_usd": "72855700.0",
"market_cap_usd": "9080883500.0",
"available_supply": "15844176.0",
"total_supply": "15844176.0",
"percent_change_1h": "0.04",
"percent_change_24h": "-0.3",
"percent_change_7d": "-0.57",
"last_updated": "1472762067"
},
{
"id": <timestamp>_ethereum
"identifier": "ethereum",
"name": "Ethereum",
"symbol": "ETH",
"rank": "2",
"price_usd": "12.1844",
"price_btc": "0.021262",
"24h_volume_usd": "24085900.0",
"market_cap_usd": "1018098455.0",
"available_supply": "83557537.0",
"total_supply": "83557537.0",
"percent_change_1h": "-0.58",
"percent_change_24h": "6.34",
"percent_change_7d": "8.59",
"last_updated": "1472762062"
},
...
]
在这里,我以使其独特添加了一个单独的id
带有时间戳和参考旧ID。
这是行得通的,但我认为这是一些重复的数据(如名称和符号),我认为这看起来不好,有双重。但也许这就是它在文档db世界中的方式?
我也想过这样的模型。
[
{
"id": <timestamp>_bitcoin
"identifier": "bitcoin",
"name": "Bitcoin",
"symbol": "BTC",
"rank": "1",
"price_history": [{
"price_usd": "573.137",
"price_btc": "1.0",
"24h_volume_usd": "72855700.0",
"market_cap_usd": "9080883500.0",
"available_supply": "15844176.0",
"total_supply": "15844176.0",
"percent_change_1h": "0.04",
"percent_change_24h": "-0.3",
"percent_change_7d": "-0.57",
"last_updated": "1472762067"
]}
},
{
"id": <timestamp>_ethereum
"identifier": "ethereum",
"name": "Ethereum",
"symbol": "ETH",
"rank": "2",
"price_history": [{
"price_usd": "12.1844",
"price_btc": "0.021262",
"24h_volume_usd": "24085900.0",
"market_cap_usd": "1018098455.0",
"available_supply": "83557537.0",
"total_supply": "83557537.0",
"percent_change_1h": "-0.58",
"percent_change_24h": "6.34",
"percent_change_7d": "8.59",
"last_updated": "1472762062"
]}
},
...
]
但由于没有选择新的记录添加到price_history
无需重写整个文件,这不会是一个好主意。此外,由于price_history
中的记录数量将无限制地增长,因此该文档将变得非常庞大且难以处理。
接下来我想分解成单独的文件,但不知道如果这是要走的路。所以我现在有点迷路了。
有什么建议吗?
你能在你的每cryptocurrency聚集的价格信息(如果有的话)的要求详细点吗?或者是你只需要记录每个时间戳最后一小时,一天和一周的百分比变化? –
我想保留历史数据以便分析它。一个例子就是及时检查新闻对价格变化或其他类似情景的影响。还想玩Azure机器学习,并且为了使用我需要的一些数据来分析。 – Martin