第28回 中国地方DB勉強会 in 岡山マイクロサービスをBIで可視化する
View Slide
Copyright © PREVENT Inc. All rights reserved.自己紹介和田 菜月 (ゆいな) / @yuina1056株式会社 PREVENTバックエンドエンジニア兼なんでも屋さんRuby on Rails / Go / PostgreSQLDB勉強会 in 愛知 (主催)しがないラジオ sp.61a,b (ゲスト出演)#成し遂げたいam ep15,16 (ゲスト出演)
Copyright © PREVENT Inc. All rights reserved.自己紹介
Copyright © PREVENT Inc. All rights reserved.自己紹介和田 菜月 (ゆいな) / @yuina1056株式会社 PREVENTバックエンドエンジニア兼なんでも屋さんRuby on Rails / Go / PostgreSQLDB勉強会 in 愛知 (主催)しがないラジオ sp.61a,b (ゲスト出演)#成し遂げたいam ep15,16 (ゲスト出演)ダムはいいぞ!!!
Copyright © PREVENT Inc. All rights reserved.自己紹介丸山ダム(岐阜)
Copyright © PREVENT Inc. All rights reserved.ある日のこと…
Copyright © PREVENT Inc. All rights reserved.ある日のこと…社内に存在する情報を分析して経営戦略を立てたい。
Copyright © PREVENT Inc. All rights reserved.ある日のこと…社内に存在する情報を分析して経営戦略を立てたい。それならBIツール作りましょう!!!
Copyright © PREVENT Inc. All rights reserved.システム構成を考える
Copyright © PREVENT Inc. All rights reserved.システム構成を考えるデータソースとしてPostgreSQL繋げられるじゃん!!!Google Data Studioいいじゃん!!!
Copyright © PREVENT Inc. All rights reserved.システム構成予定顧客管理システム Mystar-APIその他システムBI用DBGoogleDataStudio1PTUHSF42-
Copyright © PREVENT Inc. All rights reserved.各システムをBI用DBに繋ぐ最初に思いついたこと・・・
Copyright © PREVENT Inc. All rights reserved.各システムをBI用DBに繋ぐ最初に思いついたこと・・・FDWでBI用のDBに繋げばいいじゃん!!!!!
Copyright © PREVENT Inc. All rights reserved.各システムをBI用DBに繋ぐしかし問題が・・・
Copyright © PREVENT Inc. All rights reserved.各システムをBI用DBに繋ぐしかし問題が・・・• 顧客管理システム、Mystar-APIには 個人情報、要配慮個人情報が含まれている。 →BIツールはGoogleDataStudioを使用するため 外部ツールに個人情報、要配慮個人情報を渡したくない。• そのままFDWしてしまった場合、DBのリレーションを知っていないと 誰にでも分かるようには可視化できない →該当システム開発者orDB管理者への依存が強い• 今後、データサイエンスチームへ解析データセットとして渡したい →使用しているテーブルを非正規化した形で持たせておきたい
Copyright © PREVENT Inc. All rights reserved.各システムをBI用DBに繋ぐどうしたか?
Copyright © PREVENT Inc. All rights reserved.各システムをBI用DBに繋ぐどうしたか?ETL処理基盤の実装
Copyright © PREVENT Inc. All rights reserved.各システムをBI用DBに繋ぐ各システムへのDBアクセスは全てETL基盤から実施顧客管理システム Mystar-APIその他システムETL基盤BI用DB
Copyright © PREVENT Inc. All rights reserved.各システムをBI用DBに繋ぐ各システムへのDBアクセスは全てETL基盤から実施顧客管理システムPostgreSQLMystar-APImongoDBその他システムPostgreSQLETL基盤BI用DB#*༻%#ͱͷ%#-*/,௨ৗଓ
Copyright © PREVENT Inc. All rights reserved.各システムをBI用DBに繋ぐRDBをDBLINKで接続した理由
Copyright © PREVENT Inc. All rights reserved.各システムをBI用DBに繋ぐRDBをDBLINKで接続した理由• Golangで実装したフルスクラッチのETL基盤 →使用ライブラリの都合上DBのコネクションを複数保持できない• ETL処理でデータを取得するタイミング以外は他システムと 接続している必要はない
Copyright © PREVENT Inc. All rights reserved.各システムをBI用DBに繋ぐETL基盤で行っていること
Copyright © PREVENT Inc. All rights reserved.各システムをBI用DBに繋ぐETL基盤で行っていること• 個人情報に当たる箇所の削除 →該当するカラムはDBからデータを取得するタイミングで対象から外す• JOINによるテーブルの非正規化 →BIで表示するために必要なデータを元のDBベースでJOIN 場合によってはBI用DBのテーブルにJOINして別テーブルへ• DB内データのクレンジング →stringで保持している日付データを本来のDate型、Datetime型へ statusの情報を日本語に変換 etc…
Copyright © PREVENT Inc. All rights reserved.課題• データ更新をかけるタイミングでupsertがうまく動かない →元システムで入力内容を消去する等null更新をした時にupsertが うまく動作しない…• 仕組み上、BIのリアルタイム更新が行えない。 →FDWでやればリアルタイム更新はできるが、個人情報どうする?
Copyright © PREVENT Inc. All rights reserved.まとめ• ETL基盤自体をスクラッチで実装することはめったに無い →とても良い経験になった• もっと良い方法がありそうな気がする →知見がある方と情報交換したい
Copyright © PREVENT Inc. All rights reserved.おわり