I read that prefix compression is used on the keys. But what about the data values? We've been trying out in-memory databases and the memory usage we're seeing is way less than the data we're putting in; without even considering the keys and data structure overhead. For instance, with a billion 64 bit integers as values stored against keys that are 10 to 16 bytes long, top is showing resident memory usage of around 5 GB. That seems almost too good to be true. Is there some hidden cost we're not looking at?
data value compression needs to be done at the application level. We do prefix compression on the data keys only.