SlideShare a Scribd company logo
株式会社アプレッソ
開発部 開発グループ
第2チーム リーダー
土岐 拓未
2014年4月17日 dstnHUB
自己紹介
• 名前
– 土岐 拓未 (とき たくみ)
• 所属
– 株式会社アプレッソ 開発部
• 開発グループ 第2グループリーダー
• 担当業務
– PIMSYNC、その他新製品開発
• dstn担当
– 連載記事の執筆・管理
• 神尾みかさんのDS自由自在
• DataSpiderデザインパターンβ
• DataSpider Cookbook
• dstn インタビュー
– パワポ絵職人
神尾みかさん
本日のテーマ
DataSpiderはなぜ高速なのか?
Part.1 アーキテクチャ編
Part.2 テクニカル編
1. スクリプトのコンパイラ型実
行
2. PSP&スマートコンパイラによ
る大容量処理高速化
3. 各コンポーネントのパフォー
DataSpiderの高速処理を支える3つの技
術
1. スクリプトのコンパイラ型
実行
Servista 2~
コンパイラ型実行形式
DataSpider 1.x
インタプリタ型実行形式
どのようにスクリプトは実行される
か?
スクリプト作成・保存時
Studioでのスクリプト作成・保
存
XML形式
・設定情報
・位置情報
・フロー設定
・変数設定
など
設定ファイル
(.script)
保存
開く
スクリプトの各種設定情報は「.script」ファイルに保存
設定ファイル
インタプリタ型実行形式
各コンポ―ネントの処理
ループによる繰り返し
Ifアイコンによる条件分
岐
データ変換処理
JavaVM
実行
インタプリ
タによる変
換
インタプリ
タによる変
換
インタプリ
タによる変
換
インタプリ
タによる変
換
実行
実行
実行
インタプリタ
インタプリタ型実行形式の
パフォーマンス上の問題点
1. インタプリタによる変換が
逐次行われる
2. ループ、条件分岐自体も処
理が必要となりコストがか
かる
3. Javaコンパイラ、JVMによる
最適化がされにくい
XML形式
・設定情報
・位置情報
・フロー設定
・変数設定
など
設定ファイル(.script)
Javaソースコー
ド
・メソッド
・変数
・制御
・その他処理
.javaファイル
classファイル
.classファイル
生成 コンパイ
ル
Servista 2~
スクリプト保存時
Javaソースコー
ド
・メソッド
・変数
・制御
・その他処理
….
for
(process_d00000fg3ml1i0i8gmg3mo2igdgf() ; ...
..
if
(evaluate_u80000fg3ml1i0i8gm9vb8megdge()) {
process_oi0000fg3ml1i0i8gm7vls1igdge();
} else if
(evaluate_sk0000fg3ml1i0i8gme1hq00gdgf()) {
….
} ….
}
….
if・forアイコンなどのアイコンはそのままJavaのif文・for
文に変換
手組みのJavaアプリケーションと
同等のパフォーマンス
Servista 2~
コンパイラ型実行形式
classファイル
実行
classファイル JavaVM
コンパイル型実行形式の
パフォーマンス上の長所
1. インタプリタ変換が不要
2. ループ、条件分岐はfor文・if
文になり処理コストが大幅
減少
3. Javaコンパイラ、JVMによる
最適化の恩恵を最大限に享
受できる
DSS 2.0DS 1.5 vs
ループ、分岐処理の処理速度比較データ
100万件のデータを繰り返し・分岐させた合計
値 繰り返し(LOOP) 分岐(IF)
DS1.5 6分7秒 5分16秒
DSS 2.0 0.8秒 0.9秒
繰り返し・分岐処理の処理コストは極限ま
で減少
2. PSP/スマートコンパイラに
よる大容量処理高速化
Parallel Stream Processing(PSP)と
は
メモリ消費を抑えながら大容量デー
タを高速に処理する機構
• 読み取り、変換、書き込みの処理を並列に実行する
→高速な処理が可能
• メモリに保持するのは一定のサイズのデータのみ
→メモリを使い過ぎることなくデータ処理が可能
通常フローの実行イメージ
変換
読み取り
書き込み
中間
データ
中間
データ
処理ごとにす
べてのデータ
をメモリ(※)
に保持
(※)大容量データ処
理がオンの場合は
ファイルに保持
総実行時間はすべての処理
の合計時間となる
PSPフローの実行イメージ
変換
読み取り
書き込み
中間
デー
タ
中間
デー
タ
中間
デー
タ
中間
デー
タ
中間
デー
タ
中間
デー
タ
総実行時間はす
べての処理の合
計時間より短く
なる
一定単位(1000
件)ごとにデー
タを渡し、メモ
リ負荷を軽減
デモで実験!
PSP モニターアダプタ
読み取り・変換・書き込みのデータ処理状況を監視するデモ用アダプタ&Webアプリケー
ション
読み取り~変換間の
中間データ件数
読み取り処理件数
変換処理件数
変換~書き込み間の
中間データ処理件数
書き込み処理件数
デモシナリオ
• 10000件のデータ
– PSPオフ
– PSPオン
• 読み取りが遅い場合
• 変換が遅い場合
• 書き込みが遅い場合
実験結果
• 1000件以上のデータでは並列で処理が実行
されるため総実行時間は短くなる
• 次の処理に必要なデータのみメモリに保持
する(一定量以上のデータを保持しない)た
め、少ないメモリで処理が可能
大容量データの高速・低メモリ負荷
の処理を実現
スマートコンパイラ
DataSpider 3.0以前
PSPスクリプト形式
通常
スクリプ
ト
PSP
スクリプ
ト
「PSPスクリプト」を作り、通常スクリプトから
呼び出す
スクリプト呼び出し
デメリット
• PSPを使うことを意識してスクリプトを作る必要がある
• 別スクリプトになるため、スクリプト内の一覧性に欠ける
Servista 3.1
スマートコンパイラ
メリット
• PSP処理を意識することなく、高速・低メ
モリ負荷のスクリプトを作成可能
• スクリプト内でPSP処理が可能であるた
め、スクリプトの一覧性がアップ
PSP実行可能な処理を
自動的にPSP化!
PSPで実行可能な形式、コンポーネントはヘルプを参照くだ
製品コンポーネントでのパフォーマンスや
PSPを活かすスクリプトの作り方は
Part.2 テクニカル編で!
3. 各コンポーネントのパ
フォーマンス最適化実装
コンポーネント 概要 詳細
XML Framework プリミティブ型で値を扱う
ように実装
高速・低メモリ負荷の処理を
実現
アダプタ全般 リソースプーリングによる
コネクションキャッシュ
コネクションのオープン/ク
ローズ回数を減少
データベースアダプタ 書き込み処理のBatch実行
大量データをまとめて書き込
むことでDB書き込みのパ
フォーマンスを上げる
データベースアダプタ PreparedStatementの使用
SQL実行の処理性能を向上
CSVアダプタ CSV読み取りに最適化した
ファイルI/O処理実装
PushbackReaderの独自実装
Mapper 処理による実行エンジンの
切り替え
複雑な処理、単純な処理でエ
ンジンを切り替えて高速化
・・・
さまざまなコンポーネントで行われているパフォーマンス最適
化実装
ケース1 CSVアダプタ
CSV読み取りに最適化したファイルI/O処理実装
• java.io.PushbackReader
→ 読み取った文字を戻すことができるReader
– 任意のバッファサイズを指定できる
– スレッドセーフにするための同期処理を実装
汎用的なクラスであるため、
CSV読み取りでは不要な処理が多い
• CSV読み取り専用PushbackReader
→ CSV読み取りに特化したシンプルな設計で実
装
– バッファサイズは1のみ
– スレッドセーフである必要がないため、同期処
理は排除
読み取りパフォーマンスが1.3~1.5倍
に
ケース2 Mapper
処理による実行エンジンの切り替え
• マッピング内容によって実行エンジンの切
り替えを行う
読み取り処理 書き込み処理
SimpleInputConverter
ExpressionInputConverte
r
XML2XMLConverter
テーブルモデル型同士で単純な繰り返し、ロ
ジック無し、文字列型のみの場合
テーブルモデル型同士の場合
XML型の場合
可能な限り実行パフォーマンスが高い
実行エンジンを使うことで最適化
さらなる高速化を目指して
今後も改善し続けていきます!
ご静聴ありがとうございました。

More Related Content

PPTX
2015年2月26日 dsthHUB 『オンプレミスとクラウドをシームレスに"つなぐ" 新製品「Thunderbus」の全貌』
PPTX
2015年2月26日 dsthHUB 『DataSpiderインターナル プラガブルアーキテクチャで広がる可能性』
PPTX
dstn交流会_data_spider 3.0最新情報とデモ
PPT
20120822_dstn技術交流会_DataSpider接続先技術動向
PPTX
Data Factoryの勘所・大事なところ
PDF
Amebaにおけるレコメンデーションシステムの紹介
PDF
20170819 ocd-l tthon-pgdev
PDF
2020 年も最高のゲームをつくろう! Game Stack でゲーム開発をしよう! ~ LiveOps とデータ分析編 ~
2015年2月26日 dsthHUB 『オンプレミスとクラウドをシームレスに"つなぐ" 新製品「Thunderbus」の全貌』
2015年2月26日 dsthHUB 『DataSpiderインターナル プラガブルアーキテクチャで広がる可能性』
dstn交流会_data_spider 3.0最新情報とデモ
20120822_dstn技術交流会_DataSpider接続先技術動向
Data Factoryの勘所・大事なところ
Amebaにおけるレコメンデーションシステムの紹介
20170819 ocd-l tthon-pgdev
2020 年も最高のゲームをつくろう! Game Stack でゲーム開発をしよう! ~ LiveOps とデータ分析編 ~

What's hot (20)

PDF
TB / Day規模のゲーム向けデータパイプラインを開発運用する日々
PDF
TREASUREDATAのエコシステムで作るロバストなETLデータ処理基盤の作り方
PDF
2020 年も最高のゲームをつくろう! Game Stack でゲーム開発をしよう! ~ マルチプレイサーバー編 ~
PPTX
PPT Full version: 世界中のゲーム分析をしてきたPlayFabが大進化!一緒に裏側の最新データ探索の仕組みを覗いてみよう
PPTX
Microsoft Build 2021 前夜祭 LT#4
PDF
金融機関でのHive/Presto事例紹介
PDF
Infra as Code Sapppro Casual 札幌の開催趣旨とTest-Kitchenの話
PDF
Preview: 世界中のゲーム分析をしてきたPlayFabが大進化!一緒に裏側の最新データ探索の仕組みを覗いてみよう
PPTX
データ活用を効率化するHadoop WebUIと権限管理改善事例
PDF
おいしいフルマネージドデータベース はじめました
PDF
Sparkを活用したレコメンドエンジンのパフォーマンスチューニング&自動化
PPTX
SINoALICE -シノアリス- Google Cloud Firestoreを用いた観戦機能の実現について
PDF
JAWS-UG三都物語 クラウドとデバイスが連携するアジェンダ
PDF
[Azure Deep Dive] Spark と Azure HDInsight によるビッグ データ分析入門 (2017/03/27)
PDF
情報爆発シンポジウム infoplosion
PDF
Node-REDのフローをバックアップしよう
PPTX
Data Factory V2 新機能徹底活用入門
PPTX
CDH4->5 update苦労話
PDF
Multi Cloud Design Pattern(Beta)
PPTX
[CWT2017]Infrastructure as Codeを活用したF.O.Xのクラウドビッグデータ環境の変化
TB / Day規模のゲーム向けデータパイプラインを開発運用する日々
TREASUREDATAのエコシステムで作るロバストなETLデータ処理基盤の作り方
2020 年も最高のゲームをつくろう! Game Stack でゲーム開発をしよう! ~ マルチプレイサーバー編 ~
PPT Full version: 世界中のゲーム分析をしてきたPlayFabが大進化!一緒に裏側の最新データ探索の仕組みを覗いてみよう
Microsoft Build 2021 前夜祭 LT#4
金融機関でのHive/Presto事例紹介
Infra as Code Sapppro Casual 札幌の開催趣旨とTest-Kitchenの話
Preview: 世界中のゲーム分析をしてきたPlayFabが大進化!一緒に裏側の最新データ探索の仕組みを覗いてみよう
データ活用を効率化するHadoop WebUIと権限管理改善事例
おいしいフルマネージドデータベース はじめました
Sparkを活用したレコメンドエンジンのパフォーマンスチューニング&自動化
SINoALICE -シノアリス- Google Cloud Firestoreを用いた観戦機能の実現について
JAWS-UG三都物語 クラウドとデバイスが連携するアジェンダ
[Azure Deep Dive] Spark と Azure HDInsight によるビッグ データ分析入門 (2017/03/27)
情報爆発シンポジウム infoplosion
Node-REDのフローをバックアップしよう
Data Factory V2 新機能徹底活用入門
CDH4->5 update苦労話
Multi Cloud Design Pattern(Beta)
[CWT2017]Infrastructure as Codeを活用したF.O.Xのクラウドビッグデータ環境の変化
Ad

More from dstn (16)

PPTX
2015年2月26日 dsthHUB LT資料『Trello と Excel による快適ふりかえりライフ』
PPTX
2015年2月26日 dsthHUB LT資料『DataSpider ServistaでBoxに接続してみた』
PPTX
AWSセンターデータリミックスハッカソン - チームEnter発表資料 -
PPTX
AWSセンサーデータリミックスハッカソン - チームAyumi発表資料 -
PDF
AWSセンサーデータリミックスハッカソン - チームAir発表資料 -
PDF
AWSセンサーデータリミックスハッカソン -No1チーム発表資料-
PPTX
2014年4月17日 dstnHub発表スライド ライトニングトークス「開発部開発グループ DataSpiderでブラウザ連携」
PPTX
2014年4月17日 dstnHub発表スライド ライトニングトークス「開発部開発グループ OAuth2.0 認証を実現してみた」
PPTX
2014年4月17日 dstnHub発表スライド ライトニングトークス「開発部QAグループ 製品パッチ」
PPTX
20131030 dstnハッカソン 少子化対策プロジェクト
PPTX
20131030 dstnハッカソン - ワークショップ
PPTX
20120822_dstn技術交流会_すぐに使えるsdkアダプタ開発
PPTX
20120822_dstn技術交流会_仮想化について
PPTX
20120822_dstn技術交流会_dstnのご紹介と最新技術情報
PPTX
dstn交流会_DataSpider のソーシャルとの融合、手組との融合
PPTX
dstn交流会_bpm、クラウド連携紹介
2015年2月26日 dsthHUB LT資料『Trello と Excel による快適ふりかえりライフ』
2015年2月26日 dsthHUB LT資料『DataSpider ServistaでBoxに接続してみた』
AWSセンターデータリミックスハッカソン - チームEnter発表資料 -
AWSセンサーデータリミックスハッカソン - チームAyumi発表資料 -
AWSセンサーデータリミックスハッカソン - チームAir発表資料 -
AWSセンサーデータリミックスハッカソン -No1チーム発表資料-
2014年4月17日 dstnHub発表スライド ライトニングトークス「開発部開発グループ DataSpiderでブラウザ連携」
2014年4月17日 dstnHub発表スライド ライトニングトークス「開発部開発グループ OAuth2.0 認証を実現してみた」
2014年4月17日 dstnHub発表スライド ライトニングトークス「開発部QAグループ 製品パッチ」
20131030 dstnハッカソン 少子化対策プロジェクト
20131030 dstnハッカソン - ワークショップ
20120822_dstn技術交流会_すぐに使えるsdkアダプタ開発
20120822_dstn技術交流会_仮想化について
20120822_dstn技術交流会_dstnのご紹介と最新技術情報
dstn交流会_DataSpider のソーシャルとの融合、手組との融合
dstn交流会_bpm、クラウド連携紹介
Ad

2014年4月17日 dstnHub発表スライド「dataspiderインターナル:アーキテクチャ編」