Ce n'est pas une solution complète, mais vous voudrez peut-être examiner OrientDB dans le cadre de votre pile. Orient est un serveur de base de données Graph-Document écrit entièrement en Java.
Dans les bases de données graphiques, les relations sont considérées comme des citoyens de première classe et, par conséquent, la traversée de ces relations peut être effectuée assez rapidement. Orient est également une base de données de documents qui vous permettrait le type d'architecture sans schéma dont vous auriez besoin. La vraie raison pour laquelle je suggère Orient, cependant, est à cause de son extensibilité. Il prend en charge le streaming via des sockets et la base de données entière peut être intégrée dans une autre application. Enfin, il peut être mis à l'échelle efficacement et / ou peut fonctionner entièrement via la mémoire. Ainsi, avec une certaine expertise Java, vous pouvez réellement exécuter vos requêtes prédéfinies sur la base de données en mémoire.
Nous faisons quelque chose de similaire. En créant une application / un site pour la collaboration en recherche en sciences sociales, nous nous sommes retrouvés avec des modèles de données extrêmement complexes. Nous avons fini par écrire plusieurs des requêtes en utilisant le Gremlin Traversal Language (un sous-ensemble de Groovy, qui est, bien sûr, Java en son cœur), puis d'exposer ces requêtes via le serveur de connexion binaire de l'OrientDB. Ainsi, le client ouvre un socket TCP, envoie un court message binaire et la requête s'exécute en Java directement sur la base de données en mémoire.
OrientDB prend également en charge l'écriture de requêtes de fonction en Javascript, et vous pouvez utiliser Node.js pour interagir directement avec une instance Orient.
Pour quelque chose de cette taille, je voudrais utiliser Orient en conjonction avec Hadoop ou quelque chose comme ça. Vous pouvez également utiliser Orient en conjonction avec esper.
Considérez: Une introduction à l'orientation: http://www.sitepoint.com/a-look-at-orientdb-the-graph-document-nosql/
Requêtes complexes en temps réel: http://www.gft-blog.com/business-trends/leveraging-real-time-scoring-through-bigdata-to-detect-insurance-fraud/
Une discussion sur les options de streaming avec java et orient: https://github.com/orientechnologies/orientdb/issues/1227