2010-12-13 9 views
4

Ruby on Railsの世界から来て、私はデータベースを効率的にバージョンアップしようとしています(レールの場合は、その目的に合ったマイグレーションです)。yii phpフレームワークでデータベースのバージョン管理を維持する最善の方法は何ですか?

現在、私はデータベースのスナップショットを取得しており、スキーマ全体を定期的にエクスポートしていますが、プロセス全体はかなり手動です。

これを行うより良い方法はありますか?

p.s.私はmysqlを使用しています。

+0

私はPHPとその世界で利用できるものについて何も知らない。しかし、データベースのバージョン管理、ロールバックなどをプラットフォームに依存しない方法で可能にするliquibaseを常に使用することができます(Javaで書かれています)。 –

+0

私はここであなたが達成しようとしていることについてもっと知りたいと思います。 1つのマスターDBのスキーマで他のデータベースを更新していますか?もしそうなら、何人ですか? MySQLのdbサービスは、スレーブサーバのためのメカニズムを提供しています。スレーブサーバは、すべての変更をサブスクライブし、マスタ上のすべてのアクションを複製します。それを実装するにはPHPは必要ありません。 – zanlok

+0

zanlok、私はスレーブサーバーを展開しようとしていません。 dbバージョン管理システムには多くの利点があります。たとえば、開発者/コードブランチ間の調整や、データベーススキーマの変更への参照を保持する方が簡単です。どんなタイプの手動プロセスでも人為的ミスが起こり易い。この日、私はあなたの変更を自動的に追跡して日付を記入するシステムがたくさんあるはずだと思いました。 – etang

答えて

4

Yii 1.1.6では、というデータベース移行の概念がありますです。これにより、PHPコードを使用してDBに依存しない方法でデータベース操作を行うことができます。詳細は、http://code.google.com/p/yii/issues/detail?id=1191を参照してください。

+0

+1クールチップ用。私たちは現在、dbdeployに基づいた独自のツールを使用しています(必要なときの実装は本当に****なので、私たち自身で作成しました)。これは私たちのために本当にうまくいく。しかし、1.1.6が公式に出てくるとすぐにYiiの実装をチェックアウトします:) – Blizz

+0

私はDoctrineプロジェクトが提供する移行機能を使用することを考えていました。しかし、 "すぐに使える"ソリューションは常にいいです – galymzhan

0

基本的に:NO。 PHPで何か在庫がありません。自然の中ではかなり自明でない場合 -

もつとも ...などSHOW CREATE <table_name>;コマンドなどから和解方式は、まだあなたが何を言ってるのか行うには信頼性の高い方法です。あなたがそれを検出して複製する必要があるならば、スキーマ定義の仕組みの細部を非常に意識しなければなりません。ただし、スキーマを更新するときに更新するバージョン番号を追跡する特別なフィールドを自由に開発できます。そして、少なくとも、そのバージョンフィールドのデータを比較することで、他のレプリケーションターゲットをいつ更新する必要があるかを知ることができます。

私は通常、これが実装されているのは、すべてのALTER TABLEコマンド(など)を追跡して追跡する方法です。 'r12345.sql'ファイルのようなものをSVNにチェックインして、DBアップデートを自動的に実行するシステムを構築することができます。それは関与しているが、私が意味することは、PHPスクリプトがすべてのdbスキーマの.sqlファイルをチェックし、現在のデータベースに変更を再生する(シリーズで)それぞれを実行できることです。

多くのことは、達成しようとしていることによって異なります。あなたがより多くの情報を提供すれば、私は解説します。

関連する問題