0

playOrm の readme には、次のクエリがリストされています。

//まず、Activity.java で、@NoSqlQuery(name="queryByValue", query="PARTITIONS a(:partId) SELECT a FROM TABLE as a "+ "WHERE a.price > のような NoSqlQuery を作成します。値と a.numShares < 10")

クエリを実行する適切なパーティションを選択するのがいかに簡単かは理解しましたが、「a.price > :value」という句は CF 列で何かを選択しています。パーティション内に行がほとんどない場合でも、この列のインデックスは必要ないでしょうか? playOrm を使用して作成する方法は?

4

1 に答える 1

1

申し訳ありませんが、返信に 1 日かかる場合があります。

PARTITIONS a(:partId) SELECT a FROM TABLE as a "+ "WHERE a.price > :value and a.numShares < 10"

「右のパーティション」と言うときは、左/右ではなく正しいパーティションを意味すると思います。上記は JQL で記述されているため、そのクエリに基づいてエンティティの一部を次のように記述できます。

MyEntity {
  @NoSqlIndexed
  private BigDecimal price;
  @NoSqlIndexed
  private int numShares;

  //other fields
}

注釈は、playOrm に price フィールドと numShares フィールドをインデックス化するように指示します。現在、フィールドがインデックス化されている場合にのみ、WHERE 句でフィールドを使用できます。これは、機能が追加されるにつれて、将来変更される可能性があります。

そのため、パーティションを作成する必要はありません。PlayOrm が作成します。後でインデックスを作成するには、現在の方法は @NoSqlIndexed を既存のエンティティに追加し、行を読み取ってから行を保存することをマップ/リデュースすることです...これを修正して、マップを実行できるようにしています/ジョブを削減して、クラスター全体で何かを再インデックス化します。

また、いくつかの人々がplayOrmの基本セットアップ+ playOrmの成熟度を閉じたというあなたの質問に関連して

これは有効だと思います

  1. ここで同様の開始に関する質問に答えましたPlayORM の開始
  2. 成熟度の問題....PlayOrm にはすでに 62 個のテストがあり、本番環境で使用しています。

後、ディーン

于 2012-09-25T12:54:48.963 に答える