when we create BufferredRandomAccessFile, we pass skipCache=true. This hurts the read performance because we always process the index files sequentially. Simple fix would be set it to false.
multiple index files of a single column family can be loaded in parallel. This buys a lot when you have multiple super large index files.
we may also change how we buffer. By using BufferredRandomAccessFile, for every read, we need bunch of checking like
do we need to rebuffer?
isEOF()?
assertions
These can be simplified to some extent. We can blindly buffer the index file by chunks and process the buffer until a key lies across boundary of a chunk. Then we rebuffer and start from the beginning of the partially read key. Conceptually, this is same as what BRAF does but w/o the overhead in the read**() methods in BRAF.