SlideShare a Scribd company logo
1 of 37
Django/Celeyを用いた 
データ分析Webアプリケーションにおける 
非同期処理の設計と実装 
永安悟史 
pgcon14j 
12/5/2014
Who Am I?
Who Am I? 
• Database Engineer 
• Data Center Engineer 
• ITSM Specialist 
• Data Steward 
• System Architect 
• Co-founder 
• CTO
Agenda 
• Background & Motivation 
• Django 
• Async Processing in Django 
• Async Processing with Django/Celery 
• Design and Implementation 
for the Analytics App 
• Wrap-up
Background & Motivation
バックグラウンド 
• ヘルスケアデータベース 
– レセプトと検診データ 
– データベースサイズは100GB程度 
– 1テーブル数千万~1億レコード 
• 分析用のデータ抽出・集計のために、半定型な 
クエリを投げるようになってきた 
– 条件を変えて何度も繰り返し投げる 
– これまではエンジニアがSQLのテンプレを都度書き換 
えて作業 
– エンドユーザも検索できるようにしたい
モチベーションと要求事項 
• 半定型の集計クエリ(レポーティング) 
– 診断名、医薬品名、その他抽出条件が都度変わる 
• Webインターフェースを提供する必要性 
– 非技術者が使えるように 
• クエリの実行時間は「Webとしては」長い 
– 数十秒から長くて10分程度 
• スマートなWebインターフェースを提供したい 
– ブロッキングやタイムアウトをさせない 
– 開発期間(着手~プロトデモ)は実質的に1週間程度
Django
Django
About Django 
• PythonのWebフレームワーク 
– https://www.djangoproject.com/ 
• PythonにおけるRails的な位置付け(らしい) 
– 全部入りのフレームワーク 
• MTV (Model, Template, View) モデル 
– Template/ViewはMVCにおけるView/Controller 
• 組み込みO/Rマッパー入り 
– その他、SQLAlchemyも使える
Django Architecture 
出典:Djangoチュートリアル(前編) :CodeZine http://codezine.jp/article/detail/4065?p=2
Why Django? 
• 別件で使ったことがあった( 同じチームで) 
• 最小限の手間で、そこそこのものが作れる 
• 細かいところにそんなに拘らない 
• 普段、Webアプリ作らないので詳しくない 
• データ分析系なので、Pythonスキルを獲得・維持 
したい
Platforms and Frameworks 
• Windows 7 & Linux 
• Apache 
• Django 
• PostgreSQL 
• psycopg2 
• Twitter Bootstrap
Async Processing in Django
Long running queries in Django 
• クエリの実行時間は「Webとしては」長い 
– 数十秒から長くて10分程度 
• 実行時間を短縮させる必要性はさほどない 
– パフォーマンス改善における費用対効果の問題 
• スマートなWebインターフェースを提供したい 
– ブロッキングやタイムアウトをさせない 
• あまり大きなアーキテクチャにはしたくない 
– 運用性、保守性、属人性を考慮する
Async processing in Django 
https://www.djangopackages.com/grids/g/workers-queues-tasks/ 
As of Sep/21/2014
Development Status 
• Production/Stable 
• Beta 
• Beta 
• n/a 
• Beta 
• Alpha 
• Unknown 
• Unknown 
• Beta 
• Alpha 
As of Sep/21/2014 
So, which one should I choose? 
Lots of options, but no choice.
Djangoにおける非同期処理 
• django-tasks (623,000) 
– https://code.google.com/p/django-tasks/ 
• django-async (185,000) 
– https://pypi.python.org/pypi/django-async/ 
• django-rq (172,000) 
– http://python-rq.org/patterns/django/ 
• Celery (240,000) 
– http://www.celeryproject.org/
Async Processing with 
Django/Celery
UI/UX We Need 
• 一般的なWebUI 
– 検索条件を入力したら非同期処理を飛ばす 
• クエリを実行している間はspinnerを回す 
– バックグラウンドで実行 
• クエリが終わったら結果を表示
Celery 
• Distributed Task Queue 
• Real-time & Scheduled task 
• Simple & Easy to implement 
www.celeryproject.org
Celery Components 
• Client 
• Broker 
• Backend 
• Worker 
• Task 
Client 
Broker 
Backend 
Worker Worker
Supported Components
Celery Tasks 
• Pythonの関数として作成 
– 任意の引数、戻り値の定義が可能 
• DecolatorでCeleryのタスクとして定義
Celery Metadata 
• BackendとBrokerのデータ
Design and Implementation 
for the Analytics App
System Architecture 
Apache 
Django 
Celery 
PostgreSQL 
(Broker/Backend) 
PostgreSQL 
(Healthcare DB) 
1 Core, 1GB RAM 
25GB SAN DISK 
4 Core, 16GB RAM 
25+100GB SAN DISK 
Internet
From Query Templates To 
Celery Tasks 
• 条件に応じてSQLテンプレートからクエリを生成 
– テンプレートファイルを読み込み 
– 独自のプリプロセス処理(ifdef & endif) 
– プレースホルダにパラメータをバインド 
– O/Rマッパーは使わずpsycopg2を直叩き 
• Djangoのテンプレート+独自テンプレート 
– データ構造がModelに綺麗に当てはまらない 
– テンプレートを読み込んでプレースホルダを置き換え 
• 最後にCeleryのキューに投入する
Bind Parameters and Macros 
SELECT "連番" 
FROM "rez_iyaku" 
WHERE "薬剤コード" IN ( :DRUGCODE ) 
-- #ifdef EXCLUDE_DRUGCODE 
AND "薬剤コード" NOT IN ( :EXCLUDE_DRUGCODE ) 
-- #endif EXCLUDE_DRUGCODE 
SELECT "連番" 
FROM "rez_iyaku" 
WHERE "薬剤コード" IN ( 123456, 234567 ) 
/* 
AND "薬剤コード" NOT IN ( :EXCLUDE_DRUGCODE ) 
*/
From Query Templates To 
Celery Tasks 
Query 
Templates 
実行するクエリの元となるテンプレート 
(1クエリにテーブル6、WITH句6、約100行) 
Bind 
Parameters 
プレースホルダに対して 
入力条件である変数をバインド 
Preprocess 
Macros 
検索の条件に応じて 
ifdefマクロを 
コメントアウト処理 
Celery Tasks 
Celeryのタスク 
としてキューに 
投入
Internal Sequence 
Template View 
QueryBuilder QueryRunner 
Celery 
Broker Backend Worker 
Submit 
Polling 
Result 
Executing 
App Moudle 
Django
Processing a Task within 
Backend 
[2014-11-24 22:11:26,330: INFO/MainProcess] Received task: 
webui.QueryRunner.runQuery[1b5b8fd2-9296-4a25-9e98-f002b2068fdd] 
[2014-11-24 22:11:26,330: DEBUG/MainProcess] TaskPool: Apply <function 
_fast_trace_task at 0x2267938> (args:('webui.QueryRunner.runQuery', 
'1b5b8fd2-9296-4a25-9e98-f002b2068fdd', (...) 
[2014-11-24 22:11:26,333: DEBUG/MainProcess] Task accepted: 
webui.QueryRunner.runQuery[1b5b8fd2-9296-4a25-9e98-f002b2068fdd] 
pid:10450 
[2014-11-24 22:18:35,504: INFO/MainProcess] Task 
webui.QueryRunner.runQuery[1b5b8fd2-9296-4a25-9e98-f002b2068fdd] 
succeeded in 429.172908468s: {‘CCC_2_60_69_2012_REZ': '-', 
‘CCC_2_30_39_2010_ID': '-', ‘AAA_2_20_29_2012_ID': '172', 
‘AAA_1_30_39_2013_REZ': '324',...
Wrap-up
Wrap-up 
• Ad-hoc系で時間のかかる半定型クエリの実行を 
Webシステムとして実現 
• Django/Celeryを使って、DBAが実質2週間程 
度で開発(Djangoで1週間、Celeryで1週間)
感想 
• Djangoはデータ分析アプリに向いている 
– Web的なパフォーマンスを求められない 
– 全部入りでアプリの開発は比較的容易 
• Celeryは非同期処理に向いている 
– 特に問題なく動作している 
– 但し、Windowsでの動作は怪しい
And currently working on... 
1 min 50 sec ⇒ 0.2 sec
Thank you.

More Related Content

What's hot

PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)
PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)
PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)Preferred Networks
 
モノタロウの1900万商品を検索する Elasticsearch構築運用事例(2022-10-26 第50回Elasticsearch 勉強会発表資料)
モノタロウの1900万商品を検索する Elasticsearch構築運用事例(2022-10-26 第50回Elasticsearch 勉強会発表資料)モノタロウの1900万商品を検索する Elasticsearch構築運用事例(2022-10-26 第50回Elasticsearch 勉強会発表資料)
モノタロウの1900万商品を検索する Elasticsearch構築運用事例(2022-10-26 第50回Elasticsearch 勉強会発表資料)株式会社MonotaRO Tech Team
 
SSII2022 [OS3-02] Federated Learningの基礎と応用
SSII2022 [OS3-02] Federated Learningの基礎と応用SSII2022 [OS3-02] Federated Learningの基礎と応用
SSII2022 [OS3-02] Federated Learningの基礎と応用SSII
 
運用してわかったLookerの本質的メリット : Data Engineering Study #8
運用してわかったLookerの本質的メリット : Data Engineering Study #8運用してわかったLookerの本質的メリット : Data Engineering Study #8
運用してわかったLookerの本質的メリット : Data Engineering Study #8Masatoshi Abe
 
第8回Language and Robotics研究会20221010_AkiraTaniguchi
第8回Language and Robotics研究会20221010_AkiraTaniguchi第8回Language and Robotics研究会20221010_AkiraTaniguchi
第8回Language and Robotics研究会20221010_AkiraTaniguchiAkira Taniguchi
 
Graph Neural Networks
Graph Neural NetworksGraph Neural Networks
Graph Neural Networkstm1966
 
SSII2021 [SS1] Transformer x Computer Visionの 実活用可能性と展望 〜 TransformerのCompute...
SSII2021 [SS1] Transformer x Computer Visionの 実活用可能性と展望 〜 TransformerのCompute...SSII2021 [SS1] Transformer x Computer Visionの 実活用可能性と展望 〜 TransformerのCompute...
SSII2021 [SS1] Transformer x Computer Visionの 実活用可能性と展望 〜 TransformerのCompute...SSII
 
【メタサーベイ】基盤モデル / Foundation Models
【メタサーベイ】基盤モデル / Foundation Models【メタサーベイ】基盤モデル / Foundation Models
【メタサーベイ】基盤モデル / Foundation Modelscvpaper. challenge
 
20160417dlibによる顔器官検出
20160417dlibによる顔器官検出20160417dlibによる顔器官検出
20160417dlibによる顔器官検出Takuya Minagawa
 
backbone としての timm 入門
backbone としての timm 入門backbone としての timm 入門
backbone としての timm 入門Takuji Tahara
 
グラフデータ分析 入門編
グラフデータ分析 入門編グラフデータ分析 入門編
グラフデータ分析 入門編順也 山口
 
[DL輪読会]When Does Label Smoothing Help?
[DL輪読会]When Does Label Smoothing Help?[DL輪読会]When Does Label Smoothing Help?
[DL輪読会]When Does Label Smoothing Help?Deep Learning JP
 
[DL輪読会]SlowFast Networks for Video Recognition
[DL輪読会]SlowFast Networks for Video Recognition[DL輪読会]SlowFast Networks for Video Recognition
[DL輪読会]SlowFast Networks for Video RecognitionDeep Learning JP
 
【DL輪読会】DreamBooth: Fine Tuning Text-to-Image Diffusion Models for Subject-Dri...
【DL輪読会】DreamBooth: Fine Tuning Text-to-Image Diffusion Models for Subject-Dri...【DL輪読会】DreamBooth: Fine Tuning Text-to-Image Diffusion Models for Subject-Dri...
【DL輪読会】DreamBooth: Fine Tuning Text-to-Image Diffusion Models for Subject-Dri...Deep Learning JP
 
PythonによるCVアルゴリズム実装
PythonによるCVアルゴリズム実装PythonによるCVアルゴリズム実装
PythonによるCVアルゴリズム実装Hirokatsu Kataoka
 
3次元レジストレーションの基礎とOpen3Dを用いた3次元点群処理
3次元レジストレーションの基礎とOpen3Dを用いた3次元点群処理3次元レジストレーションの基礎とOpen3Dを用いた3次元点群処理
3次元レジストレーションの基礎とOpen3Dを用いた3次元点群処理Toru Tamaki
 
潜在ディリクレ配分法
潜在ディリクレ配分法潜在ディリクレ配分法
潜在ディリクレ配分法y-uti
 
Automatic Mixed Precision の紹介
Automatic Mixed Precision の紹介Automatic Mixed Precision の紹介
Automatic Mixed Precision の紹介Kuninobu SaSaki
 
Deep Learningによる画像認識革命 ー歴史・最新理論から実践応用までー
Deep Learningによる画像認識革命 ー歴史・最新理論から実践応用までーDeep Learningによる画像認識革命 ー歴史・最新理論から実践応用までー
Deep Learningによる画像認識革命 ー歴史・最新理論から実践応用までーnlab_utokyo
 
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLiveDXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLiveTokoroten Nakayama
 

What's hot (20)

PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)
PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)
PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)
 
モノタロウの1900万商品を検索する Elasticsearch構築運用事例(2022-10-26 第50回Elasticsearch 勉強会発表資料)
モノタロウの1900万商品を検索する Elasticsearch構築運用事例(2022-10-26 第50回Elasticsearch 勉強会発表資料)モノタロウの1900万商品を検索する Elasticsearch構築運用事例(2022-10-26 第50回Elasticsearch 勉強会発表資料)
モノタロウの1900万商品を検索する Elasticsearch構築運用事例(2022-10-26 第50回Elasticsearch 勉強会発表資料)
 
SSII2022 [OS3-02] Federated Learningの基礎と応用
SSII2022 [OS3-02] Federated Learningの基礎と応用SSII2022 [OS3-02] Federated Learningの基礎と応用
SSII2022 [OS3-02] Federated Learningの基礎と応用
 
運用してわかったLookerの本質的メリット : Data Engineering Study #8
運用してわかったLookerの本質的メリット : Data Engineering Study #8運用してわかったLookerの本質的メリット : Data Engineering Study #8
運用してわかったLookerの本質的メリット : Data Engineering Study #8
 
第8回Language and Robotics研究会20221010_AkiraTaniguchi
第8回Language and Robotics研究会20221010_AkiraTaniguchi第8回Language and Robotics研究会20221010_AkiraTaniguchi
第8回Language and Robotics研究会20221010_AkiraTaniguchi
 
Graph Neural Networks
Graph Neural NetworksGraph Neural Networks
Graph Neural Networks
 
SSII2021 [SS1] Transformer x Computer Visionの 実活用可能性と展望 〜 TransformerのCompute...
SSII2021 [SS1] Transformer x Computer Visionの 実活用可能性と展望 〜 TransformerのCompute...SSII2021 [SS1] Transformer x Computer Visionの 実活用可能性と展望 〜 TransformerのCompute...
SSII2021 [SS1] Transformer x Computer Visionの 実活用可能性と展望 〜 TransformerのCompute...
 
【メタサーベイ】基盤モデル / Foundation Models
【メタサーベイ】基盤モデル / Foundation Models【メタサーベイ】基盤モデル / Foundation Models
【メタサーベイ】基盤モデル / Foundation Models
 
20160417dlibによる顔器官検出
20160417dlibによる顔器官検出20160417dlibによる顔器官検出
20160417dlibによる顔器官検出
 
backbone としての timm 入門
backbone としての timm 入門backbone としての timm 入門
backbone としての timm 入門
 
グラフデータ分析 入門編
グラフデータ分析 入門編グラフデータ分析 入門編
グラフデータ分析 入門編
 
[DL輪読会]When Does Label Smoothing Help?
[DL輪読会]When Does Label Smoothing Help?[DL輪読会]When Does Label Smoothing Help?
[DL輪読会]When Does Label Smoothing Help?
 
[DL輪読会]SlowFast Networks for Video Recognition
[DL輪読会]SlowFast Networks for Video Recognition[DL輪読会]SlowFast Networks for Video Recognition
[DL輪読会]SlowFast Networks for Video Recognition
 
【DL輪読会】DreamBooth: Fine Tuning Text-to-Image Diffusion Models for Subject-Dri...
【DL輪読会】DreamBooth: Fine Tuning Text-to-Image Diffusion Models for Subject-Dri...【DL輪読会】DreamBooth: Fine Tuning Text-to-Image Diffusion Models for Subject-Dri...
【DL輪読会】DreamBooth: Fine Tuning Text-to-Image Diffusion Models for Subject-Dri...
 
PythonによるCVアルゴリズム実装
PythonによるCVアルゴリズム実装PythonによるCVアルゴリズム実装
PythonによるCVアルゴリズム実装
 
3次元レジストレーションの基礎とOpen3Dを用いた3次元点群処理
3次元レジストレーションの基礎とOpen3Dを用いた3次元点群処理3次元レジストレーションの基礎とOpen3Dを用いた3次元点群処理
3次元レジストレーションの基礎とOpen3Dを用いた3次元点群処理
 
潜在ディリクレ配分法
潜在ディリクレ配分法潜在ディリクレ配分法
潜在ディリクレ配分法
 
Automatic Mixed Precision の紹介
Automatic Mixed Precision の紹介Automatic Mixed Precision の紹介
Automatic Mixed Precision の紹介
 
Deep Learningによる画像認識革命 ー歴史・最新理論から実践応用までー
Deep Learningによる画像認識革命 ー歴史・最新理論から実践応用までーDeep Learningによる画像認識革命 ー歴史・最新理論から実践応用までー
Deep Learningによる画像認識革命 ー歴史・最新理論から実践応用までー
 
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLiveDXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
 

Viewers also liked

Pythonによるwebアプリケーション入門 - Django編-
Pythonによるwebアプリケーション入門 - Django編- Pythonによるwebアプリケーション入門 - Django編-
Pythonによるwebアプリケーション入門 - Django編- Hironori Sekine
 
Python東海Vol.5 IPythonをマスターしよう
Python東海Vol.5 IPythonをマスターしようPython東海Vol.5 IPythonをマスターしよう
Python東海Vol.5 IPythonをマスターしようHiroshi Funai
 
「Python言語」はじめの一歩 / First step of Python
「Python言語」はじめの一歩 / First step of Python「Python言語」はじめの一歩 / First step of Python
「Python言語」はじめの一歩 / First step of PythonTakanori Suzuki
 
10分でわかるPythonの開発環境
10分でわかるPythonの開発環境10分でわかるPythonの開発環境
10分でわかるPythonの開発環境Hisao Soyama
 
Webフレームワークパネル(Django) at PyConJP 2012
Webフレームワークパネル(Django) at PyConJP 2012Webフレームワークパネル(Django) at PyConJP 2012
Webフレームワークパネル(Django) at PyConJP 2012makoto tsuyuki
 
Djangoフレームワークの紹介 OSC2015北海道
Djangoフレームワークの紹介 OSC2015北海道Djangoフレームワークの紹介 OSC2015北海道
Djangoフレームワークの紹介 OSC2015北海道Shinya Okano
 
Pythonによる非同期プログラミング入門
Pythonによる非同期プログラミング入門Pythonによる非同期プログラミング入門
Pythonによる非同期プログラミング入門Hironori Sekine
 
Djangoアプリの実践的設計手法
Djangoアプリの実践的設計手法Djangoアプリの実践的設計手法
Djangoアプリの実践的設計手法Ian Lewis
 
Pythonで始めるWebアプリケーション開発
Pythonで始めるWebアプリケーション開発Pythonで始めるWebアプリケーション開発
Pythonで始めるWebアプリケーション開発Takahiro Kubo
 
python-twitterを用いたTwitterデータ収集
python-twitterを用いたTwitterデータ収集python-twitterを用いたTwitterデータ収集
python-twitterを用いたTwitterデータ収集Hikaru Takemura
 
RとPythonによるデータ解析入門
RとPythonによるデータ解析入門RとPythonによるデータ解析入門
RとPythonによるデータ解析入門Atsushi Hayakawa
 
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識Katsuhiro Morishita
 
野球Hack!~Pythonを用いたデータ分析と可視化 #pyconjp
野球Hack!~Pythonを用いたデータ分析と可視化 #pyconjp野球Hack!~Pythonを用いたデータ分析と可視化 #pyconjp
野球Hack!~Pythonを用いたデータ分析と可視化 #pyconjpShinichi Nakagawa
 
PythonによるWebスクレイピング入門
PythonによるWebスクレイピング入門PythonによるWebスクレイピング入門
PythonによるWebスクレイピング入門Hironori Sekine
 

Viewers also liked (20)

Pythonによるwebアプリケーション入門 - Django編-
Pythonによるwebアプリケーション入門 - Django編- Pythonによるwebアプリケーション入門 - Django編-
Pythonによるwebアプリケーション入門 - Django編-
 
[WIP] pgDay Asia 2016
[WIP] pgDay Asia 2016[WIP] pgDay Asia 2016
[WIP] pgDay Asia 2016
 
Djangoのススメ
DjangoのススメDjangoのススメ
Djangoのススメ
 
Python東海Vol.5 IPythonをマスターしよう
Python東海Vol.5 IPythonをマスターしようPython東海Vol.5 IPythonをマスターしよう
Python東海Vol.5 IPythonをマスターしよう
 
「Python言語」はじめの一歩 / First step of Python
「Python言語」はじめの一歩 / First step of Python「Python言語」はじめの一歩 / First step of Python
「Python言語」はじめの一歩 / First step of Python
 
10分でわかるPythonの開発環境
10分でわかるPythonの開発環境10分でわかるPythonの開発環境
10分でわかるPythonの開発環境
 
Webフレームワークパネル(Django) at PyConJP 2012
Webフレームワークパネル(Django) at PyConJP 2012Webフレームワークパネル(Django) at PyConJP 2012
Webフレームワークパネル(Django) at PyConJP 2012
 
Djangoフレームワークの紹介 OSC2015北海道
Djangoフレームワークの紹介 OSC2015北海道Djangoフレームワークの紹介 OSC2015北海道
Djangoフレームワークの紹介 OSC2015北海道
 
Django learning Part2
Django learning Part2Django learning Part2
Django learning Part2
 
Django 1.9
Django 1.9Django 1.9
Django 1.9
 
Pythonによる非同期プログラミング入門
Pythonによる非同期プログラミング入門Pythonによる非同期プログラミング入門
Pythonによる非同期プログラミング入門
 
Djangoアプリの実践的設計手法
Djangoアプリの実践的設計手法Djangoアプリの実践的設計手法
Djangoアプリの実践的設計手法
 
Pythonで始めるWebアプリケーション開発
Pythonで始めるWebアプリケーション開発Pythonで始めるWebアプリケーション開発
Pythonで始めるWebアプリケーション開発
 
python-twitterを用いたTwitterデータ収集
python-twitterを用いたTwitterデータ収集python-twitterを用いたTwitterデータ収集
python-twitterを用いたTwitterデータ収集
 
Pythonで簡単ネットワーク分析
Pythonで簡単ネットワーク分析Pythonで簡単ネットワーク分析
Pythonで簡単ネットワーク分析
 
Gensim
GensimGensim
Gensim
 
RとPythonによるデータ解析入門
RとPythonによるデータ解析入門RとPythonによるデータ解析入門
RとPythonによるデータ解析入門
 
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
 
野球Hack!~Pythonを用いたデータ分析と可視化 #pyconjp
野球Hack!~Pythonを用いたデータ分析と可視化 #pyconjp野球Hack!~Pythonを用いたデータ分析と可視化 #pyconjp
野球Hack!~Pythonを用いたデータ分析と可視化 #pyconjp
 
PythonによるWebスクレイピング入門
PythonによるWebスクレイピング入門PythonによるWebスクレイピング入門
PythonによるWebスクレイピング入門
 

Similar to Django/Celeyを用いたデータ分析Webアプリケーションにおける非同期処理の設計と実装

企業におけるSpring@日本springユーザー会20090624
企業におけるSpring@日本springユーザー会20090624企業におけるSpring@日本springユーザー会20090624
企業におけるSpring@日本springユーザー会20090624Yusuke Suzuki
 
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とEmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とToru Takahashi
 
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とEmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とToru Takahashi
 
アドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニングアドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニングYosuke Mizutani
 
ARMテンプレートでサーバーレスに挑む!
ARMテンプレートでサーバーレスに挑む!ARMテンプレートでサーバーレスに挑む!
ARMテンプレートでサーバーレスに挑む!Kazumi IWANAGA
 
利用者主体で行う分析のための分析基盤
利用者主体で行う分析のための分析基盤利用者主体で行う分析のための分析基盤
利用者主体で行う分析のための分析基盤Sotaro Kimura
 
Capistrano in practice - WebCareer
Capistrano in practice - WebCareerCapistrano in practice - WebCareer
Capistrano in practice - WebCareerKyosuke MOROHASHI
 
Slurmのジョブスケジューリングと実装
Slurmのジョブスケジューリングと実装Slurmのジョブスケジューリングと実装
Slurmのジョブスケジューリングと実装Ryuichi Sakamoto
 
ソフトウェア工学2023 04 開発プロセスモデル
ソフトウェア工学2023 04 開発プロセスモデルソフトウェア工学2023 04 開発プロセスモデル
ソフトウェア工学2023 04 開発プロセスモデルToru Tamaki
 
Azure でサーバーレス、 Infrastructure as Code どうしてますか?
Azure でサーバーレス、 Infrastructure as Code どうしてますか?Azure でサーバーレス、 Infrastructure as Code どうしてますか?
Azure でサーバーレス、 Infrastructure as Code どうしてますか?Kazumi IWANAGA
 
Play framework 2.0のおすすめと1.2からのアップグレード
Play framework 2.0のおすすめと1.2からのアップグレードPlay framework 2.0のおすすめと1.2からのアップグレード
Play framework 2.0のおすすめと1.2からのアップグレードKazuhiro Hara
 
PGXのレスポンスとリソース消費
PGXのレスポンスとリソース消費PGXのレスポンスとリソース消費
PGXのレスポンスとリソース消費Tatsumi Akinori
 
Azure API Management 俺的マニュアル
Azure API Management 俺的マニュアルAzure API Management 俺的マニュアル
Azure API Management 俺的マニュアル貴志 上坂
 
Deep Learning Lab - Microsoft Machine Learning meetup 2018/06/27 - 推論編
Deep Learning Lab - Microsoft Machine Learning meetup 2018/06/27 - 推論編Deep Learning Lab - Microsoft Machine Learning meetup 2018/06/27 - 推論編
Deep Learning Lab - Microsoft Machine Learning meetup 2018/06/27 - 推論編Daiyu Hatakeyama
 
20120421中国gtug
20120421中国gtug20120421中国gtug
20120421中国gtugYusuke Sato
 
ElasticSearch勉強会 第6回
ElasticSearch勉強会 第6回ElasticSearch勉強会 第6回
ElasticSearch勉強会 第6回Naoyuki Yamada
 
R超入門機械学習をはじめよう
R超入門機械学習をはじめようR超入門機械学習をはじめよう
R超入門機械学習をはじめよう幹雄 小川
 
Qiita x Microsoft - 機械学習セミナー Microsoft AI Platform
Qiita x Microsoft - 機械学習セミナー Microsoft AI PlatformQiita x Microsoft - 機械学習セミナー Microsoft AI Platform
Qiita x Microsoft - 機械学習セミナー Microsoft AI PlatformDaiyu Hatakeyama
 

Similar to Django/Celeyを用いたデータ分析Webアプリケーションにおける非同期処理の設計と実装 (20)

企業におけるSpring@日本springユーザー会20090624
企業におけるSpring@日本springユーザー会20090624企業におけるSpring@日本springユーザー会20090624
企業におけるSpring@日本springユーザー会20090624
 
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とEmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤と
 
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とEmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤と
 
アドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニングアドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニング
 
ARMテンプレートでサーバーレスに挑む!
ARMテンプレートでサーバーレスに挑む!ARMテンプレートでサーバーレスに挑む!
ARMテンプレートでサーバーレスに挑む!
 
利用者主体で行う分析のための分析基盤
利用者主体で行う分析のための分析基盤利用者主体で行う分析のための分析基盤
利用者主体で行う分析のための分析基盤
 
Capistrano in practice - WebCareer
Capistrano in practice - WebCareerCapistrano in practice - WebCareer
Capistrano in practice - WebCareer
 
Slurmのジョブスケジューリングと実装
Slurmのジョブスケジューリングと実装Slurmのジョブスケジューリングと実装
Slurmのジョブスケジューリングと実装
 
ソフトウェア工学2023 04 開発プロセスモデル
ソフトウェア工学2023 04 開発プロセスモデルソフトウェア工学2023 04 開発プロセスモデル
ソフトウェア工学2023 04 開発プロセスモデル
 
Azure でサーバーレス、 Infrastructure as Code どうしてますか?
Azure でサーバーレス、 Infrastructure as Code どうしてますか?Azure でサーバーレス、 Infrastructure as Code どうしてますか?
Azure でサーバーレス、 Infrastructure as Code どうしてますか?
 
Play framework 2.0のおすすめと1.2からのアップグレード
Play framework 2.0のおすすめと1.2からのアップグレードPlay framework 2.0のおすすめと1.2からのアップグレード
Play framework 2.0のおすすめと1.2からのアップグレード
 
JAWS DAYS 2022
JAWS DAYS 2022JAWS DAYS 2022
JAWS DAYS 2022
 
PGXのレスポンスとリソース消費
PGXのレスポンスとリソース消費PGXのレスポンスとリソース消費
PGXのレスポンスとリソース消費
 
Azure API Management 俺的マニュアル
Azure API Management 俺的マニュアルAzure API Management 俺的マニュアル
Azure API Management 俺的マニュアル
 
Deep Learning Lab - Microsoft Machine Learning meetup 2018/06/27 - 推論編
Deep Learning Lab - Microsoft Machine Learning meetup 2018/06/27 - 推論編Deep Learning Lab - Microsoft Machine Learning meetup 2018/06/27 - 推論編
Deep Learning Lab - Microsoft Machine Learning meetup 2018/06/27 - 推論編
 
20120421中国gtug
20120421中国gtug20120421中国gtug
20120421中国gtug
 
ElasticSearch勉強会 第6回
ElasticSearch勉強会 第6回ElasticSearch勉強会 第6回
ElasticSearch勉強会 第6回
 
超高速な機械学習を Oracle Database で実現!
超高速な機械学習を Oracle Database で実現!超高速な機械学習を Oracle Database で実現!
超高速な機械学習を Oracle Database で実現!
 
R超入門機械学習をはじめよう
R超入門機械学習をはじめようR超入門機械学習をはじめよう
R超入門機械学習をはじめよう
 
Qiita x Microsoft - 機械学習セミナー Microsoft AI Platform
Qiita x Microsoft - 機械学習セミナー Microsoft AI PlatformQiita x Microsoft - 機械学習セミナー Microsoft AI Platform
Qiita x Microsoft - 機械学習セミナー Microsoft AI Platform
 

More from Satoshi Nagayasu

データウェアハウスモデリング入門(ダイジェスト版)(事前公開版)
データウェアハウスモデリング入門(ダイジェスト版)(事前公開版) データウェアハウスモデリング入門(ダイジェスト版)(事前公開版)
データウェアハウスモデリング入門(ダイジェスト版)(事前公開版) Satoshi Nagayasu
 
Oracle対応アプリケーションのDockerize事始め
Oracle対応アプリケーションのDockerize事始めOracle対応アプリケーションのDockerize事始め
Oracle対応アプリケーションのDockerize事始めSatoshi Nagayasu
 
アナリティクスをPostgreSQLで始めるべき10の理由@第6回 関西DB勉強会
アナリティクスをPostgreSQLで始めるべき10の理由@第6回 関西DB勉強会アナリティクスをPostgreSQLで始めるべき10の理由@第6回 関西DB勉強会
アナリティクスをPostgreSQLで始めるべき10の理由@第6回 関西DB勉強会Satoshi Nagayasu
 
In-Database Analyticsの必要性と可能性
In-Database Analyticsの必要性と可能性In-Database Analyticsの必要性と可能性
In-Database Analyticsの必要性と可能性Satoshi Nagayasu
 
10 Reasons to Start Your Analytics Project with PostgreSQL
10 Reasons to Start Your Analytics Project with PostgreSQL10 Reasons to Start Your Analytics Project with PostgreSQL
10 Reasons to Start Your Analytics Project with PostgreSQLSatoshi Nagayasu
 
A Story Behind the Conference, or How pgDay Asia was born
A Story Behind the Conference, or How pgDay Asia was bornA Story Behind the Conference, or How pgDay Asia was born
A Story Behind the Conference, or How pgDay Asia was bornSatoshi Nagayasu
 
データベースエンジニアがデータヘルスの2年間で見たもの(仮)
データベースエンジニアがデータヘルスの2年間で見たもの(仮)データベースエンジニアがデータヘルスの2年間で見たもの(仮)
データベースエンジニアがデータヘルスの2年間で見たもの(仮)Satoshi Nagayasu
 
PostgreSQL 9.4, 9.5 and Beyond @ COSCUP 2015 Taipei
PostgreSQL 9.4, 9.5 and Beyond @ COSCUP 2015 TaipeiPostgreSQL 9.4, 9.5 and Beyond @ COSCUP 2015 Taipei
PostgreSQL 9.4, 9.5 and Beyond @ COSCUP 2015 TaipeiSatoshi Nagayasu
 
PostgreSQL 9.4 and Beyond @ FOSSASIA 2015 Singapore
PostgreSQL 9.4 and Beyond @ FOSSASIA 2015 SingaporePostgreSQL 9.4 and Beyond @ FOSSASIA 2015 Singapore
PostgreSQL 9.4 and Beyond @ FOSSASIA 2015 SingaporeSatoshi Nagayasu
 
PostgreSQL Community in Japan
PostgreSQL Community in JapanPostgreSQL Community in Japan
PostgreSQL Community in JapanSatoshi Nagayasu
 
海外の技術カンファレンスに行こう! Let’s go tech conferences overseas!
海外の技術カンファレンスに行こう! Let’s go tech conferences overseas!海外の技術カンファレンスに行こう! Let’s go tech conferences overseas!
海外の技術カンファレンスに行こう! Let’s go tech conferences overseas!Satoshi Nagayasu
 
映画「マネーボール」に学ぶデータ分析と組織行動論
映画「マネーボール」に学ぶデータ分析と組織行動論映画「マネーボール」に学ぶデータ分析と組織行動論
映画「マネーボール」に学ぶデータ分析と組織行動論Satoshi Nagayasu
 
統計勉強会 分割表とカイ二乗検定
統計勉強会 分割表とカイ二乗検定統計勉強会 分割表とカイ二乗検定
統計勉強会 分割表とカイ二乗検定Satoshi Nagayasu
 
PostgreSQL Internals - Buffer Management
PostgreSQL Internals - Buffer ManagementPostgreSQL Internals - Buffer Management
PostgreSQL Internals - Buffer ManagementSatoshi Nagayasu
 
PostgreSQL - C言語によるユーザ定義関数の作り方
PostgreSQL - C言語によるユーザ定義関数の作り方PostgreSQL - C言語によるユーザ定義関数の作り方
PostgreSQL - C言語によるユーザ定義関数の作り方Satoshi Nagayasu
 
遊休リソースを用いた 相同性検索処理の並列化とその評価
遊休リソースを用いた相同性検索処理の並列化とその評価遊休リソースを用いた相同性検索処理の並列化とその評価
遊休リソースを用いた 相同性検索処理の並列化とその評価Satoshi Nagayasu
 

More from Satoshi Nagayasu (20)

データウェアハウスモデリング入門(ダイジェスト版)(事前公開版)
データウェアハウスモデリング入門(ダイジェスト版)(事前公開版) データウェアハウスモデリング入門(ダイジェスト版)(事前公開版)
データウェアハウスモデリング入門(ダイジェスト版)(事前公開版)
 
Oracle対応アプリケーションのDockerize事始め
Oracle対応アプリケーションのDockerize事始めOracle対応アプリケーションのDockerize事始め
Oracle対応アプリケーションのDockerize事始め
 
アナリティクスをPostgreSQLで始めるべき10の理由@第6回 関西DB勉強会
アナリティクスをPostgreSQLで始めるべき10の理由@第6回 関西DB勉強会アナリティクスをPostgreSQLで始めるべき10の理由@第6回 関西DB勉強会
アナリティクスをPostgreSQLで始めるべき10の理由@第6回 関西DB勉強会
 
In-Database Analyticsの必要性と可能性
In-Database Analyticsの必要性と可能性In-Database Analyticsの必要性と可能性
In-Database Analyticsの必要性と可能性
 
10 Reasons to Start Your Analytics Project with PostgreSQL
10 Reasons to Start Your Analytics Project with PostgreSQL10 Reasons to Start Your Analytics Project with PostgreSQL
10 Reasons to Start Your Analytics Project with PostgreSQL
 
pgDay Asia 2016 & 2017
pgDay Asia 2016 & 2017pgDay Asia 2016 & 2017
pgDay Asia 2016 & 2017
 
A Story Behind the Conference, or How pgDay Asia was born
A Story Behind the Conference, or How pgDay Asia was bornA Story Behind the Conference, or How pgDay Asia was born
A Story Behind the Conference, or How pgDay Asia was born
 
データベースエンジニアがデータヘルスの2年間で見たもの(仮)
データベースエンジニアがデータヘルスの2年間で見たもの(仮)データベースエンジニアがデータヘルスの2年間で見たもの(仮)
データベースエンジニアがデータヘルスの2年間で見たもの(仮)
 
PostgreSQL 9.4, 9.5 and Beyond @ COSCUP 2015 Taipei
PostgreSQL 9.4, 9.5 and Beyond @ COSCUP 2015 TaipeiPostgreSQL 9.4, 9.5 and Beyond @ COSCUP 2015 Taipei
PostgreSQL 9.4, 9.5 and Beyond @ COSCUP 2015 Taipei
 
PostgreSQL 9.4 and Beyond @ FOSSASIA 2015 Singapore
PostgreSQL 9.4 and Beyond @ FOSSASIA 2015 SingaporePostgreSQL 9.4 and Beyond @ FOSSASIA 2015 Singapore
PostgreSQL 9.4 and Beyond @ FOSSASIA 2015 Singapore
 
PostgreSQL 9.4
PostgreSQL 9.4PostgreSQL 9.4
PostgreSQL 9.4
 
PostgreSQL Community in Japan
PostgreSQL Community in JapanPostgreSQL Community in Japan
PostgreSQL Community in Japan
 
海外の技術カンファレンスに行こう! Let’s go tech conferences overseas!
海外の技術カンファレンスに行こう! Let’s go tech conferences overseas!海外の技術カンファレンスに行こう! Let’s go tech conferences overseas!
海外の技術カンファレンスに行こう! Let’s go tech conferences overseas!
 
映画「マネーボール」に学ぶデータ分析と組織行動論
映画「マネーボール」に学ぶデータ分析と組織行動論映画「マネーボール」に学ぶデータ分析と組織行動論
映画「マネーボール」に学ぶデータ分析と組織行動論
 
統計勉強会 分割表とカイ二乗検定
統計勉強会 分割表とカイ二乗検定統計勉強会 分割表とカイ二乗検定
統計勉強会 分割表とカイ二乗検定
 
PgAccelerator
PgAcceleratorPgAccelerator
PgAccelerator
 
PostgreSQL Internals - Buffer Management
PostgreSQL Internals - Buffer ManagementPostgreSQL Internals - Buffer Management
PostgreSQL Internals - Buffer Management
 
PostgreSQL - C言語によるユーザ定義関数の作り方
PostgreSQL - C言語によるユーザ定義関数の作り方PostgreSQL - C言語によるユーザ定義関数の作り方
PostgreSQL - C言語によるユーザ定義関数の作り方
 
遊休リソースを用いた 相同性検索処理の並列化とその評価
遊休リソースを用いた相同性検索処理の並列化とその評価遊休リソースを用いた相同性検索処理の並列化とその評価
遊休リソースを用いた 相同性検索処理の並列化とその評価
 
20040228 Hokkaido 1
20040228 Hokkaido 120040228 Hokkaido 1
20040228 Hokkaido 1
 

Django/Celeyを用いたデータ分析Webアプリケーションにおける非同期処理の設計と実装

  • 3. Who Am I? • Database Engineer • Data Center Engineer • ITSM Specialist • Data Steward • System Architect • Co-founder • CTO
  • 4. Agenda • Background & Motivation • Django • Async Processing in Django • Async Processing with Django/Celery • Design and Implementation for the Analytics App • Wrap-up
  • 6. バックグラウンド • ヘルスケアデータベース – レセプトと検診データ – データベースサイズは100GB程度 – 1テーブル数千万~1億レコード • 分析用のデータ抽出・集計のために、半定型な クエリを投げるようになってきた – 条件を変えて何度も繰り返し投げる – これまではエンジニアがSQLのテンプレを都度書き換 えて作業 – エンドユーザも検索できるようにしたい
  • 7. モチベーションと要求事項 • 半定型の集計クエリ(レポーティング) – 診断名、医薬品名、その他抽出条件が都度変わる • Webインターフェースを提供する必要性 – 非技術者が使えるように • クエリの実行時間は「Webとしては」長い – 数十秒から長くて10分程度 • スマートなWebインターフェースを提供したい – ブロッキングやタイムアウトをさせない – 開発期間(着手~プロトデモ)は実質的に1週間程度
  • 10. About Django • PythonのWebフレームワーク – https://www.djangoproject.com/ • PythonにおけるRails的な位置付け(らしい) – 全部入りのフレームワーク • MTV (Model, Template, View) モデル – Template/ViewはMVCにおけるView/Controller • 組み込みO/Rマッパー入り – その他、SQLAlchemyも使える
  • 11. Django Architecture 出典:Djangoチュートリアル(前編) :CodeZine http://codezine.jp/article/detail/4065?p=2
  • 12. Why Django? • 別件で使ったことがあった( 同じチームで) • 最小限の手間で、そこそこのものが作れる • 細かいところにそんなに拘らない • 普段、Webアプリ作らないので詳しくない • データ分析系なので、Pythonスキルを獲得・維持 したい
  • 13. Platforms and Frameworks • Windows 7 & Linux • Apache • Django • PostgreSQL • psycopg2 • Twitter Bootstrap
  • 15. Long running queries in Django • クエリの実行時間は「Webとしては」長い – 数十秒から長くて10分程度 • 実行時間を短縮させる必要性はさほどない – パフォーマンス改善における費用対効果の問題 • スマートなWebインターフェースを提供したい – ブロッキングやタイムアウトをさせない • あまり大きなアーキテクチャにはしたくない – 運用性、保守性、属人性を考慮する
  • 16. Async processing in Django https://www.djangopackages.com/grids/g/workers-queues-tasks/ As of Sep/21/2014
  • 17. Development Status • Production/Stable • Beta • Beta • n/a • Beta • Alpha • Unknown • Unknown • Beta • Alpha As of Sep/21/2014 So, which one should I choose? Lots of options, but no choice.
  • 18. Djangoにおける非同期処理 • django-tasks (623,000) – https://code.google.com/p/django-tasks/ • django-async (185,000) – https://pypi.python.org/pypi/django-async/ • django-rq (172,000) – http://python-rq.org/patterns/django/ • Celery (240,000) – http://www.celeryproject.org/
  • 19. Async Processing with Django/Celery
  • 20. UI/UX We Need • 一般的なWebUI – 検索条件を入力したら非同期処理を飛ばす • クエリを実行している間はspinnerを回す – バックグラウンドで実行 • クエリが終わったら結果を表示
  • 21. Celery • Distributed Task Queue • Real-time & Scheduled task • Simple & Easy to implement www.celeryproject.org
  • 22. Celery Components • Client • Broker • Backend • Worker • Task Client Broker Backend Worker Worker
  • 24. Celery Tasks • Pythonの関数として作成 – 任意の引数、戻り値の定義が可能 • DecolatorでCeleryのタスクとして定義
  • 25. Celery Metadata • BackendとBrokerのデータ
  • 26. Design and Implementation for the Analytics App
  • 27. System Architecture Apache Django Celery PostgreSQL (Broker/Backend) PostgreSQL (Healthcare DB) 1 Core, 1GB RAM 25GB SAN DISK 4 Core, 16GB RAM 25+100GB SAN DISK Internet
  • 28. From Query Templates To Celery Tasks • 条件に応じてSQLテンプレートからクエリを生成 – テンプレートファイルを読み込み – 独自のプリプロセス処理(ifdef & endif) – プレースホルダにパラメータをバインド – O/Rマッパーは使わずpsycopg2を直叩き • Djangoのテンプレート+独自テンプレート – データ構造がModelに綺麗に当てはまらない – テンプレートを読み込んでプレースホルダを置き換え • 最後にCeleryのキューに投入する
  • 29. Bind Parameters and Macros SELECT "連番" FROM "rez_iyaku" WHERE "薬剤コード" IN ( :DRUGCODE ) -- #ifdef EXCLUDE_DRUGCODE AND "薬剤コード" NOT IN ( :EXCLUDE_DRUGCODE ) -- #endif EXCLUDE_DRUGCODE SELECT "連番" FROM "rez_iyaku" WHERE "薬剤コード" IN ( 123456, 234567 ) /* AND "薬剤コード" NOT IN ( :EXCLUDE_DRUGCODE ) */
  • 30. From Query Templates To Celery Tasks Query Templates 実行するクエリの元となるテンプレート (1クエリにテーブル6、WITH句6、約100行) Bind Parameters プレースホルダに対して 入力条件である変数をバインド Preprocess Macros 検索の条件に応じて ifdefマクロを コメントアウト処理 Celery Tasks Celeryのタスク としてキューに 投入
  • 31. Internal Sequence Template View QueryBuilder QueryRunner Celery Broker Backend Worker Submit Polling Result Executing App Moudle Django
  • 32. Processing a Task within Backend [2014-11-24 22:11:26,330: INFO/MainProcess] Received task: webui.QueryRunner.runQuery[1b5b8fd2-9296-4a25-9e98-f002b2068fdd] [2014-11-24 22:11:26,330: DEBUG/MainProcess] TaskPool: Apply <function _fast_trace_task at 0x2267938> (args:('webui.QueryRunner.runQuery', '1b5b8fd2-9296-4a25-9e98-f002b2068fdd', (...) [2014-11-24 22:11:26,333: DEBUG/MainProcess] Task accepted: webui.QueryRunner.runQuery[1b5b8fd2-9296-4a25-9e98-f002b2068fdd] pid:10450 [2014-11-24 22:18:35,504: INFO/MainProcess] Task webui.QueryRunner.runQuery[1b5b8fd2-9296-4a25-9e98-f002b2068fdd] succeeded in 429.172908468s: {‘CCC_2_60_69_2012_REZ': '-', ‘CCC_2_30_39_2010_ID': '-', ‘AAA_2_20_29_2012_ID': '172', ‘AAA_1_30_39_2013_REZ': '324',...
  • 34. Wrap-up • Ad-hoc系で時間のかかる半定型クエリの実行を Webシステムとして実現 • Django/Celeryを使って、DBAが実質2週間程 度で開発(Djangoで1週間、Celeryで1週間)
  • 35. 感想 • Djangoはデータ分析アプリに向いている – Web的なパフォーマンスを求められない – 全部入りでアプリの開発は比較的容易 • Celeryは非同期処理に向いている – 特に問題なく動作している – 但し、Windowsでの動作は怪しい
  • 36. And currently working on... 1 min 50 sec ⇒ 0.2 sec