データの「賞味期限」を意識したデータベース運用とは?
吉村 突然ですけど、子どものころランドセルの奥から思わぬものを発見して、ぎょっとしたことはありません? たとえば、給食で残したパンの切れ端をランドセルの中に隠していたのを忘れてて、1カ月後にカビだらけになって発掘されたりとか。
長江 親に渡しそびれた古いプリントが出てきて焦ったことなら……
吉村 あるある! パンもプリントも、賞味期限が切れてるのにランドセルに入れっ放しにしてると、ろくなことないんですよねえ。この連載を読んでるよい子のみんなは真似しないようにネ!
長江 よい子のみんなはこの連載読んでないとおもいます。でも、ミッションクリティカルなデータベースに保管しておくデータも、給食のパンやプリントと同じく賞味期限が大事なんです。
吉村 え、ランドセルの話からデータベースにつなげるんですか?ちょっと強引では。
長江 あなたがつなげたんでしょうが。
吉村 そうでした。
長江 ミッションクリティカルなデータベースは、小学生にとってのランドセルと同じぐらい大事なものだということです。
吉村 ドヤ顔で。
長江 横着なデータベース管理者は、カビの生えたパンやくしゃくしゃになった古いプリントのような、賞味期限の切れた古いデータを、いつまで経ってもデータベースに溜め込みがちです。
吉村 データの賞味期限ですか……データは腐ったりカビ生えたりしないしなあ。なんか賞味期限と言われてもピンと来ないっす。
長江 データベースを構築したり管理する人は、「データはあくまでもデータ」と、すべてのデータを一緒くたにして捉えがちですよね。でも、実際にデータを処理して業務を行なうユーザーにとっては、時間が経つごとにデータの鮮度と価値が落ちていくというのはごく当たり前のことです。
吉村 まあ、何となくは分かります。
長江 特に基幹系システムはそうですよね。システムに入ってきた販売データや在庫データは、なるべく早く処理して日々の仕事で活用したいですよね。でも、既に処理してしまった古いデータは、とっておいてもほとんど使われることはありませんから、一定期間が過ぎたら捨てるのが通常です。ところが、データベースの設計時に「データの捨てやすさ」を考慮しておかないと、得てして無駄なデータがどんどん溜まりやすくなってしまうんです。
吉村 まさに「ランドセルの奥のパン」ですね。でもデータは、腐ったりカビが生えたり虫がわいたり紫色に変色したり原型をとどめないほどドロドロになったり吐き気を催すほどの悪臭を放ったりしないから、とりあえずとっておいてもいいんじゃないですか?
長江 そこまで細かく描写してくれなくてもいいんですが……でも無駄なデータを溜め込んでおくと、データベースを運用していく上でさまざまな弊害が出てくるんです。一番分かりやすいのが、ディスク領域を無駄に占有して余計なお金が掛かることですね。またデータの検索処理も、無駄なデータがあるとその分時間がかかってしまいます。インデックスの再構築や、前回紹介したデータベースの再編成といった処理も、無駄なデータがあると時間がかかりますね。夜間バッチの処理時間が徐々に長くなっていって、決められた時間内に終わらなくなってしまうのも、多くはデータの増えすぎが原因です。
吉村 ということは、賞味期限が切れたデータはどんどん捨てた方がいいと。
長江 基本的にはそういうことです。ただ、言葉で言うのは簡単ですが、データを捨てる運用って結構難しいんですよ。まずは、各データの適切な賞味期限を見定めなくてはいけません。
吉村 生ものなのか。それとも保存が効くものなのか。
長江 食料品でいうと、そういうことです。ただしデータの場合、データそのものだけに着目しても賞味期限は分かりません。そのデータが「どういう業務で」「どう使われるか」かによって、賞味期限が決まってくるのです。例えば、基幹系システムで料金計算を行うために使う料金データは、恐らく3カ月分も保存しておけば十分でしょう。しかし、過去の売上げ動向を分析するための情報系システムでは、過去データを何年分か保存しておく必要があるでしょう。
吉村 なるほど。まずは業務をきちんと理解した上で、そこで使われる各データの賞味期限を見極めていくわけですね。