MySQL рекомендации ...
У вас есть Volume_Day_BTC
, но вы говорите «6 записей / час» - это ежедневная запись или более мелкозернистая.
Объем данных не так велик, но будет полезно сократить типы данных, прежде чем вы начнете.
id
не требуется; используйте PRIMARY KEY(coin, datetime)
вместо.
Тщательно продумайте тип данных для цен и объемов. На одном полюсе находится пространство (следовательно, в некоторой степени скорость); с другой, точность.
DOUBLE -- 8 bytes, about 16 significant digits, large range
DECIMAL(17, 11) -- 8 bytes, limited to $1M and 11 decimal places (not enough?)
DECIMAL(26, 13) -- 12 bytes, maybe big enough?
etc.
Можно ли обобщать данные, скажем, за один месяц, чтобы сэкономить место? Почасовая или дневная средняя / высокая / низкая и т. Д. Это было бы очень полезно для ускорения выборки данных для построения графиков.
В частности, я рекомендую хранить сводную таблицу по монетам + день с объемом, ценой и т. Д. Рассмотрите возможность использования FLOAT
(4 байта, 7 значащих цифр, достаточный диапазон) как более чем достаточно для построения графика.
Итак, я рекомендую 3 таблицы:
Coins -- 100 rows with meta info about the currencies.
Prices -- 5M rows/year of details -- unless trimmed (400MB/year)
Summary -- 36500 rows/year for graphing range more than, say, a week. (4MB/yr)
Возможно, стоит иметь почасовую сводную таблицу для графиков с более коротким диапазоном. Нет необходимости использовать еженедельные или ежемесячные сводки; они могут быть получены из ежедневных с достаточной эффективностью.
Использовать InnoDB.
Сводные таблицы