7

アプリケーション データベースを開発すると、必然的に変更が発生します。私が見つけたトリックは、データベースのビルドをコードに合わせて維持することです。過去に、ターゲット データベースに対して SQL スクリプトを実行するビルド ステップを追加しましたが、誤って偽のデータを追加したり、さらに悪化させたりする可能性があるため、危険です。

私の質問は、データベースをコードと歩調を合わせるためのヒントとコツは何ですか? コードをロールバックするとどうなりますか? 分岐?

4

7 に答える 7

3

データベースに埋め込まれたバージョン番号は役に立ちます。クエリを実行できるテーブルに値を埋め込む (複数のアイテムのバージョン管理が可能) か、明示的に名前が付けられたオブジェクト (テーブルなど) をテストできるようにするかの 2 つの選択肢があります。

本番環境にリリースするとき、予期しない大惨事が発生した場合のロールバック計画はありますか? もしそうなら、それはスキーマ ロールバック スクリプトの適用ですか? ロールバック スクリプトを使用して、データベースを以前のコード バージョンにロールバックします。

于 2008-08-28T23:38:10.893 に答える
1

バージョン管理されたテキストファイルでスキーマオブジェクトと参照データを定義します。たとえば、スキーマをTorque形式で定義し、データをDBUnit形式(どちらもXMLを使用)で定義できます。次に、ツール(独自に作成)を使用して、アプリのあるバージョンから別のバージョンに移動するDDLとDMLを生成できます。このツールは、(a)以前のバージョンのスキーマとデータのXMLファイル、または(b)既存のデータベースのいずれかを入力として受け取ることができるため、任意の状態のデータベースを常に正しい状態にすることができます。

于 2009-09-04T06:36:28.237 に答える
1

クリーンなマシンを使用して、ソース管理から最新バージョンを取得し、1 つのステップでビルドし、1 つのステップですべてのテストを実行できるようにしたいと本当に考えています。これを高速化すると、優れたソフトウェアをより速く作成できます。

外部ライブラリと同様に、データベース構成もソース管理にある必要があります。

すべてのライブ データベースコンテンツを同じソース管理に入れる必要があると言っているのではなく、クリーンな状態にするのに十分なだけであることに注意してください。(ただし、データベースの内容をバックアップしてください!)

于 2008-09-13T20:38:25.187 に答える
1

データベースを最初から既知の状態に作成できるはずです。

そうすることができると便利ですが (特に新しいプロジェクトの初期段階では)、多くの (ほとんどの?) データベースはすぐに大きくなりすぎて、それを行うことができなくなります。また、BLOB がある場合、データベース全体の SQL スクリプトを生成する際に問題が発生します。

私はある種の DB バージョン管理システムに興味を持っていましたが、まだ何も見つけていません。だから、解決策の代わりに、あなたは私の投票を得るでしょう。:-P

于 2008-08-28T23:45:32.063 に答える
0

そうすることができると便利ですが (特に新しいプロジェクトの初期段階では)、多くの (ほとんどの?) データベースはすぐに大きくなりすぎて、それを行うことができなくなります。また、BLOB がある場合、データベース全体の SQL スクリプトを生成する際に問題が発生します。

そこで役立つのがバックアップと圧縮です。申し訳ありませんが、開発に適した一連のデータを取得できないという言い訳はありません。たとえそれが単なるサブセットであっても。

于 2008-08-29T08:51:02.437 に答える
0

私は Django のやり方が好きです。モデルを構築し、syncdb を実行すると、作成したモデルが適用されます。モデルを追加する場合は、syncdb を再度実行するだけです。これは、プッシュを行うたびにビルド スクリプトを実行させるのは簡単です。

問題は、すでに作成されているテーブルを変更する必要がある場合です。syncdb がそれを処理するとは思わない。これには、手動でテーブルを追加し、モデルにプロパティを追加する必要があります。おそらく、alter ステートメントをバージョン管理する必要があります。ただし、モデルは常にバージョン管理下にあるため、必要に応じて、SQL スクリプトを実行せずに新しいボックスで db スキーマを起動して実行できます。これに関する別の問題は、データベースに常に必要な静的データを追跡することです。

Rails 移行スクリプトも非常に優れています。

DB のバージョン管理システムがあれば素晴らしいのですが、私はそのようなことをよく知りません。

于 2008-08-29T00:15:26.890 に答える
0

データベース開発をバージョン管理下に置きます。neXtep デザイナーを参照することをお勧めします: http://www.nextep-softwares.com/wiki

これは無料の GPL 製品であり、データベースの任意のバージョンを別のバージョンにアップグレードするために必要なアップグレード スクリプトを自動的に計算できる SQL 生成エンジンにバージョン情報を接続することにより、データベースの開発と展開にまったく新しいアプローチを提供します。既存のデータベースは、リバース同期によってバージョン管理できます。

現在、Oracle、MySql、および PostgreSql をサポートしています。DB2 サポートは開発中です。これは、常にリポジトリからバージョン管理された要素で作業する、フル機能のデータベース開発環境です。開発中に単純な同期によって更新を公開できます。バージョンを検証し、構造チェックを実行し、アップグレード スクリプトを適用するスタンドアロン インストーラーを介して、任意のターゲット データベースで実行できるエクスポート可能なデータベース配信を生成できます。

IDE は、SQL エディター、依存関係管理、モジュラー データベース モデル コンポーネントのサポート、データ モデル ダイアグラム、SQL クライアントなども提供します。

すべてのドキュメントと概念は wiki にあります。

于 2010-10-23T09:00:30.647 に答える