質問

Google Appエンジンデータベースに無向グラフを保存する必要があります。最適化のために、私は使用することを考えています データベースインデックス。 Google App Engineを使用して、データベーステーブルの列を定義してインデックスを作成する方法はありますか?

私のアプリは、アイテムの推奨のためにコンテンツベースのフィルタリングでこれが保存されている無向グラフを使用するため、いくつかの最適化が必要になります。また、推奨アルゴリズムは、いくつかのグラフのエッジの重みを更新します。

データベースインデックスを使用できない場合は、グラフテーブルのクエリ時間を短縮する別の方法を提案してください。私のアルゴリズムは、書き込み操作よりもグラフテーブルからより多くのデータ検索操作を行うと思います。

PS:Pythonを使用しています。

役に立ちましたか?

他のヒント

あなたは実際に非常に遅いクエリを見ていますか?そうではないと思います。これはやや時期尚早の最適化だと思います。 App Engine DataStoreは、メモリ内でソート、フィルタリング、結合、またはその他の意味のある操作を行わないため、クエリ時間は一般にかなり一定です。特に、クエリの遅延は、データストアのエンティティの数、またはクエリに一致するエンティティの数に依存しません。それはあなたが求める結果の数にのみ依存します。

関連するメモでは、DataStoreにインデックスを追加する いいえ 既存のクエリをスピードアップします。クエリにカスタムインデックスが必要な場合、それなしでは劣化して遅く実行されません。インデックスを追加するまで、クエリはまったく実行されません。

あなたが言及する特定のクエリのために、 select * from edges where vertex1 == x and vertex2 == y, 、データストアは、カスタムインデックスなしでまったく実行できます。見る ドキュメントのこのセクション 詳細については。

要するに、必要なクエリを実行するだけで、インデックスについてあまり考えすぎたり、DBAであるかのように最適化したりしないでください。リレーショナルデータベースではありません。 :p

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top