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 the memcashed, but with indexes?

Thank you.

Answers


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


Need Your Help

MSSQL connection string - Windows Authentication using another set of credentials

python sql-server windows authentication odbc

It doesn't seem possible to craft a connection string so that you can open a connection to a mssql server using another user's windows credentials. It appears you are limited to specifying either ...

Loading Textures LWJGL

java opengl lwjgl

I have a texture loader from the asteroids examples for LWJGL. It loads the two textures that I supply it and gives them two different textureIDs but when I bind them and draw them on a cube only one

About UNIX Resources Network

Original, collect and organize Developers related documents, information and materials, contains jQuery, Html, CSS, MySQL, .NET, ASP.NET, SQL, objective-c, iPhone, Ruby on Rails, C, SQL Server, Ruby, Arrays, Regex, ASP.NET MVC, WPF, XML, Ajax, DataBase, and so on.