2012-05-07 4 views
2

私はDrupalを使用してマルチサイトを含むシステムを実装する必要があります。 (予期された1000のサイト) Drupalでは、複数のデータベースまたは接頭辞付きの1つのデータベースを使用できます。 数千のサイトでは、プレフィックス付きのデータベースではなく、複数のデータベースを選択できます。そして、すべてのデータベースは同じテーブル構造を持っています。 問題は次のとおりです。 は、すべてのサイト(すべてのデータベース)から情報を収集するクエリが頻繁にです。 例:カテゴリがシューズであり、すべてのデータベースから投票率が良い20製品を選択します。 私は今すぐ3つのソリューションを持っています:Drupalのマルチデータベース

  1. forループを使ってデータベースを選択してください。それは1000クエリを意味します "select * from db1.table1 where category = 123 and vote = 10";そして、一致する製品を選択します。私は、パフォーマンスが悪いと思う。なぜなら、すべてのデータベースに多くの行があると、あまりにも多くのメモリが使用されるからです。
  2. Select * FROM db1.table1 ....を使用してください。UNION SELECT * FROM db2.table1 .......私はそれも悪いと思います。 mysqlはdb1から最初に選択するので、20個の製品があれば、mysqlは検索を停止します。
  3. すべてのデータベースに挿入するたびに、サイトフラグ付きの非常に大きなデータベースに挿入されます。つまり、SELECT * FROM largeDB.table WHERE category = 123 and vote = 10 "という非常に大きなデータベースから選択クエリを実行することができます。

私にはさらにアドバイスをお願いします。どうもありがとうございました。 P.S:同じデータベースがある場合は、データベースの維持に関する問題についてさらに教えてください。

+0

誰でも教えてください。 –

+0

特定のデータベースをタグ(例:mysql)として追加した場合、おそらく答えが得られるでしょうか。この質問については、特にDrupal指向のものはありません。 – Grayside

+0

はい、これは非常に混乱しています...各データベースはサイト固有の関連データを保持していますか、(私が得たものから)別々のデータベースに分けるだけですか? 1つのサイトまたは複数のサイトがありますか? – Beyerz

答えて

1

私は、Drupalのすぐに使用できるマルチサイト機能を認識していますか?あなたがしなければならないことは、サイトフォルダに新しいフォルダを作成し、シンボリックリンクを作成したり、sites.phpに追加したりすることです(サーバに応じて動作する場合と動作しない場合があります)。

申し訳ありませんご存じの方は、これがうまくいく場合は、カスタム解決策を講じないようにしてください。これは、1つのDrupalインストールで独自のデータベースを持つ複数のサイトを非常にうまく処理します。残念ながら、私は単一のサイトから複数のデータベースクエリを手助けすることはできませんが、これまでは手動のPHPクエリを使っていました。