【からむふぁみりー】

カラムファミリー とは?

最終更新:
💡 関連する引き出しを同じ棚にまとめた整理術

BigtableやHBaseで、関連するカラム(列)をまとめて管理する単位。保存設定などにも使う。Cassandraでは同じ用語がCQLのテーブルに相当するため、製品による違いに注意する。

📌 このページのポイント
カラムファミリーは列のグループ Bigtableの例:一つのテーブル内の列を分類 行キー profile activity 基本情報の列 活動記録の列 name age login score u001 田中 32 10/01 88 u002 鈴木 28 10/02 71 同じ保持方針 別の保持方針 ファミリー名 + 列名で識別 例:profile の name 列 Cassandraでは指す単位が異なる column family = CQL 3のtable
Bigtableの論理構造の例。ファミリーごとに保持方針を設定できる。Cassandraの構造を表した図ではない。
ひよこ ひよこ
カラムファミリーって普通のテーブルの列と何が違うの?
ペンギン先生 ペンギン先生
BigtableやHBaseでは、テーブル内の列をまとめるグループだよ。たとえばprofileというファミリーにnameとemailという列を入れる。列はファミリー名と、その中の列名の組で識別するんだ。
ひよこ ひよこ
まとめると何がうれしいの?
ペンギン先生 ペンギン先生
HBaseでは同じファミリーのデータをまとめて格納し、圧縮などを設定できるよ。Bigtableでは古いデータをいつ削除するかという保持方針を、ファミリー単位で設定するんだ。
ひよこ ひよこ
どうやってグループを分けるの?
ペンギン先生 ペンギン先生
Bigtableなら、一緒に読みたい列や同じ保持方針の列をまとめるのが基本だよ。名前・メールなどの基本情報と、短期間だけ残す活動記録を分ける例が考えられる。分ければ必ず高速になるわけではなく、実際の読み書きに合わせて設計するんだ。
ひよこ ひよこ
Cassandraでも同じ構造?
ペンギン先生 ペンギン先生
用語の指す単位が違うよ。Cassandraのcolumn familyは、CQL 3ではtableと呼ぶ。Bigtableの「一つのテーブルの中に複数のファミリー」という図を、そのままCassandraに当てはめないようにしよう。
ひよこ ひよこ
列指向データベースと同じものなの?
ペンギン先生 ペンギン先生
関連する列のグループというデータモデルと、分析向けに値を列単位で並べる列指向ストレージは区別しよう。カラムという名前だけで同じ保存方式や性能だとは判断できないんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「カラムファミリー」って出てきたら「関連するカラムをまとめた列のグループ」と思えればだいたいOK!
📖 おまけ:英語の意味
「Column Family」 = 列の家族・グループ
💬 Columnは「列」、Familyは「家族」を意味するよ。関連する列をひとまとまりとして捉える言葉だね

参考資料

← 用語集にもどる