問題タブ [database-versioning]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
155 参照

oracle - データベースのバージョン管理から始める

私はデータベースのバージョン管理が初めてで、プロジェクト管理のツールのような Maven を使用している Java Web アプリケーション (vaadin、spring、spring-data-jpa) を開発しています。manen を通じて、リリースとソース コードのバージョン管理を行っています。今、私の問題はデータベースのバージョン管理です。私は例を通して私の問題を説明しようとします:

アプリケーションがバージョン 0.0.1-SNAPSHOT のとき、いくつかのテーブルを含むデータベースを作成しました。ある時点で、このバージョン (1.0.0) をリリースし、トランク ( SCM) 私はバージョン 1.0.1-SNAPSHOT を持っています。ここで、いくつかの新しい機能を追加する必要があります。これらの新しい機能には、他のテーブルと属性を追加する必要があります。これらの新しい機能の開発が終了したら、データベースを更新して (1.1.0) をリリースします。何らかの問題で 1.0.0 を再インストールしたい場合、データベースの状態をリセットできません。データベースのバージョン管理へのプラグインがあることを知りましたHow to: maven2 によるデータベースのバージョン管理? 、しかし、これらの場合のガイドラインとは何か、およびそれらを管理できるプラグインについての提案が必要です。

0 投票する
2 に答える
3550 参照

mysql - Liquibase (changeLogSync、update、changeLogSyncSQL) は、テーブルを作成したり、データを挿入したりしません

私はこの男のページに従って、Liquibase のセットアップ ( http://bytefilia.com/managing-database-schema-changes-liquibase-existing-schema/ ) を取得し、少なくとも私のベース テーブルとデータを使用しています。無事に完走しました

これをテーブル構造用とデータ用に 2 回行います。

boot.json と base-data.json の両方のファイルが生成されます。これらのファイルは、少なくとも他の Web サイトや liquibase ファイルと比較して優れているようです。私が見つけた唯一の問題は、データファイルで日時スタンプが ":" に関するエラーを生成することですが、それらを引用符で囲むと、liquibase が実行され、syas が正常に実行されました。データベースを確認したところ、テーブルが2つしかありませんでした。

DATABASECHANGELOG の中を見ると、sync コマンドを実行した後、両方のファイルからのすべてのコミットが含まれています。しかし、必要なテーブルはなく、もちろんデータもありません。バージョン管理されているテーブルが表示されないのではないかと思ったので、通常のselectステートメントを試しました。

どんな助けも素晴らしいです。エクスポートしたデータを使用して、新しいデータベースからスキーマを生成する liquibase を取得するには、どうすればよいですか。データとテーブル構造を取得する際に何か間違ったことをした場合は、それを変更します。私は、主要な開発を試みる前に、実際の例を実行するための指示に従っていただけでした。

---更新 (Nathan Voxland からの次の提案)

最初に 1 つのテーブルを除いてすべてのテーブルを削除しました。データベースを削除して、新しいデータベースを作成しました。次に、以下のコマンドを実行しました。

boot.json

指示

エラーメッセージ

0 投票する
2 に答える
2216 参照

database - API のバージョン管理とデータの保存

異なる API バージョンを公開する場合、構造が異なる可能性のあるデータの保存と取得をどのように処理しますか?

2 つの API バージョンがあるとします。V1 と V2。V1 と V2 の両方に、' https://api.com/message ' に POST エンドポイントがあり、次のような渡されたデータに基づいてデータベースにメッセージを作成します。

V1 では、必要なデータが V2 とは異なります。V2 では、DOB を「YYYY-MM-DD」形式の文字列から整数のタイムスタンプ (例: 1284723728323) に変更することにしたためです。

この場合、V2 API を使用して呼び出しからデータを保存すると、DOB フィールドは整数になりますが、V1 への呼び出しから保存すると、非常に異なる形式の文字列になります。

API を反復するたびに、基礎となるデータの多くの側面を変更する可能性があります。古いバージョンの API を呼び出すと、保存されたデータが他のバージョンの API に対して正しくなくなります。

さまざまな形式/構造のデータを必要とするさまざまな API バージョンを処理するエレガントな方法はありますか?

0 投票する
0 に答える
87 参照

sql-server - データベース プロジェクトによる複雑なリファクタリングとバージョン管理

次のようなテーブルがあるとしましょう。

ここで、これを SQL Server データベース プロジェクトで構築し、アプリケーションのバージョン 1.0 で公開するとします。アプリケーションがデプロイされ、テーブルが期待どおりに使用されます。

1.1 リリースでは、製品所有者はデータのソースを追跡することを決定し、これは今後必須の列になります。データベースに既に存在するデータの場合、Data列が数値の場合は、 Source「NUMBER」にする必要があります。そうでない場合は、「UNKNOWN」である必要があります。

データベース プロジェクトのテーブルは次のようになります。

これで問題なくビルドできますが、アップグレードをデプロイすると問題が発生します。データがテーブルに存在する場合、これは壊れます。生成されたスクリプトは、一時テーブルを作成し、古いテーブルから一時テーブルにデータを移動し、古いテーブルを削除し、一時テーブルの名前を元の名前に変更します...しかし、そのテーブルにデータがある場合はそうしません。 null 非許容の列に値を割り当てることはできませんSource

些細なリファクタリングの場合、リファクタリング ログはスキーマの変更を追跡し、変更されたデータベース オブジェクトの認識を維持しますが、少し手を汚すとこれを行う方法がないようです。

データベース プロジェクトをどのように活用して、この変更の既定のスクリプトをアップグレード ロジックを適切にキャプチャするカスタム スクリプトに置き換えることができますか? この問題に対処する何らかの方法があるはずです。

0 投票する
2 に答える
1340 参照

php - 異なる GIT ブランチで Doctrine 2 移行を使用するベスト プラクティスはありますか?

私は Doctrine 2 に依存する Zend Framework 2 プロジェクトに取り組んでいます。ソースのバージョン管理は GIT によって処理されます。GitFlow を分岐モデルとして使用しています。

問題のある状況:

パッチを適用する必要があり、本番ブランチに移行 003.php を作成するとします。また、最終結果が次のようになるように、Develop ブランチへの 003.php の変更を選択する必要があります。

しかし、ここに問題があります。開発データベースの現在の移行が 004 で、003 が追加された場合、それは実行されません。

Doctrine 2 の移行を処理する最良の方法は何ですか?

0 投票する
1 に答える
2019 参照

c# - バージョニングのための Web API スタックの構造化

そのため、私は過去数時間、Web API のバージョニングに関する非常に素晴らしいアドバイスを探し回ってきました。私と同じくらい楽しんでいる人のために、私のお気に入りのいくつかを、順不同で:

API のバージョン管理のベスト プラクティスは?

ASP.NET MVC アプリケーションの REST API のバージョン管理

http://www.troyhunt.com/2014/02/your-api-versioning-is-wrong-which-is.html

http://www.pluralsight.com/courses/web-api-design

http://www.pluralsight.com/courses/implementing-restful-aspdotnet-web-api

したがって、このすべてのアドバイスは、本質的に API の「フロント エンド」を設計する上で非常に役立ちました。API 呼び出しをバージョン管理できます...さて、難しい部分に取りかかります。

これは、月次リリースを行う複数の製品 (これは新しい製品です) を持つ企業向けの、非常にデータ駆動型のアプリケーションです。API 呼び出しの長期サポートを希望する大規模な顧客もいれば、最新リリースを希望する小規模な顧客もいます。これは、API のマイルストーン/長期サポート リリースに似たもので管理できます。偉大な。

しかし、実際には、これは非常に厄介で、非常に速くなります。私たちは、独自の Web サイトのレイヤー、ベータ版の内部/外部 API、リポジトリ レイヤー、さらには起動する SDK を分離するために懸命に取り組んできました。各リリースを別々のブランチに分けていますが、それは SAAS であり、データベースをホストしています。したがって、API 呼び出しをバージョン管理できるだけでなく、その下にあるすべてのものをバージョン管理できます。ビジネス ロジック、リポジトリ、およびデータベース。ユニット/統合テストを始めることさえやめましょう。

したがって、試みておそらく失敗する場合は、ここで 1 つの質問だけをしてください。

複数のバージョンに対応するために、階層化されたデータ駆動型の .NET アプリケーションを構築する適切なパターンはありますか?

具体的には、データベースがどのように変更されるか、およびすべてをバージョン管理するために汎用スタックを構築する方法です。私が持っているいくつかのアイデアは次のとおりです。

  • スタックの古いソース管理ブランチを更新し、これらをデプロイする
  • すべてを同じプロジェクトに保持しますが、フォルダー/名前空間をずっと使用します
  • プロジェクトをさらに分割 - API ソリューションには、ロジック/リポジトリ レイヤーの同様の概念を持つ多数の「コントローラー」プロジェクトがあります。

私たちにはかなりの数の開発者がいて、どれだけ ace のドキュメントを書いても、現実的には何かがうまくいかないときにしか読まれません。したがって、理想的には、開発者がこれを正しく理解できるように、できるだけ明白にする必要があります。