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



我正在存储来自几个加密货币交易所的历史交易数据。每个交易所都列出了可以交易的不同交易品种,例如"BTC-28MAR19_FUTURES", "BTC-31MAR19_FUTURES"等,总共多达500种不同的交易品种。对于这些交易品种中的每一个都存在交易数据,类似于 "timestamp", "price", "volume" 等。每个交易品种有数百万笔交易,我需要存储这些交易。

我曾经为每个交易所创建一个集合,并将这些交易所的每个交易品种存储到这个集合中,即:

集合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 个集合,每个集合中都有多达数百万个交易数据,这还会很快(甚至更快(吗?

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

查询模式是什么?在要一起查询的字段上创建复合索引可能很合适。

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

如果您是MongoDB的新手,那么这个免费的在线课程是一个很好的起点。

相关内容

  • 没有找到相关文章

最新更新