Domanda MongoDB + Neo4J vs OrientDB vs ArangoDB [chiuso]


Sono attualmente in fase di progettazione di un browser game MMO, il gioco includerà tilemaps per alcune posizioni in tempo reale (quindi i dati delle tessere per ogni cella) e una mappa generale del mondo. Il motore di gioco che preferisco usa MongoDB per il mondo dei dati persistenti.

Implementerò anche una simulazione di spedizione (che spiegherò più in basso) che è fondamentalmente un modulo Dijkstra, ho deciso di utilizzare un database grafico sperando che renderà le cose più facili, ha trovato Neo4j in quanto è abbastanza popolare.

Sono stato contento del setup di MongoDB + Neo4J, ma poi ho notato che OrientDB, che apparentemente agisce come MongoDB e Neo4J (il meglio dei due mondi?), Hanno anche pagine VS per MongoDB e Neo4J.

Il punto è che ho ascoltato alcune storie dell'orrore su MongoDB perdere dati (anche se non sono sicuro che lo faccia ancora) e non ho un tale lusso. E per Neo4J, non sono un grande fan di 12K € all'anno costo "startup friendly" anche se probabilmente non avrò un DB di milioni di vertici. OrientDB sembra un'opzione praticabile in quanto potrebbero esserci anche alcune opportunità di utilizzare una soluzione di database.

In questo caso, una mossa logica potrebbe essere quella di passare a OrientDB ma ha una piccola comunità e tbh non ha trovato molte recensioni su di esso, MongoDB e Neo4J sono strumenti popolari ampiamente usati, temo che OrientDB sia un'avventura.

Mio prima domanda sarebbe se avete qualche esperienza / opinione su questi database.

E seconda domanda sarebbe il database grafico migliore per una simulazione di spedizione. Si prevede che il Database utilizzato calcoli il percorso più economico da qualsiasi vertice a qualsiasi vertice e lo attraversi (classico Dijkstra). Ma devono anche cambiare i pesi a seconda di situazioni come "il paese B ha un embargo sul paese A quindi qualsiasi oggetto proveniente dal paese A non può passare attraverso B, c'è l'alluvione nella regione XYZ quindi non è possibile il trasporto via terra" ecc. si prevede che memorizzi i risultati nella cache. Mi aspetto non più di 1000 vertici ma molti lati.

Grazie in anticipo e scuse in anticipo se le domande sono un po 'ambigue

PS: Ho aggiunto ArangoDB al titolo ma tbh, non ho avuto molte possibilità di dare un'occhiata.


Ritocco posticipato dal 18 aprile 2016: dopo aver valutato le risposte alle mie domande e alle strategie di sviluppo, ho deciso di utilizzare ArangoDB poiché la loro tabella di marcia è più promettente per me visto che apparentemente non tentano di aggiungere tonnellate di funzionalità pubblicitarie a metà cottura.


44
2017-11-02 20:40


origine


risposte:


Disclaimer: sono l'autore e il proprietario di OrientDB.

In qualità di sviluppatore, in generale, non mi piacciono le aziende che nascondono i costi e ti permettono di giocare con la loro tecnologia per un po 'e, non appena sei stretto, inizia a chiedere soldi. In realtà, una volta che hai investito mesi per sviluppare la tua applicazione che utilizza una lingua o API non standard, sei incasinato: paga o trasferisci l'applicazione con costi enormi.

Sai, OrientDB è GRATUITO per qualsiasi utilizzo, anche commerciale. Inoltre OrientDB supporta standard come SQL (con estensioni) e l'API Java principale è il TinkerPop Blueprints, lo standard "JDBC" per i database Graph. Inoltre supporta anche OrientDB folletto.

Il progetto OrientDB cresce ogni giorno con nuovi contributori e utenti. Il gruppo comunitario (canale gratuito per chiedere supporto) è il la comunità più attiva nel mercato GraphDB.

Se hai dubbi con GraphDB da usare, il mio suggerimento è quello di ottenere ciò che è più vicino alle tue esigenze, ma poi usare gli standard il più possibile. In questo modo un eventuale interruttore avrebbe un impatto ridotto.


43
2017-11-03 14:22



Sembra che il tuo caso d'uso sia esattamente ciò per cui è progettato ArangoDB: sembra che tu abbia bisogno di diversi modelli di dati (documenti e grafici) nella stessa applicazione e potresti persino volerli mescolare in una singola query. Qui è dove un database multi-modello come ArangoDB brilla.

Se MongoDB ti ha servito bene finora, ti sentirai subito a tuo agio con ArangoDB, dal momento che è molto simile nell'aspetto e nell'aspetto. Inoltre, è possibile modellare i grafici memorizzando i vertici in una (o più) raccolte e i bordi in una o più cosiddette "edge-collections". Ciò significa che i singoli bordi sono semplicemente documenti a sé stanti e possono contenere dati JSON arbitrari. Il database offre quindi degli attraversamenti, personalizzabili con JavaScript per soddisfare qualsiasi esigenza.

Per le tue variazioni delle query, potresti ad esempio aggiungere attributi su questi embarghi ai tuoi vertici e programmare le query / traversal per tenerne conto.

Il database ArangoDB è concesso in licenza con la licenza Apache 2 e la community e il supporto professionale sono prontamente disponibili.

Se hai domande più specifiche, non esitare a chiedere nel gruppo Google

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

o contatto

hacker (at) arangodb.org

direttamente.


38
2017-11-02 22:12



Il prezzo di Neo4j è in realtà abbastanza flessibile, quindi non essere messo da parte dai prezzi sul sito. Puoi anche iniziare l'edizione della community o l'edizione personale per un lungo periodo.

La community di Neo4j è molto attiva e utile e fornisce rapidamente supporto e aiuto per le tue domande. Penso che sia il più grande vantaggio oltre a prestazioni e convenienza. io generale usando un modello di grafico

Per quanto riguarda il tuo caso d'uso:

Neo4j è utilizzato esattamente per questo scenario di calcolo del percorso da una delle più grandi società di logistica del mondo in cui instrada fino a 4000 pacchi al secondo in tutto il paese.

Ed è usato in altri motori di gioco, come qui su GameSys per la simulazione di game economy e in un'altra per il routing (non in coordinate terrestri ma in coordinate del mondo di gioco usando Neo4j-Spatial).

Sono curioso di sapere perché hai solo quei pochi nodi? Sono simili ai portali di trasporto? Mi chiedo dove si memorizzano i dettagli e le dinamiche relative ai percorsi (come i criteri che hai citato) vengono dall'esterno - nello stato di memoria del motore di gioco?

Probabilmente dovresti condividere qualche dettaglio in più sul tuo modello e sul caso d'uso concreto.

E potrebbe essere d'aiuto sapere che sia Emil, uno dei fondatori di Neo4j che io sono vecchi giocatori di dungeon multiutente (MUD), quindi è sicuramente un caso d'uso vicino al nostro cuore :)


13
2017-11-02 21:00