Open jfesler opened 11 years ago
in rrdtool 1.x there is the rrdcached which works along these lines ... the present rrdtool architecture is limiting its abilities ...
I think this is something like making an sqlite and postgresql combined. It may work, but in future it will cause a lot of havoc. I think that some things are not ment to be 2 in 1. Simply becouse if something does 2 or 3 things it doesn't do anything good.
If you decide on making rrd 2.x a network service with a daemon it will scale really nice on large environments. Drawback is that folks with embedded platform will suffer becouse of low possible resources. Maybe write some shared code and release 2 versions, with a daemon, and without. Also single API (regardless of what backend will be used) would simplify a LOT.
Decisions, decisions ;-)
This is potentially related to issue #13.
It would be neat if RRD data could be "updated" and "fetched" as a network service.
The network service could offer a level of header caching and deferred writes (see issue #13). The RRD files (or the administrator of the service?) would need to specify how much write caching is acceptable. I personally would probably risk batching up writes to 30 updates per physical write; gambling a 30 minute loss in exchange for a significant improvement on how much a single box can do.
The other side of this would be that RRD graph would allow DEF's to point to network service based data storage. This would allow a single RRD graph to use multiple back end nodes; possibly clustered together or possibly geographically diverse back ends. This would allow us to finally unify a view on a distributed RRD footprint.
This is probably getting too much into the details: but I would imagine that at least one "fetch" output format should be optimal to RRD graph purposes; not necessarily XML that is expensive over the wire and expensive to parse.