6

開発チームでデータベーススキーマの変更をどのように処理するかについてのより一般的な質問があります。

私たちは開発者のチームであり、開発中に使用されるデータベースは、常にWebアクセスが必要になることを避けたいため、全員のボックスでローカルに実行されています。したがって、単一の中央データベースインスタンスをどこかで実行することは実際のオプションではありません。

dbスキーマを拡張/変更する時期が来たと判断した場合は、データベースファイル(MYI / MYD)またはSQLファイルをメールで送信して実行するか、変更されたコードを取得するために必要なことを電話で指示します。ローカルDBで実行されています。それは確かに完璧なアプローチではありません。新しいリリースの準備ができたら、ステージングまたは本番環境でDBスキーマを調整する必要がある場合にも同じ問題が発生します。

私は疑問に思っていました...皆さんはこの種のものをどのように処理しますか?ソースコードにはSVNを使用しています。

本当にあなたの入力に感謝します!

ありがとう、マイケル

4

6 に答える 6

8

過去に使用したアプローチの1つは、データベースのDDL全体を、必要なテスト/セットアップデータとともにスクリプト化することです。それをSVNに保存すると、変更があった場合、開発者は変更をプルダウンしてデータベースを削除し、スクリプトファイルから再構築できます。

于 2009-09-23T16:06:33.817 に答える
2

少なくとも、データベース内のすべてのオブジェクト(テーブル、ストアドプロシージャなど)のスクリプトをソース管理下に置く必要があります。

スキーマの変更をメールで送信することは、専門能力開発チームにとって現実的な選択肢ではないと思います。

于 2009-09-23T16:05:31.243 に答える
1

以前のチームの1つに、この状況に対処するために遭遇した中で最高のシステムがありました。

アプリケーションのナイトリービルドには、データベース(SQL Server)のビルドが含まれていました。データベースはテストDBサーバーに構築されました。次に、各開発者はDTSパッケージ(これは少し前のことであり、SSISパッケージにアップグレードしたと確信しています)を持って、その夜間のDBビルドをローカルDB環境にプルダウンしました。

これにより、マスターコピーが1つの場所に保持され、ローカルの開発データベースを最新の状態に保つ責任が開発者に課せられました。

于 2009-09-23T16:05:47.640 に答える
0

私の仕事では、生成に時間がかかる非常に大きなデータベースを扱っているため、新しいDBを最初から作成することは理想的ではありません。ハーパーのように、私たちはSVNにDDLを持っています。さらに、バージョン番号をデータベーステーブルに保存します。DBを変更するすべてのチェックインには、次のようなスクリプトを添付する必要があります。

  1. データベーススキーマをアップグレードし、既存のデータを適切に変更し、
  2. データベースのバージョン番号を更新します。

さらに、スクリプトとデータベースのバージョンに番号を付けて、作成したスクリプトが、開発者からの入力なしに(データベース名とディレクトリを除いて)ブランチに沿って、または古いブランチから新しいブランチにアップグレードする方法を知っているようにします。アップグレードスクリプト)。

したがって、1年前のバージョンの顧客の4GB DBのコピーを持っていて、昨日カットしたバージョンでデータがどのように機能するかをテストしたい場合は、スクリプトを実行して、アップグレードを処理させることができます。データベースが作成されてから実行されるすべてのINSERT、UPDATE、およびDELETEを最初からやり直して、やり直す必要はありません。

于 2009-09-23T16:48:07.413 に答える
0

データベーススキーマの非SQL記述があります。アプリケーションが起動すると、目的のデータベーススキーマを実際のデータベーススキーマと比較し、データベースを正しく表示するために必要なADD TABLE、ADD COLUMN、ADDINDEXなどのステートメントを実行します。

これはすべてのケースを処理するわけではありません。スキーマリゾルバーが処理できないものを変更した場合は、データベースを削除して再作成する必要がある場合がありますが、ほとんどの場合、それについて心配する必要はありません。

于 2009-09-23T16:49:27.240 に答える
0

私は確かにデータベーススキーマをソースコード管理に保持します。

私の現在の仕事では、スキーマが変更されるたびに、変更のSQLを記述して(alter table xyz add column ...)、SVNに配置します。次に、開発者はこのスクリプトを実行してテストデータベースを更新できます。かなり不器用ですが、機能します。

以前の仕事で、アプリケーションの起動時に実際のデータベーススキーマを期待どおりに自動的に比較し、最新でない場合は更新を実行するコードを記述しました。これは主に展開上の理由で行われました。ソフトウェアの新しいコピーを出荷すると、ユーザーのデータベースが自動的に更新されます。しかし、それは開発者にとっても便利でした。

これを行うには、一般的なSQLツールが必要だと思います。あるかもしれませんが、私は見たことがありません。

于 2009-09-23T16:49:42.560 に答える