2011-09-04 3 views
6

私は、Webアプリケーションで単純なMySQLスクリプトを使用して、DBをクリーンな初期状態に再構築/リセットすることができます。したがって、このスクリプトでは、必要なさまざまなテーブル、ストアドプロシージャなどを定義します。特定のWebフレームワークとは独立したMySQLスクリプトを操作するための優れたDSLはありますか?

これは非常に良い初期解決策です。簡単ですし、過労でもなく仕事をします。しかしながら、いくつかの欠点がある。 1つの例はタイピングです。 VARCHAR(64)のような宣言を繰り返す必要はないので、より豊富な型を持つストアドprocsを定義すると良いでしょう。

したがって、私の質問は:は、MySQLスクリプトを操作するための良いDSLですか?(例えば、最終的には有効なMySQLスクリプトを生成することができます)は、MySQLを上回る優れたDSLであり、あまりにも多くの鐘や笛を吹き飛ばすことはありません。言語そのものがDSLをうまくサポートしていればうれしいですが、もっと重要なことは、特定のWebフレームワークに大きく依存していないものを見つけることは良いことです。

大まかな検索ですぐに明らかなものが得られない場合があります。

実用的な選択肢の1つは、あなたの好きなORMを効果的な解決策を得る方法として使うことです。したがって、この質問の動機の一部は、DSLのアプローチがどのような成功のために探究されているかを見ることです。 SQL は(かなり広く受け入れられているMartin Fowler氏の定義による)、すなわち外部DSL DSL、あるので、私はあなたが内部DSLを意味すると仮定してい

答えて

2

http://martinfowler.com/bliki/DomainSpecificLanguage.html、およびhttp://en.wikipedia.org/wiki/Domain-specific_languageを参照してください)。

その仮定を考えると、私はいくつかの内部DSLのSQLコードを生成するために見つけることができた、あなたが好むどのような言語を知らない:

  • ルビー - sqldsl.rubyforge.org/
  • のJava - コード.google.com/P/SQL-DSL/
  • スカラ - github.com/p3t0r/scala-sql-dsl

あなたは、 "SQLのDSLを" Googleの場合より存在し、また、「SQLのDSLをグーグルでみてください[あなたの好きな言語をここに入力してください] "より適切なものにind。

利点と欠点(内部DSLよりも)が異なる別のアプローチは、テンプレートからSQLコードを生成することです。変数エスケープ(または連結)を伴う文字列形式のテンプレート、またはテンプレート言語を使用する別のファイルのいずれか。

+0

ありがとう、そして確かに、テンプレート作成は、多くの状況で優れた80%のソリューションです。 –

関連する問題