Мой пример использования следующий: я параллельно запускаю около 60 веб-сокетов из 7 источников данных, которые регистрируют биржевые тикеры (данные временных рядов). В настоящее время я записываю данные в mongodb, который размещен на виртуальной машине Google Cloud, так что каждый источник данных имеет свою собственную коллекцию, а все коллекции размещаются в одной базе данных.
Тем не менее, база данных выросла до 0,6 ГБ и ~ 10 миллионов строк только после пяти дней данных. Я довольно новичок в таких вопросах, но у меня есть ощущение, что это не жизнеспособное долгосрочное решение. Мне никогда не понадобятся все данные одновременно, но мне нужны все данные для запроса по дате / валюте. Однако, как я понял, эти запросы могут стать невозможными, если набор данных больше моей оперативной памяти, это правда?
Кроме того, это исследовательский проект, но, к сожалению, в настоящее время я не могу использовать университетский кластер, поэтому я размещаю данные на частной виртуальной машине. Однако это ограничено бюджетом, и высокопроизводительные машины быстро становятся очень дорогими. Вот почему я ставлю под сомнение мой выбор дизайна. В настоящее время я думаю о том, чтобы либо перейти на другую базу данных, но боюсь, что у меня снова возникнут те же проблемы, либо экспортировать базу данных один раз в неделю / месяц / что угодно в CSV и уничтожить ее. Это было бы довольно неприятно, и я также боюсь потерять данные.
Итак, мой вопрос: как я могу спроектировать эту базу данных таким образом, чтобы я мог подмножество данных для одного из ключей (datetime или ticker_id), даже если база данных становится больше, чем RAM моей машины? Дисковое пространство не проблема.