質問

アプリケーション データベースを開発すると、必然的に変更が発生します。私が見つけた秘訣は、データベースの構築をコードと歩調を合わせて維持することです。以前、ターゲット データベースに対して SQL スクリプトを実行するビルド ステップを追加しましたが、これは誤って偽のデータを追加したり、さらに悪いことに、危険です。

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

役に立ちましたか?

解決

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

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

他のヒント

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top