データを守ろう!データの消失を防ぐためにできること

先日Nocodeツールのadalo(https://www.adalo.com/)のデータが一時的に削除されるという状況が発生しました。私の場合テイクアウトアプリを運営しておりユーザーさんに登録いただいたデータがほとんどなので冷や汗もんでした(;^_^A そこで今回はソフトウェアを作り運用していくなかで”データの消失を防ぐには?”に焦点を当てて書きたいと思います。

ちょっとだけ前提を!

バックアップの話の前に超簡素化した、『システムの構成要素』と『データ(≒データベース)』について。

前提1:『システムの構成要素』

まずはシステムは①画面 ②処理 ③データ の3つの要素で構成されていると考えてください。

システムを構成する3要素

①画面は、みなさんもスマホアプリを使用する場合を考えていただくとわかりやすいと思いますが、スマホの画面やパソコンの画面になります。(専門的にはよくインターフェースといってI/Fと表記される場合もあります)データを表示したり入力を受け付けたりするいわば人間とソフトウェアの接点です。

次は②処理です。①の画面でみなさんが何かしら操作したのを受けて”何かしら”の処理”を行います。例えば・・・金額の計算をしたり、検索結果をとってきたりする部分です。

最後に③のデータです。データベースと言われたり、データソースと表現したりすることもあります。情報を貯めておくところです。今回のadaloの件はこれが一時的に空になってしまったということです。この場合上の構成要素と照らし合わせると①画面②処理はちゃんとあったけど、③のデータのところがなくなったということです。なので私のアプリの場合も画面も見れますしお店の情報を表示(しようと)する”処理”も正常に動いていました。ただ、③データが空になった状態だったので下図のようになりました。

前提2:『データベースについて』

先に述べた「システムの構成要素」の③データも少し詳しく見てみると、その中身はいくつかのテーブルの集まりです。テーブルとは情報の入れ物と思ってください。世の中にはたくさんの情報があります。これら全部を一つの入れ物に入れるのではなく、適当に分類して入れます。この一つ一つの入れ物のことをテーブルといいます。※この”適当に分類して”というのがノーコードであれイエスコードであれシステムを作る時の肝であり”データモデリング”という分野だけで本が出たりしていますのでご興味があるかたは読んでみてもいいかもですね。

※adaloではテーブルのことをコレクションと言ったり、Salesforceではオブジェクトといったり、bubbleでは忘れましたが他の言い方をしたりもします。

エクセルやスプレッドに詳しい方であれば、データベース=エクセル/スプレッドの1ファイル、テーブル=1シートと捉えてもらってOKです。

少し前提が長くなりましたが、”システムは3つの要素でできていてその中の1つがデータであり、データ(ベース)とは分類された情報が入った箱(=テーブル)の集まりである” とご理解ください(^^♪

ここから本題の「データを守ろう~データの消失を防ぐためにできること~」になりますが、私は次の2つがデータ消失に対する有効な手段だと考えています。

1、バックアップ

2、物理削除ではなく論理削除

まずは、1、バックアップ

難しく考えないでください。いわゆるエクセルでいうとコピーを取っておこう!ということです。エクセルだとコピー&ペーストでバックアップしたことになりますが、システム設計をする中ではもう少し詳しく検討するので、せっかくですので紹介します。ノーコーダーの方たちも知っていて損はないはずです(^^♪

では早速。一言でバックアップといっても、いくつかの観点がありますので自分でアプリなどを作っている方は以下の①~⑤の点を考えてみてください。

①バックアップの対象(何をバックアップするのか?)

バックアップの計画を立てるときはどこまでを取るのかを意識してくださいね。範囲が大きくなればなるほど、安全ですがその分バックアップを置く場所が必要ですし、バックアップにかかる手間も増えるのが一般的です。※adaloで申しますとアプリケーションをコピーする機能がありますので、それだけでシステムバックアップをとったのと同じになります。

②バックアップのスケジューリング(いつバックアップをとるのか?)

バックアップ取ってるから大丈夫です!でも最後にとったのは1年前です!!では話になりませんよね? 毎日なのか?/毎週なのか?/もっと重要なものであれば1時間間隔なのか?など検討する必要があります。また例えば毎日バックアップを取るにしてもずーーーーっとたまり続けるとハードディスクの容量を使うことになるので、いつまでそのバックアップファイルを取っておくのかも検討が必要ですね。

③フルバックアップ?差分バックアップ?(全部バックアップ?それとも変わったとこだけ?)

これはなじみがない言葉かもしれませんが、データをバックアップする際にまるごとバックアップするのか? それとも変わったところだけバックアップをとるのか?という意味です。これのメリットとデメリットですが、フルバックアップの方がバックアップファイルの容量が大きくなるのでハードディスクの容量がより必要になります。ただしメリットはわかりやすいことです。差分の場合はバックアップから戻すときにその差分をすべて戻す必要があるので面倒で手間もかかるしその分間違いも起こりやすくなります。個人的にはフルバックアップが好きですが、データ容量の都合で併用することもあります。例えば週に1回フルバックアップをとって、毎日差分をとるとか。。。

④バックアップの実行方法(どうやってバックアップするの?)

これはデータベース(データソース)の種類(例:スプレッドシート、エクセル、Oracle、SQLServer、MSアクセスなど)によって異なるので今回は割愛します。

⑤リストア(万が一に備えてバックアップしたデータを元に戻す練習しましょうね!)

これが忘れがちかつ楽しくない作業なので気が進まないかとは思いますが、万が一のことを考えて1度はやっておいた方がよいでしょう。(ちなみに通常のシステム開発では必ずやります(やってるはずです))。バックアップはきちんととっておいたがいざそのバックアップデータをシステムに入れようとしたがうまくいかなかった・・・とかならないように。。。

ここまでが、データ消失を防ぐための有効手段の1つであるバックアップについてです。

2つ目の論理削除と物理削除に関しても近日公開予定です!