ミスらないデータベースの処理方法 | データ分析のお作法

AUTHOR :   ギックス

本記事は、株式会社ギックスの運営していた分析情報サイト graffe/グラーフ より移設されました(2019/7/1)

データベース内でテーブルの更新を行う前にバックアップを行い、トランザクション処理を行う

データベース内のテーブルを安全に更新する方法について記載します。

ミスらない方法などない

データベース内のテーブル更新は、作業者が作成したSQL命令を使用して行います。どんなに経験を重ねた作業者であってもミスは行います。また、作業中にネットワークの回線切断、停電など不測の事態が発生することもゼロではありません。テーブル更新ミスは、データの破損に直結します。条件が悪ければ、長期間、蓄積してきたデータが永久に失われることもあります。
ミスらないようにチェックリストを作成したり、無停電電源装置(UPS)で停電対策を行えば、ミスの発生率は下がりますが、完全に防ぐことは不可能です。そのため、ミスをなくすことではなく、ミスを起こしても復旧できる状態を常に保ちます。ミスを起こしても復旧し、データ分析処理をやり直し、最終的に求める分析結果が期限通りに出力されれば、データ分析作業としては問題はありません。

データベースを復旧できる方法とは

ミスを起こした時にデータベースを復旧できる方法として以下の方法があります。1つではなく2重、3重に対策を行うことで、データが完全に失われることを防ぐことが可能です。

トランザクション処理を行う

データベースのトランザクション処理は、トランザクション処理中の更新結果を確定するまで、更新結果を戻せる処理です。複数のテーブルを更新する場合、全てのテーブルの更新が完了していない状態ではテーブル同士のデータ不整合を起こしている場合があります。このような状態が発生しないように複数のテーブルを更新する場合はトランザクション処理を行うことをお勧めします。また、トランザクション処理中に更新結果の確認が行えますので、更新結果を確認して、更新結果の確定を行うことで更新命令のミスに気付くことができます。(詳しくは、データベースのトランザクション処理とは:不可分なひとつながりの処理|データ分析用語を解説)

テーブルのバックアップを行う

テーブルの更新を行う場合、SQL命令でテーブルの複製を作成し、このテーブルをバックアップとして保持します。もし、テーブルに失敗しても、同一レイアウトのバックアップしたテーブルから戻せるため、素早くデータ復旧が行えます。また、このバックアップテーブルを別名で複数持つことで、世代管理バックアップも行えます。

データベースのバックアップを行う

データベースのバックアップは、データベース管理機能でバックアップ命令を実行し、データベースのバックアップファイルを作成します。データベースのデータが壊れた場合、データベース単位でデータ復旧が可能です。また、バックアップファイルを稼働中のデータベースとは別環境で起動して、破損個所のデータを抜き出し(エクスポート)し、破損したデータベース側にデータを取り込む(インポート)することで部分的なデータ復旧も可能です。
また、定期的にデータベースのバックアップを行う場合は、稼働中のデータベースサーバー外のネットワークストレージ(NAS)などにバックアップファイルを保存することをお勧めします。理由は、データベースサーバーが不測の事態でハードウェア障害で復旧できなくなった場合、サーバーの外にバックアップファイルがあれば、データ復旧が行えるためです。

データ分析のミス防止の連載記事リスト:「ミス・プリベンション」in アナリティクス
連載/関連記事リスト:データ分析のお作法
SERVICE