web-dev-qa-db-ja.com

MediaWiki VCSバックエンド? (GitやMercurialなどのDVCSが望ましい)

MediaWikiの長年のユーザーとして、新しいWikiプロジェクトを開始したいと思います。MediaWikiの成熟度と非常に柔軟で強力な機能を高く評価しているからです。しかし、新しいプロジェクトのためにMediaWikiインフラストラクチャのすべてを採用したいのではないかと疑っています。

たとえば、すべてのwikiを1か所で編集できるようにするために、VCSバックエンドが本当に欲しいと思います。私の知る限り、MediaWikiはRBDMSバックエンドのみをサポートしています。私は最近、約4年前に 古い質問 に出くわしました。 GititとIkiwikiでしばらく遊んだ後、GitまたはMercurialとの統合を可能にするGititの方が良い選択であり、Ikiwikiとは異なり静的コンパイラーではないと感じています。 GititはMediaWikiよりもはるかに軽いソリューションのようですが、MediaWikiに比べて10%も強力ではないのではないかと思います。Webインターフェースでリビジョンを比較することはできません。私には、ほんの数個のプラグイン。しかし、バックエンドとローカルで同期でき、簡単にエクスポートしてすべてのGitまたはMercurialの機能を使用できるため、VCSバックエンドのアイデアが大好きです。

MediaWikiのGitリモートヘルパー があることを覚えています。これは、MediaWiki API over HTTPとGitの間の橋のようなソリューションです。私もそれをテストしましたが、このGit拡張機能は非常に未加工であり、動作が非常に遅いようで、場合によってはGitクローニングを再起動することもあると強く感じていました(おそらく実際のwikiのパフォーマンスのためです)別の問題。残念ながら、完全な履歴ダンプを取得することはできませんでした。

GitまたはMercurialを実際のMediaWikiバックエンドとして使用する方法はありますか?

編集:

簡単なWikiフルデータレプリケーションソリューションを探しているようです(記事、トークページ、テンプレート、ファイルが必要です;オプション:おそらくユーザーデータベース(VCSがユーザー情報自体、またはMercurial ACLなどを格納していると仮定) wikiコンテンツ自体と密接に関連していないその他の小さなもの)と、簡単に移行できるインフラストラクチャ。

6

次の理由で(市販のソフトウェアを使用して)存在しないと思います。

Sqlとgitは、設計上非常に異なるストレージシステムです。

SQLは、深く相互接続された大量のデータを1つの大きなファイルに格納することです。したがって、効率的なインデックス作成と検索が可能になります。

Gitは、多くの小さなファイルにプログラミングテキストを保存することに関するもので、これらのファイルの内容は 可能な限り独立している であるという記述されていない仮定を使用しています。したがって、1つのファイルの変更が他のファイルに影響を与えることは一般的にないため、マージが容易になります(少なくとも理想的な世界では)。

MediaWikiの設計は、RDBMSをストレージ、特にMySQLとして使用することに密接に統合されています。他のストレージシステムをいくつでも選択できますが、これを選択すると、システムの多くの部分に影響を与える可能性があります。 Wikiで述べたように、約2年前にgitバックエンド機能を開発するプロジェクトが進行中でしたが、それは放棄されたようです。

開発者がサポートしていない場合、MediaWikiにはSQLサーバーのように見えるが、実際にはgitなどの(D)VCSで管理できる「テキスト」ファイルの束である他のオプションを使用するだけです。

ODBCコネクタは、すべてではないにしてもほとんどのプラットフォームでフラットファイルのコレクションをサポートするために存在しますが、その機能はSQLサーバーを装うには十分ではありません。問題は、MediaWikiがサードパーティがデータテーブルを変更することを期待していないため、サードパーティからそれらのファイルへのパッチを受け入れることは、データベースの内部の一貫性を壊さないように行われなければならないことです。

確かに一部のアプリケーション、特に単純なアプリケーションでは可能ですが、アプリケーションに大きく依存しており、MediaWikiはかなり複雑です。

利用可能な「git for build」スタイルのウィキの1つ機能を使用する特定の利点を比較検討してください。 MediaWikiと比較していません。

2
John McNamara

MediaWikiには ストレージアブストラクションレイヤー があり、これにより技術的に可能になります(リンクされたページは外部データベースの使用について説明していますが、実際にはそれに限定されません; ExternalStore 詳細)。独自の ExternalStoreMedium サブクラスを記述する必要があります。 wikiにはまだRDBMSバックエンドがありますが、ページテキストは代わりにgitに保存されます。

実際には、これがあなたにとって物事をより簡単にすることを強く疑います。

2
Tgr