Column Family 簡單來說就是把多個 Columns 分在一個個 Family 中,一般來說被分在同個 Family 中的 Columns 具有相同的特性,同一 Row 中的同個 Family 中的 Columns 會被存放在一起,不同 Family 則不一定。這樣的關係有點像是使用關聯式資料庫時,如果有一張表的欄位太多,我們會將有關係的幾個欄位一起拆分出去變成另一張子表。
不同的是,關聯式資料庫中所有的表格都必須預先定義好 Schema,但 Column Family Database 中,需要預先定義的只有 Family,而 Family 中的 Columns 則不必,也不用統一。另一個特點是除了 Row 和 Column,資料在儲存時還包含 Time Stamp 的維度,也就是說所有 Column 內存放的資料是有多個時間版本的,每次的異動其實是新增一個版本,而非直接修改已存在裡面的資料。
以上圖為例,第一個 Row 是客戶 Austin 的資料,裡面包含兩個 Column Family: Basic Info 和 Address,其中 Basic Info 的 Email 欄位被修改了三次,而 Address 中的欄位是 US 的組合;而第二個 Row 是客戶 Ben 的資料,同樣擁有 Basic Info 和 Address 兩個 Column Family,但他的 Address 中的欄位和 Austin 的不同,是 UK 的組合。
透過 Column Family 的設計,資料庫可以存放數以千計(或更多)的 Columns,同時維持一定的效能。Column Family Database 中比較知名的有 Google 的 BigTable、開源的 HBase 和 Facebook開源的 Cassandra。