In den vergangenen zehn Jahren haben wir viele spezialisierte Berechnungen implementiert, um uns zu ermöglichen die grossen Mengen von Realtime-Daten (z.B. Marktdaten-Feeds, Sensordaten-Feeds, Referenzdaten-Feeds etc.) zu bewältigen, und abgeleitete Daten für die Berechnung von Wechsel- und Forwardkursen, gemischten Algorithmen, Datenfiltern usw. effektiv zu verarbeiten. Die meisten dieser Berechnungen sind konzeptionell einfach. Die Eingangsdaten ändern sich jedoch in der Regel sehr schnell und müssen über eine Cluster von vernetzten Rechnern verteilt werden, um Verzögerungen bei der Berechnung der abgeleiteten Daten zu minimieren. Die Frage, wie man die ursprünglich einfache Berechnung, welche mit einer grossen Menge von komplexem Code die Daten zur Verfügung stellt, am besten parallelisiert, Daten verteilt und mit Ausfällen umgeht, entwickelt sich zu einem vielschichtigen Problem.
Als Antwort auf diese Komplexität haben wir eine neue Abstraktion entwickelt, die es uns ermöglicht diesen Prozess als die ursprünglich einfache Berechnung darzustellen, und die unübersichtlichen Einzelheiten der Parallelisierung, Fehlertoleranz, Daten- und Lastverteilung in einer Bibliothek zu verbergen. Die Abstraktion besteht aus Publisher- und Worker-Tasks und eine Definition ihrer Abhängigkeiten. Publisher-Tasks sind in der Regel Adapter mit externen Datenquellen, während Worker-Tasks von den Daten aus Publisher-Tasks oder den Ergebnissen aus anderen Worker-Tasks abhängen. Die Abhängigkeiten werden von den Worker-Tasks durch die Subskription eines Streams initialisiert und können sich je nach Datenstrom unterscheiden.
Die Verwendung von einem hierarchischen Datenbankmodell für die Workernodes ermöglicht es uns, grosse Berechnungen leicht zu parallelisieren und Re-Subscribe als primären Mechanismus für die Fehlertoleranz zu verwenden.
Das Hauptmerkmal von INNO-X ist, dass das System ein einfaches und leistungsfähiges Interface zur Verfügung stellt und so die automatische Parallelisierung und Verteilung von grossen Berechnungen ermöglicht und mit der Implementierung der Schnittstelle kombiniert, wodurch sich die Leistungssteigerung der Cluster von vernetzten Rechnern ergibt.