Я создаю схему базы данных, которая будет использоваться для технического анализа, например, гейнеры с максимальным объемом, гейнеры с максимальной ценой и т. Д. Я проверил здесь ответы на вопросы, например вопрос разработки . Взяв подсказку из ответа boe100 , у меня есть схема, смоделированная в значительной степени, таким образом:
Symbol - char 6 //primary
Date - date //primary
Open - decimal 18, 4
High - decimal 18, 4
Low - decimal 18, 4
Close - decimal 18, 4
Volume - int
Сейчас эта таблица, содержащая данные на конец дня (EOD), будет составлять около 3 миллионов строк за 3 года. Позже, когда я получу / мне нужно больше данных, это может быть 20 миллионов строк.
Передний конец будет задавать запросы типа «дайте мне максимальный выигрыш цены на дату X за Y дней». Этот запрос является одним из самых простых, и, как я полагаю, не слишком дорогостоящ, со временем.
Но такой запрос, как «дать мне наибольшую выгоду за последние 10 дней, а предыдущие 100 дней выступают в качестве базового уровня», может стоить в 10-100 раз дороже. Результатом такого запроса будет число с плавающей запятой, которое показывает, во сколько раз вырос объем и т. Д.
У меня есть один вариант - добавить столбец для каждого такого результата. И если пользователь запрашивает увеличение объема за 10 дней в течение 20 дней, для этого потребуется еще один столбец. Общее количество таких столбцов может легко пересечь 100, особенно если я начну добавлять другие результаты в виде столбцов, таких как MACD-10, MACD-100. каждый из которых потребует свой собственный столбец.
Это выполнимое решение?
Другой вариант заключается в том, что я сохраняю результат в кэшированных html-файлах и представляю их пользователю. У меня нет большого опыта в веб-разработке, поэтому для меня это выглядит грязно; но я могу ошибаться (оф!). Это тоже вариант?
Позвольте мне добавить, что я / буду использовать mod_perl для представления ответа пользователю. Большая часть работы над базой данных mysql выполняется с использованием perl. Я хотел бы иметь время отклика 1-2 секунды.