はじめに
お久しぶりの投稿となります、G.Mです。
まだまだ寒い日が続きます。関東でも積雪があり、この時期に入ってもまだまだ厳しい冬が続きます。
皆さま、日々業務や学業がお忙しいところかとは存じますが、体調管理は万全にしていきましょう。
今回は表題の通り、intra-martにおける『データベースとストレージの関係』についてご紹介させていただきます。intra-martにおいては基本的な内容であり、公式ドキュメントにも記載されてはいるのですが、非常につまづきやすい内容だと個人的に思っており、今回取り上げようと思い立ちました。
データベースとストレージの概要
まず、データベースとはなに? ストレージとはなに? というあたりについては、皆さますでにご存知と思われます。もし理解できているかどうか自信がないという方は、この機会に押さえておきましょう。
intra-martにおいても、もちろんデータベースとストレージは利用されています。そこで、いったい何につまづきやすいのかというと、それらの関係性を見落としやすいという点です。
多くのシステムにおいて、必要な情報はデータベースに保管することでしょう。実際にintra-mart環境を構築するにあたっても、PostgreSQLやOracle、SQLServerといったデータベースを用意していると思われます。
では、ストレージについてはどうでしょう。intra-martをセットアップする際に保存先を指定するのですが、デフォルト指定のままでも問題なく動作するため、あまり意識していない場合があるかもしれません。
というより、intra-martに初めて触れ、とりあえず環境を構築してみようと試みている方々の大半は、まったく意識していないのではないでしょうか。
データベースとストレージの関係
データベースとストレージの関係性を見落としやすい、と前述しました。実は、intra-martにおいてデータベース(テナント)とストレージは原則1対1の関係になっています。intra-mart上のデータを、データベースとストレージそれぞれに分割して保存している、というイメージです。 つまり、もしもデータベースの中身を削除して新しい環境を作りたいと思ったなら、ストレージも完全に削除し、新しく作り直す必要があるわけです。
ストレージの存在を意識していないと、そのことを見落としてしまいます。
環境を再作成するのに、データベースは削除したけれどストレージはそのままだとか。
環境を別にもう一つ作ろうとしているのにストレージの保存先を変更せず、2つの環境から同じストレージを参照してしまっているとか。
現環境を別の環境に移行するにあたり、データベースの中身は移したけれど、ストレージを移していなかったとか。
そうして、システムが起動しなくなってしまった、ワークフローのデータが表示されなくなってしまった、よくわからないけど何かがおかしい、という事態に陥った経験をお持ちの方は多いのではないでしょうか。
実際にどのデータがデータベースに保存され、どのデータがストレージに保存されるか、というのをすべて洗い出すのは非常に困難です。
また、intra-martのバージョンが進むことで、保存先が変更されたり、設定で任意に変更できるようにもなっています。たとえば、ワークフローについては下記を参照してください。
もちろん、大切なデータがどこに保存されているかを把握しておくのは大事なことです。しかし、とにかく覚えておかなければならないことは、データベースとストレージは対になっている、という一点です。これを忘れないだけでも、環境構築における事故はぐっと減るのではないでしょうか。
少なくとも、現場に新規参入した新人社員さんなどには、まず先に教えてあげたい内容ですね。
テナントが複数あったり、バーチャルテナントを利用していたり、あるいは分散環境だったり。場合によって、データベースとストレージの関係もかなり混み行ってきます。ですので運用にあたっては、この2つの扱い方を明確にしておくことを強くお勧めします。
おわりに
私が初めてintra-martに触れたとき、その環境セットアップにとても苦労したことを覚えています。
何度も失敗し、原因不明のエラーに悩み、しばらくそうしているうちにようやく、仕組みが分かるようになっていきました。
そういった経験やノウハウはぜひとも形に残して、後続の人たちの手助けとなることを祈ります。
新年度もあと少し。4月入社する新人さんたちには、少しでも早く実力をつけ、私に楽をさせて欲しい会社に貢献できる人材に成長して欲しいですね!