Freitag, 13. August 2010

RIAK und Innostore

Für jeden ernsthaften Test mit RIAK sollte man Innostore als Datenbackend verwenden. Auf meinem Mac waren erst damit wirklich performante Abfragen zu realisieren.
Aus Lizenzgründen ist Innostore nicht direkt mit RIAK in einem Bundle, auf der RIAK Seite ist aber gut beschrieben wie man Innostore compiliert und konfiguriert.

Reduce Funktion

Auch in RIAK müssen reduce Funktionen idempotent sein und werden ggfs. mehrfach aufgerufen um mehrere Zwischenergebnis zu einem Gesamtergebnis zusammen zu fassen.
Das bedeutet in der Regel, dass die Funktion mit unterschiedlichen Eingabewerten umgehen können muss und man irgendwie unterscheiden muss, ob es sich um einen reduce oder rereduce Aufruf handelt.
In CouchDB ist dieses Problem recht einfach gelöst; hier gibt der Parameter "rereduce" an, ob die Methode mit dem Ergebnis aus einem vorangegangenen Reduce aufgerufen wird.
In RIAK muss man sich das selber nachbauen, z.B. indem man ein JSON-Objekt mit einem entsprechenden Feld zurückliefert: return [{'rereduce': true, 'value': value}].
Ich stelle jedoch gerne zur Diskussion ob das so der optimale Weg ist.
Generell sollte man bei den reduce Methoden von vornherein an den rereduce Fall denken, ansonsten kann es einem schnell passieren dass die Sache mit wenigen Datensätzen noch funktioniert, bei größeren Datenmengen aber auf die Nase fällt.
Dies ist jedoch kein Problem von RIAK, sondern liegt in der Natur des Konzepts.

Keine Kommentare:

Kommentar veröffentlichen