16
JAWS-UG中央線 LT Redshift Compression encodings 株式会社ALBERT @iktakahiro 2013-07-25

JAWS UG中央線 LT Redshift Compression Encodings(圧縮アルゴリズム)

Embed Size (px)

DESCRIPTION

記念すべきJAWS UG中央線0回 でLTさせていただいたときの資料。 Amazon RedshiftのCompression Encodingsの話題です。

Citation preview

Page 1: JAWS UG中央線 LT Redshift Compression Encodings(圧縮アルゴリズム)

JAWS-UG中央線 LT

RedshiftCompression encodings

株式会社ALBERT

@iktakahiro2013-07-25

Page 2: JAWS UG中央線 LT Redshift Compression Encodings(圧縮アルゴリズム)

自己紹介

•株式会社ALBERT•池内 孝啓 / Takahiro Ikeuchi•システム開発部 部長•@iktakahiro•高円寺北4丁目在住

Page 3: JAWS UG中央線 LT Redshift Compression Encodings(圧縮アルゴリズム)

株式会社ALBERT

• 2005年07月設立•分析力をコアとする マーケティングソリューションカンパニー

Page 4: JAWS UG中央線 LT Redshift Compression Encodings(圧縮アルゴリズム)

RedshiftCompression encodings

AmazonRedshift

Page 5: JAWS UG中央線 LT Redshift Compression Encodings(圧縮アルゴリズム)

Compression encodings

• データ圧縮アルゴリズム

• カラム毎に指定できる

• アナライザも付属

http://docs.aws.amazon.com/redshift/latest/dg/c_Compression_encodings.html

Page 6: JAWS UG中央線 LT Redshift Compression Encodings(圧縮アルゴリズム)

Encodings の種類

• Raw(無圧縮)

• Byte Dictionary

• Delta

• Mostly

• Run-length

• Text

Page 7: JAWS UG中央線 LT Redshift Compression Encodings(圧縮アルゴリズム)

Raw

• 無圧縮

• デフォルト設定

• データによってはRawが最も効率が良いことも

Page 8: JAWS UG中央線 LT Redshift Compression Encodings(圧縮アルゴリズム)

Byte Dictionary

• 1Blockサイズ毎に256個までなら辞書のKeyで参照できるようになるイメージ

• 格納される文字列が限定的(都道府県名や国名とか)な場合に有効

• 一覧表に記載はないけどVARCHARでは有効にならない

http://redshiftuser.wordpress.com/2013/01/02/compression-experiment-1/

Page 9: JAWS UG中央線 LT Redshift Compression Encodings(圧縮アルゴリズム)

Delta

• 前のレコードとの差分でデータを保持する

• 200 -> 201 -> 202 場合、差分の+1だけを保持する

• 差分が-127~127(8bit)を超えると起点としてリセットされる

• 16bitまで扱えるDelta32Kもある

Page 10: JAWS UG中央線 LT Redshift Compression Encodings(圧縮アルゴリズム)

Mostly

• 数値を効率的に取り扱える

• 数値の絶対値が限定的な場合に有効(1~100で表現される採点結果とか)

Page 11: JAWS UG中央線 LT Redshift Compression Encodings(圧縮アルゴリズム)

Run-length

• いわゆる連長圧縮

• 値が連続する場合に有効

• ALBERTが10回続く -> 10, ALBERT

Page 12: JAWS UG中央線 LT Redshift Compression Encodings(圧縮アルゴリズム)

Text

• Byte DictionaryのVARCHAR版

• Text255とText32Kがある

• UserAgentの格納に有効かも(未検証

Page 13: JAWS UG中央線 LT Redshift Compression Encodings(圧縮アルゴリズム)

Analyzer

ANALYZE COMPRESSION [table_name];

カラム名 データ型 用途 推薦結果

log_data TIMESTAMP 日付 Delta

uri VARCHAR(512) URI Runlength

user_agent VARCHAR(512) UA Runlength

user_id VARCHAR(255) ユーザーID Runlength

type CHAR(1) 種別 Runlength

product_id VARCHAR(255) 商品ID Runlength

price INTEGER 価格 Delta32K

Page 14: JAWS UG中央線 LT Redshift Compression Encodings(圧縮アルゴリズム)

Analyzer

カラム名 データ型 用途 推薦結果 感覚値

log_data TIMESTAMP 日付 Delta Delta

uri VARCHAR(512) URI Runlength Text32K

user_agent VARCHAR(512) UA Runlength Text255

user_id VARCHAR(255) ユーザーID Runlength Raw

type CHAR(1) 種別 Runlength Runlength

product_id VARCHAR(255) 商品ID Runlength Text32K

price INTEGER 価格 Delta32K Mostly ?

イマイチな気もする。。

Page 15: JAWS UG中央線 LT Redshift Compression Encodings(圧縮アルゴリズム)

まとめ

Compression encodings を設計して効率のよいデータ保存をしよう!

Page 16: JAWS UG中央線 LT Redshift Compression Encodings(圧縮アルゴリズム)

ご清聴ありがとうございました