The Scan operator in one next() call delivers vectors from all the relevant _columns_ (we don't have BATs anymore). Naturally, the scans are buffered so the I/O granularity is much larger than a vector size. The X100 paper mentions that the engine is based on top of MonetDB. Are you still using BATs at the lowest level or did you move to a different way of storing data? BATs can still be used using a specialized Scan operator, but only if
Joel, they are void-headed, i.e. physically they are a single column. MIL is additionally used as X100 front-end and to implement features that X100 currently misses. We currently work on the ColumnBM storage manager, but there is no detailed description available yet. The overview of the system you can find in "MonetDB/X100 - A DBMS In The CPU Cache", available here: ftp://ftp.research.microsoft.com/pub/debull/A05june/issue1.htm regards, Marcin