新しい IBM Developer JP サイトへようこそ!サイトのデザインが一新され、旧 developerWorks のコンテンツも統合されました。 詳細はこちら

商品注文のストリーミング・データを格納して分析に利用できるようにする

このコード・パターンは Db2 Event Store ラーニング・パスを構成するコンテンツです

概要

このコード・パターンでは、Akka を使用して WebSocket エンドポイントを実装し、データをストリーミングして Db2 Event Store データベース内に取り込む Scala アプリを作成します。データとして使用するのは、小売業のオンライン販売の注文詳細 (CSV 形式) です。Jupyter Notebook で Scala と Brunel を使用して Event Store 内のデータを視覚化します。

説明

ビジネスにおける変化に迅速に対応するためには、現在進行中のイベント駆動型分析と履歴分析に利用できるデータの高速収集が必要になります。このコード・パターンでは軽量で高速の WebSocket クライアントを使用して WebSocket 経由でメッセージを送信し、Akka ツールキットでメッセージ・ストリームを処理し、データを変換してから Event Store ストア内に取り込みます。

Akka HTTP を使用すると、WebSocket エンドポイントを極めて簡単に提供できます。また、データをソースからシンクに移動するには、Akka Streams が強力かつ簡潔な手段となります。ここでは Akka Streams で Alpakka を使用して CSV 形式のテキスト文字列または CSV ファイルに含まれるデータを解析し、Spark SQL の行に変換します。単純な divertTo 関数を使用して、どのメッセージが新しい注文で、どのメッセージが注文のキャンセルなのかを判別します。

EventStoreSink と EventStoreFlow を実装するコードを用意してあります。このコードは最終的に、変換後のデータを Event Store テーブルにプッシュします。データが Event Store に格納された後は、バンドルされた Jupyter Notebook 環境を使用してデータを分析し、視覚化します。

これはラップトップ上で実行できる単純なサンプルですが、スケーリングするよう意図されたツールが組み込まれています。クライアントを作成する目的、他のデータ・ストリームの処理に他の Akka 機能を使用する目的、あるいは Event Store と Jupyter Notebook でデータ・サイエンスの手腕を振るう目的でも、簡単に拡張できます。

このコード・パターンをひと通り完了すると、以下の方法がわかるようになります。

  • Scala と Akka を使用して WebSocket を実装する
  • Alpakka フローを使用して CSV を解析し、Event Store にデータを挿入する
  • Jupyter Notebook と Scala を使用して Event Store を操作する
  • SQL と Brunel 視覚化を使用してデータを分析する

フロー

フロー

  1. Jupyter Notebook を使用してデータベースをセットアップします。
  2. WebSocket を介して CSV データを送信します。
  3. Akka と Alpakka を使用してデータを変換し、変換後のデータを Event Store に取り込みます。
  4. Jupyter Notebook 内で Brunel 視覚化を使用してデータを提示します。

手順

詳細な手順については、README ファイルを参照してください。手順の概要は以下のとおりです。

  1. リポジトリーを複製します。
  2. IBM Db2 Event Store Developer Edition をインストールします。
  3. データベースをセットアップする Jupyter Notebook を実行します。
  4. Scala アプリを実行します。
  5. データをフィードします。
  6. データを視覚化します。

まとめ

このコード・パターンでは、Akka を使用して WebSocket エンドポイントを実装し、データをストリーミングして Db2 Event Store データベース内に取り込む方法を説明しました。このコード・パターンはラーニング・パス: Db2 Event Store シリーズを構成するコンテンツです。このシリーズで引き続き Db2 Event Store の機能を学ぶには、次のコード・チュートリアル「Apache Kafka を使用して IBM Db2 Event Store 内にデータをストリーミングする」に進んでください。