The wiki states that random reads are not needed for a time series database[0]. I think they are, at least for the use case I'm interested in.
Let's say I have 1000 different metrics at 1-second resolution for a day. That's 1000 * 86400 values. Now suppose I want to get the points for a single metric for the entire day. Won't that require a scan of the entire data set (in other words, will this read 999 * 86400 values I'm not interested in)? How is this different from a table in an RDBMS that's only indexed by a timestamp?
Yes, it will be equivalent to db table indexed by timestamp. All data will be scanned but 86400000 values can be scanned in 10 seconds or so. In future I'm planing to implement some indexing based on bloom filters to speedup this. Now it is write optimized storage.
7 comments
[ 3.3 ms ] story [ 32.1 ms ] threadLet's say I have 1000 different metrics at 1-second resolution for a day. That's 1000 * 86400 values. Now suppose I want to get the points for a single metric for the entire day. Won't that require a scan of the entire data set (in other words, will this read 999 * 86400 values I'm not interested in)? How is this different from a table in an RDBMS that's only indexed by a timestamp?
[0] https://github.com/akumuli/Akumuli/wiki/How-it-works