4

.net プラットフォームのプロジェクトに取り組んでおり、複数のデータベース タイプをサポートしたいと考えています。DDL を一般的な形式でソース管理下に置いてから、展開用にデータベース固有の DDL に変換したいと考えています。

そこで、汎用 DDL をデータベース固有の DDL に変換するユーティリティを探しています。理想的には、MSSQL 05/08、MySQL、Oracle、Postgres、および DB2 をすぐにサポートできます。

これまでに見つけたツールは次のとおりです。

  1. XML から DDL
    • MSSQL の組み込みサポートはありません。
  2. Ddlユーティリティ
    • コマンド ライン ユーティリティはありません。Java または Ant スクリプトから呼び出す必要があります。
  3. ActiveRecord::移行
    • 外部キーのサポートなし
    • .net プロジェクトとの統合方法がわからない。

私が言及した経験を持っている人、または他の人を知っている人はいますか?

4

9 に答える 9

2

NHibernate のSchemaExport ツールは、NHibernate がサポートする DBMS ダイアレクトのいずれかの OR マッピングから適切な DDL を生成できます。ただし、他の人が暗示しているように、そのレベルで作業している場合、DBMS 間のかなり薄い共通分母に実際に制限されます。

于 2009-01-10T23:00:08.647 に答える
1

Ruby / Railsの ActiveRecord Migrationsを Oracle、SQL Server 2005、MySQL、および SQLite で使用して成功しました。Accessでもなんとか使えたと思いますが、それはメモリの不具合かもしれません。また、「そのまま」または追加のダウンロードによって、私が知っている PostgreSQL と db2 もサポートしています。また、よりエキゾチックなものが必要で、自己鞭打ちの DIY プロジェクトが必要な場合は、いつでも独自のアダプターを作成できます。

これは非常にうまく機能しますが、これはプラットフォーム固有の機能へのアクセスを制限する概念であることを受け入れる必要があります。AR だけでなく、おそらく、莫大な費用がかからないクロスプラットフォーム ツールを使用します。たとえば、ターゲット プラットフォームがトリガーをサポートしていない場合はどうしますか? またはストアドプロシージャ?(たとえば、MySQL 4.0、または SQLite)。どのクロスプラットフォーム システムでも、このような問題に対処する必要があります (たとえば、SQL Server クエリで Oracle の外部結合演算子を適用しようとして壊滅的に試みたバージョンと格闘した後、Crystal Reports に対する生涯の嫌悪感を覚えました)。

テーブル、インデックス、およびより単純な制約に固執する場合は、さまざまなプラットフォームを利用できると思います。一般的に、DB の外部で処理されるものをさらに探す必要があることを示唆する議論があります。ここではそれ以上には立ち入りません - これはやや宗教的な議論です...

于 2009-01-11T11:28:58.870 に答える
1

私は、Liquibaseがあなたの望むことをしてくれると信じています。また、データベースの変更を長期にわたって管理してくれるでしょう。

于 2010-01-29T16:52:54.203 に答える
1

SQL Server をサポートしていると私が知っているのはSQLFairy だけです。Perl で書かれており、かなり機能が豊富です。XML2DDL も非常に優れていますが、選択した DBMS をサポートしていない場合、実際には実行できません。

于 2009-01-10T22:47:35.613 に答える
0

DDLUtils で基本的な実験を行いました。Mysql、MSSql、および oracle を試してみましたが、正常に動作します。テーブルの作成、制約、およびインデックスをチェックしました。アクティブではなく、ブロッカーのバグが長い間開いているため、使用を拒否しました。

于 2010-01-21T08:29:58.737 に答える
0

アプリケーションが完全にデータベースに依存しないことは必須の機能ですか? これほど多くのデータベースをサポートするために、これほど多くの労力を費やす必要があると考えるのは、かなり無理があるように思えます。さらに、各 RDBMS には微妙な違いがあるため、データ レイヤーは信じられないほど複雑になります。

于 2009-01-10T22:49:44.393 に答える
0

DDLUtilsは正しい選択のようです。プロジェクトが最近あまり活発でない場合でも、非常にうまく機能します。

コーディングは問題なく、問題はありませんでした (MySQL、Oracle、H2DB などで作業しています)。

確かに、今のところコマンド ライン ビルトインはありませんが、コマンド ラインから ant タスクを起動するか、独自のコマンド ライン ラッパーを作成することができます (それほど難しくはありません ... 私は自分で作成しました。実際には)。

于 2009-12-16T23:12:59.500 に答える
0

jOOQ は、DDL だけでなく、方言間で任意の SQL を変換できます。可能なもののオンライン バージョンは、https ://www.jooq.org/translate で見つけることができます。また、CLI バージョンも利用できます。

免責事項:私はjOOQの背後にある会社で働いています

于 2021-08-23T18:35:58.180 に答える
0

テーブルとそれらの関係の抽象的な表現を取得することに成功するかもしれませんが、ビュー、ストアド プロシージャ、トリガーなどをどのように扱うのでしょうか?

于 2009-01-10T23:35:56.517 に答える