インデックスを許可するリモートキー価値ストレージ?
-
30-09-2019 - |
質問
私たちのプロジェクトでは、オブジェクトのメモリ内のキー価値ストレージが埋め込まれています。これは非常に使用可能です。これにより、インデックスを作成してストレージに基づいてストレージをクエリすることができます。したがって、「学生」のコレクションと、Student.GroupとStudent.sexの複合指数がある場合は、グループ「ABC」のすべての男性学生を見つけることができます。削除なども同じです。
これで、クラウドで作業するためにサービスを採用する必要があります。これにより、複数のサーバー、ユーザーリクエストの処理が行われ、このキー価値インデックスストレージに保存されている共有状態があります。私たちは私たちのニーズに合わせてMemcashedを採用しようとしましたが、それはほぼ理想的です - それは速く、シンプルで実証済みのソリューションですが、インデックスがないので、一時的なデータを検索することはできません。
Memcashedのように、インデックスを使用して、リモートキャッシュを持つ他の方法はありますか?
ありがとうございました。
解決
試す ヘーゼルキャスト, 、これは、サーバー間でデータを配布するメモリデータグリッドです。あなたはあなたの質問で説明したようにインデックスを持つことができます、そして彼らのために質問することができます。
使用法は非常に簡単です。 Hazelcast.jarを追加してコーディングを開始します。埋め込みとリモートの両方を使用できます。
これがインデックスとクエリの使用法です
インデックスを追加します
IMap<Integer, Student> myDistributedMap = Hazelcast.getMap("students")
myDistributedMap.addIndex("group", false);
myDistributedMap.addIndex("sex", false);
IMDGに保存します
myDistributedMap.put(student.id, student)
;
クエリ
Collection<Student> result = myDistributedMap.values(new SqlPredicate("sex=male AND group=ABC"));
最後に、クラウドで正常に動作します。例:EC2
所属していません StackOverflow