2016-09-14 16 views
9

私は、コレクションごとに10から10000アイテムのサイズの、数百万の小さなコレクションに対して柔軟なクエリを適用する必要があるアプリケーションを持っています。 CQEngineは、これらのコレクションを照会する柔軟性を提供するという点で優れていますが、コレクション内のアイテムの特定の属性に対する集計を事前に計算することによって機能していた以前のより厳格な実装よりもはるかに低速です。その方法の問題点は、新しい属性の追加を容易に処理できるほど柔軟ではなかったことです。CQEngine小規模データセットの最適化

私の質問は、何百万もの小規模なコレクションを処理するためのもので、CQエンジンをより速く調整するために何かできることがあります。

  1. インデックスを追加する必要がありますか、コレクションがあるサイズを超えている場合はインデックスのみを追加する必要があります。
  2. 私は現在、レコードタイムスタンプでNavigableを使用しています。カテゴリやタグなどの他の属性ではHashIndexを使用しています。

どのようなアイデアをいただければ幸いです!

答えて

0

明らかにあなたのクエリによって異なりますが、使用しているインデックスを見てください。あなたはタイムスタンプの部分で化合物をすることができますが、タイムスタンプのためにはOKです。

オブジェクトの異なる属性のうち、cardinalityを特定し、そのインデックス付けに優先順位を付けます。カーディナルの高いアイテムにはハッシュを使用し、基数的な属性を低くするにはツリーを使用します。

関連する問題