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

PDF
Agile Project Management - An introduction to Agile and the new PMI-ACP
PPTX
Cloud Enablement Engine Role Definition and Mapping
PDF
Agile 101 - Yeni başlayanlar için
PPTX
Understanding Scrum
PPTX
Team structure
PPTX
Scaled agile framework (SAFe) - adopting agile at enterprise scale
PPTX
Formation Agile Scrum
PPTX
Introduction to Scrum
Agile Project Management - An introduction to Agile and the new PMI-ACP
Cloud Enablement Engine Role Definition and Mapping
Agile 101 - Yeni başlayanlar için
Understanding Scrum
Team structure
Scaled agile framework (SAFe) - adopting agile at enterprise scale
Formation Agile Scrum
Introduction to Scrum

What's hot (20)

PPTX
Scrum workshop demo
PDF
Scrum guide presentation (Scrum Guide in easy to read PPT format)
PPSX
Agile methodology v 4.5 s
PDF
PMI - ACP (Agile Certified Practitionar) Certification Exam Prep
PDF
Scrum Einleitung Präsentation
PDF
La gestion de projets agile avec SAFe [webinaire]
PPTX
PPTX
Cloud formation デザイナーで捗ろう
PPTX
分散ストレージ技術Cephの最新情報
PPTX
What are the Tools & Techniques in Agile Project Management?
PPTX
Scrum Overview
PDF
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
PDF
Foundations of scaling agile with SAFe
PPTX
Scrum framework
PPTX
機械学習、グラフ分析、SQLによるサイバー攻撃対策事例(金融業界)
PPT
Gestión de Proyectos Agile - Scrum
PDF
Apache Kuduを使った分析システムの裏側
PDF
私とmysqlとROLE
PDF
Scrum 101
Scrum workshop demo
Scrum guide presentation (Scrum Guide in easy to read PPT format)
Agile methodology v 4.5 s
PMI - ACP (Agile Certified Practitionar) Certification Exam Prep
Scrum Einleitung Präsentation
La gestion de projets agile avec SAFe [webinaire]
Cloud formation デザイナーで捗ろう
分散ストレージ技術Cephの最新情報
What are the Tools & Techniques in Agile Project Management?
Scrum Overview
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
Foundations of scaling agile with SAFe
Scrum framework
機械学習、グラフ分析、SQLによるサイバー攻撃対策事例(金融業界)
Gestión de Proyectos Agile - Scrum
Apache Kuduを使った分析システムの裏側
私とmysqlとROLE
Scrum 101
Ad

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

PDF
DynamoDB MyNA・JPUG合同DB勉強会 in 東京
PDF
Stream processing and Norikra
PDF
AWS Black Belt Online Seminar AWS 体験ハンズオン 〜 Amazon DynamoDB テーブル作成編 〜
PDF
InfluxDB の概要 - sonots #tokyoinfluxdb
PDF
[db tech showcase Tokyo 2015] A33:Amazon DynamoDB Deep Dive by アマゾン データ サービス ...
PDF
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
PDF
20180619 AWS Black Belt Online Seminar データレイク入門: AWSで様々な規模のデータレイクを分析する効率的な方法
PDF
Batch and Stream processing with SQL
PDF
Amazon dynamo db、cloudant、blockchainの紹介 20160706
PDF
Spark Streaming の基本とスケールする時系列データ処理 - Spark Meetup December 2015/12/09
PDF
Deep Dive: Amazon DynamoDB (db tech showcase 2016)
PDF
Effective Data Lakes - ユースケースとデザインパターン
PDF
DynamoDBを利用したKPI保存システム
PPTX
DB Tech Showcase 大阪: Amazon DynamoDB Deep Dive
PPTX
Stream processing on AWS
PDF
02_1_20240611_Qlik Cloudデータ統合_データパイプラインの作成「基本動作」
PDF
Amazon Aurora - Auroraの止まらない進化とその中身
PDF
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
PDF
DynamoDBの初心者に伝えたい初めて触るときの勘所
PDF
Amazon DynamoDB 初心者が理解した事
DynamoDB MyNA・JPUG合同DB勉強会 in 東京
Stream processing and Norikra
AWS Black Belt Online Seminar AWS 体験ハンズオン 〜 Amazon DynamoDB テーブル作成編 〜
InfluxDB の概要 - sonots #tokyoinfluxdb
[db tech showcase Tokyo 2015] A33:Amazon DynamoDB Deep Dive by アマゾン データ サービス ...
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
20180619 AWS Black Belt Online Seminar データレイク入門: AWSで様々な規模のデータレイクを分析する効率的な方法
Batch and Stream processing with SQL
Amazon dynamo db、cloudant、blockchainの紹介 20160706
Spark Streaming の基本とスケールする時系列データ処理 - Spark Meetup December 2015/12/09
Deep Dive: Amazon DynamoDB (db tech showcase 2016)
Effective Data Lakes - ユースケースとデザインパターン
DynamoDBを利用したKPI保存システム
DB Tech Showcase 大阪: Amazon DynamoDB Deep Dive
Stream processing on AWS
02_1_20240611_Qlik Cloudデータ統合_データパイプラインの作成「基本動作」
Amazon Aurora - Auroraの止まらない進化とその中身
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
DynamoDBの初心者に伝えたい初めて触るときの勘所
Amazon DynamoDB 初心者が理解した事
Ad

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