LIVESENSE ENGINEER BLOG

リブセンスエンジニアの活動や注目していることを発信しています

Redshiftの利用状況を可視化して不要なテーブルをお掃除した話

これは Livesense Advent Calendar 2022 DAY 10 の記事です。

年末のお掃除捗っていますか?我が家では窓掃除にWV1が大活躍しています。
データエンジニアの毛利です。サービス横断のデータ分析基盤であるLivesense Analytics(以降LA)の開発、運用を行っています。

背景

データを提供したものの、気がつくとほとんど使われていない、というのはよくある話だと思います。
LAでも様々なデータを提供できるように機能追加してきた結果、日々データは増え続け、システムの保守コストも徐々に膨れ上がってきました。システムは拡張する一方で、人が運用できる範囲には限度があります。いくつか解決方法があるかと思いますが、今回はデータの整理にフォーカスしています。

今、そのデータは必要とされているのか?
必要とされていないデータを明らかにしたい、という思いで、データ利用状況の可視化を行いました。

データ利用状況の可視化

LAではDWHにRedshiftを利用しています。テーブルやユーザーの利用状況を知るために、Redshiftのシステムテーブルを使いました。システムテーブルは、数日分のログしか保持されないため、1日1回INSERT分を発行し、アーカイブ用のテーブルに保存して、過去のデータを参照できるようにしています。アーカイブ用のテーブルを参照し、re:dashでグラフ化して毎日の利用状況を確認することにしました。

テーブルの利用状況

STL_SCANというシステムテーブルを用いて、テーブル毎の利用回数を可視化しています。各システムで生成されているテーブルごとにグラフを分けているので、どのシステムのテーブルがよく使われているか一望できます。

上記グラフを利用して、利用数が皆無または限定的なテーブルについて、利用者にアプローチします。今後使う予定があるのか、もう使わないのか、確認するのに役立てています。長年塩漬けになっていた不要なテーブルを削除できたのは勿論のことですが、あるシステムで生成しているテーブルがほとんど利用されていないことが明らかになり、システムを廃止するきっかけを作ることができました。

Redshiftユーザーの利用状況

STL_QUERYを用いて、ユーザー単位でクエリ数を集計することで、ユーザーのクエリ利用状況を把握しています。

上記グラフを利用して、不要なユーザーを削除することができました。個人ユーザーは退職や異動の際にユーザーコントロールがなされているので削除漏れの心配は少ないのですが、LA管轄外のシステムで利用しているユーザーは、気づいたら利用が止まっていた、というのがグラフを通して知ることができ、ユーザーの整理に役立てています。

運用してみてわかったこと

数値をもって説明することができるため、利用者とのコミュニケーションがとりやすくなり、データの整理を進めることができました。しかし一通りデータを整理し終えた、で気を許すと、いつの間にか利用されていないデータが増殖しているという事態が発生します。気づく術を得るために、定期的にグラフをみていく習慣を取り入れたほうがいいでしょう。
またデータの整理を進めていく中で、「利用されていないことは明らかだけど、本当に削除してよいのかわからない。削除していいか判断するために、何のために作られたかが知りたい」というような声がありました。検証のために一時的に使われたのか、ある施策で当時は使われていたのかetc...色んなケースが考えられます。誰がいつどんな目的で作られたデータなのか、各テーブルにはテーブルのコメントを入れたり、テーブルを追加する時のプルリクエストにどんな目的で作成されたかメッセージを残していかないといけない、と思いました。

最後に

データ運用の観点からは、利用者からの申し出を受けて不要なデータを削除していくという流れが理想ですが、そううまくはいきません。利用者が複数人存在すると、ある人は使わないが別の人は使っているかもしれない、と考え、不要の申し出に漏れが生じます。やはり、データを提供する側からの働きかけが、必要不可欠だと思っています。
データ整備は非常に泥臭い仕事になりがちですが、日々増え続けるデータに対して、減らすという行為も必要です。皆さんのデータ整備の一助になればという思いで、このような取り組みを共有いたしました。