MongoDB + Neo4J vs OrientDB vs ArangoDB [cerrado]


Actualmente estoy en la fase de diseño de un juego de navegador MMO, el juego incluirá mapas de mosaico para algunas ubicaciones en tiempo real (por lo que los datos de mosaico para cada celda) y un mapa del mundo general. Motor de juego que prefiero utiliza MongoDB para el mundo de datos persistentes.

También implementaré una simulación de envío (que explicaré más abajo) que es básicamente un módulo Dijkstra, había decidido usar una base de datos de gráficos con la esperanza de que haga las cosas más fáciles, encontré Neo4j ya que es bastante popular.

Estaba feliz con MongoDB + Neo4J pero luego notó OrientDB, que aparentemente actúa como MongoDB y Neo4J (¿lo mejor de ambos mundos?), incluso tienen páginas VS para MongoDB y Neo4J.

El punto es que escuché algunas historias de terror de MongoDB perdiendo datos (aunque no estoy seguro de que todavía lo haga) y no tengo tal lujo. Y para Neo4J, no soy un gran fan de 12K€ por año" startup friendly " costo aunque probablemente no voy a tener un DB de millones de vértices. OrientDB parece una opción viable, ya que también puede haber algunas oportunidades de usar una solución de base de datos.

En ese caso, un movimiento lógico podría ser saltar a OrientDB, pero tiene una pequeña comunidad y tbh no encontró muchas críticas al respecto, MongoDB y Neo4J son herramientas populares ampliamente utilizadas, me preocupa si OrientDB es una aventura.

Mi primera pregunta sería si usted tiene alguna experiencia/opinión con respecto a estas bases de datos.

Y la segunda pregunta sería qué Base de datos de gráficos es mejor para un envío simulación. Se espera que la base de datos usada calcule la ruta más barata de cualquier vértice a cualquier vértice y la atraviese (Dijkstra clásica). Pero también tienen que cambiar pesos dependiendo de situaciones como "el país B tiene embargo en el país A por lo que cualquier artículo originario del país A no puede pasar a través de B, hay inundaciones en la región XYZ por lo que no es posible el transporte terrestre", etc. También se espera que esa base de datos almacene en caché los resultados. No espero más de 1000 vértices, pero muchos bordes.

Gracias de antemano y disculpas por adelantado si las preguntas son un poco ambiguas

PD : He añadido ArangoDB en el título, pero tbh, no tenía mucha oportunidad de echar un vistazo.


Edición tardía a partir del 18-Abr-2016 : Después de evaluar las respuestas a mis preguntas y estrategias de desarrollo, decidí usar ArangoDB ya que su hoja de ruta es más prometedora para mí, ya que aparentemente no intentan agregar toneladas de características de bombo que están a medio cocinar.

Author: projectUnduli, 2014-11-02

3 answers

Descargo de responsabilidad: Soy el autor y propietario de OrientDB.

Como desarrollador, en general, no me gustan las empresas que ocultan costos y te permiten jugar con su tecnología por un tiempo y tan pronto como estés ajustado con ella, comienza a pedir dinero. En realidad, una vez invertidos meses para desarrollar tu aplicación que utiliza un lenguaje o API no estándar estás jodido: pagar o migrar la aplicación con enormes costos.

Sabes, OrientDB es LIBRE para cualquier uso, incluso comercial. Además OrientDB soporta estándares como SQL (con extensiones) y la API principal de Java es el TinkerPop Blueprints, el estándar "JDBC" para Bases de datos de gráficos. Además OrientDB soporta también Gremlin.

El proyecto OrientDB está creciendo cada día con nuevos colaboradores y usuarios. El Grupo Comunitario (canal gratuito para pedir ayuda) es la comunidad más activa en GraphDB market.

Si tienes dudas con el GraphDB a usar, mi sugerencia es obtener lo que está más cerca de sus necesidades, pero luego use los estándares lo más que pueda. De esta manera un eventual cambio tendría un bajo impacto.

 43
Author: Lvca,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-04-02 13:44:24

Parece que su caso de uso es exactamente para lo que ArangoDB está diseñado: parece que necesita diferentes modelos de datos (documentos y gráficos) en la misma aplicación e incluso podría querer mezclarlos en una sola consulta. Aquí es donde brilla una base de datos multimodelo como ArangoDB.

Si MongoDB te ha servido bien hasta ahora, entonces inmediatamente te sentirás cómodo con ArangoDB, ya que es muy similar en apariencia y sensación. Además, puede modelar gráficos almacenando sus vértices en uno (o múltiples), y sus bordes en una o más de las llamadas "colecciones de bordes". Esto significa que los bordes individuales son simplemente documentos por derecho propio y pueden contener datos JSON arbitrarios. La base de datos ofrece traversals, personalizables con JavaScript para satisfacer cualquier necesidad que pueda tener.

Para sus variaciones de las consultas, podría, por ejemplo, agregar atributos sobre estos embargos a sus vértices y programar las consultas/traversals para que las tengan en cuenta.

El La base de datos ArangoDB está licenciada bajo la licencia Apache 2, y la comunidad, así como el soporte profesional está disponible.

Si tiene alguna pregunta más específica no dude en preguntar en el grupo de Google

Https://groups.google.com/forum/#! forum / arangodb

O contacto

Hackers (at) arangodb.org

Directamente.

 38
Author: Max Neunhöffer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-01 08:56:32

Los precios de Neo4j son en realidad bastante flexibles, así que no te dejes llevar por los precios en el sitio web. También puede comenzar con la edición de la comunidad o la edición personal durante mucho tiempo.

La comunidad Neo4j es muy activa y servicial y proporciona rápidamente apoyo y ayuda para sus preguntas. Creo que esa es la mayor ventaja además del rendimiento y la comodidad. Me n general usando un modelo gráfico

Con respecto a su caso de uso:

Neo4j se utiliza exactamente para esta ruta escenario de cálculo por una de las compañías logísticas más grandes del mundo donde enruta hasta 4000 paquetes por segundo en todo el país.

Y se utiliza en otros motores de juego, como aquí en GameSys para la simulación de la economía del juego y en otro para el enrutamiento (no en coordenadas de la tierra sino en coordenadas del mundo del juego usando Neo4j-Spatial).

Tengo curiosidad por saber por qué solo tienes unos pocos nodos? ¿Son como portales de transporte? Me pregunto dónde guardas los detalles y las dinámicas sobre las rutas (como los criterios que mencionaste) ¿provienen del estado de memoria externa del motor del juego?

Probablemente debería compartir más detalles sobre su modelo y el caso de uso concreto.

Y podría ayudar saber que tanto Emil, uno de los fundadores de Neo4j como yo somos jugadores antiguos de mazmorras multiusuario (MUDs), por lo que definitivamente es un caso de uso cercano a nuestro corazón:)

 13
Author: Michael Hunger,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-11-02 21:00:55