MongoDB+Neo4J vs OrientDB frente a ArangoDB
dijkstra (3)
Descargo de responsabilidad: soy el autor y dueño de OrientDB.
Como desarrollador, en general, no me gustan las compañías que ocultan los costos y te permiten jugar con su tecnología por un tiempo y tan pronto como estés apretado con ella, empiezas a pedir dinero. De hecho, una vez que invirtió meses para desarrollar su aplicación que utiliza un lenguaje o API no estándar, está equivocado: pague o migre la aplicación a un alto costo.
Ya sabes, OrientDB es GRATIS para cualquier uso, incluso comercial. Además, OrientDB admite estándares como SQL (con extensiones) y la principal API de Java es TinkerPop Blueprints, el estándar "JDBC" para bases de datos de gráficos. Además, OrientDB también es compatible con Gremlin .
El proyecto OrientDB crece día a día con nuevos contribuyentes y usuarios. El grupo de la comunidad (canal gratuito para solicitar soporte) es la comunidad más activa en el mercado GraphDB .
Si tiene dudas con el GraphDB para usar, mi sugerencia es obtener lo que está más cerca de sus necesidades, pero luego use estándares lo más que pueda. De esta forma, un cambio eventual tendría un impacto bajo.
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 (datos de mosaico para cada celda) y un mapa mundial general. El 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 a continuación) que es básicamente un módulo de Dijkstra. Decidí usar una base de datos de gráficos esperando que hiciera las cosas más fáciles, descubrió que Neo4j es bastante popular.
Estaba contento con la configuración de 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 sobre la pérdida de datos de MongoDB (aunque no estoy seguro de que todavía lo haga) y no tengo tanto lujo. Y para Neo4J, no soy muy entusiasta de los 12K € por año de costos de "inicio amigable", aunque probablemente no tenga una base de datos 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 estar saltando a OrientDB pero tiene una comunidad pequeña 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 tienes 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 una simulación de envío. Se espera que la base de datos usada calcule la ruta más barata desde cualquier vértice a cualquier vértice y la atraviese (Dijkstra clásico). Pero también tienen que cambiar de peso dependiendo de situaciones como "el país B tiene embargo en el país A por lo que cualquier artículo que se origine en el país A no puede pasar por B, hay inundación en la región XYZ por lo que no es posible el transporte terrestre", etc. se espera que guarde los resultados en la caché. Espero no más de 1000 vértices, pero muchos bordes.
Gracias de antemano y disculpas de antemano si las preguntas son un poco ambiguas
PD: agregué ArangoDB al título, pero no tuve muchas oportunidades de echarle un vistazo.
Última edición desde el 18 de abril de 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 que están medio cocidas.
Los precios de Neo4j en realidad son bastante flexibles, por lo tanto, no se deje 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 de Neo4j es muy activa y útil, y rápidamente brinda apoyo y ayuda para sus preguntas. Creo que esa es la mayor ventaja además del rendimiento y la conveniencia. En general, usando un modelo de gráfico
En cuanto a su caso de uso:
Neo4j se utiliza exactamente para este escenario de cálculo de ruta por una de las compañías de logística más grandes del mundo, en donde enruta hasta 4000 paquetes por segundo en todo el país.
Y se usa en otros motores de juego, como GameSys para la simulación de economía de juegos y en otro para el enrutamiento (no en coordenadas terrestres, sino en coordenadas de mundo de juego con Neo4j-Spatial).
Tengo curiosidad de por qué solo tienes esos pocos nodos. ¿Son esos los portales de transporte? Me pregunto dónde almacenas los detalles y la dinámica sobre las rutas (como los criterios que mencionas), ¿vienen del exterior, en el estado de memoria del motor del juego?
Probablemente deberías compartir algunos detalles más sobre tu modelo y el caso concreto de uso.
Y podría ser útil saber que tanto Emil, uno de los fundadores de Neo4j como yo, somos jugadores veteranos de las mazmorras multiusuario (MUD), por lo que definitivamente es un caso de uso cerca de nuestro corazón :)
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 y puede incluso querer combinarlos en una sola consulta. Aquí es donde brilla una base de datos multimodelo como ArangoDB.
Si MongoDB te ha servido bien hasta ahora, inmediatamente te sentirás cómodo con ArangoDB, ya que es muy similar en apariencia. Además, puede modelar gráficos almacenando sus vértices en una (o varias) colecciones 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 recorridos, personalizables con JavaScript para que coincida con las necesidades 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 / recorridos para tenerlos en cuenta.
La base de datos ArangoDB está licenciada bajo la licencia Apache 2, y la comunidad y el soporte profesional están disponibles.
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.