essentiaの特徴

データレイクの構築に最適なソフトウェア

Software Design Summary

  • ファイルベースのデータを
    高速に加工・集計処理

    特にタイムシリーズデータ(ログ)の処理、キー単位の名寄せ処理を得意としています。

  • Linux上で動作する
    コマンドラインで構成され、
    Shell Scriptで記述が可能

    クラスタの起動、停止からデータロード、インメモリデータ処理まで全てをShellで記述・実行が可能です。

  • インメモリ・並列分散処理・
    ストリーミングロード

    インメモリデータベースは、データの処理を行う際、HDDに書き出す必要がなく、かつソースデータをロードしながら、同時に加工処理を実行することで、非構造データやタイムシリーズデータ処理の高速化を実現。

  • Public Cloud
    (AWS, Microsoft Azure)での
    利用を意識した設計思想

    必要な時に環境を構築し、処理を実行、処理が完了し、必要なくなったらインスタンスを落とすことでコストを削減、オンプレミスでの利用も可能です。

  • シンプルな構造、
    高い拡張性

    環境構築やデータ処理の実装において、ソフトウェアを用いたシンプルな構造で、導入期間やコスト、負荷の削減を実現します。

01 技術的優位性 ストリーミングロード

essentiaは元データの形式のままクラウドストレージにアップロードするだけで、アプリケーションがダイレクトに並列分散で読み込み処理を実行します。一般的なデータ処理フローにおいて、必要とされる中間プロセスは一切不要です。

一般的なデータ処理フロー

一般的なデータベースは、圧縮ファイルを解凍→クレンジング→DWHに格納→加工・集計とデータ処理に際して、何段階ものプロセスが必要です。

essentiaによるデータ処理

essentiaは、元データの形式のままクラウドストレージにアップロードするだけで、ダイレクトに並列分散でストリーミングロードし、並列分散でデータの加工・処理・集計を実行します。

02 技術優位性 インメモリ
(ローディングとデータマージ)

一般的なシステムでは①②③の全レコードをデータベースにロードしてから、データ処理を実行しますが、essentiaはデータをロードしながら同時に対象ユーザへの絞り込み処理を実行します。不要なデータは読み込まないため、データロードの時間を大幅に短縮し、同時にデータ処理上のオーバーヘッドを削減することができるのです。
(ローディングMerge・JOIN技術)

Case : コンバージョンユーザの広告接触とWebログ分析データの生成

図は広告配信ログデータ、数百億件分をロードし、コンバージョンしたユーザの広告接触履歴、Webサイト訪問履歴を作成するデータ処理を実行した例です。①でコンバージョンしたユーザの全データをロードした後は、②③のデータ処理のプロセスではコンバージョンしていないユーザのデータは読み飛ばして処理を行います。例え、データ量が幾何級数的に増えて、数千億件になったとしても、ユーザの初回接触からコンバージョンに至るまでのカスタマージャーニーデータを容易に生成することができるのです。

03 技術優位性 並列分散処理
(essentiaクラスター)

essentiaはデータロードとデータ処理の両方のプロセスで並列分散処理を実現しています。マスタはワーカーへのジョブの割り当て、処理完了後のデータのマージ(いわゆるReduce)機能を受け持ちます。各ワーカーは担当のジョブのみを実行し、他のワーカーのジョブには関与しません。並列分散の台数の上限はなく、データ量や処理の頻度、求められる処理速度に応じた柔軟なリソース設計が可能な仕組みになっています。

essentiaクラスタは、Masterノード, Workerノードで構成されています。Masterノードは、クライアントから命令されたJOBをWorkerノードに割り振る機能とファイル出力時のReduce機能を受け持ちます。Workerノードは、Masterから割り振られた処理を実行する機能とインメモリ・データストアの機能を持っています。データの分散配置や再配置処理など、Workerノード間で可能な通信は、Masterノードを介さずに実行され、効率的なネットワークパスを実現しています。

04 技術的優位性
インメモリデータベース

essentiaのデータ処理プロセスイメージ

S3にオリジナルの形式でデータを配置しておくだけで、後はすべてのデータ処理プロセスをessentiaのソフトウェアが実行します。

essentiaのデータ処理詳細(前処理とデータ加工・集計処理)

05 技術的優位性 キーを軸にしたデータの分散

essentiaはデータを各ノードで分散保持することで、1ノードあたりの処理対象レコード数を減らして高速化を実現しています。各ノードはキーを軸にデータを分散しています。

各ノードは自身が担当するデータのみを処理対象にし、他のノードを参照する必要がないため、IOコストが低く抑えられ、データ処理の高速化を実現しています。処理したデータを更に別のキーを定義したデータオブジェクトへインポートし直す場合、キーを軸にしたデータの再配置を実行するため、ノード間のデータ送受信が発生します。

ベンチマーク比較 essentia vs Redshift

現状の課題 データ概要
処理時間の短縮
処理内容の高度化
→特に処理時間の短縮が緊急課題
対象データ:ディスプレイ広告配信ログ
データ期間:1か月間
データサイズ:約9TB(圧縮状態1.55TB)
データ形式:gz圧縮TSV、約4万ファイル
イベント数:約230億レコード
ユニークユーザ(cookie)数:約2億
プラットフォーム:AWS-Tokyo
集計内容

1 全期間で広告No×入札成功/失敗別にユニークユーザ数と入札数を集計
2 全期間で広告出稿枠別にユニークユーザ数と入札数を集計
3 1日毎に広告出稿枠別のユニークユーザ数と入札数を集計
4 全期間でOSとブラウザ別にユニークユーザ数と入札数を集計 *1

*1 OS、ブラウザはUserAgentから抽出しUserAgenet -OS-BWの対応マスターを作成
*2 AWSではS3の読み出しまたはEC2でerrorが発生する場合があるが今回はそれを含んだデータ

ベンチマーク結果 essentia Redshift
使用Node m5.xlarge dc1.8xlarge
集計内容 集計No. time node time node
1 55m 100 1h09m 8
2   100 2h00m 8
3   100 1h25m 8
4   100 1h16m 8
処理時間 55m 6h
データロード時間 24h
AWS使用金額 $22.73 $182.85

処理性能結果

同様の処理を実施し、Redshiftと比較

全工程 30倍高速
集計処理時間 6倍高速

データオブジェクト

essentiaのインメモリデータ処理では、以下の2種類のデータオブジェクトを定義できます。

種類 主な用途・特徴
table キーごとに複数行のデータを保持します。
主に、データをそのまま格納し、後から参照するために使用します。
vector キーごとに単一行のデータを保持します。
キー以外の項目に集計処理が設定でき、インポートするだけで設定した集計処理が行われます。

各オブジェクトには必ず1つのキーが設定されています。同じキーのデータオブジェクトはdatabaseとしてグループ化され、データをインポートした時点でキーでJOINされた状態を形成します。vectorの項目には以下の集計処理が設定できます。集計処理はデータのインポート時点で実行され、インポート完了と同時に集計が完了します。

種類 主な用途・特徴
+FIRST インポートされた最初の値を保持します。
+LAST インポートされた最後の値を保持します。
+ADD インポートされた値を加算します。
+MIN インポートされた値の最小値を保持します。
+MAX インポートされた値の最大値を保持します。
+NOZERO 数値型の場合は0ではなく値を、文字列型の場合は空白ではない値を保持します。
+FIRST、+LAST、+MIN、+MAXと併用します。

essentiaは以下の
2つの方法でご利用頂けます。

処理対象とするデータの種類や機密性、プロジェクトのフェーズ、お客様のデータセキュリティのポリシー等から、適切な方法をお選び下さい。
クラウドサービスでPoCを実施した後、サブスクリプションに環境を移行するなど、ミニマムスタートから本格的なデータ活用まで、
ニーズにあったご利用方法をご提案いたします。

今日からはじめてみませんか?

AURIQの製品・ソリューションの
資料をお配りしています。
お電話でも承ります。お気軽にご相談ください。