开发者

Remote key-value storage allowing indexes?

In our project we already have an embedded in-memory key-value storage for objects, and it is very usable, because it allows us to make indexes for it and query the storage based on it. So, if we have a collection of "Student"s, and a compound index on student.group and student.sex, then we can find all male students from group "ABC". Same for deletion and so on.

Now we have to adopt our service for working in a cloud, so that there will be multiple servers, processing user requests, and they have a shared state, stored in this key-value indexed storage. We tried to adopt memcashed for our needs, and it's almost ideal -- it is fast, simple and proven solution, but it doesn't have indexes, so we can't used to search our temporary data.

Is there any other way to have a remote cache, just like t开发者_运维知识库he memcashed, but with indexes?

Thank you.


Try hazelcast, It is an in-memory data grid that distributes the data among servers. You can have indexes just like you described in your question and query for them.

Usage is very simple. Just add Hazelcast.jar and start coding. It can be both embedded and remote.

Here is the index and query usage

add index

IMap<Integer, Student> myDistributedMap = Hazelcast.getMap("students")
myDistributedMap.addIndex("group", false);
myDistributedMap.addIndex("sex", false);

store in imdg

myDistributedMap.put(student.id, student)

;

query

Collection<Student> result = myDistributedMap.values(new SqlPredicate("sex=male AND group=ABC"));

Finally it works fine in the cloud. Ex: EC2

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜