Tuplespace

Ein Tuplespace ist ein für mehrere Prozesse gemeinsam nutzbarer Speicherbereich zur Aufnahme von Tupeln. Auf einen Tuplespace kann mit vier Operationen zugegriffen werden:

• in - sucht und entnimmt ein Tupel aus dem Tuplespace,
• rd - liest ein Tupel aus dem
Tuplespace ohne es zu entnehmen,
• out - speichert ein Tupel in dem
Tuplespace,
• eval - speichert ein aktives Tupel (ein Tupel, dessen Komponenten noch nicht berechnet sind).


Die in- und rd-Operationen verwenden als Suchkriterium ein Template, bei dem es sich um ein spezielles Tupel, das z.B. auch Wildcards enthalten darf, handelt.

Den Systemen
TSpaces, JavaSpaces und Space merkt man ihre Abstammung vom Tuplespace an, die Tuplespace-Operationen finden sich dort in umbenannter und erweiterter Form wieder.

Das Tuplespace-Konzept wird von D. Gelernter in "Generative Communication in Linda" (Trans. on Programming Languages and Systems 7; No 1, 80 - 112; 1985) beschrieben.


Zwischen
Tuplespace, JavaSpaces, TSpaces und Space gibt es eine Reihe von Unterschieden:

• Bei Tuplespace und TSpaces heißen die Datenobjekte Tuple, bei JavaSpaces und Space heißen sie Entry.
• Bei
TSpaces sind die Tuple Instanzen einer konkreten Subklasse der Klasse SuperTuple. Die Instanzen enthalten eine geordnete Folge von Fields. Die Entries eines JavaSpaces sind beliebige Java-Objekte, deren als public deklarierten Instanzvariablen serialisierbare Werte haben. Die Entries eines Space werden von einer EntryFactory erzeugt. Sie gehören einer oder mehreren Klassen an und haben Felder, deren Werte S-Expressions (siehe Lisp) sind.
TSpaces bieten datenbankähnliche Operationen zum Zugriff auf die Tuple. JavaSpaces bietet Operationen, mit denen sich alle Entries, die auf ein oder mehrere Templates passen, entnehmen oder lesen lassen. Das Space System hat eine Operation, mit der sich alle Entries, die auf ein Template passen, lesen lassen. Die Namensgebung der Operationen unterscheidet sich zwischen den verschiedenen Systemen.
• Außer dem
Space kennt kein System serverseitige Skripte (Stored Procedures bzw. Stored Functions).
Tuplespace und Space haben neben den passiven Tupeln auch aktive Tupel.
TSpaces, JavaSpaces und Space können Operationen über mehrere Spaces zu einer verteilten Transaktion bündeln. JavaSpaces bieten darüber hinaus auch verschachtelte Transaktionen.
JavaSpaces haben kein Konzept der Zugriffskontrolle. TSpaces verwenden Access Control Lists auf der Basis von Benutzern und Gruppen für Operationen. Ein Space verwendet ein Mapping von X.509 Zertifikaten auf Policies, um Benutzerrechte einzuschränken.
JavaSpaces verwenden RMI als Protokoll zwischen Client und Server. Das Space System verwendet ein proprietäres Protokoll über SSL zur Kommunikation. Bei den TSpaces kann zwischen einem prorietären unverschlüsselten, einem SSL-verschlüsselten und einem SOAP-basierten Protokoll gewählt werden.