🐘

行指向・列指向

2024/10/14に公開

前置き

OLTP(オンライントランザクション処理) OLAP(オンライン分析処理)
目的 データベーストランザクションの処理 集約されたデータの分析
処理手法 書き込み操作が主 読み取り操作が主
データベース DWH 以外のデータベースを使用する DWH を使用する
活用例 注文の処理、在庫の更新、顧客アカウントの管理など レポートの生成、複雑なデータ分析、傾向の特定など

行指向と列指向

1. 行指向

  • データの保存方法: 行ごとにデータを保存。1つのレコード(行)の全ての列が一緒に保存される。
  • 使われるケース: OLTPに向いている。例えば、銀行の口座情報のように、ある1人の顧客の全ての情報(名前、住所、残高など)を一度に取得・更新するような場合に有効。
  • 読み取りの効率: 1つの行をまとめて読み取るため、行全体がメモリにロードされる。ある特定の行に関する操作(更新や削除)が効率的。
  • 代表的なデータベース: MySQL、PostgreSQL、Oracleなどの一般的なRDBMSがこれに該当する。

例:

ID 名前 年齢 職業
1 太郎 30 エンジニア
2 花子 28 デザイナー

この例では、1行目(ID 1)のすべてのデータ(名前、年齢、職業)が一緒に保存される。

2. 列指向

  • データの保存方法: 列ごとにデータを保存する。同じ列に属するデータが連続して保存される。
  • 使われるケース: 分析処理(OLAP)に向いている。例えば、「すべての顧客の年齢の平均を計算する」といった集計処理が効率的に行えるため、大規模なデータ分析に適している。
  • 読み取りの効率: 必要な列だけを読み取るため、特定の列のデータに対して高速なアクセスが可能。集計やフィルタリングに強い。
  • 代表的なデータベース: Amazon Redshift、Google BigQuery、Apache Cassandra、HBaseなどが列指向のデータベース。

例:

ID 1 2
名前 太郎 花子
年齢 30 28
職業 エンジニア デザイナー

この場合、「年齢」列のデータだけを一度に読み取ることが可能。

まとめ

  • 行指向は、トランザクション(頻繁な読み書き)のためのデータベースに最適。
  • 列指向は、分析や集計を効率的に行いたい場合に適している。

これらの違いを理解することで、用途に応じたデータベースの選択が可能になる。

Discussion