Redis es una tienda en memoria. Todos los datos deben caber en la memoria. Entonces, excepto si tiene 3 TB de RAM por año de datos, no es la opción correcta. El límite de 2^32 no es realmente un problema en la práctica, porque probablemente tenga que fragmentar sus datos de todos modos (es decir, usar instancias múltiples) y porque el límite es en realidad 2^32 teclas con 2^32 elementos por tecla.
Si tiene suficiente memoria y aún desea utilizar (fragmentada) Redis, aquí es cómo se puede almacenar eficiente del espacio de series de tiempo: https://github.com/antirez/redis-timeseries
También es posible que desee parchear Redis con el fin de añadir una serie de tiempo adecuado estructura de datos. Véase aplicación de Luca Sbardella en:
https://github.com/lsbardel/redis
http://lsbardel.github.com/python-stdnet/contrib/redis_timeseries.html
Redis es excelente para las estadísticas globales en tiempo real y almacenar el resultado de estas caclulations (es decir, aplicaciones de tierra). Sin embargo, el almacenamiento de datos históricos en Redis es mucho menos interesante, ya que no ofrece un lenguaje de consulta para realizar cálculos fuera de línea en estos datos. Las tiendas basadas en Btree que admiten sharding (MongoDB por ejemplo) son probablemente más convenientes que Redis para almacenar grandes series temporales.
Las bases de datos relacionales tradicionales no son tan malas para almacenar series de tiempo. La gente se ha dedicado libros enteros a este tema:
Developing Time-Oriented Database Applications in SQL
Otra opción es posible que desee considerar es el uso de una solución bigdata:
storing massive ordered time series data in bigtable derivatives
OMI el punto principal (cualquiera que sea el motor de almacenamiento) es evaluar los patrones de acceso a estos datos. ¿Para qué quieres usar estos datos? ¿Cómo accederá a estos datos una vez que se hayan almacenado? ¿Necesita recuperar todos los datos relacionados con un símbolo dado? ¿Necesita recuperar la evolución de varios símbolos en un rango de tiempo dado? ¿Necesita correlacionar valores de diferentes símbolos por tiempo? etc ...
Mi consejo es intentar listar todos estos patrones de acceso. La elección de un mecanismo de almacenamiento dado solo será una consecuencia de este análisis.
En cuanto al uso de MySQL, definitivamente consideraría table partitioning debido al volumen de datos. Dependiendo de los patrones de acceso, también consideraría el ARCHIVE engine. Este motor almacena datos en archivos planos comprimidos. Es eficiente en el espacio. Se puede usar con particiones, por lo tanto, a pesar de que no indexa los datos, puede ser eficiente para recuperar un subconjunto de datos si se selecciona cuidadosamente la granularidad de la partición.
MySQL es una base de datos relacional, mientras que Redist es una clave: value store. Solo eso debería hacer sonar la campana sobre qué usar. En Amazon RDS MySQL simplemente vuela cuando se trata de leer y escribir. Si yo fuera usted (y tuviera algo de dinero para respaldar la aplicación), lo crearía con MySQL e instalaría en Amazon RDS. –