SlideShare une entreprise Scribd logo
1  sur  91
Télécharger pour lire hors ligne
© Opt, Inc. All Rights Reserved.
各種データベースの特徴と
パフォーマンス比較
株式会社オプト 仙台テクノロジー開発部
第2回タガヤス登壇資料 
© Opt, Inc. All Rights Reserved.
自己紹介
名前:堀内依子
所属:株式会社オプト 
仙台テクノロジー開発部
入社:2016年
一番好きなお土産: 南部せんべい
© Opt, Inc. All Rights Reserved.
データベースって
色々ありますよね
© Opt, Inc. All Rights Reserved.
データベース
● Oracle
● AWS RDS
○ MySQL
○ PostgreSQL
● TreasureData
● Redshift
© Opt, Inc. All Rights Reserved.
オプト仙台ラボでは
目的別大量データ
を取り扱う
© Opt, Inc. All Rights Reserved.
特定のレコードを取り出す
レコード集計をする
© Opt, Inc. All Rights Reserved.
DWH(データウェアハウス)向
けのデータストア
&
列指向
Redshiftを採用しました
© Opt, Inc. All Rights Reserved.
Redshift
AWS(Amazonのクラウドサービス)
で提供されているDWH構築向け大規模
データ解析システム
© Opt, Inc. All Rights Reserved.
列指向のデータベース
ってなに?
© Opt, Inc. All Rights Reserved.
行指向のデータベース
列指向のデータベース
© Opt, Inc. All Rights Reserved.
行指向データベース
● データの持ち方
○ データを行で扱う
© Opt, Inc. All Rights Reserved.
行指向データベース
● データの持ち方
○ データを行で扱う
● 例えば…
○ Oracle
○ MySQL
© Opt, Inc. All Rights Reserved.
列指向データベース
カラム型データベース
カラムストア型データベース
カラムナデータベース
● データの持ち方
○ データを列で扱う
© Opt, Inc. All Rights Reserved.
列指向データベース
● データの持ち方
○ データを列で扱う
● 例えば…
○ Cassandra
○ Redshift
カラム型データベース
カラムストア型データベース
カラムナデータベース
© Opt, Inc. All Rights Reserved.
でも、つまり…
行指向・列指向
どっちがいいの?
© Opt, Inc. All Rights Reserved.
学生のテストの点数テーブル
No 氏名 フリガナ 性別 生年月日 点数
1 板橋範久 イタバシノリヒサ 男 2001/08/19 94
2 猪俣清治 イノマタセイジ 男 2001/09/13 41
3 福島莉乃 フクシマリノ 女 1998/07/05 46
4 碓井桃歌 ウスイモモカ 女 2004/10/29 63
5 木田和島 キダワジマ 男 2006/11/01 60
© Opt, Inc. All Rights Reserved.
No 氏名 フリガナ 性別 生年月日 点数
1 板橋範久 イタバシノリヒサ 男 2001/08/19 94
2 猪俣清治 イノマタセイジ 男 2001/09/13 41
3 福島莉乃 フクシマリノ 女 1998/07/05 46
4 碓井桃歌 ウスイモモカ 女 2004/10/29 63
5 木田和島 キダワジマ 男 2006/11/01 60
行指向データベース
© Opt, Inc. All Rights Reserved.
No 氏名 フリガナ 性別 生年月日 点数
1 板橋範久 イタバシノリヒサ 男 2001/08/19 94
2 猪俣清治 イノマタセイジ 男 2001/09/13 41
3 福島莉乃 フクシマリノ 女 1998/07/05 46
4 碓井桃歌 ウスイモモカ 女 2004/10/29 63
5 木田和島 キダワジマ 男 2006/11/01 60
行指向データベース
データの塊は行!
© Opt, Inc. All Rights Reserved.
No 氏名 フリガナ 性別 生年月日 点数
1 板橋範久 イタバシノリヒサ 男 2001/08/19 94
2 猪俣清治 イノマタセイジ 男 2001/09/13 41
3 福島莉乃 フクシマリノ 女 1998/07/05 46
4 碓井桃歌 ウスイモモカ 女 2004/10/29 63
5 木田和島 キダワジマ 男 2006/11/01 60
列指向データベース
© Opt, Inc. All Rights Reserved.
No 氏名 フリガナ 性別 生年月日 点数
1 板橋範久 イタバシノリヒサ 男 2001/08/19 94
2 猪俣清治 イノマタセイジ 男 2001/09/13 41
3 福島莉乃 フクシマリノ 女 1998/07/05 46
4 碓井桃歌 ウスイモモカ 女 2004/10/29 63
5 木田和島 キダワジマ 男 2006/11/01 60
列指向データベース
データの塊は列!
© Opt, Inc. All Rights Reserved.
①
レコードを追加するとき
© Opt, Inc. All Rights Reserved.
学生を一人増やしたい
© Opt, Inc. All Rights Reserved.
INSERT INTO 学生テーブル
VALUES (No,氏名,フリガナ,性
別,生年月日,点数);
© Opt, Inc. All Rights Reserved.
No 氏名 フリガナ 性別 生年月日 点数
1 板橋範久 イタバシノリヒサ 男 2001/08/19 94
2 猪俣清治 イノマタセイジ 男 2001/09/13 41
3 福島莉乃 フクシマリノ 女 1998/07/05 46
4 碓井桃歌 ウスイモモカ 女 2004/10/29 63
5 木田和島 キダワジマ 男 2006/11/01 60
行指向データベース
6 江田幸雄 エダサチオ 男 2004/11/04 55
© Opt, Inc. All Rights Reserved.
No 氏名 フリガナ 性別 生年月日 点数
1 板橋範久 イタバシノリヒサ 男 2001/08/19 94
2 猪俣清治 イノマタセイジ 男 2001/09/13 41
3 福島莉乃 フクシマリノ 女 1998/07/05 46
4 碓井桃歌 ウスイモモカ 女 2004/10/29 63
5 木田和島 キダワジマ 男 2006/11/01 60
行指向データベース
6 江田幸雄 エダサチオ 男 2004/11/04 55
© Opt, Inc. All Rights Reserved.
No 氏名 フリガナ 性別 生年月日 点数
1 板橋範久 イタバシノリヒサ 男 2001/08/19 94
2 猪俣清治 イノマタセイジ 男 2001/09/13 41
3 福島莉乃 フクシマリノ 女 1998/07/05 46
4 碓井桃歌 ウスイモモカ 女 2004/10/29 63
5 木田和島 キダワジマ 男 2006/11/01 60
行指向データベース
6 江田幸雄 エダサチオ 男 2004/11/04 55
© Opt, Inc. All Rights Reserved.
No 氏名 フリガナ 性別 生年月日 点数
1 板橋範久 イタバシノリヒサ 男 2001/08/19 94
2 猪俣清治 イノマタセイジ 男 2001/09/13 41
3 福島莉乃 フクシマリノ 女 1998/07/05 46
4 碓井桃歌 ウスイモモカ 女 2004/10/29 63
5 木田和島 キダワジマ 男 2006/11/01 60
列指向データベース
6 江田幸雄 エダサチオ 男 2004/11/04 55
© Opt, Inc. All Rights Reserved.
No 氏名 フリガナ 性別 生年月日 点数
1 板橋範久 イタバシノリヒサ 男 2001/08/19 94
2 猪俣清治 イノマタセイジ 男 2001/09/13 41
3 福島莉乃 フクシマリノ 女 1998/07/05 46
4 碓井桃歌 ウスイモモカ 女 2004/10/29 63
5 木田和島 キダワジマ 男 2006/11/01 60
列指向データベース
6 江田幸雄 エダサチオ 男 2004/11/04 55
© Opt, Inc. All Rights Reserved.
No 氏名 フリガナ 性別 生年月日 点数
1 板橋範久 イタバシノリヒサ 男 2001/08/19 94
2 猪俣清治 イノマタセイジ 男 2001/09/13 41
3 福島莉乃 フクシマリノ 女 1998/07/05 46
4 碓井桃歌 ウスイモモカ 女 2004/10/29 63
5 木田和島 キダワジマ 男 2006/11/01 60
列指向データベース
6
江田幸雄 エダサチオ 男 2004/11/04 55
© Opt, Inc. All Rights Reserved.
No 氏名 フリガナ 性別 生年月日 点数
1 板橋範久 イタバシノリヒサ 男 2001/08/19 94
2 猪俣清治 イノマタセイジ 男 2001/09/13 41
3 福島莉乃 フクシマリノ 女 1998/07/05 46
4 碓井桃歌 ウスイモモカ 女 2004/10/29 63
5 木田和島 キダワジマ 男 2006/11/01 60
列指向データベース
6
エダサチオ 男 2004/11/04 55
江田幸雄
© Opt, Inc. All Rights Reserved.
No 氏名 フリガナ 性別 生年月日 点数
1 板橋範久 イタバシノリヒサ 男 2001/08/19 94
2 猪俣清治 イノマタセイジ 男 2001/09/13 41
3 福島莉乃 フクシマリノ 女 1998/07/05 46
4 碓井桃歌 ウスイモモカ 女 2004/10/29 63
5 木田和島 キダワジマ 男 2006/11/01 60
列指向データベース
6
男 2004/11/04 55
江田幸雄 エダサチオ
© Opt, Inc. All Rights Reserved.
No 氏名 フリガナ 性別 生年月日 点数
1 板橋範久 イタバシノリヒサ 男 2001/08/19 94
2 猪俣清治 イノマタセイジ 男 2001/09/13 41
3 福島莉乃 フクシマリノ 女 1998/07/05 46
4 碓井桃歌 ウスイモモカ 女 2004/10/29 63
5 木田和島 キダワジマ 男 2006/11/01 60
列指向データベース
6
2004/11/04 55
江田幸雄 エダサチオ 男
© Opt, Inc. All Rights Reserved.
2004/11/04
No 氏名 フリガナ 性別 生年月日 点数
1 板橋範久 イタバシノリヒサ 男 2001/08/19 94
2 猪俣清治 イノマタセイジ 男 2001/09/13 41
3 福島莉乃 フクシマリノ 女 1998/07/05 46
4 碓井桃歌 ウスイモモカ 女 2004/10/29 63
5 木田和島 キダワジマ 男 2006/11/01 60
列指向データベース
6
55
江田幸雄 エダサチオ 男
© Opt, Inc. All Rights Reserved.
No 氏名 フリガナ 性別 生年月日 点数
1 板橋範久 イタバシノリヒサ 男 2001/08/19 94
2 猪俣清治 イノマタセイジ 男 2001/09/13 41
3 福島莉乃 フクシマリノ 女 1998/07/05 46
4 碓井桃歌 ウスイモモカ 女 2004/10/29 63
5 木田和島 キダワジマ 男 2006/11/01 60
列指向データベース
6 江田幸雄 エダサチオ 男 2004/11/04 55
© Opt, Inc. All Rights Reserved.
INSERTは
行指向の方が速い
© Opt, Inc. All Rights Reserved.
②
レコードを集計するとき
© Opt, Inc. All Rights Reserved.
性別ごとに
平均点を出したい
© Opt, Inc. All Rights Reserved.
SELECT 性別,AVG(点数)
FROM 学生テーブル
GROUP BY 性別
© Opt, Inc. All Rights Reserved.
No 氏名 フリガナ 性別 生年月日 点数
1 板橋範久 イタバシノリヒサ 男 2001/08/19 94
2 猪俣清治 イノマタセイジ 男 2001/09/13 41
3 福島莉乃 フクシマリノ 女 1998/07/05 46
4 碓井桃歌 ウスイモモカ 女 2004/10/29 63
5 木田和島 キダワジマ 男 2006/11/01 60
行指向データベース
© Opt, Inc. All Rights Reserved.
No 氏名 フリガナ 性別 生年月日 点数
1 板橋範久 イタバシノリヒサ 男 2001/08/19 94
2 猪俣清治 イノマタセイジ 男 2001/09/13 41
3 福島莉乃 フクシマリノ 女 1998/07/05 46
4 碓井桃歌 ウスイモモカ 女 2004/10/29 63
5 木田和島 キダワジマ 男 2006/11/01 60
行指向データベース
© Opt, Inc. All Rights Reserved.
No 氏名 フリガナ 性別 生年月日 点数
1 板橋範久 イタバシノリヒサ 男 2001/08/19 94
2 猪俣清治 イノマタセイジ 男 2001/09/13 41
3 福島莉乃 フクシマリノ 女 1998/07/05 46
4 碓井桃歌 ウスイモモカ 女 2004/10/29 63
5 木田和島 キダワジマ 男 2006/11/01 60
行指向データベース
全カラムを走査して
性別列と点数列を使う
© Opt, Inc. All Rights Reserved.
No 氏名 フリガナ 性別 生年月日 点数
1 板橋範久 イタバシノリヒサ 男 2001/08/19 94
2 猪俣清治 イノマタセイジ 男 2001/09/13 41
3 福島莉乃 フクシマリノ 女 1998/07/05 46
4 碓井桃歌 ウスイモモカ 女 2004/10/29 63
5 木田和島 キダワジマ 男 2006/11/01 60
列指向データベース
© Opt, Inc. All Rights Reserved.
性別 点数
男 94
男 41
女 46
女 63
男 60
列指向データベース
© Opt, Inc. All Rights Reserved.
性別 点数
男 94
男 41
女 46
女 63
男 60
列指向データベース
必要な列だけを走査
捜索するデータ量を削減
© Opt, Inc. All Rights Reserved.
集計は列指向の方が速い
© Opt, Inc. All Rights Reserved.
つまり…
行指向・列指向
どっちもよい!
© Opt, Inc. All Rights Reserved.
行指向データベース
● データの持ち方
○ データを行で扱う
● 例えば…
○ Oracle
○ MySQL
© Opt, Inc. All Rights Reserved.
列指向データベース
● データの持ち方
○ データを列で扱う
● 例えば…
○ Cassandra
○ Redshift
© Opt, Inc. All Rights Reserved.
列
行
トランザクション処理に強い
行単位で処理するUPDATE/INSERTが
速い
特定のカラムしか利用しない
SELECT/集計が得意
© Opt, Inc. All Rights Reserved.
各種データベースの特徴
© Opt, Inc. All Rights Reserved.
データベース
● Oracle
● AWS RDS
○ MySQL
○ PostgreSQL
● TreasureData
● Redshift
© Opt, Inc. All Rights Reserved.
データベース
● Oracle
● AWS RDS
○ MySQL
○ PostgreSQL
● TreasureData
● Redshift
オプト仙台では
これらのDBを活
用しています
© Opt, Inc. All Rights Reserved.
Oracle
● 有償のみ
● 行指向
● 分散処理
※デフォルト設定の場合
© Opt, Inc. All Rights Reserved.
Oracle
シェアNo.1
※出典:https://www.marineroad.com/staff-blog/17102.html
自動でチューニングしてくれるので、
チューニングなしでもそこそこのパ
フォーマンスが期待できる
© Opt, Inc. All Rights Reserved.
MySQL
● オープンソース 無料
● 行指向
● 分散処理
※デフォルト設定の場合
© Opt, Inc. All Rights Reserved.
MySQL
シェアNo.2
※出典:https://www.marineroad.com/staff-blog/17102.html
ユーザーが多くコミュニティが活発。
調べると初歩的なものからたくさん情
報が出てくる
© Opt, Inc. All Rights Reserved.
PostgreSQL
● オープンソース 無料
● 行指向
● 分散処理 
※デフォルト設定の場合
© Opt, Inc. All Rights Reserved.
PostgreSQL
シェアNo.4
※出典:https://www.marineroad.com/staff-blog/17102.html
PostGISと言う位置情報を扱う拡張機能
が有名。位置情報アプリに便利。
チューニング次第で高速化できる!
© Opt, Inc. All Rights Reserved.
TREASURE DATA
● 有償(機能制限版の無償あり)
○ 月額料金
● 列指向
● 分散処理 
● アーキテクチャはHadoop
※デフォルト設定の場合
© Opt, Inc. All Rights Reserved.
TREASURE DATA
トレジャーデータより提供されているクラウド上の
DMS(データマネジメントサービス)。
※オプトでは「トレジャーデータサービス by IDCF」を活用しています。
テーブル定義なしでデータの保存が可能。パーティ
ションのため時刻のカラムが必須
DELETE・更新はできない。
partial_delete:時刻カラムで期間指定削除は可
© Opt, Inc. All Rights Reserved.
Redshift
● 有償のみ
○ 従量課金
● 列指向
● 分散処理 
● アーキテクチャはActian Matrix
※デフォルト設定の場合
© Opt, Inc. All Rights Reserved.
Redshift
AWSで提供されているDWH構築向け
大規模データ解析システム。
スケーラブル、クラスターサイズ変更可。
Amazon S3との連携が便利。
COPYコマンドを利用し高速取り込みが可能。
※Amazon S3:Simple Storage Service
データ保存取得可能なオブジェクトストレージ
© Opt, Inc. All Rights Reserved.
比較
MySQL PostgeSQL TreasureData Redshift
アーキテ
クチャ
MySQL PostgreSQL Hadoop Actian
Matrix
指向 行 行 列 列
分散 ❌ ❌ ○ ○
料金 無償あり 無償あり 基本有償 有償のみ
※デフォルト設定の場合
© Opt, Inc. All Rights Reserved.
パフォーマンス比較
© Opt, Inc. All Rights Reserved.
データベース
● Oracle
● AWS RDS
○ MySQL
○ PostgreSQL
● TreasureData
● Redshift
オプト仙台では
これらのDBを活
用しています
なので…
© Opt, Inc. All Rights Reserved.
データベース
● Oracle
● AWS RDS
○ MySQL
○ PostgreSQL
● TreasureData
● Redshift
これらのDBのパ
フォーマンス検
証しました!
© Opt, Inc. All Rights Reserved.
データ偏り・カラムの数や型など
でパフォーマンスは大きく変わる
ので、数値は一例としてご覧くだ
さい。
© Opt, Inc. All Rights Reserved.
DB名 プラン CPU RAM (GiB)
MySQL db.r3.large 2 15.25
PostgreSQL db.r3.large 2 15.25
TreasureData プランS 4 --
Redshift dc1.large 2 15
比較環境
© Opt, Inc. All Rights Reserved.
検証データ量
DB名 1万件 100万件 1億件
TresureData 12M 1,243M 124,357M
Redshift 108M 206M 10,004M
PostgreSQL 6M 1,113M 207,497M
MySQL 16M 1,206M 115,307M
© Opt, Inc. All Rights Reserved.
検証SQL
SELECT SELECT date,COUNT(*),SUM(数値) FROM table GROUP BY date
SELECT
UNION
SELECT
SELECT date,COUNT(*),SUM(数値) FROM table GROUP BY date
UNION ALL
SELECT date,COUNT(*),SUM(数値) FROM table2 GROUP BY date
INSERT INSERT INTO table2 SELECT * FROM table
ADD
COLUMN
ALTER TABLE table ADD COLUMN additional VARCHAR(100)
© Opt, Inc. All Rights Reserved.
パフォーマンス比較
DB名 SELECT UNION INSERT ADD
COLUMN
1万 100万 1億 1万 100万 1億 1万 100万 1億 1億
MySQL 0.06s 1.5s 55.5
m
0.08s 2.7s 1.8h 3s 1.1m 2.2h 3.3h
PostgreSQL 0.06s 0.7s 1.2h 0.07s 0.9s 3.5h 0.1s 0.9s 6.2h 0.2s
TREASURE DATA 2s 2s 8s 2s 3s 11s 8s 2.5m 7.3h --
Redshift 0.2s 0.3s 0.4s 0.3s 0.4s 0.7s 4.5s 17.75
s
2.5m 2s
3回試行平均値
© Opt, Inc. All Rights Reserved.
パフォーマンス比較
DB名 SELECT
1万 100万 1億
MySQL 0.06s 1.5s 55.5m
PostgreSQL 0.06s 0.7s 1.2h
TREASURE DATA 2s 2s 8s
Redshift 0.2s 0.3s 0.4s
© Opt, Inc. All Rights Reserved.
パフォーマンス比較
DB名 SELECT
1万 100万 1億
MySQL 0.06s 1.5s 55.5m
PostgreSQL 0.06s 0.7s 1.2h
TREASURE DATA 2s 2s 8s
Redshift 0.2s 0.3s 0.4s
集計クエリだけど
列指向のRedshiftより
行指向のPostgreSQL
が速い
© Opt, Inc. All Rights Reserved.
パフォーマンス比較
DB名 SELECT
1万 100万 1億
MySQL 0.06s 1.5s 55.5m
PostgreSQL 0.06s 0.7s 1.2h
TREASURE DATA 2s 2s 8s
Redshift 0.2s 0.3s 0.4s
Redshiftはクエリを
コンパイルするので
オーバーヘッドがある
© Opt, Inc. All Rights Reserved.
パフォーマンス比較
DB名 SELECT
1万 100万 1億
MySQL 0.06s 1.5s 55.5m
PostgreSQL 0.06s 0.7s 1.2h
TREASURE DATA 2s 2s 8s
Redshift 0.2s 0.3s 0.4s
データ量の増加で爆
発的に処理時間が増
えている!
© Opt, Inc. All Rights Reserved.
パフォーマンス比較
DB名 SELECT
1万 100万 1億
MySQL 0.06s 1.5s 55.5m
PostgreSQL 0.06s 0.7s 1.2h
TREASURE DATA 2s 2s 8s
Redshift 0.2s 0.3s 0.4sデータ量:10,000倍
処理速度:72,857倍
© Opt, Inc. All Rights Reserved.
パフォーマンス比較
DB名 SELECT
1万 100万 1億
MySQL 0.06s 1.5s 55.5m
PostgreSQL 0.06s 0.7s 1.2h
TREASURE DATA 2s 2s 8s
Redshift 0.2s 0.3s 0.4s
Redshiftはデータ量
に対して速度劣化が
少ない
© Opt, Inc. All Rights Reserved.
パフォーマンス比較
DB名 SELECT
1万 100万 1億
MySQL 0.06s 1.5s 55.5m
PostgreSQL 0.06s 0.7s 1.2h
TREASURE DATA 2s 2s 8s
Redshift 0.2s 0.3s 0.4s
データ量:10,000倍
処理速度:2倍
© Opt, Inc. All Rights Reserved.
パフォーマンス比較
DB名 UNION
1万 100万 1億
MySQL 0.08s 2.7s 1.8h
PostgreSQL 0.07s 0.9s 3.5h
TREASURE DATA 2s 3s 11s
Redshift 0.3s 0.4s 0.7s
3回試行平均値
© Opt, Inc. All Rights Reserved.
パフォーマンス比較
DB名 UNION
1万 100万 1億
MySQL 0.08s 2.7s 1.8h
PostgreSQL 0.07s 0.9s 3.5h
TREASURE
DATA
2s 3s 11s
Redshift 0.3s 0.4s 0.7s
処理時間の増加はよ
り顕著
© Opt, Inc. All Rights Reserved.
パフォーマンス比較
DB名 INSERT
1万 100万 1億
MySQL 3s 1.1m 2.2h
PostgreSQL 0.1s 0.9s 6.2h
TREASURE DATA 8s 2.5m 7.3h
Redshift 4.5s 17.75s 2.5m
3回試行平均値
© Opt, Inc. All Rights Reserved.
パフォーマンス比較
DB名 INSERT
1万 100万 1億
MySQL 3s 1.1m 2.2h
PostgreSQL 0.1s 0.9s 6.2h
TREASURE DATA 8s 2.5m 7.3h
Redshift 4.5s 17.75s 2.5m
3回試行平均値
Redshiftでも
それなりの
処理時間が
かかっている
© Opt, Inc. All Rights Reserved.
パフォーマンス比較
DB名 ADD COLUMN
1億
MySQL 3.3h
PostgreSQL 0.2s
TREASURE DATA --
Redshift 2s
3回試行平均値
© Opt, Inc. All Rights Reserved.
パフォーマンス比較
DB名 ADD COLUMN
1億
MySQL 3.3h
PostgreSQL 0.2s
TREASURE DATA --
Redshift 2s
3回試行平均値
MySQLは
カラム追加は遅い
© Opt, Inc. All Rights Reserved.
パフォーマンス比較
DB名 ADD COLUMN
1億
MySQL 3.3h
PostgreSQL 0.2s
TREASURE DATA --
Redshift 2s
3回試行平均値
PostgreSQLは
デフォルト値を
設定していない
場合、テーブル
定義への追加だ
けなので速い
© Opt, Inc. All Rights Reserved.
パフォーマンス比較
DB名 ADD COLUMN
1億
MySQL 3.3h
PostgreSQL 0.2s
TREASURE DATA --
Redshift 2s
3回試行平均値
Redshiftも
PostgreSQLと
同様に速い。
がやはりコンパ
イルのオーバー
ヘッドがある。
© Opt, Inc. All Rights Reserved.
まとめ
今回の検証では、
以上の結果が得られました
© Opt, Inc. All Rights Reserved.
まとめ
そもそもこのように大きなデータを
一つのテーブルに入れて集計するのは、
RDBは適切でないという前提があります
決してMySQLやPostgreSQLの
性能が悪い訳ではありません
© Opt, Inc. All Rights Reserved.
まとめ
Redshiftは大きなデータの
単一テーブルを扱うことが得意です。
このような適性からオプト仙台では、
Redshiftを採用しています。
© Opt, Inc. All Rights Reserved.
アプリケーションによって
適切なDBを!
© Opt, Inc. All Rights Reserved.
ご清聴
ありがとうございました

Contenu connexe

Tendances

イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)Yoshitaka Kawashima
 
PostgreSQLによるデータ分析ことはじめ
PostgreSQLによるデータ分析ことはじめPostgreSQLによるデータ分析ことはじめ
PostgreSQLによるデータ分析ことはじめOhyama Masanori
 
Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法についてYuji Otani
 
SQL大量発行処理をいかにして高速化するか
SQL大量発行処理をいかにして高速化するかSQL大量発行処理をいかにして高速化するか
SQL大量発行処理をいかにして高速化するかShogo Wakayama
 
分散システムについて語らせてくれ
分散システムについて語らせてくれ分散システムについて語らせてくれ
分散システムについて語らせてくれKumazaki Hiroki
 
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理NTT DATA Technology & Innovation
 
ログ解析を支えるNoSQLの技術
ログ解析を支えるNoSQLの技術ログ解析を支えるNoSQLの技術
ログ解析を支えるNoSQLの技術Drecom Co., Ltd.
 
PostgreSQLでスケールアウト
PostgreSQLでスケールアウトPostgreSQLでスケールアウト
PostgreSQLでスケールアウトMasahiko Sawada
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Kohei Tokunaga
 
Apache Avro vs Protocol Buffers
Apache Avro vs Protocol BuffersApache Avro vs Protocol Buffers
Apache Avro vs Protocol BuffersSeiya Mizuno
 
Fluentdのお勧めシステム構成パターン
Fluentdのお勧めシステム構成パターンFluentdのお勧めシステム構成パターン
Fluentdのお勧めシステム構成パターンKentaro Yoshida
 
Elasticsearchを使うときの注意点 公開用スライド
Elasticsearchを使うときの注意点 公開用スライドElasticsearchを使うときの注意点 公開用スライド
Elasticsearchを使うときの注意点 公開用スライド崇介 藤井
 
イミュータブルデータモデルの極意
イミュータブルデータモデルの極意イミュータブルデータモデルの極意
イミュータブルデータモデルの極意Yoshitaka Kawashima
 
やってはいけない空振りDelete
やってはいけない空振りDeleteやってはいけない空振りDelete
やってはいけない空振りDeleteYu Yamada
 
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)NTT DATA Technology & Innovation
 
Apache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォームApache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォームKouhei Sutou
 
ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方Yoshiyasu SAEKI
 
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)NTT DATA Technology & Innovation
 

Tendances (20)

イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)
 
PostgreSQLによるデータ分析ことはじめ
PostgreSQLによるデータ分析ことはじめPostgreSQLによるデータ分析ことはじめ
PostgreSQLによるデータ分析ことはじめ
 
Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法について
 
SQL大量発行処理をいかにして高速化するか
SQL大量発行処理をいかにして高速化するかSQL大量発行処理をいかにして高速化するか
SQL大量発行処理をいかにして高速化するか
 
分散システムについて語らせてくれ
分散システムについて語らせてくれ分散システムについて語らせてくれ
分散システムについて語らせてくれ
 
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
 
ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開
 
ログ解析を支えるNoSQLの技術
ログ解析を支えるNoSQLの技術ログ解析を支えるNoSQLの技術
ログ解析を支えるNoSQLの技術
 
PostgreSQLでスケールアウト
PostgreSQLでスケールアウトPostgreSQLでスケールアウト
PostgreSQLでスケールアウト
 
Vacuum徹底解説
Vacuum徹底解説Vacuum徹底解説
Vacuum徹底解説
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
Apache Avro vs Protocol Buffers
Apache Avro vs Protocol BuffersApache Avro vs Protocol Buffers
Apache Avro vs Protocol Buffers
 
Fluentdのお勧めシステム構成パターン
Fluentdのお勧めシステム構成パターンFluentdのお勧めシステム構成パターン
Fluentdのお勧めシステム構成パターン
 
Elasticsearchを使うときの注意点 公開用スライド
Elasticsearchを使うときの注意点 公開用スライドElasticsearchを使うときの注意点 公開用スライド
Elasticsearchを使うときの注意点 公開用スライド
 
イミュータブルデータモデルの極意
イミュータブルデータモデルの極意イミュータブルデータモデルの極意
イミュータブルデータモデルの極意
 
やってはいけない空振りDelete
やってはいけない空振りDeleteやってはいけない空振りDelete
やってはいけない空振りDelete
 
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
 
Apache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォームApache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォーム
 
ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方
 
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
 

Plus de 株式会社オプト 仙台ラボラトリ

フレームワークも使っていないWebアプリをLaravel+PWAでモバイルアプリっぽくしてみちゃう
フレームワークも使っていないWebアプリをLaravel+PWAでモバイルアプリっぽくしてみちゃうフレームワークも使っていないWebアプリをLaravel+PWAでモバイルアプリっぽくしてみちゃう
フレームワークも使っていないWebアプリをLaravel+PWAでモバイルアプリっぽくしてみちゃう株式会社オプト 仙台ラボラトリ
 
RPA(ロボティック・プロセ ス・オートメーション) 仮想労働者の雇い方
RPA(ロボティック・プロセ ス・オートメーション) 仮想労働者の雇い方RPA(ロボティック・プロセ ス・オートメーション) 仮想労働者の雇い方
RPA(ロボティック・プロセ ス・オートメーション) 仮想労働者の雇い方株式会社オプト 仙台ラボラトリ
 

Plus de 株式会社オプト 仙台ラボラトリ (11)

クラウド入門(AWS編)
クラウド入門(AWS編)クラウド入門(AWS編)
クラウド入門(AWS編)
 
失敗から学ぶAWSの監視
失敗から学ぶAWSの監視失敗から学ぶAWSの監視
失敗から学ぶAWSの監視
 
ログについて改めて考えてみた
ログについて改めて考えてみたログについて改めて考えてみた
ログについて改めて考えてみた
 
フレームワークも使っていないWebアプリをLaravel+PWAでモバイルアプリっぽくしてみちゃう
フレームワークも使っていないWebアプリをLaravel+PWAでモバイルアプリっぽくしてみちゃうフレームワークも使っていないWebアプリをLaravel+PWAでモバイルアプリっぽくしてみちゃう
フレームワークも使っていないWebアプリをLaravel+PWAでモバイルアプリっぽくしてみちゃう
 
RPAって何、どんなことできるの
RPAって何、どんなことできるのRPAって何、どんなことできるの
RPAって何、どんなことできるの
 
業務の自動化をはじめよう!!
業務の自動化をはじめよう!!業務の自動化をはじめよう!!
業務の自動化をはじめよう!!
 
RPA(ロボティック・プロセ ス・オートメーション) 仮想労働者の雇い方
RPA(ロボティック・プロセ ス・オートメーション) 仮想労働者の雇い方RPA(ロボティック・プロセ ス・オートメーション) 仮想労働者の雇い方
RPA(ロボティック・プロセ ス・オートメーション) 仮想労働者の雇い方
 
データマート対応した話
データマート対応した話データマート対応した話
データマート対応した話
 
ビッグデータ・データマートとは
ビッグデータ・データマートとはビッグデータ・データマートとは
ビッグデータ・データマートとは
 
ビッグデータとデータマート
ビッグデータとデータマートビッグデータとデータマート
ビッグデータとデータマート
 
一歩前に進める Web開発のスパイス(仙台Geek★Night #1)
一歩前に進めるWeb開発のスパイス(仙台Geek★Night #1)一歩前に進めるWeb開発のスパイス(仙台Geek★Night #1)
一歩前に進める Web開発のスパイス(仙台Geek★Night #1)
 

各種データベースの特徴とパフォーマンス比較

  • 1. © Opt, Inc. All Rights Reserved. 各種データベースの特徴と パフォーマンス比較 株式会社オプト 仙台テクノロジー開発部 第2回タガヤス登壇資料 
  • 2. © Opt, Inc. All Rights Reserved. 自己紹介 名前:堀内依子 所属:株式会社オプト  仙台テクノロジー開発部 入社:2016年 一番好きなお土産: 南部せんべい
  • 3. © Opt, Inc. All Rights Reserved. データベースって 色々ありますよね
  • 4. © Opt, Inc. All Rights Reserved. データベース ● Oracle ● AWS RDS ○ MySQL ○ PostgreSQL ● TreasureData ● Redshift
  • 5. © Opt, Inc. All Rights Reserved. オプト仙台ラボでは 目的別大量データ を取り扱う
  • 6. © Opt, Inc. All Rights Reserved. 特定のレコードを取り出す レコード集計をする
  • 7. © Opt, Inc. All Rights Reserved. DWH(データウェアハウス)向 けのデータストア & 列指向 Redshiftを採用しました
  • 8. © Opt, Inc. All Rights Reserved. Redshift AWS(Amazonのクラウドサービス) で提供されているDWH構築向け大規模 データ解析システム
  • 9. © Opt, Inc. All Rights Reserved. 列指向のデータベース ってなに?
  • 10. © Opt, Inc. All Rights Reserved. 行指向のデータベース 列指向のデータベース
  • 11. © Opt, Inc. All Rights Reserved. 行指向データベース ● データの持ち方 ○ データを行で扱う
  • 12. © Opt, Inc. All Rights Reserved. 行指向データベース ● データの持ち方 ○ データを行で扱う ● 例えば… ○ Oracle ○ MySQL
  • 13. © Opt, Inc. All Rights Reserved. 列指向データベース カラム型データベース カラムストア型データベース カラムナデータベース ● データの持ち方 ○ データを列で扱う
  • 14. © Opt, Inc. All Rights Reserved. 列指向データベース ● データの持ち方 ○ データを列で扱う ● 例えば… ○ Cassandra ○ Redshift カラム型データベース カラムストア型データベース カラムナデータベース
  • 15. © Opt, Inc. All Rights Reserved. でも、つまり… 行指向・列指向 どっちがいいの?
  • 16. © Opt, Inc. All Rights Reserved. 学生のテストの点数テーブル No 氏名 フリガナ 性別 生年月日 点数 1 板橋範久 イタバシノリヒサ 男 2001/08/19 94 2 猪俣清治 イノマタセイジ 男 2001/09/13 41 3 福島莉乃 フクシマリノ 女 1998/07/05 46 4 碓井桃歌 ウスイモモカ 女 2004/10/29 63 5 木田和島 キダワジマ 男 2006/11/01 60
  • 17. © Opt, Inc. All Rights Reserved. No 氏名 フリガナ 性別 生年月日 点数 1 板橋範久 イタバシノリヒサ 男 2001/08/19 94 2 猪俣清治 イノマタセイジ 男 2001/09/13 41 3 福島莉乃 フクシマリノ 女 1998/07/05 46 4 碓井桃歌 ウスイモモカ 女 2004/10/29 63 5 木田和島 キダワジマ 男 2006/11/01 60 行指向データベース
  • 18. © Opt, Inc. All Rights Reserved. No 氏名 フリガナ 性別 生年月日 点数 1 板橋範久 イタバシノリヒサ 男 2001/08/19 94 2 猪俣清治 イノマタセイジ 男 2001/09/13 41 3 福島莉乃 フクシマリノ 女 1998/07/05 46 4 碓井桃歌 ウスイモモカ 女 2004/10/29 63 5 木田和島 キダワジマ 男 2006/11/01 60 行指向データベース データの塊は行!
  • 19. © Opt, Inc. All Rights Reserved. No 氏名 フリガナ 性別 生年月日 点数 1 板橋範久 イタバシノリヒサ 男 2001/08/19 94 2 猪俣清治 イノマタセイジ 男 2001/09/13 41 3 福島莉乃 フクシマリノ 女 1998/07/05 46 4 碓井桃歌 ウスイモモカ 女 2004/10/29 63 5 木田和島 キダワジマ 男 2006/11/01 60 列指向データベース
  • 20. © Opt, Inc. All Rights Reserved. No 氏名 フリガナ 性別 生年月日 点数 1 板橋範久 イタバシノリヒサ 男 2001/08/19 94 2 猪俣清治 イノマタセイジ 男 2001/09/13 41 3 福島莉乃 フクシマリノ 女 1998/07/05 46 4 碓井桃歌 ウスイモモカ 女 2004/10/29 63 5 木田和島 キダワジマ 男 2006/11/01 60 列指向データベース データの塊は列!
  • 21. © Opt, Inc. All Rights Reserved. ① レコードを追加するとき
  • 22. © Opt, Inc. All Rights Reserved. 学生を一人増やしたい
  • 23. © Opt, Inc. All Rights Reserved. INSERT INTO 学生テーブル VALUES (No,氏名,フリガナ,性 別,生年月日,点数);
  • 24. © Opt, Inc. All Rights Reserved. No 氏名 フリガナ 性別 生年月日 点数 1 板橋範久 イタバシノリヒサ 男 2001/08/19 94 2 猪俣清治 イノマタセイジ 男 2001/09/13 41 3 福島莉乃 フクシマリノ 女 1998/07/05 46 4 碓井桃歌 ウスイモモカ 女 2004/10/29 63 5 木田和島 キダワジマ 男 2006/11/01 60 行指向データベース 6 江田幸雄 エダサチオ 男 2004/11/04 55
  • 25. © Opt, Inc. All Rights Reserved. No 氏名 フリガナ 性別 生年月日 点数 1 板橋範久 イタバシノリヒサ 男 2001/08/19 94 2 猪俣清治 イノマタセイジ 男 2001/09/13 41 3 福島莉乃 フクシマリノ 女 1998/07/05 46 4 碓井桃歌 ウスイモモカ 女 2004/10/29 63 5 木田和島 キダワジマ 男 2006/11/01 60 行指向データベース 6 江田幸雄 エダサチオ 男 2004/11/04 55
  • 26. © Opt, Inc. All Rights Reserved. No 氏名 フリガナ 性別 生年月日 点数 1 板橋範久 イタバシノリヒサ 男 2001/08/19 94 2 猪俣清治 イノマタセイジ 男 2001/09/13 41 3 福島莉乃 フクシマリノ 女 1998/07/05 46 4 碓井桃歌 ウスイモモカ 女 2004/10/29 63 5 木田和島 キダワジマ 男 2006/11/01 60 行指向データベース 6 江田幸雄 エダサチオ 男 2004/11/04 55
  • 27. © Opt, Inc. All Rights Reserved. No 氏名 フリガナ 性別 生年月日 点数 1 板橋範久 イタバシノリヒサ 男 2001/08/19 94 2 猪俣清治 イノマタセイジ 男 2001/09/13 41 3 福島莉乃 フクシマリノ 女 1998/07/05 46 4 碓井桃歌 ウスイモモカ 女 2004/10/29 63 5 木田和島 キダワジマ 男 2006/11/01 60 列指向データベース 6 江田幸雄 エダサチオ 男 2004/11/04 55
  • 28. © Opt, Inc. All Rights Reserved. No 氏名 フリガナ 性別 生年月日 点数 1 板橋範久 イタバシノリヒサ 男 2001/08/19 94 2 猪俣清治 イノマタセイジ 男 2001/09/13 41 3 福島莉乃 フクシマリノ 女 1998/07/05 46 4 碓井桃歌 ウスイモモカ 女 2004/10/29 63 5 木田和島 キダワジマ 男 2006/11/01 60 列指向データベース 6 江田幸雄 エダサチオ 男 2004/11/04 55
  • 29. © Opt, Inc. All Rights Reserved. No 氏名 フリガナ 性別 生年月日 点数 1 板橋範久 イタバシノリヒサ 男 2001/08/19 94 2 猪俣清治 イノマタセイジ 男 2001/09/13 41 3 福島莉乃 フクシマリノ 女 1998/07/05 46 4 碓井桃歌 ウスイモモカ 女 2004/10/29 63 5 木田和島 キダワジマ 男 2006/11/01 60 列指向データベース 6 江田幸雄 エダサチオ 男 2004/11/04 55
  • 30. © Opt, Inc. All Rights Reserved. No 氏名 フリガナ 性別 生年月日 点数 1 板橋範久 イタバシノリヒサ 男 2001/08/19 94 2 猪俣清治 イノマタセイジ 男 2001/09/13 41 3 福島莉乃 フクシマリノ 女 1998/07/05 46 4 碓井桃歌 ウスイモモカ 女 2004/10/29 63 5 木田和島 キダワジマ 男 2006/11/01 60 列指向データベース 6 エダサチオ 男 2004/11/04 55 江田幸雄
  • 31. © Opt, Inc. All Rights Reserved. No 氏名 フリガナ 性別 生年月日 点数 1 板橋範久 イタバシノリヒサ 男 2001/08/19 94 2 猪俣清治 イノマタセイジ 男 2001/09/13 41 3 福島莉乃 フクシマリノ 女 1998/07/05 46 4 碓井桃歌 ウスイモモカ 女 2004/10/29 63 5 木田和島 キダワジマ 男 2006/11/01 60 列指向データベース 6 男 2004/11/04 55 江田幸雄 エダサチオ
  • 32. © Opt, Inc. All Rights Reserved. No 氏名 フリガナ 性別 生年月日 点数 1 板橋範久 イタバシノリヒサ 男 2001/08/19 94 2 猪俣清治 イノマタセイジ 男 2001/09/13 41 3 福島莉乃 フクシマリノ 女 1998/07/05 46 4 碓井桃歌 ウスイモモカ 女 2004/10/29 63 5 木田和島 キダワジマ 男 2006/11/01 60 列指向データベース 6 2004/11/04 55 江田幸雄 エダサチオ 男
  • 33. © Opt, Inc. All Rights Reserved. 2004/11/04 No 氏名 フリガナ 性別 生年月日 点数 1 板橋範久 イタバシノリヒサ 男 2001/08/19 94 2 猪俣清治 イノマタセイジ 男 2001/09/13 41 3 福島莉乃 フクシマリノ 女 1998/07/05 46 4 碓井桃歌 ウスイモモカ 女 2004/10/29 63 5 木田和島 キダワジマ 男 2006/11/01 60 列指向データベース 6 55 江田幸雄 エダサチオ 男
  • 34. © Opt, Inc. All Rights Reserved. No 氏名 フリガナ 性別 生年月日 点数 1 板橋範久 イタバシノリヒサ 男 2001/08/19 94 2 猪俣清治 イノマタセイジ 男 2001/09/13 41 3 福島莉乃 フクシマリノ 女 1998/07/05 46 4 碓井桃歌 ウスイモモカ 女 2004/10/29 63 5 木田和島 キダワジマ 男 2006/11/01 60 列指向データベース 6 江田幸雄 エダサチオ 男 2004/11/04 55
  • 35. © Opt, Inc. All Rights Reserved. INSERTは 行指向の方が速い
  • 36. © Opt, Inc. All Rights Reserved. ② レコードを集計するとき
  • 37. © Opt, Inc. All Rights Reserved. 性別ごとに 平均点を出したい
  • 38. © Opt, Inc. All Rights Reserved. SELECT 性別,AVG(点数) FROM 学生テーブル GROUP BY 性別
  • 39. © Opt, Inc. All Rights Reserved. No 氏名 フリガナ 性別 生年月日 点数 1 板橋範久 イタバシノリヒサ 男 2001/08/19 94 2 猪俣清治 イノマタセイジ 男 2001/09/13 41 3 福島莉乃 フクシマリノ 女 1998/07/05 46 4 碓井桃歌 ウスイモモカ 女 2004/10/29 63 5 木田和島 キダワジマ 男 2006/11/01 60 行指向データベース
  • 40. © Opt, Inc. All Rights Reserved. No 氏名 フリガナ 性別 生年月日 点数 1 板橋範久 イタバシノリヒサ 男 2001/08/19 94 2 猪俣清治 イノマタセイジ 男 2001/09/13 41 3 福島莉乃 フクシマリノ 女 1998/07/05 46 4 碓井桃歌 ウスイモモカ 女 2004/10/29 63 5 木田和島 キダワジマ 男 2006/11/01 60 行指向データベース
  • 41. © Opt, Inc. All Rights Reserved. No 氏名 フリガナ 性別 生年月日 点数 1 板橋範久 イタバシノリヒサ 男 2001/08/19 94 2 猪俣清治 イノマタセイジ 男 2001/09/13 41 3 福島莉乃 フクシマリノ 女 1998/07/05 46 4 碓井桃歌 ウスイモモカ 女 2004/10/29 63 5 木田和島 キダワジマ 男 2006/11/01 60 行指向データベース 全カラムを走査して 性別列と点数列を使う
  • 42. © Opt, Inc. All Rights Reserved. No 氏名 フリガナ 性別 生年月日 点数 1 板橋範久 イタバシノリヒサ 男 2001/08/19 94 2 猪俣清治 イノマタセイジ 男 2001/09/13 41 3 福島莉乃 フクシマリノ 女 1998/07/05 46 4 碓井桃歌 ウスイモモカ 女 2004/10/29 63 5 木田和島 キダワジマ 男 2006/11/01 60 列指向データベース
  • 43. © Opt, Inc. All Rights Reserved. 性別 点数 男 94 男 41 女 46 女 63 男 60 列指向データベース
  • 44. © Opt, Inc. All Rights Reserved. 性別 点数 男 94 男 41 女 46 女 63 男 60 列指向データベース 必要な列だけを走査 捜索するデータ量を削減
  • 45. © Opt, Inc. All Rights Reserved. 集計は列指向の方が速い
  • 46. © Opt, Inc. All Rights Reserved. つまり… 行指向・列指向 どっちもよい!
  • 47. © Opt, Inc. All Rights Reserved. 行指向データベース ● データの持ち方 ○ データを行で扱う ● 例えば… ○ Oracle ○ MySQL
  • 48. © Opt, Inc. All Rights Reserved. 列指向データベース ● データの持ち方 ○ データを列で扱う ● 例えば… ○ Cassandra ○ Redshift
  • 49. © Opt, Inc. All Rights Reserved. 列 行 トランザクション処理に強い 行単位で処理するUPDATE/INSERTが 速い 特定のカラムしか利用しない SELECT/集計が得意
  • 50. © Opt, Inc. All Rights Reserved. 各種データベースの特徴
  • 51. © Opt, Inc. All Rights Reserved. データベース ● Oracle ● AWS RDS ○ MySQL ○ PostgreSQL ● TreasureData ● Redshift
  • 52. © Opt, Inc. All Rights Reserved. データベース ● Oracle ● AWS RDS ○ MySQL ○ PostgreSQL ● TreasureData ● Redshift オプト仙台では これらのDBを活 用しています
  • 53. © Opt, Inc. All Rights Reserved. Oracle ● 有償のみ ● 行指向 ● 分散処理 ※デフォルト設定の場合
  • 54. © Opt, Inc. All Rights Reserved. Oracle シェアNo.1 ※出典:https://www.marineroad.com/staff-blog/17102.html 自動でチューニングしてくれるので、 チューニングなしでもそこそこのパ フォーマンスが期待できる
  • 55. © Opt, Inc. All Rights Reserved. MySQL ● オープンソース 無料 ● 行指向 ● 分散処理 ※デフォルト設定の場合
  • 56. © Opt, Inc. All Rights Reserved. MySQL シェアNo.2 ※出典:https://www.marineroad.com/staff-blog/17102.html ユーザーが多くコミュニティが活発。 調べると初歩的なものからたくさん情 報が出てくる
  • 57. © Opt, Inc. All Rights Reserved. PostgreSQL ● オープンソース 無料 ● 行指向 ● 分散処理  ※デフォルト設定の場合
  • 58. © Opt, Inc. All Rights Reserved. PostgreSQL シェアNo.4 ※出典:https://www.marineroad.com/staff-blog/17102.html PostGISと言う位置情報を扱う拡張機能 が有名。位置情報アプリに便利。 チューニング次第で高速化できる!
  • 59. © Opt, Inc. All Rights Reserved. TREASURE DATA ● 有償(機能制限版の無償あり) ○ 月額料金 ● 列指向 ● 分散処理  ● アーキテクチャはHadoop ※デフォルト設定の場合
  • 60. © Opt, Inc. All Rights Reserved. TREASURE DATA トレジャーデータより提供されているクラウド上の DMS(データマネジメントサービス)。 ※オプトでは「トレジャーデータサービス by IDCF」を活用しています。 テーブル定義なしでデータの保存が可能。パーティ ションのため時刻のカラムが必須 DELETE・更新はできない。 partial_delete:時刻カラムで期間指定削除は可
  • 61. © Opt, Inc. All Rights Reserved. Redshift ● 有償のみ ○ 従量課金 ● 列指向 ● 分散処理  ● アーキテクチャはActian Matrix ※デフォルト設定の場合
  • 62. © Opt, Inc. All Rights Reserved. Redshift AWSで提供されているDWH構築向け 大規模データ解析システム。 スケーラブル、クラスターサイズ変更可。 Amazon S3との連携が便利。 COPYコマンドを利用し高速取り込みが可能。 ※Amazon S3:Simple Storage Service データ保存取得可能なオブジェクトストレージ
  • 63. © Opt, Inc. All Rights Reserved. 比較 MySQL PostgeSQL TreasureData Redshift アーキテ クチャ MySQL PostgreSQL Hadoop Actian Matrix 指向 行 行 列 列 分散 ❌ ❌ ○ ○ 料金 無償あり 無償あり 基本有償 有償のみ ※デフォルト設定の場合
  • 64. © Opt, Inc. All Rights Reserved. パフォーマンス比較
  • 65. © Opt, Inc. All Rights Reserved. データベース ● Oracle ● AWS RDS ○ MySQL ○ PostgreSQL ● TreasureData ● Redshift オプト仙台では これらのDBを活 用しています なので…
  • 66. © Opt, Inc. All Rights Reserved. データベース ● Oracle ● AWS RDS ○ MySQL ○ PostgreSQL ● TreasureData ● Redshift これらのDBのパ フォーマンス検 証しました!
  • 67. © Opt, Inc. All Rights Reserved. データ偏り・カラムの数や型など でパフォーマンスは大きく変わる ので、数値は一例としてご覧くだ さい。
  • 68. © Opt, Inc. All Rights Reserved. DB名 プラン CPU RAM (GiB) MySQL db.r3.large 2 15.25 PostgreSQL db.r3.large 2 15.25 TreasureData プランS 4 -- Redshift dc1.large 2 15 比較環境
  • 69. © Opt, Inc. All Rights Reserved. 検証データ量 DB名 1万件 100万件 1億件 TresureData 12M 1,243M 124,357M Redshift 108M 206M 10,004M PostgreSQL 6M 1,113M 207,497M MySQL 16M 1,206M 115,307M
  • 70. © Opt, Inc. All Rights Reserved. 検証SQL SELECT SELECT date,COUNT(*),SUM(数値) FROM table GROUP BY date SELECT UNION SELECT SELECT date,COUNT(*),SUM(数値) FROM table GROUP BY date UNION ALL SELECT date,COUNT(*),SUM(数値) FROM table2 GROUP BY date INSERT INSERT INTO table2 SELECT * FROM table ADD COLUMN ALTER TABLE table ADD COLUMN additional VARCHAR(100)
  • 71. © Opt, Inc. All Rights Reserved. パフォーマンス比較 DB名 SELECT UNION INSERT ADD COLUMN 1万 100万 1億 1万 100万 1億 1万 100万 1億 1億 MySQL 0.06s 1.5s 55.5 m 0.08s 2.7s 1.8h 3s 1.1m 2.2h 3.3h PostgreSQL 0.06s 0.7s 1.2h 0.07s 0.9s 3.5h 0.1s 0.9s 6.2h 0.2s TREASURE DATA 2s 2s 8s 2s 3s 11s 8s 2.5m 7.3h -- Redshift 0.2s 0.3s 0.4s 0.3s 0.4s 0.7s 4.5s 17.75 s 2.5m 2s 3回試行平均値
  • 72. © Opt, Inc. All Rights Reserved. パフォーマンス比較 DB名 SELECT 1万 100万 1億 MySQL 0.06s 1.5s 55.5m PostgreSQL 0.06s 0.7s 1.2h TREASURE DATA 2s 2s 8s Redshift 0.2s 0.3s 0.4s
  • 73. © Opt, Inc. All Rights Reserved. パフォーマンス比較 DB名 SELECT 1万 100万 1億 MySQL 0.06s 1.5s 55.5m PostgreSQL 0.06s 0.7s 1.2h TREASURE DATA 2s 2s 8s Redshift 0.2s 0.3s 0.4s 集計クエリだけど 列指向のRedshiftより 行指向のPostgreSQL が速い
  • 74. © Opt, Inc. All Rights Reserved. パフォーマンス比較 DB名 SELECT 1万 100万 1億 MySQL 0.06s 1.5s 55.5m PostgreSQL 0.06s 0.7s 1.2h TREASURE DATA 2s 2s 8s Redshift 0.2s 0.3s 0.4s Redshiftはクエリを コンパイルするので オーバーヘッドがある
  • 75. © Opt, Inc. All Rights Reserved. パフォーマンス比較 DB名 SELECT 1万 100万 1億 MySQL 0.06s 1.5s 55.5m PostgreSQL 0.06s 0.7s 1.2h TREASURE DATA 2s 2s 8s Redshift 0.2s 0.3s 0.4s データ量の増加で爆 発的に処理時間が増 えている!
  • 76. © Opt, Inc. All Rights Reserved. パフォーマンス比較 DB名 SELECT 1万 100万 1億 MySQL 0.06s 1.5s 55.5m PostgreSQL 0.06s 0.7s 1.2h TREASURE DATA 2s 2s 8s Redshift 0.2s 0.3s 0.4sデータ量:10,000倍 処理速度:72,857倍
  • 77. © Opt, Inc. All Rights Reserved. パフォーマンス比較 DB名 SELECT 1万 100万 1億 MySQL 0.06s 1.5s 55.5m PostgreSQL 0.06s 0.7s 1.2h TREASURE DATA 2s 2s 8s Redshift 0.2s 0.3s 0.4s Redshiftはデータ量 に対して速度劣化が 少ない
  • 78. © Opt, Inc. All Rights Reserved. パフォーマンス比較 DB名 SELECT 1万 100万 1億 MySQL 0.06s 1.5s 55.5m PostgreSQL 0.06s 0.7s 1.2h TREASURE DATA 2s 2s 8s Redshift 0.2s 0.3s 0.4s データ量:10,000倍 処理速度:2倍
  • 79. © Opt, Inc. All Rights Reserved. パフォーマンス比較 DB名 UNION 1万 100万 1億 MySQL 0.08s 2.7s 1.8h PostgreSQL 0.07s 0.9s 3.5h TREASURE DATA 2s 3s 11s Redshift 0.3s 0.4s 0.7s 3回試行平均値
  • 80. © Opt, Inc. All Rights Reserved. パフォーマンス比較 DB名 UNION 1万 100万 1億 MySQL 0.08s 2.7s 1.8h PostgreSQL 0.07s 0.9s 3.5h TREASURE DATA 2s 3s 11s Redshift 0.3s 0.4s 0.7s 処理時間の増加はよ り顕著
  • 81. © Opt, Inc. All Rights Reserved. パフォーマンス比較 DB名 INSERT 1万 100万 1億 MySQL 3s 1.1m 2.2h PostgreSQL 0.1s 0.9s 6.2h TREASURE DATA 8s 2.5m 7.3h Redshift 4.5s 17.75s 2.5m 3回試行平均値
  • 82. © Opt, Inc. All Rights Reserved. パフォーマンス比較 DB名 INSERT 1万 100万 1億 MySQL 3s 1.1m 2.2h PostgreSQL 0.1s 0.9s 6.2h TREASURE DATA 8s 2.5m 7.3h Redshift 4.5s 17.75s 2.5m 3回試行平均値 Redshiftでも それなりの 処理時間が かかっている
  • 83. © Opt, Inc. All Rights Reserved. パフォーマンス比較 DB名 ADD COLUMN 1億 MySQL 3.3h PostgreSQL 0.2s TREASURE DATA -- Redshift 2s 3回試行平均値
  • 84. © Opt, Inc. All Rights Reserved. パフォーマンス比較 DB名 ADD COLUMN 1億 MySQL 3.3h PostgreSQL 0.2s TREASURE DATA -- Redshift 2s 3回試行平均値 MySQLは カラム追加は遅い
  • 85. © Opt, Inc. All Rights Reserved. パフォーマンス比較 DB名 ADD COLUMN 1億 MySQL 3.3h PostgreSQL 0.2s TREASURE DATA -- Redshift 2s 3回試行平均値 PostgreSQLは デフォルト値を 設定していない 場合、テーブル 定義への追加だ けなので速い
  • 86. © Opt, Inc. All Rights Reserved. パフォーマンス比較 DB名 ADD COLUMN 1億 MySQL 3.3h PostgreSQL 0.2s TREASURE DATA -- Redshift 2s 3回試行平均値 Redshiftも PostgreSQLと 同様に速い。 がやはりコンパ イルのオーバー ヘッドがある。
  • 87. © Opt, Inc. All Rights Reserved. まとめ 今回の検証では、 以上の結果が得られました
  • 88. © Opt, Inc. All Rights Reserved. まとめ そもそもこのように大きなデータを 一つのテーブルに入れて集計するのは、 RDBは適切でないという前提があります 決してMySQLやPostgreSQLの 性能が悪い訳ではありません
  • 89. © Opt, Inc. All Rights Reserved. まとめ Redshiftは大きなデータの 単一テーブルを扱うことが得意です。 このような適性からオプト仙台では、 Redshiftを採用しています。
  • 90. © Opt, Inc. All Rights Reserved. アプリケーションによって 適切なDBを!
  • 91. © Opt, Inc. All Rights Reserved. ご清聴 ありがとうございました