47. ? Opt, Inc. All Rights Reserved.
CREATE EXTENSION postgres_fdw;
CREATE EXTENSION dblink;
CREATE SERVER [外部サーバ名]
FOREIGN DATA WRAPPER postgres_fdw OPTIONS (
host 'xxx.xxx.xxx.xxx', -- Redshiftのホスト
port 'nnnn', -- Redshiftのポート
dbname 'xxxx' -- Redshiftのデータベース
);
CREATE USER MAPPING FOR [ユーザ名]
SERVER [外部サーバ名] OPTIONS (
user 'user_id', -- Redshiftの接続ユーザ
password 'user_pswd' -- Redshiftの接続ユーザパスワード
);
48. ? Opt, Inc. All Rights Reserved.
dblinkを使ったクエリ
49. ? Opt, Inc. All Rights Reserved.
INSERT INTO [Postgresqlテーブル名]
SELECT *
FROM dblink('[外部サーバ名]',$REDSHIFT$
SELECT account_id,campaign_id,day,SUM(cost)
FROM [Redshiftテーブル名]
GROUP BY account_id,campaign_id,day
$REDSHIFT$
) AS t1 (
ac_id VARCHAR(255),cp_id BIGINT,rp_date DATE,cost
BIGINT);
50. ? Opt, Inc. All Rights Reserved.
INSERT INTO [Postgresqlテーブル名]
SELECT *
FROM dblink('[外部サーバ名]',$REDSHIFT$
SELECT account_id,campaign_id,day,SUM(cost)
FROM [Redshiftテーブル名]
GROUP BY account_id,campaign_id,day
$REDSHIFT$
) AS t1 (
ac_id VARCHAR(255),cp_id BIGINT,rp_date DATE,cost BIGINT);$REDSHIFT$ で囲まれた文字列は、Redshiftに送られるクエリ
CREATE SERVERの名前と合わせる
51. ? Opt, Inc. All Rights Reserved.
INSERT INTO [Postgresqlテーブル名]
SELECT *
FROM dblink('[外部サーバ名]',$REDSHIFT$
SELECT account_id,campaign_id,day,SUM(cost)
FROM [Redshiftテーブル名]
GROUP BY account_id,campaign_id,day
$REDSHIFT$
) AS t1 (
ac_id VARCHAR(255),cp_id BIGINT,rp_date
DATE,cost BIGINT);
Redshiftで実行されたクエリの結果セット(データ型など)を指定
52. ? Opt, Inc. All Rights Reserved.
INSERT INTO [Postgresqlテーブル名]
SELECT *
FROM dblink('[外部サーバ名]',$REDSHIFT$
SELECT account_id,campaign_id,day,SUM(cost)
FROM [Redshiftテーブル名]
GROUP BY account_id,campaign_id,day
$REDSHIFT$
) AS t1 (
ac_id VARCHAR(255),cp_id BIGINT,rp_date DATE,cost
BIGINT);
54. ? Opt, Inc. All Rights Reserved.
データマートの導入の前に
- よく使われるデータで集計しておく
- そもそものデータ量が減る
55. ? Opt, Inc. All Rights Reserved.
データマートの導入結果
- 応答時間がミリ秒単位
- 小さいクエリを捌く事が得意なDBを使う
56. ? Opt, Inc. All Rights Reserved.
データマートからの応答速度
- 複数媒体&複数月のデータから返す場合
48秒(Redshift)→1秒弱(PostgreSQL)
- 純粋に1媒体&1か月のデータから返す場合
1秒(Redshift)→0.1秒(PostgreSQL)
57. ? Opt, Inc. All Rights Reserved.
データ種別 1か月分の日別レコード数
アカウント 8万~12万
キャンペーン 20万~60万
広告グループ 300万~500万
広告 600万~1200万
キーワード 1000万~2000万
※概算のレコード数
58. ? Opt, Inc. All Rights Reserved.
最後に
- 大量のデータをデータマートに持ってきてもレスポ
ンスは出ない
59. ? Opt, Inc. All Rights Reserved.
ご清聴ありがとうございました