2012-04-24 4 views
2

Wordpressは投稿の複数のエントリを「リビジョン」として保存していると思いますが、スペースが非常に非効率的に使用されると思いますか?ウェブアプリケーションのデータ用にリビジョン/バージョン管理を実装するには

良い方法がありますか?私はgititはバージョン管理のためにGITを使用するWikiだと思いますが、どうやってですか?例えば。私のアプリケーションはPHPで書かれているので、データをコミットして取得するにはGITと話をする必要があります。

ので、Webアプリケーションでバージョン管理を実装するための良い方法何である(例えばブログでそれがポスト内容かもしれません)

+0

おそらく、VCSを使用するレベルを指定する必要があります。 2つのポストバージョンを保存するか、各レターを個別のリビジョンとして押して削除したことを思い出してください。 – Kromster

+0

@KromStern、私は最初に2つのポストバージョンを保存したいと思います。可能であれば、変更を保存するのが良いかもしれません。そうでなければ、2つの投稿を格納することはtrivalになります。 diff機能を持つことは便利な追加になります –

答えて

12

私は最近、置き換えられたレコードのコンセプトを使用して、以前のリンクと現在のリンクを使用したシステムを実装しました。私はこれを達成するための最善の方法についてかなりの量の研究を行いました - 最終的に私が到着したモデルはWordpress(と他のシステム)に似ています - 新しいレコードとして変更を保存し、これを使用してください。

利用可能なすべてのオプションを考慮すると、スペースは実際に投稿などのオーサリングされたコンテンツの最後の懸念事項です。メディアファイルはより多くの領域を占有しますが、これらはデルタとして格納できません。

いずれにしても、Gitの仕組みは実質的に同じですが、すべてのリビジョンのコンテンツ全体が格納されますが、最終的にデルタにパックされることになります。

Git Storage Object graph

我々はストレージの不足を避けるために効率的であると私たちは本当にバージョン管理を必要な空きディスク容量の30メガバイトのみで時々SCCSやRCSとを使用していた1990年に戻って。

デルタを使用して領域を節約することは、現代のシステムで使用可能なストレージの平均容量を考慮すると、それほど大きな問題にはなりません。あなたはそれが古いバージョンを検索する方が簡単です

  • 高速です
    • 元の形式で、しかし私はそれが圧縮されていないものを保存するために、長期的にははるかに効率的であると主張するだろう、それはスペースの無駄だと主張でき
    • これはすばやく表示されます
    • 多くのデルタを処理することなく、一連の変更の途中にジャンプする方が簡単です。
    • デルタ生成アルゴリズムを記述する必要がないため、実装が非常に簡単です。

    また、マークアップは、特にwysiwygエディタで編集する場合、デルタ付きのプレーンテキストと同様に料金がかかりません。

  • 2

    例えばの最新バージョンで一つのテーブルをキープ記事。

    新しいバージョンが保存されると、最新のバージョンを最初のテーブルに保持したまま、アーカイブテーブルの現在の部分を移動してバージョン番号を付けます。

    アーカイブテーブルには、ROW_FORMAT = COMPRESSED(MySQL InnoDbの例)のようにスペースをとらないことができます。これはほとんどアクセスされないためパフォーマンス上の問題にはなりません。はい、チェンジセットを保存するのではなく、幾分オーバーヘッドですが、数学を行う場合は、記事は圧縮性の高いテキストであるため、殆どスペースのない膨大な量のリビジョンを保持することができます。

    たとえば、このページ全体のソースコードは11Kbに圧縮されています。それは1Mb上でほぼ100のバージョンを提供します。これと比較して、普通の記事はかなり小さく、1Mbの記事/バージョンが500-1000件になることがあります。あなたはそれを確かに与えることができます。

    関連する問題