Fixes#571. Removed the old long term and short term shards. Now if the
user doesn't manually create a shard space, a catchall called "default"
will be created the first time they write data in.
Added API endpoints to list, create, and delete shard spaces. Made a
breaking change to the old get shards API by changing the format since
shortTerm and longTerm shards aren't guaranteed to be present.
Shard spaces can be mapped to a single database. Retention policies are
enforced per server by a background routine that periodically checks
shards in spaces that have retention policies to see if they have passed
their expiration.
Currently all writes (unless synchronous) have to go through the write
buffer and the WAL in order to guarantee proper replication. This commit
changes the behavior for shards that aren't replicated.
Fix#734.
Previously the graphite plugin required payloads to be space delimited
and didn't like tabs. This commit breaks the payload using any
whitespace delimiter. Fix#707.
Fixes#414. All series metadata, that is which series exist, what columns they have, and what the ids of those columns has been moved into Raft.
This means that list series queries are now very fast since they operate on an in memory data structure. It also means that writes no longer have to do gets agains the storage engine to resolve what a column's id is.
Fixes#358. List series now returns as a single series with a `name` column.
This fix has the potential to slow things down in scenarios that people suddenly write many thousands of new series in less than a second. That's because the definition of new series now needs to go through the raft leader and get consensus. I think it's unlikely that it'll be a problem, but we'll need to do extensive testing.
Finally, there is the issue that the Raft snapshots can potentially become big. We should do testing with setups that have millions of series to ensure that performance and startup time remain good.