Upgrade to Pro — share decks privately, control downloads, hide ads and more …

RedshiftのサーチパスとDBメンテ

 RedshiftのサーチパスとDBメンテ

NaoyaYamamoto

August 04, 2024
Tweet

More Decks by NaoyaYamamoto

Other Decks in Technology

Transcript

  1. 自己紹介 名前:山本 直弥 所属:株式会社シーイーシー 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
  2. 課題:テーブルのデータを入れ替えるには? 2 © Computer Engineering & Consulting Ltd. All rights

    reserved. <システム> ・24時間稼働のWebシステムがRedshiftのデータを参照している <やりたいこと> ・S3にあるCSVファイルの内容でテーブルの内容を手動かバッチ処理で入れ替えたい ・ユーザはWebアプリケーションでテーブルの内容を参照しており、 データ入れ替え中(空の状態やデータ登録失敗)の状態を見せたくない ずっとテーブルの中身見るよ 変なデータ見えたら困るな データ入れ替えたい・・・ ユーザ エンジニア や 夜間バッチ Select * from テーブル名
  3. 解決案:サーチパスを使う 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 ※テーブルがある最初のスキーマを参照する ◼ サーチパスとは? → スキーマ参照の優先順位
  4. ステップ1:非公開スキーマのデータを入れ替える 4 © Computer Engineering & Consulting Ltd. All rights

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

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

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

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

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

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