Welcome to SQLSpaces

SQLSpaces is an implementation of the TupleSpaces concept that features many new ideas while keeping the API clear and simple. It is based on top of a relational database, which gives the project its name.

The idea of TupleSpaces goes back to the mid-80s, when they were first introduced by Gelernter and Carriero from Yale University together with the Linda coordination language. The idea is to have a client server architecture with a communication solely based on tuples, i.e. ordered lists of primitive data. The clients can write and take tuples from the server and do not need to know anything about other clients. They just communicate over the server without "knowing" any other client's address. The query mechanisms of a TupleSpaces system are mainly associative, i.e. the queries are defined by creating templates tuples with so-called formal fields, that are interpreted as wildcards.

TupleSpaces are an elegant and easy way of creating distributed software systems that are robust and modular since they are loosely coupled. In addition to the original set of operations (in, out, rd) and to some typical features already known by other TupleSpaces implementations, SQLSpaces furthermore introduces some unique features like multi-language support, versioning, reverse structured naming, wildcard fields and now even support for Android .

SQLSpaces were developed by the Collide Research Group at the University of Duisburg-Essen, Germany . It is distributed under the LGPL (client), respectively AGPL (server).

Have fun with it!

So what is it all about?

Why and when would I use SQLSpaces?

If you want to implement a distributed system and one or more of the following points apply to you, you should consider using SQLSpaces:

  • You would like to have a shared persistent memory for your system and don't want to care about table joins, where clauses and different SQL dialects.
  • You would like to make use of different programming languages in your software or need to integrate existing modules written in different programming languages.
  • You would like to be flexible and don't want to specify an overall coordination scheme for your components from the start.
  • You would like to have the freedom to later on add or remove functionalities that are not cannot foresee right now.

Can I first have a look at something that uses SQLSpaces?

Look at our showcases page. Here you will find some videos of example applications as well as example code. You can also look at the most simple Hello World example at the quickstart section.

What do I need to test it by myself?

Since the server is written in Java, you need at least a JRE for the server. First download the server bundle from the download section. After extracting it, you can immediately start the server by executing the startServer.bat (Windows) or startServer.sh (Mac/Linux) file. Now you probably want to access the server from your application. For that you just need two jars in your classpath, the sqlspaces-commons and sqlspaces-client jar. Then go ahead and execute the test class that you can find under quickstart. If you have any problems, check if the documentation here can help you and otherwise feel free to contact us!

Hmm, and who else is using SQLSpaces?

Check out who is using SQLSpaces in our testimonials section!

News via Twitter

follow SQLSpaces on Twitter