ビッグデータ分析基盤に関する用語がわかりにくすぎる話

ビッグデータ

ビッグデータの分析について学習を始めましたが・・・とにかく用語がわからない。

  • 聞いたことの無い用語が多すぎる
  • 用語の説明が抽象的すぎてわからないよ
  • この用語ってあの用語と何が違うの?

そんなこんなで発狂しそうだったのでビッグデータの分析に関する用語についてまとめました。

この記事を読むと、ビッグデータ処理基盤の基本的な構成である下記の図が理解できるようになります。

https://www.slideshare.net/tetsutarowatanabe/2018version-115735455/20

対象者

本記事の対象者は下記の方を想定しています。

  • ビッグデータの分析をこれから始める方
  • ビッグデータの用語の違いを知りたい方
  • ビッグデータの分析で利用するデータベースの違いがよくわからない方
  • 用語の具体例が欲しい方

ビッグデータ分析基盤で扱うデータ構造の用語がわかりにくい

ビッグデータ分析基盤で扱うデータ構造は以下の 3 つです。

  • 構造化データ
  • 非構造化データ
  • 半構造化データ

構造化データ

表(テーブル)データのことです。行と列を定義したデータのことです。

例: 構造化データの具体的な内容(3列【ID, NAME, DATE】、3行から構成されるデータ)

ID,NAME,DATE

1,hoge,2020/08/01 00:00
2,foo,2020/08/02 00:00
3,bar,2020/08/03 00:00

データの形式

  • CSV ファイルのデータ
  • RDBMS のテーブルデータ

特徴

  • 各行は同じ列を持つ。特定の行のみ、違う列名を持つことは無い
    • データを保存する前に行と列を定義するため
  • ネストしない(テーブルのフィールドの値にテーブル自体が含まれることは無い)
    • フィールドには列名に対応するデータが入るため
    • (フィールドはテーブル名に対応するデータでは無い)
      • 別のテーブルを参照する場合は JOIN する

非構造化データ

構造化されていないデータのことです。特に列名が無いデータを指します。

例: 非構造化データの具体的な内容

<6>Feb 28 12:00:00 192.168.0.1 fluentd[11111]: [error] Syslog test

各列に列名が無いため、各列の意味をコンピュータが判断することはできません。(例えば1列目の<6>の意味は判断不可能)

データの形式

  • テキスト
  • 音声
  • 画像

特徴

  • データの形が多様
    • 行、列を定義しなくていいため
  • 各列がどんな意味を持つデータなのか、コンピュータが判断することは困難
    • 列名が無いから

半構造化データ

非構造化データの各エンティティに列名を与えたものです。ただし、表形式では無いです。

例: 非構造化データ

<6>Feb 28 12:00:00 192.168.0.1 fluentd[11111]: [error] Syslog test

例: 半構造化データ(上記の非構造化データの各エンティティに列名を与える)

jsonPayload: {
    "pri": "6",
    "host": "192.168.0.1",
    "ident": "fluentd",
    "pid": "11111",
    "message": "[error] Syslog test"
}

半構造化データは表形式では無いので、新しく “new_jsonPayload:” を追加した場合、列名を全く異なるものにしてもいいです。また、列数が異なってもOKです。

データの形式

下記の拡張子を持つデータ

  • JSON
  • Avro
  • ORC
  • Parquet
  • XML

特徴

  • いつでも新しい属性(列名)を追加可能
    • 事前に列の定義を必要としないため
  • 異なる列名を持つことが可能
    • エンティティごとに列名を定義可能なため
  • ネストすることが可能

ビッグデータ分析基盤で扱うデータの保存場所がわかりにくい

ビッグデータ分析基盤で扱うデータは次の 3 つの場所に保存されます。

  • データレイク
  • データウェアハウス
  • データマート

データレイク

全てのデータ(構造化・非構造化・半構造化)をとりあえず蓄積する場所です。蓄積する段階でデータの用途は決まって無くても構いません。

具体的な製品

  • Hadoop
  • Amazon S3

利点

  • あのデータはどこだっけ、このデータはどこだっけ。ということが無い
    • 必要なデータは全てデータレイクにある
  • データ保存時に利用用途を決めなくて良い
    • どんなデータでも保存可能なため
    • 保存する段階でデータを加工する必要が無い

データウェアハウス (DWH)

構造化されたデータを保存する場所です。
非構造化データ、半構造化データは構造化データに変換してから保存します。

IoT 機器やアプリケーションログ、データレイクなどからデータを抽出、加工(データを構造化)してデータウェアハウスに保存します。

具体的な製品

  • BigQuery
  • Redshift

利点

  • 抽出、分析が高速で可能
    • データが一定の規則で構造化されているため
  • 分析するための必要なデータが全て集約されている
    (例: 社内のデータが集約されている場合、部署を横断したデータ分析が可能

データマート

構造化されたデータを保存する場所。データウェアハウスの規模が小さいものです。

データマートで扱い切れない規模のデータ量(数百GB~PB)になると、データウェアハウスに移行します。複数のデータマートからデータを集約したものがデータウェアハウスと言えます。

逆に必要なデータのみを、データウェアハウスから各データマートにロードする場合もあります。

具体的な製品

  • MySQL
  • PostgreSQL

利点

  • データウェアハウスよりコストが安い
    • 要求される処理能力がデータウェアハウスより低いため
  • レスポンスの向上が見込める(スペックによる)
    • 必要最低限のデータを持つので、計算量が減るため

ビッグデータ分析基盤で実施する処理の用語がわかりにくい

ビッグデータ分析基盤で実施する処理に関連する用語は以下のものがあります。

  • データカタログ
  • 行指向・列指向データベース(カラムナストレージ)
  • ETL(Extract/Transform/Load)
  • BI (Business Intelligence) ツール

データカタログ

複数のメタデータを保管する場所です。

メタデータって何?

ここで言うメタデータは、データの持つ情報の意味を定義するデータであることが多いです。

例: お客様のデータ

24957,Mr. Lemuel Schamberger MD,2014-01-17 06:50:01
25471,Cornelius Schinner,2014-01-04 10:56:48

例: お客様のデータに対応するメタデータ

  • 1番目のフィールドは ID
  • 2番目のフィールドは名前
  • 3番目のフィールドは時間
  • フィールドの区切り文字は ‘,’
  • 行の区切り文字は ‘¥n’

データの種類によってメタデータは変化します。(例えば、アプリケーションログは別のメタデータを用意する必要があります。)

このように色々なメタデータを保管する場所がデータカタログです。

行指向データベース・列指向データベース(カラムナデータベース)

データの読み書きを、行で実施するか・列で実施するかの違いです。

  • 従来のデータベースは行指向でデータを処理
  • 新しいデータベースは列指向でデータを処理

従来のデータベースと区別するために、新しいデータベースをカラムナデータベースと呼びます。

一般的な傾向として、各データベースは次の処理を得意とします。

  • 行指向データベースでは、業務システムの処理が得意
    • 行には、要素同士に関連のあるデータが格納されるため
  • 列指向データベースでは、データの分析が得意
    • 列には、列名で分類されたデータが格納されるため

上記の傾向が生まれる理由につきましては、具体的なテーブルを用いて説明します。

名前購入商品購入日
hogeゲーム2020/08/01 00:00
fooお茶2020/08/01 09:00
bar書籍2020/08/01 12:00
  • 行指向(システムの利用者ごとにデータを扱うことが得意)
    • 1行の読み取りで hoge さんに関連する情報を全て取得可能
    • 逆に全員の「購入商品」を読み出すには 3 行の読み出しが必要
      • そのため、システムの利用者ごとにデータが必要な場合に利用
      • (例:hoge さんのマイページを表示する)
  • 列指向(データを分析することが得意)
    • 1列の読み取りで「購入商品」、「購入日」関連する情報を全て取得可能
    • 逆に hoge さんの情報を読み出すには 3 行の読み出しが必要
      • ある特徴(列名)に対して、利用者全員の傾向を分析する場合に利用
      • (例:どんな商品が人気か?どんな時間帯に購入されているか?)

ETL(Extract/Transform/Load)

ETL は下記の処理を指します。

  • Extract – データソースからデータを抽出
  • Transform – 抽出したデータをビジネスでの必要に応じて変換・加工
  • Load – ターゲットに変換・加工済みのデータをロード

データソース(IoT 機器・アプリケーションログ・データレイクなど)から抽出したデータを、プログラムで処理してターゲット(データウェアハウス・データレイクなど)に追加します。

BI (Business Intelligence) ツール

データウェアハウスなどに蓄積したデータを可視化するツールのことです。下記のようなものです。

ビッグデータ分析基盤で利用するデータベースの違いがわかりにくい

ビッグデータ分析基盤でよく利用されるデータベースの違いを以下の表にまとめました。

RDBNoSQLDWHHadoop
製品名
目的トランザクション処理半構造化データを集計・分析・処理大規模なデータを集計・分析データの保管・集計・分析・処理
データ構造構造化半構造化構造化非構造化
半構造化
構造化
データ保管場所としての呼称データマートデータウェアハウスデータレイク
データの扱い行指向列指向列指向行指向・列指向
トランザクション
ACID特性の一部、または全部が無い

ものによる
×

最後に、一番最初に提示したビッグデータ処理基盤の基本的な構成を再掲します。いかがでしょうか。理解できるようになっていれば幸いです。

https://www.slideshare.net/tetsutarowatanabe/2018version-115735455/20

とてもわかりやすい参考記事

0

コメント

タイトルとURLをコピーしました