Redis является магазин в памяти. Все данные должны вписываться в память. Так что, если у вас есть 3 ТБ ОЗУ в год данных, это неправильный вариант. Ограничение 2^32 на самом деле не является проблемой на практике, потому что вам, вероятно, придется очертить ваши данные в любом случае (т. Е. Использовать несколько экземпляров), а потому что ограничение на самом деле составляет 2^32 ключа с 2^32 элемента на ключ.
Если у вас достаточно памяти и по-прежнему хотите использовать (sharded) Redis, вот как вы можете сохранить пространство эффективных временные рядов: https://github.com/antirez/redis-timeseries
Вы также можете захотеть пропатчить Redis для того, чтобы добавить надлежащие временные ряды структура данных. См реализацию Luca Sbardella по адресу:
https://github.com/lsbardel/redis
http://lsbardel.github.com/python-stdnet/contrib/redis_timeseries.html
Redis отлично агрегированные статистические данные в режиме реального времени и сохранить результат этих caclulations (т.е. DIRT приложений). Однако хранить исторические данные в Redis гораздо менее интересно, поскольку он не предлагает языка запросов для выполнения автономных вычислений по этим данным. Btree-хранилища, поддерживающие sharding (MongoDB, например), вероятно, более удобны, чем Redis для хранения больших временных рядов.
Традиционные реляционные базы данных не так уж плохи, чтобы хранить временные ряды. Люди посвятили целые книги на эту тему:
Developing Time-Oriented Database Applications in SQL
Другой вариант вы можете рассмотреть использует bigdata решение:
storing massive ordered time series data in bigtable derivatives
IMO главную точку (независимо от двигателя хранения) заключается в оценке шаблонов доступа к этим данным. Для чего вы хотите использовать эти данные? Как вы получите доступ к этим данным после их сохранения? Вам нужно получить все данные, относящиеся к данному символу? Вам нужно получить эволюцию нескольких символов в заданном временном диапазоне? Нужно ли вам сопоставлять значения разных символов по времени? и т. д.
Мой совет - попытаться перечислить все эти шаблоны доступа. Выбор данного механизма хранения будет только следствием этого анализа.
Что касается использования MySQL, я бы определенно рассмотрел table partitioning из-за объема данных. В зависимости от шаблонов доступа я бы также рассмотрел ARCHIVE engine. Этот движок хранит данные в сжатых плоских файлах. Это пространство эффективно. Его можно использовать с разделением, поэтому, несмотря на то, что он не индексирует данные, он может быть эффективным при извлечении подмножества данных, если тщательно выбрать гранулярность разделов.
MySQL - это реляционная база данных, а Redist - это ключ: хранилище значений. Только это должно позвонить в колокольчик о том, что использовать. На Amazon RDS MySQL просто летает, когда дело доходит до чтения и записи. Если бы я был вами (и имел наличные деньги, чтобы поддержать приложение), я бы создал его с MySQL и установил на Amazon RDS. –