userIdでパーティション化されたエンティティ(Request)があります。userIdごとに、インデックスがありますよね?
ただし、userIdでリクエストをすばやく検索したいと思います。それを行う簡単な方法はありますか?または、パーティションを作成するために別のフィールドを選択する必要がありますか?
userIdでパーティション化されたエンティティ(Request)があります。userIdごとに、インデックスがありますよね?
ただし、userIdでリクエストをすばやく検索したいと思います。それを行う簡単な方法はありますか?または、パーティションを作成するために別のフィールドを選択する必要がありますか?
必要に応じて、2つの方法で分割できます。あなたがこれをするとしましょう
public class Request {
@NoSqlId
@NoSqlIndexed
private String uniqueId;
@NoSqlIndexed
@NoSqlPartitionedBy
@NoSqlManyToOne
private User user;
@NoSqlIndexed
@NoSqlPartitionedBy
private LocalDate beginningOfEachMonth;
}
必要に応じて、Userの代わりにプライベート文字列userIdを使用できます;)。
これで、月の初めをキーとして使用して時間パーティションにクエリを実行し、クエリを実行するか、ユーザーをキーとしてユーザーパーティションにクエリを実行できます。
名前付きクエリを2つに分割すると、次のようになります。
query="PARTITIONS("user", :user) SELECT r FROM TABLE as r"
テーブルをユーザーごとにパーティション化するだけの場合は、次のように記述できます。
query="PARTITIONS(:user) SELECT r FROM TABLE as r"
注:私が持っているように主キーにインデックスを付ける必要がある唯一の理由は、主キーの範囲クエリのためです.... pk =何らかの値である等しいクエリの場合、次のことができるので、明らかにインデックスは必要ありません。主キー自体で検索します。
ディーン