資格道場 › レッスン一覧 › データベース
データベース・13/13・12分

データ分析基盤とNoSQL

ゴール

データウェアハウス・データマイニング・Hadoop・NoSQL の各方式を用語の定義で見分けられるようになる。ストリーミング再生のバッファリング時間を、ビットとバイトの換算から正しく計算できるようになる。

このあたりは「用語の定義を4択で選ぶ」問題がほとんどで、意味の似た用語を並べてひっかけてきます。各用語の役割を一言で言えるようにしておけば、短時間で確実に取れる分野です。最後のバッファリング計算は、手順さえ覚えれば毎回同じ形で解けます。

このレッスンで稽古する(用語チェック・過去問)

まず全体像:ためる・掘る・さばく

大量のデータを活かす流れは**「ためる → 掘る」の2段階で考えると整理しやすくなります。ためる場所がデータウェアハウス**、掘って傾向を見つける作業がデータマイニングです。量が多すぎて1台では処理しきれないときに、複数台に分けて処理する仕組みが Hadoop です。

たとえるなら、データウェアハウスは整理された巨大な倉庫です。データマイニングは、その倉庫の中身を調べて「この商品とこの商品はよく一緒に売れる」といった法則を見つける作業にあたります。倉庫そのものと、倉庫を調べる作業を取り違えないことが一番のポイントです。

業務システム倉庫(ためる)作業(掘る)売上在庫顧客データウェアハウス統合・時系列データマイニング法則を発見倉庫と調べる作業を取り違えない
売上・在庫・顧客のデータを倉庫(データウェアハウス)にためる。それを調べて法則を見つける作業がデータマイニング。

データウェアハウス(DWH):意思決定のための倉庫

データウェアハウスとは、企業のさまざまな業務システムから集めた大量のデータを整理・統合して時系列で蓄積し、意思決定支援に使うデータベースです。売上・在庫・顧客などのデータを部門をまたいで集め、経営判断のために多角的に分析できる状態にしておきます。

日々の注文処理に使う業務用データベースは「いまの状態」を素早く更新することが目的です。これに対してデータウェアハウスは過去から積み上げた履歴を分析することが目的です。キーワードは**「統合」「時系列」「意思決定支援」**の3つです。

名前が似た用語との比較:

用語 一言でいうと 見分けるキーワード
データウェアハウス 分析用にデータを統合・蓄積する倉庫 大量・統合・時系列・意思決定支援
データディクショナリ データの定義(項目名・型・桁数など)を管理する辞書 データの定義情報
メタデータ データについてのデータ(作成日・形式など) データを説明する情報
データアドミニストレーション 組織のデータ資源を一元管理する活動 重複排除・一元管理という管理活動
データマイニング 蓄積データから傾向やパターンを見つける 発見・統計的手法

データマイニング:データの山から法則を掘り出す

データマイニングとは、大量のデータから統計学的手法などを使って、まだ知られていない傾向・パターン・関係を見つけ出すことです。mining は「採掘」という意味で、鉱山から金を掘り出すイメージです。

試験では「新たな知識を見つけ出す」「有用な情報や関係を見つけ出す」という言い回しが出たら、データマイニングを選びます。選択肢には必ずデータウェアハウスが並びますが、こちらはためる仕組みであって、見つける作業ではありません。

ビッグデータ(従来の方法では扱いきれないほど量が多く、種類も多様なデータ)の活用例として出題されることもありますが、答え方は同じです。

Apache Hadoop:大量データを多数のサーバで手分けする

Apache Hadoop(ハドゥープ)は、大規模なデータを多数のサーバに分散して保存・処理するための OSS(オープンソースソフトウェア。ソースコードが公開され、利用・改変・再配布が認められているソフトウェア)です。柱は2つあります。

  • HDFS:多数のサーバのディスクを1つの大きなファイルシステムとして扱う分散ファイルシステム
  • MapReduce:処理を各サーバに分けて実行する Map と、その結果を集約する Reduce の2段階で、大量データを並列処理する方式

たとえば、1人では何日もかかる大量の伝票の集計を、100人に分けて同時に数えてもらい(Map)、最後に合計する(Reduce)イメージです。

同じ Apache 系で並べられる OSS との比較:

OSS 役割 見分けるキーワード
Hadoop 分散ファイルシステム+分散バッチ処理 分散ファイルシステム・MapReduce
Spark メモリ上で高速に処理する分散処理基盤 インメモリ
Kafka 大量のメッセージを受け渡す仕組み メッセージング・配信
Storm 流れてくるデータを即時に処理する ストリーム・リアルタイム

「Hadoop の説明はどれか」という形では、アプリケーションサーバ・Web サーバ・RDBMS の説明と並べられます。**「大規模なデータを分散処理する」**とあればそれが Hadoop です。

大量の伝票Map:手分けして同時に数える1人目数える2人目数える…100人目数えるReduce:合計するMap で手分け → Reduce で集約
大量の伝票を100人に分けて同時に数え(Map)、最後に合計する(Reduce)という2段階で並列に処理する。

NoSQL の4分類:キーバリュー・ドキュメント・列指向・グラフ

NoSQL とは、行と列の表で管理する関係データベース(RDB)以外のデータベースの総称です。大量のデータを多数のサーバで扱いやすくするために、データ構造を単純にしたり柔軟にしたりしています。試験では4つの型の説明文を並べて、1つを選ばせる形で出題されます。

方式 データの持ち方 見分けるキーワード
キーバリュー型 一意に識別するキーと任意の値の組 データと一意に識別できる値を組で保存
ドキュメント型 1件を JSON や XML のドキュメントとして保存。構造は自由に変えられる ドキュメント・JSON/XML・構造が自由
列指向型(ワイドカラム型) キーごとに任意個数の列をもつ行 キーに対して任意個数の列
グラフ型 ノード(点)とリレーションシップ(線)とプロパティ(属性)で関係を表す ノード・リレーション・プロパティ
(参考)関係データベース 行と列の2次元の表。集合論が基礎 表・行と列・集合論

キーバリュー型はコインロッカーのようなものです。鍵の番号(キー)さえ分かれば中身(値)をすぐ取り出せますが、中身が何であるかはロッカーは関知しません。グラフ型は SNS の友達関係のように、「誰と誰がつながっているか」を扱うのが得意です。

キーバリュー型キー1値キー2値キー3値キーで値を取り出すドキュメント型JSON名前住所JSON名前趣味電話1件ごとに構造が自由列指向型キー1列列キー2列列列列キー3列キーごとに任意個数の列グラフ型友達ABCノードとリレーション
NoSQL の4つの型を、データの持ち方の違いで見比べる。

ストリーミング再生のバッファリング時間

ストリーミング再生とは、データをダウンロードしながら同時に再生することです。ダウンロードが再生より遅いと途中で止まるため、再生を始める前にある程度のデータをためておきます。これをバッファリングと呼びます。

考え方は1行で表せます。バッファリング時間 = 全体のダウンロード時間 − 再生時間です。再生が終わる瞬間にちょうどダウンロードも終われば途切れない、という条件から求めます。

計算で一番間違えやすいのは単位です。速度はビット/秒、データ量はバイトで与えられることが多いので、1バイト=8ビットでそろえてから割り算します。

ダウンロード 150秒再生を待つ再生 100秒同時に終わる0秒50秒150秒150秒 − 100秒 = 50秒これがバッファリング時間
ダウンロード150秒・再生100秒なら、最初の50秒は再生を待ってデータをためておく。そうすると、再生とダウンロードが同時に終わる。

試験での問われ方

  • 定義を選ぶ問題:「大量データを整理・統合して蓄積し、意思決定支援に使うもの」→ データウェアハウス。「新たな傾向やパターンを見つけ出す」→ データマイニング。選択肢にはほぼ必ず、データディクショナリやメタデータが並びます。
  • 説明文を選ぶ問題:用語は1つに固定され、選択肢には別の技術の説明が並びます(グループウェア、データ圧縮、データ管理など)。キーワードで消していきます。
  • NoSQL の型:4つの型の説明を並べて、指定された1つを選ばせます。キーワード表で判定します。
  • 計算問題:答えの選択肢に再生時間(100秒)やダウンロード時間(150秒)そのものが入っています。差を取ることを忘れないようにします。
例題 1

音声データのバッファリング時間を求める

符号化速度が 192 k ビット/秒の音声データ 2.4 M バイトを,通信速度が 128 k ビット/秒のネットワークを用いてダウンロードしながら途切れることなく再生するためには,再生開始前のデータのバッファリング時間として最低何秒間が必要か。

ア 50
イ 100
ウ 150
エ 250

出典:平成29年度 秋期 基本情報技術者試験 午前 問31

解き方と答えを見る
  1. データ量の単位をビットにそろえる:2.4 Mバイト × 8 = 19.2 Mビット = 19,200 kビット
  2. 再生にかかる時間を求める:19,200 kビット ÷ 192 kビット/秒 = 100 秒
  3. ダウンロードにかかる時間を求める:19,200 kビット ÷ 128 kビット/秒 = 150 秒
  4. 途切れない条件を確認する:再生開始前のバッファリング時間を t 秒とすると、ダウンロード完了(150 秒後)が再生終了(t + 100 秒後)より遅くてはいけない。よって 150 ≦ t + 100
  5. t を求める:t ≧ 150 − 100 = 50 秒

答え:ア:50 秒(ダウンロード時間 150 秒 − 再生時間 100 秒)

要点(試験直前に読む)

  • データウェアハウス=大量データを「統合・時系列」で蓄積し「意思決定支援」に使う倉庫。
  • データマイニング=蓄積データから統計的手法で「新たな傾向・パターン」を見つけ出す作業。ためる(DWH)と掘る(マイニング)を区別する。
  • Hadoop=「分散ファイルシステム+MapReduce」で大規模データを分散処理する OSS。
  • NoSQL:キーと値の組→キーバリュー型、JSON/XML のドキュメント→ドキュメント型、キーごとに任意個数の列→列指向型、ノード・リレーション・プロパティ→グラフ型。行と列の表は関係データベース。
  • バッファリング時間=ダウンロード時間 − 再生時間。バイト×8でビットに直してから割る。

ひっかけ

  • 「整理・統合して蓄積」「意思決定支援」なのにデータマイニングを選ばせる→「ためる」はウェアハウス、「見つけ出す」はマイニング。
  • データディクショナリ・メタデータを紛れ込ませる→これらは「データの定義・説明」であり、蓄積や分析の仕組みではない。
  • Hadoop の問題に Spark・Kafka・Storm を並べる→「分散ファイルシステム」「MapReduce」があれば Hadoop。インメモリは Spark、メッセージングは Kafka、ストリームは Storm。
  • NoSQL の型で「行と列の2次元の表」を混ぜる→それは関係データベース。グラフ型の「リレーション」と関係データベースの「表同士の関係」も混同しない。
  • バッファリング計算で選択肢に 100 秒(再生時間)や 150 秒(ダウンロード時間)を置く→答えはその差。2.4 Mバイトをビットに直し忘れると数値がずれる。

用語(17)

データウェアハウス Data Warehouse(DWH)
複数の業務システムから集めた大量のデータを整理・統合して時系列で蓄積し、意思決定支援のための分析に使うデータベース。
⚠ データマイニングと混同しやすい。ウェアハウスは「ためる倉庫」、マイニングは「中身から法則を掘り出す作業」。
データマイニング Data Mining
大量のデータから統計学的手法などで、まだ知られていない傾向・パターン・関係を見つけ出すこと。
⚠ データウェアハウスと混同しやすい。「見つけ出す」「新たな知識」とあればマイニング。
データディクショナリ Data Dictionary
データの項目名・型・桁数・意味などの定義情報をまとめて管理するもの。
⚠ メタデータと近い。どちらも「データの定義・説明」であり、蓄積や分析の仕組みではない。
メタデータ Metadata
データそのものではなく、そのデータの形式・作成日・意味などを説明するデータ。
⚠ データディクショナリはメタデータを管理する辞書にあたる。データウェアハウスやマイニングの選択肢と区別する。
データアドミニストレーション Data Administration
組織のデータを資源として捉え、重複をなくしたり一元管理したりする管理活動。
⚠ データウェアハウスは分析用のデータベースそのもの。こちらはデータを管理する「活動」。
ビッグデータ Big Data
量が膨大で種類も多様なため、従来の方法では扱いきれないデータの総称。
Apache Hadoop アパッチ ハドゥープ
分散ファイルシステム(HDFS)と MapReduce により、大規模データを多数のサーバで分散して保存・処理する OSS。
⚠ Spark(インメモリ処理)、Kafka(メッセージング)、Storm(ストリーム処理)と区別する。「分散ファイルシステム+MapReduce」なら Hadoop。
MapReduce マップリデュース
処理を多数のサーバに分けて実行する Map と、その結果を集約する Reduce の2段階で、大量データを並列処理する方式。
HDFS Hadoop Distributed File System
多数のサーバのディスクを1つの大きなファイルシステムとして扱う、Hadoop の分散ファイルシステム。
OSS Open Source Software
ソースコードが公開され、利用・改変・再配布が認められているソフトウェア。
⚠ 「無償であること」は要件ではない。有償で配布される OSS もある。
NoSQL Not only SQL
行と列の表で管理する関係データベース以外のデータベースの総称で、大量のデータを分散して扱いやすい。
⚠ 「行と列の2次元の表・集合論」は関係データベースの説明なので、NoSQL の選択肢ではない。
キーバリューストア Key-Value Store(KVS)
保存したいデータ(値)と、それを一意に識別するキーを組にして保存する NoSQL の方式。
⚠ ドキュメント型は「JSON などのドキュメント」、列指向型は「キーごとに任意個数の列」。「キーと値の組」だけならキーバリュー型。
ドキュメント型データベース Document-oriented Database
1件のデータを JSON や XML などのドキュメントとして保存し、ドキュメントごとに構造を自由に変えられる NoSQL の方式。
⚠ キーバリュー型と区別する。「ドキュメント」「データ構造が自由」がキーワード。
列指向型データベース Wide Column Store(ワイドカラム型)
個々のキーに対して任意個数の列をもつ行データを管理する NoSQL の方式。
⚠ 関係データベースの「行と列の表」と混同しやすい。「キーごとに任意個数の列」がキーワード。
グラフ型データベース Graph Database
データとデータのつながりを、ノード(点)・リレーションシップ(線)・プロパティ(属性)で管理する NoSQL の方式。
⚠ 関係データベースの「表同士の関係性(リレーション)」と混同しやすい。「ノード」が出てきたらグラフ型。
バッファリング Buffering
再生や処理が途切れないように、あらかじめデータを一時的にためておくこと。
符号化速度 ふごうかそくど(ビットレート)
音声や動画を1秒再生するのに必要なデータ量(ビット/秒)。
⚠ 通信速度(1秒にダウンロードできる量)と区別する。符号化速度で割ると再生時間、通信速度で割るとダウンロード時間。

このレッスンの過去問

このレッスンで稽古する