Saturday, September 20, 2008

Space4J: similar to Prevayler but takes advantage of Java 1.6 concurrent data access APIs

Prevaler is a great alternative to using a relational database if you need persistence and your application's data easily fits in memory. I wrote a large web app (similar to SharePoint) about 6 years ago using Prevaler and at one point it ran almost three years without restarting (until the server that it was running on needed maintenance). Prevayler is solid stuff.

Space4J works on the same concept but takes advantage of the Java 1.6 concurrency APIs. Space4J is a new project and I have only had time to look through the source code and examples, but it definitely looks like a possible substitute for Prevayler on future projects. I think that Space4J might perhaps take more advantage of generics (e.g., the interface Space and implementing classes could be "generic-ized" for type safety and elimination of unchecked exceptions).

7 comments:

Marco Fabbri said...

Talking about concurrency and persistence, Gigaspace's approach based on space based architecture ( http://en.wikipedia.org/wiki/Space-based_architecture ) and Persistence as a Service ( http://natishalom.typepad.com/nati_shaloms_blog/2007/09/paas-persistenc.html ) looks interesting and promising for ease of development (simplicity inherited from tuple spaces programming model), performance (in memory data grid) and integration with existing technologies (e.g, Spring/OpenSpaces http://www.openspaces.org ).

Mark Watson, author and consultant said...

Hello Marco,

I have never looked carefully at GigaSpaces, but I will put it on my list. I wonder how successful their business model is (free use for individuals and companies with less than $5million/year revenue).

Thanks,
Mark

Marco Fabbri said...

Their main revenue comes from financial, telecommunications, and government (defense) sectors where they have pretty 'big' (way beyond $5million/year revenue) customers; as big customers provide a solid revenue, the startup offer makes sense (as it comes at almost no cost, no commercial grade support being provided) in fostering adoption and enriching the ecosystem around gigaspaces.

Dimitris Andreou said...

Explain to me. How a SW guy can recommend data access lacking the notion of a query language??

These are mere toys: anyone can write a logging framework based on serialization in a weekend. And as far I see, space4j doesn't even include an abstract clock (and can't reliable reapply time-based commands). Even the old prevayler had more sense to that.

Mark Watson, author and consultant said...

Marco: OK, that makes sense.

Dimitris: for some problems, the equivalent of a very large persistent hash table works fine - no need for a relational database, RDF store, etc. with a formal query language. In anycase, I have had good success using Prevaler.

Sergio Oliveira Jr. said...

Dimitri: There is no need for an abstract clock. That was a flaw in Prevayler architecture in my opinion. Again THERE IS NO NEED FOR CLOCK. Check Space4J and you will understand that a clock is useless.

Sergio Oliveira Jr. said...

All about query language:

Space4J comes with a complete and powerful indexing framework. You can do any query you want using 4 different types of indexes. This was another problem of Prevayler. Object querying is not trivial and if it is left to the user to solve this issue, using another framework or not, he will get totally lost.