I am wondering whether HBase is using column based storage or row based storage?

* I read some technical documents and mentioned advantages of HBase is using column based storage to store similar data together to foster compression. So it means same columns of different rows are stored together;
* But I also learned HBase is a sorted key-value map. It uses key to address all related columns for that key (row), so it seems to be a row based storage?

It is appreciated if anyone could clarify my confusions.

thanks in advance,
George