2009-08-10 12 views
0

検索機能付きの電子ストアを設定する必要があります。検索を効率化するMemcacheデータベースモデル

製品:
-name
- タグ

--tag -ingredients
--ingredient
---タグ私はこのような構造を照会するようになったすべての検索要求に対して


----タグ
---オプション
----オプション
-----オプション詳細
-variants
--variant
---タグ
----タグ
---オプション
----オプションの指標
----値
---価格

ここで、クエリの数を想像してみましょう...データベースは正規化されています(2番目のレベル)。 ここで明らかになった解決策の1つは、取り出した各モデル結果セット(製品セット、成分セット、属性セット、タグセットなど)を非常に長い時間メモリに保存することです(製品とその属性はあまり頻繁ではなく、管理者のみ)、そこからクエリを作成します。

あなたはどう思いますか? dbクエリ数を減らすためのより良い方法はありますか?

私が思った別の選択肢は、スフィンクスを使用することですが、全文検索は必要ありません。タグのようなフィールドと完全に一致するだけです。

ありがとうございます!

答えて

1

私のGoogle App Engineアプリでは、通常、データのクエリに時間がかかるため、データストアからMemcacheに移動し、そこで動作します。私のケースでは、MemCacheはデータを返し、探しているものが得られるまで多くのクエリを通過できるデータにアクセスするよりも、CPUの負荷が少なくて済みます。

Memcacheが予想よりも頻繁にフラッシュしないように、Memcacheに長いタイムアウトを設定することをお勧めします。私は最大のタイムアウトは最大1ヶ月だと思うが、通常は数日間それを設定するだけで十分です。あなたはDBが再びヒット行うよう

製品のデータが更新された場合は、必ずmemcacheのを洗い流すためにコードを追加することができますが、これだけ時間後

+1

1 - 私は追加したいだけの事はあり、彼適切に長いキャッシュタイムアウトを設定します。 Django + memcached rocks、特にキャッシュ上の制御の細かさの多種多様。 –

+0

もっと同意できませんでした。私はそれが与えられたと思ったのでタイムアウトを入れなかった:私は私の答えを更新した – AutomatedTester

+0

最大は「永久」(意味する、 'memcache'が再起動されるまで意味する)。 – Nate

関連する問題