web-dev-qa-db-ja.com

コンポーネントごとに個別のデータベースを使用する

私のクライアントはデータセンターアーキテクトです。

彼の仕事での経験(過去に多くのデータ損失を被ったために多くの顧客が彼を訪ねてきた)のため、彼はJoomlaサイトを構成して、各コンポーネント(JomSocial、EasyDiscuss、JomDirectory)がデータを別のデータベース。

このようなことをしたことがある人に関する情報を見つけることができませんでした。

私はそれがサイトをかなり遅くするかもしれないと思うが、可能であれば彼はそれを試したいと思う。

これは可能ですか?

これは良い考えですか?

4
nico

各コンポーネントのデータを異なるデータベースに格納することは、非常に悪い考えです。はい、それはJoomlaで可能ですisただし、大量のコアファイルにハッキングしたり、データベースクエリを変更したりする必要があります。拡張機能の1つをアップグレードすると、すべての変更が上書きされます。だからこれはノーゴーです。

代わりに、X時間ごとまたは1日ごとにスクリプトを実行するcronジョブを実行することをお勧めします。このスクリプトは、拡張子に属するすべてのデータベーステーブルのバックアップを取るだけです。拡張機能ごとに個別のスクリプトを作成するか、1つにまとめることができますが、個別のスクリプトを使用することをお勧めします。これにより、保守が容易になります。

テーブルのバックアップを作成したら、それらを目的のデータベースにインポートできます。

8
Lodder

コンポーネントを作成している場合は、データを別のデータベースまたはホストに格納するか、次のように別のテーブルプレフィックスまたはドライバーを使用できます。

$options = array(
    'driver' => 'mysqli',
    'Host' => 'localhost2',
    'user' => 'myuser2',
    'password' => 'mypassword2',
    'database' => 'mydatabase2',
    'prefix' => 'joomlaprefix2',
);

$db = JDatabase::getInstance($options);

許可されている場合はサードパーティのコンポーネントを変更することもできますが、コンポーネントを更新するとすべてが消えます。

2
Farahmand