在MongoDB中组织集合以存储交易数据的快速结构是什么?

问题描述 投票:0回答:1

我正在存储来自多个加密交换的历史交易数据。每个交易所列出了不同的符号,例如“BTC-28MAR19_FUTURES”,“BTC-31MAR19_FUTURES”等,可以交易,总计最多500个不同的符号。对于这些符号中的每一个,存在交易数据,其类似于“时间戳”,“价格”,“交易量”等。每个符号有数百万个交易,我需要存储。

我曾经为每个交换创建一个集合,并将这些交换的每个符号存储到这个单独的集合中,即:

collection name = bitmex_futures,包含此交易所所有现有产品的所有交易。参赛作品如下:

{"symbol" : "BTC-28MAR19", "price" : 4500, "trade_id" : 12345, etc.}
{"symbol" : "BTC-28MAR19", "price" : 4300, "trade_id" : 12346, etc.}
{"symbol" : "BTC-31MAR19", "price" : 4230, "trade_id" : 12347, etc.}

但是,这非常慢,因为如果我想查询数据,那么有很多条目。

为每个符号创建一个集合是否有意义?如果我最终拥有500个集合,每个集合中包含高达数百万的交易数据,那么这仍然会很快(甚至更快)吗?

database mongodb pymongo algorithmic-trading cryptocurrency
1个回答
0
投票

如果您不需要跨交易符号查询,则每个交易符号的一个集合可能有意义。如果您的trade_id是唯一的,我会将其作为_id提供,因此您可以使用为_id创建的自动唯一索引。

什么是查询模式?它可能适合在您要一起查询的字段上创建compound index

通常,您应该将索引添加到您查询的字段中。您可以使用explain() plan来确保您的查询得到有效执行。

如果您是MongoDB的新手,this free online class是一个很好的起点。

© www.soinside.com 2019 - 2024. All rights reserved.