What does column family-oriented datastore mean in practice I was reading this article about HBase. Within it, the storage format of HBase is described:

HBase is referred to as a column family-oriented data store. It’s also row-oriented: each row is indexed by a key that you can use for lookup

So what does column family oriented mean? Is it the same as column oriented? In that case, how can it be both column family oriented and row oriented?

So row oriented storage is like this:

001:10,Smith,Joe,40000;
002:12,Jones,Mary,50000;
003:11,Johnson,Cathy,44000;
004:22,Jones,Bob,55000;


Column oriented storage is like this:

10:001,12:002,11:003,22:004;
Smith:001,Jones:002,Johnson:003,Jones:004;
Joe:001,Mary:002,Cathy:003,Bob:004;
40000:001,50000:002,44000:003,55000:004;


So how is data actually stored in HBase? Do you have example?
Column families in HBase are a method of &quot;vertical partitioning&quot; of an HTable, which separates subsets of the table columns into distinct physical structures. This improves query performance (via reduced I/O requirements) if your use cases frequently access certain groups of columns together.
Within each column family data are stored in a row-oriented manner. So, assuming that in your example &quot;001&quot;..&quot;004&quot; are the record keys, and two column families, the data would be stored somewhat similar to this:
CF1                     CF2
|Key|First|Last   |     |Key|Band |Salary |
|---|-----|-------|     |---|-----|-------|
|001|Joe  |Smith  |     |001|10   |40000  |
|002|Mary |Jones  |     |002|12   |50000  |
|003|Cathy|Johnson|     |003|11   |44000  |
|004|Bob  |Jones  |     |004|22   |55000  |

Thus, if you only needed to calculate the average salary, you would read a smaller file without unnecessary data in it.
More about HBase record layout.