-2

私たちのプロジェクトでは、オブジェクト用の組み込みのメモリ内Key-Valueストレージがすでにあり、インデックスを作成し、それに基づいてストレージをクエリできるため、非常に便利です。したがって、「Student」のコレクションと、student.groupおよびstudent.sexの複合インデックスがある場合、グループ「ABC」のすべての男子学生を見つけることができます。削除なども同様です。

次に、クラウドでの作業にサービスを採用する必要があります。これにより、複数のサーバーが存在し、ユーザーリクエストを処理し、それらのサーバーが共有状態になり、このKey-Valueインデックス付きストレージに保存されます。ニーズに合わせてmemcashedを採用しようとしましたが、ほぼ理想的です。高速でシンプルで実績のあるソリューションですが、インデックスがないため、一時データの検索には使用できません。

memcashedのように、インデックスを使用してリモートキャッシュを作成する他の方法はありますか?

ありがとうございました。

4

1 に答える 1

4

hazelcastを試してください。これは、サーバー間でデータを分散するインメモリデータグリッドです。質問で説明したのと同じようにインデックスを作成して、それらをクエリできます。

使い方はとても簡単です。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

于 2010-12-20T10:06:55.213 に答える