10

長い間、私たちはプロジェクトのリポジトリ内にデータを保持してきました。すべてを data/sql の下に保持し、各テーブルには独自の create_tablename.sql および data_tablename.sql ファイルがありました。

2 番目のプロジェクトを Scalr にデプロイしたところ、少し面倒であることに気付きました。

デプロイ方法:

プロジェクトを 3 つのアーカイブ (データ、コード、静的ファイル) に分割するスクリプトの「packageup」コレクションがあり、それらは S3 の 3 つの個別のバケットに保存されます。

ロールが起動するたびに、ファイルの 1 つがダウンロードされ (ロールに応じて、データ、nfs、または Web)、「パッケージ解除」スクリプトが各ロールのすべてをセットアップし、データを mysql にロードし、nfs をセットアップします。 .

サーバー イメージを保存したくないので、このようにします。常にバニラ インスタンスから開始し、さまざまな社内ビルド スクリプトを使用してすべてをゼロからインストールします。起動時間は問題ではありません (9 分でファームを使用できるようになります)。

問題は、新しい開発ビルドをセットアップしようとするたびに、適切なバージョンのデータベースを見つけようとするのが面倒なことです (いつでも、1 つのプロジェクトに対して約 4 つの開発ビルドがあります)。また、本番環境に入ると、git が詰まり始めています。SQL ファイルのサイズが合計で約 500 MB になるからです。

質問は:

他の人はどのようにデータベースを管理していますか? データを本番環境から開発環境に簡単に移行できるものを探していましたが、開発環境から本番環境にデータを移行することもできましたが、何も見つかりませんでした。

4

5 に答える 5

4

dbdeploy(dbdeploy.com)を真剣に検討する必要があります。これは多くの言語に移植されており、主要な言語はJavaとPHPです。AntやPhingなどのビルドツールに統合されており、いわゆるデルタファイルを簡単に共有できます。

デルタファイルは常にデプロイセクションで構成されますが、元に戻すセクションを含めることもできます。デルタファイルをコミットし、別の開発者がそれをチェックアウトすると、dbdeployを実行するだけで、すべての新しい変更がデータベースに自動的に適用されます。

オープンソースのブログにdbdeployを使用しているので、デルタファイルがどのように編成されているかを確認できます:http ://site.svn.dasprids.de/trunk/sql/deltas/

于 2010-08-22T15:08:00.007 に答える
2

私があなたの主な質問をどのように理解するかは、SQLデータを開発から本番に移行する際の他の人々の経験です。

私はMySQLの代わりにMicrosoftSQLServerを使用しているので、私の有効期限を直接使用できるかどうかはわかりません。それにもかかわらず、この方法は非常にうまく機能します。

Visual Studio 2010 Ultimate Editionを使用して、2つのデータベースのデータを比較します。同じ機能は、Vinsual Studio Team Edition 2008(またはデータベースエディション)にも存在します。http://msdn.microsoft.com/en-us/library/dd193261.aspxを読むことができますそれがどのように機能するかを理解するために。2つのデータベース(devとprod)を比較し、データを変更するためのSQLスクリプトを生成できます。一部のテーブルまたは一部の列を比較から簡単に除外できます。結果を調べて、スクリプトの生成から一部のエントリを除外することもできます。したがって、データベース内の変更の展開に使用できないスクリプトを簡単かつ柔軟に生成できます。構造から2つのデータベースのデータを個別に比較できます(スキーマ比較)。したがって、dev内のデータをprodからのデータで更新したり、prodデータベースをdevデータベースの最後のバージョンに変更するスクリプトを生成したりできます。この機能とhttp://www.red-gate.com/の一部の製品(http://www.red-gate.com/products/SQL_Compare/index.htmなどを確認することをお勧めします。

于 2010-08-19T10:43:47.787 に答える
0

カピストラーノをチェックしてください。これは、Ruby コミュニティがさまざまな環境への展開に使用するツールであり、非常に便利だと思います。

また、デプロイメントが滞り始めている場合は、 Murderというツール twitter を試してみてください。

于 2010-08-11T15:46:45.870 に答える
0

ソリューションの 1 つは、各コード モジュールのバージョンとそれに対応するデータ リソースを 1 つの場所にキャプチャし、それらを比較して一貫性を確保することです。たとえば、customer_commentsモジュールのバージョン番号が増えると、関連する DB テーブルをデータの同じバージョン番号にアップグレードするために、対応する SQL デルタ ファイルが必要になります。

例として、@AlanStorm によって文書化されているMagento のcore_resource アプローチを見てください。

乾杯、JD

于 2010-08-23T05:28:39.937 に答える
0

個人的にはヒキガエルを見てみたい

http://www.toadworld.com/

10k 未満 ;) ... データベース構造を分析し、それらを変更するスクリプトを作成し、データを移行します。

于 2010-08-22T15:12:43.870 に答える