0

まず、クラウド ( Amazon RDS ) で MySQL を使用しています。私のデータベース定義スクリプトには、ビュー、トリガー、ストアド プロシージャ、ユーザーを作成し、ユーザーにアクセス許可を付与し、いくつかのデータ (ルックアップ テーブルなど) を挿入するステートメントがあります。このスクリプトには 2000 行の SQL コードがあります。このスクリプトを 1 つのファイルに保存し、mysql --user=myusername --password=mypassword << my.script.sql を使用して実行します。このファイルは SVN によって保護されています。

すべての SQL コードを 1 つのファイルに収めることの問題は、1 つの項目だけの SVN 履歴を確認するのが難しいことです (たとえば、テーブル Task とビュー TaskView の SVN 履歴を確認したいとします)。私の質問は: 人々はそのようなスクリプトをどのように保管していますか? 専門家は、各項目 (テーブル、ビュー、ストアド プロシージャ) をディレクトリ内の独自のファイルに格納しますか? もしそうなら、フォルダ内のすべてのミニ SQL スクリプトを展開するスクリプトを作成する必要がありますか? すべての .SQL ファイルを検索して DB にダンプするスクリプトを作成するだけですか? このようなスクリプトを整理するために、さまざまなフォルダーを使用しますか? たとえば、ビュー用に 1 つのフォルダー、テーブル用に 1 つのフォルダー、ストアド プロシージャ用に 1 つのフォルダーなどです。

乾杯 !

4

1 に答える 1

1

次のフォルダー構造があります

+ddl
....group1_ddl.sql
....group2_ddl.sql
+procedures
---level1
......single_sp.sql
......another_sp.sql
---level2
......another_uses_level1_sp.sql
---leveln
......remaining_sp.sql
+views
--level1
......group_of_views.sql

ご覧のとおり、それぞれ ddl、sps、およびビュー用の 3 つの最上位フォルダーがあります。

DDL

90% の場合、すべてのテーブルに対して 1 つの ddl スクリプトを使用します。論理的に分離できる ddl スクリプトを個別に維持する場合もあります。例: staging_ddl.sql、aggregate_ddl.sql

ストアド プロシージャ

  1. 複数のフォルダー (レベル 1、レベル 2) に注意してください。これは、ETL とビジネス全体がストアド プロシージャに実装されているため、数百行のコードを含む多数の sp (数十) があるためです。私たちはモジュラーコーディングを書いているので、他の sp に依存するいくつかの sp があります。そのため、他のSPに依存するSPはより高いレベルに移動します

    例: このシナリオでは、main_sp.sql はワークフロー全体を実行する 1 つの SP であり、この SP インターンは残りの SP を順番に呼び出し、インターンは他の SP を呼び出す場合と呼び出さない場合があります。

  2. したがって、main_sp.sql は level3 に移動し、child_sp.sql は level2 に移動し、grand_child_sp.sql は level1 に移動します。

  3. ファイル名はsp名と同じです

ビュー:

  1. ビューがそれほど複雑ではなく、簡単に維持できると思われる場合は、それらを 1 つのスクリプトで管理できます。
  2. しかし、私たちの場合、それらは 2000 行近くを超えるいくつかのビューであるため、ビューごとに 1 つのスクリプトで維持しました。
  3. ほとんどの場合、別のビューでビューを使用しないようにします。使用した場合は、上記で説明したように複数レベルの階層を維持します。それ以外の場合は、ビューごとに 1 つのスクリプトを維持します。
  4. ファイル名はビュー名と同じです

これが、私が 7 年以上にわたってスクリプトをうまく管理してきた方法です。

お役に立てれば

于 2012-12-20T06:34:49.337 に答える