0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

animateLABAdvent Calendar 2015

Day 3

データベース初期構築用のSQLをリポジトリ上のどこのディレクトリに置くか

Posted at

この記事は animateLAB Advent Calendar 2015 3日目の記事です。

今日はポエムを書こうと思ってたんですが、考えてた内容が明らかに今日中に書き終わらないので、別のポエムに変えます。あとポエムはさすがに開発者ブログに書くのがはばかられたので、Qiitaのポエムタグにそっと置いておきます。

というわけで、タイトルの通りデータベース初期構築用のSQLをリポジトリ上のどこのディレクトリに置くかという話。MySQLでたとえるとこういうのです。

  • CREATE DATABASE
  • CREATE USER
  • GRANT

RDBMSに依存したサーバーサイドのアプリケーションを初期構築する場合に絶対1度は必要になるはずなのに、GitHub上に.sqlなファイルとして置いてあることが少ない気がします。仮に置いてあったとしても置いてある場所がバラバラで気持ち悪い。代表的な.sql置き場のディレクトリ名として以下のような名称があるのではないかと思います。

  • sql
  • db
  • docs
  • misc

dbsqlはDB接続関係のソースコードが置いてあることもあるし、docsはちょっと違うんじゃない?(.sqlはドキュメントじゃないよね?)と思うし、miscってディレクトリを切ると何でもかんでもそこに置かれそうだし、なんだかモヤっとするんです。

もしかしたら私が知らないだけでフレームワークによってはきちっと決まっているのかもしれません。 1 もしくは、ちゃんとREADMEとかWikiとかに構築方法が書いてあればそれで構わないけど(ドキュメントの中にSQL文がまんま貼られてる例もあった気がする)、なんかちょっと気持ち悪いなと思うのでありました。

まあ、実態としてはDBM(≒データベースおじさん)がいい感じに初期構築してくれちゃうのでリポジトリで管理されず秘伝のタレ化している、というのが真相なのではないかなと推察してます。そもそもCREATE USERなんぞを実行できるのは強力な権限(≒rootやsys)を持っているアカウントに限られるし、結局人間がやるからあんまりリポジトリで管理するメリットがないのかもしれません。でも「結局人間がやるから」って思った瞬間負けだと思うんだよね。うーむ。

  1. 例えば、Railsでは マイグレーション という仕組みがあって、「空のスキーマが存在する」ことを前提にCREATE TABLEとかしてくれる。ただ「空のスキーマ」を誰かが作成する必要がある。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?