I have 4 sensors, hourly event counts and periodic metrics. Sensors record 5 hours/day, @ 512 sample rate ~ 280mb/day (once a week its ~500mb). Event counts are 4 different floats representing event occurrences during that hour. Metrics are various evaluations that occur periodically (2-5x/day). Data is received once/day so inserts are rare.
Operations/Transformations
- Signal Processing
- artifact removal
- spectral decomposition
- correlations
- statistics (means, stds, kurtosis, skew, distributions, etc)
- Event/Metrics
- progression over time
- statistics across various time scales
- clustering/grouping
- Event/Metric Correlations w/ Signals
- what does the signal look like during an event? pre/post an event? across similar events?
- Are there patterns or trends when we align the time series around events or metrics?
- How do these relationships evolve over time?
- General Anomaly Detection
The majority of the signal processing is fixed but the raw data will need to be kept along with summaries, i.e., store raw data, store artifact time frames (along with what type of artifact occurred) and spectra (5 different windows so 5 additional time series but this will be at most 4 samples/sec and up to a sample every minute). The events and metrics can likely be stored as meta data or even in another db as it's much smaller.
Data is currently sitting in HDF5 store w/ a bunch of python wrappers to ease queries. The queries are getting slower every day to the point where after a month of data collection running windowed transformations across all time (30s window across entire db, very common operation) takes 10minutes. After a year of collection this will be 2 hours. 2 years of data 4 hours etc.
I have access to AWS, I have some experience with databases (sql, Cassandra, mongodb) but am willing to learn w/e tool/db fits my use case best. I'm good with python, shell scripting and have some c++/cuda xp. Most of the operations I have mentioned are highly parallelizable so I was thinking spark w/ hdfs/cassandra, redshift etc. I'm not really sure.