読者です 読者をやめる 読者になる 読者になる

僕は右へ行く

適当に書くよ!

マスタデータはDBやKVSに登録する必要があるのか?

特に小・中規模アプリケーションにおいて。
たとえば部門テーブルとか、役職テーブルとか、よくマスタデータとして用いいられるテーブルが作られますが
最近僕はこれらをデータベースに格納せず、NoSQLにも入れずに
設定ファイルに記述してしまっています。
もう「マスタ設定ファイル」みたいな扱いにしていますが。

もちろん何百レコードもあるマスタデータであれば、データベースに入れることもやぶさかでないのですが
5個や10個のデータのためにテーブルを作ってまでがちがちにするメリットがないように思えます。


マスタデータを設定ファイル化した際のメリットは

  • ただのファイルなので中身を確認するのが手軽
  • データ更新も手軽
  • JOINがなくなるのでその分速度の向上が期待できる

逆にデメリットは

  • 外部キー設定ができない
  • 1レコードにたくさん入れるデータには向かない
  • DBAが文句を言うかもしれない(DB上に「データ」が一元管理されていない)
  • データ更新にアプリケーションの再起動(再読込み)が必要になるかもしれない

一元管理されていないのは、マスタデータはマスタデータで別資料にしておけばいいですし、そもそもDBに入れていてもそれは同じでしょう。
結局のところ「本当に使われるデータ」と「ドキュメントのデータ」との二重管理になります。
それにそもそも「マスタデータ」なのですから更新は頻繁に行われないのが通常でしょう。
むしろ頻繁に更新が行われるマスタデータはマスタではないとも思います。


ということで最近僕は(あまり多くない)マスタデータはDBに入れず、
ファイル化してアプリケーションに組み込んでいます、という話でした。



Perlだとこんな感じだというのを書きました。
http://d.hatena.ne.jp/rightgo09/20120331/p1