Guest
Welcome login


TIBCOmmunity > Blogs > ActiveSpaces > 2009 > June > 25
Home   Members Communities

ActiveSpaces

ActiveSpaces

Previous Next
8

Introducing ActiveSpaces

Posted by Jean-Noel Moyne Jun 25, 2009 5:55:17 PM

Hello and welcome to the ActiveSpaces blog!

 

ActiveSpaces is TIBCO's upcoming Data and Messaging Grid product. Technically ActiveSpaces is a distributed in-memory implementation of the Tuplespace concepts.

 

Hiding beyond this mouthful of technical terms, ActiveSpaces is a fundamental part of the infrastructure that will enable what is described by TIBCO's CEO as the Enterprise 3.0.

 

A Tuplespace (typically simply referred to as a "Space") can be seen as a form of distributed shared memory: an entity in which data (expressed as Tuples (i.e. 'database rows')) can be concurrently access by multiple processes. Because the data is stored in memory, storage and retrieval of the Tuples is faster than when using a disk-based system. And because it is distributed, it scales according to the number of participants.

 

ActiveSpaces is a middleware that greatly simplifies the job of Enterprise application developers, providing them with an easy to use interface for data storage and retrieval (Data Grid) and process coordination (Messaging Grid) and allowing them to concentrate on implementing the business logic. Using "Space Based Architecture" (SBA), developers can very easily create distributed, event-driven and scalable (i.e. "Elastic") applications.

Comments

Click to view Michael Zhou's profile
Dabbler
Posted by Michael Zhou

This is very interesting. FSI clients have been asking for a solution of this kind for a long. I am curious what open standard(s) do we follow, JavaSpace ...?

Click to view Jean-Noel Moyne's profile
Dabbler
Posted by Jean-Noel Moyne in response to: Michael Zhou

Because ActiveSpaces just like JavaSpace implements the basic concepts of a tuplespace that originated in Linda systems, you will find direct equivalents to the JavaSpace interface methods in the ActiveSpaces API. But the ActiveSpaces API is not directly compatible with the JavaSpace interface: this is because (beyond the fact that it is offering many other features that you will not find in the JavaSpace interface) ActiveSpaces is platform independent and stores tuples while JavaSpace is as the name indicates completely Java-centric and stores Java objects.

Click to view Michael Zhou's profile
Dabbler
Posted by Michael Zhou in response to: Jean-Noel Moyne

Thanks for the clarification. If I understand correctly, you can store C++, .Net as well as Java objects in ActiveSpace, in one space, as far as your objects could be serialized/deserialized(?)

Click to view Jean-Noel Moyne's profile
Dabbler
Posted by Jean-Noel Moyne in response to: Michael Zhou

You store Tuples in Spaces. Tuples (like Messages in a messaging system for example) are a platform independent map of fields. So you can have a Java application create a tuple from the values contained in a POJO, then put that tuple in a Space and then have a C application retrieve the tuple from the Space and put the field values of that tuple into it's own variables or structures.

 

Of course, we also support a field type of 'Blob' which you can use to store a serialized object in a Tuple but then you are limiting yourself to a single platform for that particular Space...

Click to view Michael Zhou's profile
Dabbler
Posted by Michael Zhou in response to: Jean-Noel Moyne

This gets more interesting. One of the important operations is read/take object(s) stored in the space using what is called Template match. So ActiveSpace uses ASCII text based comparison of object fields to find a match or matches. Am I right?

Click to view Jean-Noel Moyne's profile
Dabbler
Posted by Jean-Noel Moyne in response to: Michael Zhou

In ActiveSpaces, rather than simple template matching, you can use what we call filters on SpaceBrowers and Listeners. A filter is pretty much the part right of the WHERE clause in an SQL statement such as "Select * from Space where ..." (i.e. what you would put in the '...' part of this example). A filter is a String whose syntax is based on a subset of the SQL92 conditional expression syntax (very much like an JSM selector for example, except there's no concept of header and body fields and all of the tuple fields are available to filter on).

Click to view Sandil Srinivasan's profile
Dabbler
Posted by Sandil Srinivasan

When is this available? GA?

Click to view Jean-Noel Moyne's profile
Dabbler
Posted by Jean-Noel Moyne in response to: Sandil Srinivasan

It is already GA and the 1.0 is available to selected customers