2010-12-05 15 views
0

バージョン管理下にユーザのコンテンツを格納するためにmyqlスキーマをどのようにモデル化するかについてのツールやガイドはありますか? svnリポジトリに似ていますが、コードの代わりにすべてのユーザーオブジェクトをバージョンする必要があります。この日に2年前に写真がどのように表示されたかのように。彼はどのような設定をしていましたか?はい、私はテーブルにバックアップコピーを保存することができますが、問題はオブジェクトの種類によって数百、数百のテーブルが関わっていることです。そして私は毎日shanpshotsを取って、後で編集するたびにそれを実装する予定です。ですから、基本的に私はsvnリポジトリがどのようにデータベースの内容を格納しているのか、Windowsがデータベースにポイントを復元してそのモデルを模倣することができますか?私にとって必要なのは、メインデータベースにmysqlを使用する必要があるということだけです。私がそれを見る方法は:ユーザデータのバージョン管理リポジトリ

アクティブなデータと過去のデータです。アクティブなデータには現在のコピーがあります。履歴データは、日付/時刻で索引付けされます。しかし、毎日各ユーザーの数百のテーブルデータを維持することは、平均365 xユーザー数xのテーブル行数を意味します。私は3NFのmysqlでそれをmoelingするのが最善の方法であるかどうかは分かりませんか?

+0

は思わより悪い行うことができます。現在の体系を見せてくれますか? –

答えて

0

単純に、すべてのデータベースエントリとともにtimpstampフィールドを持つことができます。次に、データを削除する代わりに、遅延削除を実行します。つまり、削除のタイムスタンプを再度格納できる「削除済み」フィールドがあります。これらを組み合わせることで、履歴クエリーを実行できます。

ヒストリカルスナップショットからこれを実装すると、エントリが表示された最初または最後のスナップショットに基づいてタイムスタンプを推定し、それに応じてデータベースエントリを修正できます。

+0

しかし、どのようにテーブルを制御する?たとえば、あなたのプロフィールの詳細を取る。それは10のテーブルの向こう側に50のフィールドを持っています。私は365日シェイプショットを取ると私は1000万人のユーザーがあります。だから1年後には、テーブルごとに30億と650万の行がありますか? – Brian04

+1

変更が発生した場合にのみ、新しい行を保存します。典型的には、1日に1回よりはるかに少ない。 – marcog

+0

これがどのように機能するのか考えてみましょう。 – Brian04

0

バージョン管理は問題ではありません。それはいろいろな方法で解決されていますが、それを自分で正しくやり直すのは簡単ではありません。 Eric Sinkは、自分のバージョン管理ソフトウェアの開発に非常に良いブログを書いています。少し複雑です。

ファイルの多くはバイナリで、効率的には保存されません主にテキストを扱うように設計されているため、VCシステムによるものです。あなたが非常に良いdiffエンジンを持っていなければ、非常に迅速に作業することができます。

あなたのソフトウェアは、Subversion、Git、Mercurialや他の優れたソース管理ツールのようなハードワークをすでに行っているものにソフトウェアをインターフェースすることに集中することをお勧めします。これらのファイルをリポジトリとして使用して、すべてのファイルを保存してバージョンを作成し、ソフトウェアのオンタップを構築して、すべてのことを理解することができます。

効率的なバージョン管理システムを構築するには、実際に何をしているのかを知る必要があります。専門家が作成したものを再利用しないでください。

あなたはまだそれを自分でやって上のホGUNGしている場合、あなたは最初のDBのスキームをリファクタリングする必要があるようEric Sinks Source Control How-To

関連する問題