SlideShare a Scribd company logo
DynamoDB Streamを使った リアルタイム分析 
クラスメソッド株式会社 
横田 慎介 
classmethod.jp 
1 
DEVIO-MTUP11-TOKYO-009 
2014/12/16
DynamoDB Stream(Preview) 
•テーブルの更新ログ 
–MySQLのbinlogのようなもの 
•更新内容をリアルタイムに取得できる 
classmethod.jp 
2
リアルタイム分析 
classmethod.jp 
3 
Amazon Lambda
DynamoDB 
•NoSQLデータベース 
•スキーマレス 
–ユーザ定義プライマリキー + 任意の項目 
classmethod.jp 
4
DynamoDBテーブル例 
classmethod.jp 
5 
user_id 
created_at 
action 
means 
points 
0 
1418638175 
register 
0 
1418638260 
get_point 
tutorial 
100 
1 
1418642914 
register 
user_history
DynamoDBテーブル作成 
classmethod.jp 
6
DynamoDB Stream 
classmethod.jp 
7
DynamoDB Stream有効化 
classmethod.jp 
8
DynamoDB Stream 
classmethod.jp 
9
DynamoDBアイテム登録 
classmethod.jp 
10 
{“user_id”: “0”, 
“created_at”:1418638175, 
“action”: “register”}
DynamoDB Streamレコード 
{ 
"Records": [ 
{ 
"awsRegion": "us-east-1", 
"dynamodb": { 
"Keys": 
{ 
"user_id" : { "S": "0" }, 
"created_at" : { "N": "1418638175" } 
}, 
"NewImage": 
{ 
"user_id" : { "S": "0" }, 
"created_at" : { "N": "1418638175" }, 
"action" : { "S": "register" } 
}, 
"SequenceNumber": "3758000000000000010265650", 
"SizeBytes": 62, 
"StreamViewType": "NEW_AND_OLD_IMAGES" 
}, 
"eventID": ” cae695c863e891e573b710d101d4a72a", 
"eventName": "INSERT", 
"eventSource": "aws:dynamodb", 
"eventVersion": "1.0" 
} 
] 
} 
classmethod.jp 
11 
DynamoDB更新情報 
イベント情報
DynamoDB Streamレコード 
"NewImage": 
{ 
"user_id" : { "S": "0" }, 
"created_at" : { "N": "1418638175" }, 
"action" : { "S": "register" } 
}, 
classmethod.jp 
12
LambdaでレコードをNorikraへ 
classmethod.jp 
13 
Amazon Lambda
Lambda(Preview) 
•コード実行サービス 
–イベントを検知し、 
–Lambda Functionを実行する 
•処理すべきイベント数に応じて自動でス ケール 
classmethod.jp 
14
Lambda 
classmethod.jp 
15 
①Lambda Functionの登録 
②DynamoDB Streamをイベントソースと して登録 
① 
②
Lambda Function 
classmethod.jp 
16
Lambda Function作成 
classmethod.jp 
17
Lambda Function内容 
exports.handler = function(event, context) { 
// DynamoDB StreamイベントのデータをNorikraで扱いやすいように整形 
async.series( 
[ 
function (callback) { Norikraにターゲット作成; callback(null, true);}, 
function (callback) { Norikraにイベント送信; callback(null, true);} 
], 
function (err, results) { 
if (err) {context.done('error', err);} else {context.done(null, results);} 
} 
); 
} 
classmethod.jp 
18 
https://github.com/yokota-shinsuke/aws-lambda-dynamodbstream-to-norikra
Lambda Function登録 
classmethod.jp 
19
Lambda Function登録 
classmethod.jp 
20
Lambdaへのイベント登録 
classmethod.jp 
21 
①Lambda Functionの登録 
②DynamoDB Streamをイベントソースと して登録 
②
Lambdaへのイベント登録 
classmethod.jp 
22
Lambdaへのイベント登録 
classmethod.jp 
23
Norikra 
•イベントストリームプロセッサ 
•SQLライクな言語でイベントの集計方法 を記述できる 
–例:直近1時間に新規登録したユーザ数 
http://norikra.github.io/index.html 
classmethod.jp 
24 
SELECT COUNT(*) AS new_users 
FROM user_history.win:time_batch(1 hour) 
WHERE action = ‘register’
user_id: 0 action: register 
Norikra 
classmethod.jp 
25 
user_id: 1 
action: register 
user_histor 
user_id: 0 action: get_point 
new_user: 1 
SELECT COUNT(*) AS new_users 
FROM user_history.win:time_batch(1 hour) 
WHERE action = ‘register’
Norikra 
classmethod.jp 
26 
user_histor 
user_id: 0 action: get_point 
new_user: 2 
user_id: 1 
action: register 
SELECT COUNT(*) AS new_users 
FROM user_history.win:time_batch(1 hour) 
WHERE action = ‘register’
Norikra WebUI 
classmethod.jp 
27
Norikra Target 
classmethod.jp 
28
Norikra Query 
classmethod.jp 
29
Norikra Output 
classmethod.jp 
30 
1418713623, {“new_user” : 3} 
1418713683, {“new_user” : 1}
経路ごとのユーザ登録数 
classmethod.jp 
31 
{“user_id” : 3, “created_at” : 1418713623, 
“action” : “register”, “entry_from” : “ad01”} 
SELECT entry_from, COUNT(*) AS new_users 
FROM user_history.win:time_batch(1 hour) 
WHERE action = ‘register’ 
GROUP BY entry_from 
{“entry_from” : “ad01” ,“new_user” : 3} 
{“entry_from” : “ad02” ,“new_user” : 1}
#cmdevio 
ご清聴ありがとうございました。 
このスライドは後日公開いたします。 
reGrowth-001

More Related Content

What's hot

Amazon Elasticsearch Serviceを利用したAWSのログ活用
Amazon Elasticsearch Serviceを利用したAWSのログ活用Amazon Elasticsearch Serviceを利用したAWSのログ活用
Amazon Elasticsearch Serviceを利用したAWSのログ活用
真司 藤本
 
AWS Lambda のご紹介 2015 JAWS沖縄
AWS Lambda のご紹介 2015 JAWS沖縄AWS Lambda のご紹介 2015 JAWS沖縄
AWS Lambda のご紹介 2015 JAWS沖縄
Toshiaki Enami
 
AWS Black Belt Tech シリーズ 2015 - AWS Data Pipeline
AWS Black Belt Tech シリーズ 2015 - AWS Data PipelineAWS Black Belt Tech シリーズ 2015 - AWS Data Pipeline
AWS Black Belt Tech シリーズ 2015 - AWS Data Pipeline
Amazon Web Services Japan
 
AWS Black Belt Online Seminar 2017 Deployment on AWS
AWS Black Belt Online Seminar 2017 Deployment on AWSAWS Black Belt Online Seminar 2017 Deployment on AWS
AWS Black Belt Online Seminar 2017 Deployment on AWS
Amazon Web Services Japan
 
DynamoDBだけでソシャゲを作ってみた
DynamoDBだけでソシャゲを作ってみたDynamoDBだけでソシャゲを作ってみた
DynamoDBだけでソシャゲを作ってみた
伊藤 祐策
 
Application Deployment on AWS
Application Deployment on AWSApplication Deployment on AWS
Application Deployment on AWS
Eiji Shinohara
 
Amazon S3を中心とするデータ分析のベストプラクティス
Amazon S3を中心とするデータ分析のベストプラクティスAmazon S3を中心とするデータ分析のベストプラクティス
Amazon S3を中心とするデータ分析のベストプラクティス
Amazon Web Services Japan
 
Amazon DynamoDBの紹介と東急ハンズでの活用について
Amazon DynamoDBの紹介と東急ハンズでの活用についてAmazon DynamoDBの紹介と東急ハンズでの活用について
Amazon DynamoDBの紹介と東急ハンズでの活用について
Taiji INOUE
 
クラウド上のデータ活用デザインパターン
クラウド上のデータ活用デザインパターンクラウド上のデータ活用デザインパターン
クラウド上のデータ活用デザインパターン
Amazon Web Services Japan
 
Amazon Aurora
Amazon AuroraAmazon Aurora
Amazon Aurora
Shinpei Ohtani
 
AWS LambdaとDynamoDBがこんなにツライはずがない #ssmjp
AWS LambdaとDynamoDBがこんなにツライはずがない #ssmjpAWS LambdaとDynamoDBがこんなにツライはずがない #ssmjp
AWS LambdaとDynamoDBがこんなにツライはずがない #ssmjp
Masahiro NAKAYAMA
 
CTO Night & Day Morning Session "Auto Scaling & Spot Instances Deep Dive"
CTO Night & Day Morning Session "Auto Scaling & Spot Instances Deep Dive"CTO Night & Day Morning Session "Auto Scaling & Spot Instances Deep Dive"
CTO Night & Day Morning Session "Auto Scaling & Spot Instances Deep Dive"
akitsukada
 
AWS Black Belt Techシリーズ AWS Lambda
AWS Black Belt Techシリーズ AWS LambdaAWS Black Belt Techシリーズ AWS Lambda
AWS Black Belt Techシリーズ AWS Lambda
Amazon Web Services Japan
 
Leap MotionとLambdaで「第九」を鳴らしてみる
Leap MotionとLambdaで「第九」を鳴らしてみるLeap MotionとLambdaで「第九」を鳴らしてみる
Leap MotionとLambdaで「第九」を鳴らしてみる
Tsuyoshi Seino
 
AWS Black Belt Tech シリーズ 2015 - AWS IoT
AWS Black Belt Tech シリーズ 2015 - AWS IoTAWS Black Belt Tech シリーズ 2015 - AWS IoT
AWS Black Belt Tech シリーズ 2015 - AWS IoT
Amazon Web Services Japan
 
サーバーレスアーキテクチャのすすめ(公開版)
サーバーレスアーキテクチャのすすめ(公開版)サーバーレスアーキテクチャのすすめ(公開版)
サーバーレスアーキテクチャのすすめ(公開版)
Keisuke Kadoyama
 
Kinesis Analyticsの適用できない用途と、Kinesis Firehoseの苦労話
Kinesis Analyticsの適用できない用途と、Kinesis Firehoseの苦労話Kinesis Analyticsの適用できない用途と、Kinesis Firehoseの苦労話
Kinesis Analyticsの適用できない用途と、Kinesis Firehoseの苦労話
Sotaro Kimura
 
AWS Black Belt Techシリーズ AWS Data Pipeline
AWS Black Belt Techシリーズ  AWS Data PipelineAWS Black Belt Techシリーズ  AWS Data Pipeline
AWS Black Belt Techシリーズ AWS Data Pipeline
Amazon Web Services Japan
 
Amazon Kinesis Familyを活用したストリームデータ処理
Amazon Kinesis Familyを活用したストリームデータ処理Amazon Kinesis Familyを活用したストリームデータ処理
Amazon Kinesis Familyを活用したストリームデータ処理
Amazon Web Services Japan
 

What's hot (20)

Amazon Elasticsearch Serviceを利用したAWSのログ活用
Amazon Elasticsearch Serviceを利用したAWSのログ活用Amazon Elasticsearch Serviceを利用したAWSのログ活用
Amazon Elasticsearch Serviceを利用したAWSのログ活用
 
AWS Lambda のご紹介 2015 JAWS沖縄
AWS Lambda のご紹介 2015 JAWS沖縄AWS Lambda のご紹介 2015 JAWS沖縄
AWS Lambda のご紹介 2015 JAWS沖縄
 
AWS Black Belt Tech シリーズ 2015 - AWS Data Pipeline
AWS Black Belt Tech シリーズ 2015 - AWS Data PipelineAWS Black Belt Tech シリーズ 2015 - AWS Data Pipeline
AWS Black Belt Tech シリーズ 2015 - AWS Data Pipeline
 
20120409 aws meister-reloaded-dynamo-db
20120409 aws meister-reloaded-dynamo-db20120409 aws meister-reloaded-dynamo-db
20120409 aws meister-reloaded-dynamo-db
 
AWS Black Belt Online Seminar 2017 Deployment on AWS
AWS Black Belt Online Seminar 2017 Deployment on AWSAWS Black Belt Online Seminar 2017 Deployment on AWS
AWS Black Belt Online Seminar 2017 Deployment on AWS
 
DynamoDBだけでソシャゲを作ってみた
DynamoDBだけでソシャゲを作ってみたDynamoDBだけでソシャゲを作ってみた
DynamoDBだけでソシャゲを作ってみた
 
Application Deployment on AWS
Application Deployment on AWSApplication Deployment on AWS
Application Deployment on AWS
 
Amazon S3を中心とするデータ分析のベストプラクティス
Amazon S3を中心とするデータ分析のベストプラクティスAmazon S3を中心とするデータ分析のベストプラクティス
Amazon S3を中心とするデータ分析のベストプラクティス
 
Amazon DynamoDBの紹介と東急ハンズでの活用について
Amazon DynamoDBの紹介と東急ハンズでの活用についてAmazon DynamoDBの紹介と東急ハンズでの活用について
Amazon DynamoDBの紹介と東急ハンズでの活用について
 
クラウド上のデータ活用デザインパターン
クラウド上のデータ活用デザインパターンクラウド上のデータ活用デザインパターン
クラウド上のデータ活用デザインパターン
 
Amazon Aurora
Amazon AuroraAmazon Aurora
Amazon Aurora
 
AWS LambdaとDynamoDBがこんなにツライはずがない #ssmjp
AWS LambdaとDynamoDBがこんなにツライはずがない #ssmjpAWS LambdaとDynamoDBがこんなにツライはずがない #ssmjp
AWS LambdaとDynamoDBがこんなにツライはずがない #ssmjp
 
CTO Night & Day Morning Session "Auto Scaling & Spot Instances Deep Dive"
CTO Night & Day Morning Session "Auto Scaling & Spot Instances Deep Dive"CTO Night & Day Morning Session "Auto Scaling & Spot Instances Deep Dive"
CTO Night & Day Morning Session "Auto Scaling & Spot Instances Deep Dive"
 
AWS Black Belt Techシリーズ AWS Lambda
AWS Black Belt Techシリーズ AWS LambdaAWS Black Belt Techシリーズ AWS Lambda
AWS Black Belt Techシリーズ AWS Lambda
 
Leap MotionとLambdaで「第九」を鳴らしてみる
Leap MotionとLambdaで「第九」を鳴らしてみるLeap MotionとLambdaで「第九」を鳴らしてみる
Leap MotionとLambdaで「第九」を鳴らしてみる
 
AWS Black Belt Tech シリーズ 2015 - AWS IoT
AWS Black Belt Tech シリーズ 2015 - AWS IoTAWS Black Belt Tech シリーズ 2015 - AWS IoT
AWS Black Belt Tech シリーズ 2015 - AWS IoT
 
サーバーレスアーキテクチャのすすめ(公開版)
サーバーレスアーキテクチャのすすめ(公開版)サーバーレスアーキテクチャのすすめ(公開版)
サーバーレスアーキテクチャのすすめ(公開版)
 
Kinesis Analyticsの適用できない用途と、Kinesis Firehoseの苦労話
Kinesis Analyticsの適用できない用途と、Kinesis Firehoseの苦労話Kinesis Analyticsの適用できない用途と、Kinesis Firehoseの苦労話
Kinesis Analyticsの適用できない用途と、Kinesis Firehoseの苦労話
 
AWS Black Belt Techシリーズ AWS Data Pipeline
AWS Black Belt Techシリーズ  AWS Data PipelineAWS Black Belt Techシリーズ  AWS Data Pipeline
AWS Black Belt Techシリーズ AWS Data Pipeline
 
Amazon Kinesis Familyを活用したストリームデータ処理
Amazon Kinesis Familyを活用したストリームデータ処理Amazon Kinesis Familyを活用したストリームデータ処理
Amazon Kinesis Familyを活用したストリームデータ処理
 

Similar to DynamoDB Streamを使ったリアルタイム分析

200429 python
200429 python200429 python
200429 python
Takuya Nishimoto
 
ZabbixによるAWS監視のコツ
ZabbixによるAWS監視のコツZabbixによるAWS監視のコツ
ZabbixによるAWS監視のコツ
ShinsukeYokota
 
Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Masahiro Nagano
 
LINEのMySQL運用について
LINEのMySQL運用についてLINEのMySQL運用について
LINEのMySQL運用について
LINE Corporation
 
MongoDB勉強会資料
MongoDB勉強会資料MongoDB勉強会資料
MongoDB勉強会資料
Hiromune Shishido
 
TypeScriptで書くLambdaをCDKでいい感じに管理する.pptx
TypeScriptで書くLambdaをCDKでいい感じに管理する.pptxTypeScriptで書くLambdaをCDKでいい感じに管理する.pptx
TypeScriptで書くLambdaをCDKでいい感じに管理する.pptx
ssuser8b389c
 
データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回Naoyuki Yamada
 
Pydata Amazon Kinesisのご紹介
Pydata Amazon Kinesisのご紹介Pydata Amazon Kinesisのご紹介
Pydata Amazon Kinesisのご紹介
Amazon Web Services Japan
 
2014 11-20 Machine Learning with Apache Spark 勉強会資料
2014 11-20 Machine Learning with Apache Spark 勉強会資料2014 11-20 Machine Learning with Apache Spark 勉強会資料
2014 11-20 Machine Learning with Apache Spark 勉強会資料
Recruit Technologies
 
Reco choku tech night #09 -reinvent2018報告会-
Reco choku tech night #09 -reinvent2018報告会-Reco choku tech night #09 -reinvent2018報告会-
Reco choku tech night #09 -reinvent2018報告会-
recotech
 
AWS Black Belt Techシリーズ AWS re:Invent 2014 最新情報のアップデート
AWS Black Belt Techシリーズ  AWS re:Invent 2014 最新情報のアップデートAWS Black Belt Techシリーズ  AWS re:Invent 2014 最新情報のアップデート
AWS Black Belt Techシリーズ AWS re:Invent 2014 最新情報のアップデート
Amazon Web Services Japan
 
tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1Ryosuke IWANAGA
 
FluentdとRedshiftの素敵な関係
FluentdとRedshiftの素敵な関係FluentdとRedshiftの素敵な関係
FluentdとRedshiftの素敵な関係moai kids
 
IBM Cloudant の細かすぎて伝わりにくい機能(その2) データの変更履歴が自動管理できるらしい
IBM Cloudant の細かすぎて伝わりにくい機能(その2) データの変更履歴が自動管理できるらしいIBM Cloudant の細かすぎて伝わりにくい機能(その2) データの変更履歴が自動管理できるらしい
IBM Cloudant の細かすぎて伝わりにくい機能(その2) データの変更履歴が自動管理できるらしい
K Kimura
 
DTraceによるMySQL解析ことはじめ
DTraceによるMySQL解析ことはじめDTraceによるMySQL解析ことはじめ
DTraceによるMySQL解析ことはじめ
Mikiya Okuno
 
serverless framework + AWS Lambda with Python
serverless framework + AWS Lambda with Pythonserverless framework + AWS Lambda with Python
serverless framework + AWS Lambda with Python
masahitojp
 
UnityのLambda API を Dynamo DB APIっぽく使う
UnityのLambda API を Dynamo DB APIっぽく使うUnityのLambda API を Dynamo DB APIっぽく使う
UnityのLambda API を Dynamo DB APIっぽく使う
Kinose Tomohito
 
Flume cassandra real time log processing (日本語)
Flume cassandra real time log processing (日本語)Flume cassandra real time log processing (日本語)
Flume cassandra real time log processing (日本語)
CLOUDIAN KK
 
俺のLambda
俺のLambda俺のLambda
俺のLambda
Motokatsu Matsui
 

Similar to DynamoDB Streamを使ったリアルタイム分析 (20)

200429 python
200429 python200429 python
200429 python
 
ZabbixによるAWS監視のコツ
ZabbixによるAWS監視のコツZabbixによるAWS監視のコツ
ZabbixによるAWS監視のコツ
 
Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14
 
Sc2009autumn s2robot
Sc2009autumn s2robotSc2009autumn s2robot
Sc2009autumn s2robot
 
LINEのMySQL運用について
LINEのMySQL運用についてLINEのMySQL運用について
LINEのMySQL運用について
 
MongoDB勉強会資料
MongoDB勉強会資料MongoDB勉強会資料
MongoDB勉強会資料
 
TypeScriptで書くLambdaをCDKでいい感じに管理する.pptx
TypeScriptで書くLambdaをCDKでいい感じに管理する.pptxTypeScriptで書くLambdaをCDKでいい感じに管理する.pptx
TypeScriptで書くLambdaをCDKでいい感じに管理する.pptx
 
データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回
 
Pydata Amazon Kinesisのご紹介
Pydata Amazon Kinesisのご紹介Pydata Amazon Kinesisのご紹介
Pydata Amazon Kinesisのご紹介
 
2014 11-20 Machine Learning with Apache Spark 勉強会資料
2014 11-20 Machine Learning with Apache Spark 勉強会資料2014 11-20 Machine Learning with Apache Spark 勉強会資料
2014 11-20 Machine Learning with Apache Spark 勉強会資料
 
Reco choku tech night #09 -reinvent2018報告会-
Reco choku tech night #09 -reinvent2018報告会-Reco choku tech night #09 -reinvent2018報告会-
Reco choku tech night #09 -reinvent2018報告会-
 
AWS Black Belt Techシリーズ AWS re:Invent 2014 最新情報のアップデート
AWS Black Belt Techシリーズ  AWS re:Invent 2014 最新情報のアップデートAWS Black Belt Techシリーズ  AWS re:Invent 2014 最新情報のアップデート
AWS Black Belt Techシリーズ AWS re:Invent 2014 最新情報のアップデート
 
tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1
 
FluentdとRedshiftの素敵な関係
FluentdとRedshiftの素敵な関係FluentdとRedshiftの素敵な関係
FluentdとRedshiftの素敵な関係
 
IBM Cloudant の細かすぎて伝わりにくい機能(その2) データの変更履歴が自動管理できるらしい
IBM Cloudant の細かすぎて伝わりにくい機能(その2) データの変更履歴が自動管理できるらしいIBM Cloudant の細かすぎて伝わりにくい機能(その2) データの変更履歴が自動管理できるらしい
IBM Cloudant の細かすぎて伝わりにくい機能(その2) データの変更履歴が自動管理できるらしい
 
DTraceによるMySQL解析ことはじめ
DTraceによるMySQL解析ことはじめDTraceによるMySQL解析ことはじめ
DTraceによるMySQL解析ことはじめ
 
serverless framework + AWS Lambda with Python
serverless framework + AWS Lambda with Pythonserverless framework + AWS Lambda with Python
serverless framework + AWS Lambda with Python
 
UnityのLambda API を Dynamo DB APIっぽく使う
UnityのLambda API を Dynamo DB APIっぽく使うUnityのLambda API を Dynamo DB APIっぽく使う
UnityのLambda API を Dynamo DB APIっぽく使う
 
Flume cassandra real time log processing (日本語)
Flume cassandra real time log processing (日本語)Flume cassandra real time log processing (日本語)
Flume cassandra real time log processing (日本語)
 
俺のLambda
俺のLambda俺のLambda
俺のLambda
 

DynamoDB Streamを使ったリアルタイム分析