2

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

  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」を使用して、この非常に大きなデータベースからクエリを選択できます。

もっとアドバイスをください。どうもありがとうございました。PS: 何千もの同じデータベースがある場合のデータベースの維持に関する問題について詳しく教えてください。

4

1 に答える 1

1

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

すでにこれを知っていた場合は申し訳ありませんが、これがうまくいく場合は、解決策をカスタマイズしないでください. 単一の Drupal インストールで、独自のデータベースを持つ複数のサイトを非常にうまく処理します。残念ながら、1 つのサイトから複数のデータベース クエリを処理することはできません。以前は、手動の PHP クエリで行ったことがあります。

于 2012-06-01T23:13:52.187 に答える