Redshift ウェアハウスの内部

Redshift入門

Jason Myers

Principal Architect

アジェンダ

  • Redshift クラスターの内部
    • ノード種別
    • リーダー専用関数
    • クラスターのストレージ
  • 述語
  • Redshift Spectrum
    • データベース構成要素
    • 外部テーブル
Redshift入門

Redshift クラスターのアーキテクチャ

リーダーノード

  • 接続を提供
  • クエリ実行計画を作成・配布
  • クエリ全体を実行可能
  • 専用関数を保有

コンピュートノード

  • データを保存
  • ローカルデータに対しリーダーのコードを実行

Redshift クラスター

Redshift入門

リーダー専用関数

  • リーダーでのみ実行
-- 'chocolate chip' の 11 文字目から
SELECT SUBSTR('chocolate chip', 11);

chip
  • 既定では SUBSTRING を使用
  • SUBSTR はテーブル列でエラー
-- テーブルの列 field の 1 文字目から
SELECT SUBSTR(field, 1) FROM table;

ERROR: SUBSTR() function is not supported (Hint: use SUBSTRING instead)
Redshift入門

ノード間のデータを確認する

SELECT host, 
       -- 使用中領域の割合を計算
       -- 使用中から廃棄予定(再利用可)を引き
       -- 容量で割って 100 を掛ける
       (used - tossed) / capacity * 100 as percent_used 
  FROM STV_PARTITIONS;
 host |  percent_used
======+==============
  0   |  24.9
  1   |  24.8
Redshift入門

述語(Predicate)

SELECT table_A.columnX,
       table_B.columnY,
  FROM table_A
       INNER JOIN table_B 
          -- predicate
       ON table_B.foreign_key = table_A.primary_key 
       -- predicate
 WHERE table_B.columnZ = 'value';
  • 通常は真偽式で、WHERE/HAVING/ON 句に現れる
Redshift入門

述語のプッシュダウン

プッシュダウン

Redshift入門

一般的な内部データベース構成

データベース構成要素

メタデータカタログ

  • スキーマ情報(列、キーなど)を保持
  • ストレージ位置を参照

クエリエンジン

  • クエリを計画・実行
  • 接続を提供

ストレージ

  • テーブルデータを保持
  • 複数のファイル/テーブル形式をサポート
Redshift入門

Redshift Spectrum のアーキテクチャ

AWS Glue Data Catalog

  • 「外部」テーブルの情報を保存

AWS S3 バケット

  • テーブルを表すファイルを保存
  • CSV/JSON/テキスト/Parquet など多くの形式に対応

Redshift Spectrum のアーキテクチャ

Redshift入門

Passons à la pratique !

Redshift入門

Preparing Video For Download...