クリーム色の背景、色付き表示、高コントラスト、大きな文字のほうが読みやすいですか?配色と文字を選ぶと、すべてのページに一度で反映されます。

無料レッスン

バッチかリアルタイムか(ウェアハウス、ストリーム)

このレッスンのあとで: データをウェアハウスに入れるときと、ストリームで流すときを見分けることができる。

45分のレッスンコマンドなし

明日でよいか、今すぐか

大阪の物流会社では、冷蔵トラックで食品を運んでいます。

営業所長は、月末に「先月の配送件数」を知りたがります。明日の朝に分かれば十分です。

一方で、トラックの荷台の温度が上がったら、今すぐ運転手に知らせなければなりません。同じ会社のデータでも、届け方が二つ必要です。

このレッスンのゴール

メモ

データをウェアハウスに入れるときと、ストリームで流すときを見分けることができる。

キーワード

ことばいみれい
データウェアハウス分析のために、過去のデータを集めて保存する場所です。
バッチ処理たまったデータを、決まった時間にまとめて処理することです。
ストリーム届いたデータを一件ずつ、すぐに処理する流れです。
イベント一回の出来事を表す、一件のデータです。温度 9度
遅延出来事から、それが分かるまでの時間です。

学生が入力するセルは、このプレビューでは空白です。

ウェアハウスは、過去について答えます

データウェアハウスには、会社のいろいろなシステムのデータが集まります。多くの場合、毎晩のバッチ処理で、その日の分がまとめて入ります。

だから「先月は何件か」「去年と比べてどうか」のような、過去についての質問に向いています。

答えは、SQLで聞きます。データは前の晩までのものなので、半日ほどの遅れがあります。

ウェアハウスに聞く

コード: sql
-- 毎晩ウェアハウスに入る、配送の記録です。
-- 月ごとの配送件数を出します。
SELECT month, SUM(deliveries) AS total
FROM monthly_deliveries
GROUP BY month
ORDER BY month;

-- 3行の month を branch に変えて、営業所ごとの件数を出しましょう。

ストリームは、今すぐ動きます

トラックの温度計は、数十秒ごとに温度を送ってきます。この一件一件がイベントです。

ストリームでは、イベントが届いた瞬間に調べます。温度が8度を超えたら、その場で運転手に警告を送ります。

明日の朝に分かっても、食品はもう傷んでいます。待てない質問には、ストリームを使います。

温度を一件ずつ調べる

コード: python
# 冷蔵トラックから、温度が一件ずつ届きます。
readings = [
    {"truck": "T-01", "temp": 4},
    {"truck": "T-02", "temp": 6},
    {"truck": "T-01", "temp": 9},
    {"truck": "T-03", "temp": 5},
    {"truck": "T-02", "temp": 10},
]
limit = 8

# 届いた順に、一件ずつすぐに調べます。
for r in readings:
    print(r["truck"], r["temp"], "度")
    if r["temp"] > limit:
        print("  警告: 運転手に連絡します", r["truck"])

# limit を 5 に変えて、警告がどう増えるか見ましょう。

よくある間違い

注意

何でもリアルタイムにするほうがよい、と考える人が多いです。でもストリームは、作るのも動かし続けるのも費用がかかります。だれかが今すぐ動く必要があるときだけ、ストリームにします。それ以外は、夜のバッチで十分です。

どちらにするか決める

質問すぐに動く必要行き先
先月の営業所別の配送件数ないウェアハウス
荷台の温度が上がったあるストリーム
去年の同じ月との比較ないウェアハウス
トラックが道路で止まったままあるストリーム

学生が入力するセルは、このプレビューでは空白です。

授業で使いますか?このモジュールを学生に割り当てると、教員用ガイド、自動採点つきの課題、学生ごとのラボを使えます。