We managed to build our solution mostly in Python(!) using Numba for JIT and a number of compression tricks. More about it here:
We managed to build our solution mostly in Python(!) using Numba for JIT and a number of compression tricks. More about it here:
How does your technology differ from bitmap indexes? Have you solved the performance problem of updating random rows, for example?
We use bitmap indexes in a number of places internally.
Compressed bitmap indexes are awesome. Like most indexes, the updating random rows problem is best addressed using a log structured merge tree and amortizing your index updates. Just have an in-memory buffer of recently updated rows.
If you are doing mostly sums & counts type work and can deal with some level of inaccuracy, you can consider HyperLogLog...
You mentioned that there are some regularities in different data sets that can be used to increase the efficiency of their encoding. Does this mean that you need to write a different foreign data wrapper for each data set?
Did you do anything about join pushdown (which isn't supported in core PostgreSQL yet)? Apologies if this is in your talk - I looked at the slides and couldn't see anything.
Our data model makes sure that we don't have to do huge joins on the fly, which would be a bad idea anyways. We have a workaround to distribute medium-scale joins that occur frequently. Small joins are handled fine by Postgres as usual.
I would be curious to learn more about Vitesse. I couldn't find many technical details besides the mailing list post.
I'm not involved with it, just a Postgres user and thought it was of interest.
https://github.com/citusdata/postgres_vectorization_test
As discussed there it definitely showed promise in improving performance for us.