Что такое быстрая структура для организации коллекций в MongoDB для хранения торговых данных? - PullRequest
0 голосов
/ 10 апреля 2019

Я храню исторические торговые данные с нескольких крипто-бирж.В каждой бирже перечислены различные символы, такие как «BTC-28MAR19_FUTURES», «BTC-31MAR19_FUTURES» и т. Д., Которые можно обменять, в общей сложности до 500 различных символов.Для каждого из этих символов существуют данные о сделках, такие как «отметка времени», «цена», «объем» и т. Д. На каждый символ приходится несколько миллионов сделок, которые мне нужно сохранить.

Я использовалсоздать одну коллекцию для каждой биржи и сохранить каждый символ этих бирж в этой единой коллекции, а именно:

имя коллекции = 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 коллекций с миллионами торговых данных в каждой из них, будет ли это все еще быстро (или даже быстрее)?

1 Ответ

0 голосов
/ 11 апреля 2019

Если вам не нужно запрашивать торговые символы, может иметь смысл одна коллекция для каждого торгового символа. Если ваш trade_id уникален, я бы поставил его как _id, чтобы вы могли использовать автоматический уникальный индекс, созданный для _id.

Что такое шаблоны запросов? Может подойти для создания составного индекса для полей, к которым вы хотите запросить вместе.

Как правило, вы должны добавлять индексы в поля, которые вы запрашиваете. Вы можете использовать план explain() , чтобы обеспечить эффективное выполнение ваших запросов.

Если вы новичок в MongoDB , этот бесплатный онлайн-класс - хорошее место для начала.

...