Я буду хранить некоторые данные OHLCV (открытие, максимум, минимум, закрытие, объем) для группы цифровых активов внутри базы данных MongoDB.
Это свойства каждой записи, которая будет go в базу данных:
Сначала будет 5 таймфреймов.
- 5 м для данных, которые увеличиваются каждые 5 минут.
- 15 м для данных, которые увеличивается каждые 15 минут.
- '1h' для данных, которые увеличиваются каждые 1 час.
- '4h' для данных, которые увеличиваются каждые 4 часа.
- '1d 'для данных, которые увеличиваются каждый день.
Для этого я подумал, что было бы неплохо поместить каждую из этих записей в отдельные коллекции, поэтому у меня есть 5 коллекций: myassetdb.5m
, myassetdb.15m
, myassetdb.1h
, myassetdb.4h
, myassetdb.1d
Это хорошая идея?
Тогда каждая запись документа оформляется следующим образом:
{
"_id": {
"$oid": "5f084269ef9c1e67f3bc8671"
},
"asset": "BTC/EUR",
"timeframe": "5m",
"stream": {
"timestamp": {
"$timestamp": {
"t": 1,
"i": 1594377598
}
},
"open": {
"$numberDecimal": "8417.5"
},
"high": {
"$numberDecimal": "8418.5"
},
"low": {
"$numberDecimal": "8401.2"
},
"close": {
"$numberDecimal": "8411.5"
},
"volume": {
"$numberDecimal": "14.69836761"
}
},
"date": {
"$date": "2020-07-10T10:39:58+00:00"
}
}
Здесь важны asset name
, timeframe
и stream
. Важно, чтобы позже я мог продолжать добавлять записи с самыми последними данными в зависимости от времени. И в целом это будет структура, похожая на процесс в формате CSV. Там, где все выглядит так:
timestamp,open,high,low,close,volume,pair,timeframe
1592479800,8407.6,8409,8407.6,8409,9.07373197,BTC/EUR,5m
1592480100,8409,8411.3,8408.7,8410.3,7.2545515,BTC/EUR,5m
1592480400,8410.4,8410.4,8403.2,8405.9,12.64222715,BTC/EUR,5m
1592480700,8405.9,8406,8394.2,8403.1,7.87145576,BTC/EUR,5m
Так что я могу добавлять новые записи как потоки данных
timestamp,open,high,low,close,volume,pair,timeframe
1592479200,8417.5,8418.5,8401.2,8411.5,14.69836761,BTC/EUR,5m
1592479500,8411.5,8411.7,8407.6,8407.6,3.79545517,BTC/EUR,5m
(new data above this line)..................................
1592479800,8407.6,8409,8407.6,8409,9.07373197,BTC/EUR,5m
1592480100,8409,8411.3,8408.7,8410.3,7.2545515,BTC/EUR,5m
1592480400,8410.4,8410.4,8403.2,8405.9,12.64222715,BTC/EUR,5m
1592480700,8405.9,8406,8394.2,8403.1,7.87145576,BTC/EUR,5m
Не поймите меня неправильно, я включил здесь пример CSV, чтобы продемонстрировать мои данные нужны. Мне просто нужно иметь доступ и обновлять на основе date
, asset
и timeframe
Подходит ли моя структура данных для такого рабочего процесса БД? Все это выглядит как на изображении ниже.
Just for clarification, I'm adding this section. Do I need some kind of nesting, or is it ok for the data to be flat, as for example in the image below:
введите описание изображения здесь