Slide 1

Slide 1 text

© Computer Engineering & Consulting Ltd. All rights reserved. RedshiftサーチパスとDBメンテ 株式会社シーイーシー 山本 直弥

Slide 2

Slide 2 text

自己紹介 名前:山本 直弥 所属:株式会社シーイーシー 2023-2024 Japan AWS All Certifications Engineer 好きなAWSサービス: AWS Lambda AWS Step Functions Amazon Redshift 1 © Computer Engineering & Consulting Ltd. All rights reserved. X:@Nao_Engineer_AC

Slide 3

Slide 3 text

課題:テーブルのデータを入れ替えるには? 2 © Computer Engineering & Consulting Ltd. All rights reserved. <システム> ・24時間稼働のWebシステムがRedshiftのデータを参照している <やりたいこと> ・S3にあるCSVファイルの内容でテーブルの内容を手動かバッチ処理で入れ替えたい ・ユーザはWebアプリケーションでテーブルの内容を参照しており、 データ入れ替え中(空の状態やデータ登録失敗)の状態を見せたくない ずっとテーブルの中身見るよ 変なデータ見えたら困るな データ入れ替えたい・・・ ユーザ エンジニア や 夜間バッチ Select * from テーブル名

Slide 4

Slide 4 text

解決案:サーチパスを使う 3 © Computer Engineering & Consulting Ltd. All rights reserved. [サーチパスの確認] show search_path [サーチパスの変更] alter user [ユーザ] set search_path to [スキーマ1,スキーマ2] 例: [サーチパス]公開スキーマ,非公開スキーマ SELECT * FROM テーブルA; →(公開スキーマの)テーブルA ※同名テーブルは最初に書かれたスキーマを優先し て検索する SELECT * FROM 非公開スキーマ.テーブルB; → (非公開スキーマの)テーブルB ※スキーマを指定してテーブル参照も可能 SELECT * FROM テーブルD; →(非公開スキーマの)テーブルD ※テーブルがある最初のスキーマを参照する ◼ サーチパスとは? → スキーマ参照の優先順位

Slide 5

Slide 5 text

ステップ1:非公開スキーマのデータを入れ替える 4 © Computer Engineering & Consulting Ltd. All rights reserved. <ポイント> ・ユーザは公開スキーマを参照しているので、非公開スキーマのテーブルを更新しても ユーザに影響はない 公開スキーマのテーブ ルが見えているよ 非公開スキーマのテーブ ルを更新するで ユーザ [サーチパス] 公開スキーマ,非公開スキーマ Select * from テーブル名

Slide 6

Slide 6 text

ステップ2:サーチパスを非公開スキーマ優先に変更 5 © Computer Engineering & Consulting Ltd. All rights reserved. <ポイント> ・非公開スキーマのデータメンテ結果のチェックが完了したらサーチパスを非公開優先にする ・サーチパスの変更だけでユーザーに最新データを提供できる データが最新になったね ありがとう データチェックしたから 一旦非公開スキーマみてて ユーザ [サーチパス] 非公開スキーマ,公開スキーマ Select * from テーブル名

Slide 7

Slide 7 text

ステップ3:公開スキーマのデータを入れ替える 6 © Computer Engineering & Consulting Ltd. All rights reserved. <ポイント> ・ユーザは非公開スキーマを参照しているので、公開スキーマのテーブルを更新しても ユーザに影響はない ・非公開スキーマのデータや定義を公開スキーマにコピーしたりする 非公開スキーマ見ているよ 非公開スキーマ見られてい るうちに公開スキーマを メンテするで ユーザ [サーチパス] 非公開スキーマ,公開スキーマ Select * from テーブル名

Slide 8

Slide 8 text

ステップ4:サーチパスを公開スキーマ優先に戻す 7 © Computer Engineering & Consulting Ltd. All rights reserved. <ポイント> ・公開スキーマに非公開スキーマのデータや定義を反映できたら元に戻す ・次回のメンテ時も各ステップを実施する 公開スキーマのテーブ ルが見えているよ メンテ終わったから サーチパス戻しといたで ユーザ [サーチパス] 公開スキーマ,非公開スキーマ Select * from テーブル名

Slide 9

Slide 9 text

補足:Sfnで一連の処理をつないでバッチ処理も可 8 © Computer Engineering & Consulting Ltd. All rights reserved. ◼ 各処理の概要例 ①今回の更新テーブルを外部パラメータで取得 →これがないと全テーブル同期することになる ②メインスキーマのデータをサブスキーマに同期 →画面側で更新されたデータを取り込む ③データ分析や取込み処理 ④③の処理内容をチェック。 →問題があれば処理を止めてエラー通知 ⑤サーチパスをサブスキーマ優先に変更 →メインスキーマ更新中の画面影響をなくす ⑥サブスキーマの更新内容をメインスキーマに同期 ⑦サーチパスをメインスキーマ優先に変更 →通常のサーチパスに戻す ① ③ ② ④ ⑤ ⑥ ⑦

Slide 10

Slide 10 text

9 © Computer Engineering & Consulting Ltd. All rights reserved. ご清聴ありがとうございました