Estoy un poco confundido acerca de cuál es la mejor solución para mi aplicación. Como he visto hasta ahora, tengo que elegir entre neo4j independiente (RestGraphDatabase) y una EmbeddedGraphDatabase (la RemoteGraphDatabase aún no es para uso de producción).Servidor Neo4j contra incrustado
Pros RESTO:
-> Los distintos servicios pueden acceder a la base de datos Neo4j (muestra: tengo un servicio que se encarga de nodos de tipo A, B y C. El segundo servicio es responsable de los nodos D y H y puede conectar nodos D a A-nodes). De esa manera tengo estructuras de dominio limpio. Cada servicio solo es responsable de sus propios nodos de dominio. Puedo actualizar cada servicio y no tengo que cerrar toda mi aplicación.
-> Puedo acceder al DB Neo4j de diferentes lenguajes (PHP)
Contras: - El rendimiento no es tan bueno como un EmbeddedGraphDatabase (ya que el servidor Neo4j y los servicios están en la misma máquina que la latencia es no tan grande). - Sin transacciones
Mis preguntas: ¿Es una buena decisión ir con el servidor independiente? ¿O debería usar el embebido y mezclar los servicios en uno grande? ¿Es posible ejecutar una aplicación grande (compleja) sin soporte de transacciones?
Me gustaría agregar que REST-API (probado con dos libs de Python) tiene graves problemas de rendimiento con grandes conjuntos de datos (estábamos importando 10 GB, por lo que ni siquiera un conjunto de datos realmente enorme). Usamos el importador de lotes pero después de cierto límite, el servidor casi se bloquea. Existen discusiones abiertas sobre ese problema, pero todavía no conozco una solución. En general, recomendaría la configuración integrada para todos los trabajos pesados. – Bouncner
@ Bouncner Tres años después, ¿sabes si este sigue siendo el caso? Al mismo tiempo que tú también notamos este problema de rendimiento, pero no lo hemos usado desde entonces. –