🐘
行指向・列指向
前置き
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