Did you compare the disk usage vs. whisper ?
Disclaimer: I am a co-maintainer of graphite and try to write code for it when I have free time (so not much right now or for the past year or so)
https://github.com/graphite-project/whisper/commits?author=S...
BTW getting the total point count is as easy as:
select sum(array_length(dp,1)) from ts;
If you adjust the width (i.e. points per table row) to a higher number than the 768 default, as soon as you get above the PG pages size, TOAST (https://www.postgresql.org/docs/current/static/storage-toast...) kicks in, which PG compresses. Not sure how well this works, but at least in theory it should make it even more compact (though not sure about it being as performant). SELECT ...
FROM tv
JOIN customers ON ...
JOIN purchases ON ...