Це не повне рішення, але ви, можливо, захочете заглянути в OrientDB як частину свого стеку. Orient - сервер баз даних Graph-Document, повністю написаний на Java.
У графічних базах даних відносини вважаються громадянами першого класу, і тому проходження цих відносин можна зробити досить швидко. Orient - це також база даних документів, яка б дозволила вам створити архітектуру без схем, як це вам потрібно. Однак, я припускаю, що Схід орієнтується на те, що він орієнтується на його розширеність. Він підтримує потокове передача через сокети, і всю базу даних можна вбудувати в іншу програму. Нарешті, її можна ефективно масштабувати та / або працювати цілком через пам'ять. Отже, маючи певну експертизу Java, ви можете реально запускати задані запити проти бази даних у пам'яті.
Ми робимо щось подібне. Створюючи додаток / сайт для співпраці з науково-дослідницької роботи в суспільстві, ми опинилися з надзвичайно складними моделями даних. Ми закінчили написання декількох запитів за допомогою Gremlin Traversal Language (підмножина Groovy, яка, звичайно, є Java в основі), а потім викривши ці запити через сервер бінарних з'єднань OrientDB. Отже, клієнт відкриває сокет TCP, відправляє коротке двійкове повідомлення, а запит виконується на Java безпосередньо проти бази даних в пам'яті.
OrientDB також підтримує запити функцій запису в Javascript, і ви можете використовувати Node.js для взаємодії безпосередньо з екземпляром Orient.
Для чогось такого розміру я хотів би використовувати Orient спільно з Hadoop або щось подібне. Ви також можете використовувати Orient спільно з ефіром.
Розглянемо: вступ до орієнтування: 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/isissue/1227