Upload
takahiro-ikeuchi
View
965
Download
3
Embed Size (px)
DESCRIPTION
記念すべきJAWS UG中央線0回 でLTさせていただいたときの資料。 Amazon RedshiftのCompression Encodingsの話題です。
Citation preview
JAWS-UG中央線 LT
RedshiftCompression encodings
株式会社ALBERT
@iktakahiro2013-07-25
自己紹介
•株式会社ALBERT•池内 孝啓 / Takahiro Ikeuchi•システム開発部 部長•@iktakahiro•高円寺北4丁目在住
株式会社ALBERT
• 2005年07月設立•分析力をコアとする マーケティングソリューションカンパニー
RedshiftCompression encodings
AmazonRedshift
Compression encodings
• データ圧縮アルゴリズム
• カラム毎に指定できる
• アナライザも付属
http://docs.aws.amazon.com/redshift/latest/dg/c_Compression_encodings.html
Encodings の種類
• Raw(無圧縮)
• Byte Dictionary
• Delta
• Mostly
• Run-length
• Text
Raw
• 無圧縮
• デフォルト設定
• データによってはRawが最も効率が良いことも
Byte Dictionary
• 1Blockサイズ毎に256個までなら辞書のKeyで参照できるようになるイメージ
• 格納される文字列が限定的(都道府県名や国名とか)な場合に有効
• 一覧表に記載はないけどVARCHARでは有効にならない
http://redshiftuser.wordpress.com/2013/01/02/compression-experiment-1/
Delta
• 前のレコードとの差分でデータを保持する
• 200 -> 201 -> 202 場合、差分の+1だけを保持する
• 差分が-127~127(8bit)を超えると起点としてリセットされる
• 16bitまで扱えるDelta32Kもある
Mostly
• 数値を効率的に取り扱える
• 数値の絶対値が限定的な場合に有効(1~100で表現される採点結果とか)
Run-length
• いわゆる連長圧縮
• 値が連続する場合に有効
• ALBERTが10回続く -> 10, ALBERT
Text
• Byte DictionaryのVARCHAR版
• Text255とText32Kがある
• UserAgentの格納に有効かも(未検証
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
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 ?
イマイチな気もする。。
まとめ
Compression encodings を設計して効率のよいデータ保存をしよう!
ご清聴ありがとうございました