Это не полное решение, но вы можете рассмотреть OrientDB как часть вашего стека. Orient - это сервер базы данных Graph-Document, написанный полностью на Java.
В базах данных графа, отношения считаются граждане первого класса, и поэтому, пересекающие эти отношения можно сделать довольно быстро. Orient - это также база данных документов, которая позволит вам создать архитектуру без схемы, которая вам нужна. Однако настоящая причина, по которой я предлагаю Ориент, заключается в его расширяемости. Он поддерживает потоковую передачу через сокеты, и вся база данных может быть встроена в другое приложение. Наконец, можно масштабировать эффективно и / или может работать полностью через память. Таким образом, с некоторым Java опытом, вы можете запускать запросы предустановленных к базе данных в памяти.
Мы делаем что-то подобное. В создании приложения / сайта для социальных наук научно-исследовательского сотрудничества, мы оказались с очень сложными моделями данных. В итоге мы написали несколько запросов с использованием языка Gremlin Traversal (подмножество Groovy, которое, конечно же, является Java), а затем выставили эти запросы через сервер двоичных соединений OrientDB. Таким образом, клиент открывает TCP-сокет, отправляет короткое двоичное сообщение, и запрос выполняется в Java непосредственно к базе данных в памяти.
OrientDB также поддерживает запись функций запросов в Javascript, и вы можете использовать Node.js напрямую взаимодействовать с экземпляром Orient.
Для чего-то такого размера, я хотел бы использовать Orient в сочетании с Hadoop или что-то подобное. Вы можете также использовать Восток в сочетании с экстрасенс.
Рассмотрим: введение ориентироваться: http://www.sitepoint.com/a-look-at-orientdb-the-graph-document-nosql/
Сложные запросы в режиме реального времени: http://www.gft-blog.com/business-trends/leveraging-real-time-scoring-through-bigdata-to-detect-insurance-fraud/
Обсуждение параметров потоковой передачи с использованием Java и Orient: https://github.com/orientechnologies/orientdb/issues/1227