arangodb

MongoDB + Neo4J vs OrientDB vs ArangoDB [closed]

时光总嘲笑我的痴心妄想 提交于 2019-12-02 14:04:31
I am currently on design phase of a MMO browser game, game will include tilemaps for some real time locations (so tile data for each cell) and a general world map. Game engine I prefer uses MongoDB for persistent data world. I will also implement a shipping simulation (which I will explain more below) which is basically a Dijkstra module, I had decided to use a graph database hoping it will make things easier, found Neo4j as it is quite popular. I was happy with MongoDB + Neo4J setup but then noticed OrientDB , which apparently acts like both MongoDB and Neo4J (best of both worlds?), they even

ArangoDB : How to get all the possible paths between 2 vertices?

旧时模样 提交于 2019-12-02 05:36:12
问题 How to get all the possible paths between 2 vertices (eg. X and Y) with maxDepth = 2? I tried with TRAVERSAL but it is taking around 10 seconds to execute. Here is the query : FOR p IN TRAVERSAL(locations, connections, "X", "outbound", { minDepth: 1, maxDepth: 2, paths: true }) FILTER p.destination._key == "Y" RETURN p.path.vertices[*].name The locations (vertices) collection has 23753 documents, and the connections (edges) collection has 123414 documents. 回答1: You can speed up the query a

Multiple graphs using same edge definitions in ArangoDB

白昼怎懂夜的黑 提交于 2019-12-02 03:41:29
I am evaluating ArangoDB and trying to create multiple graphs that might contain same node collections and same edge collections - even though each graph might contain different physical documents and edges. However when trying to create a graph that would use an edge collection that is already used in another graph I am getting " [1921] ... edge collection already used in edge def " error. Why can't graphs reuse existing relationships when it is possible for graphs to share same document collections and documents? To work around this issue I have to create a separate uniquely-named edge

On multiple index usage in ArangoDB

浪子不回头ぞ 提交于 2019-12-02 01:17:15
Having a document of a following structure: { path: String, enabled: Long, disabled: null || Long, // other fields... } I would like to look the documents up by a combination of path's prefix and numerical relation between some number and document's timestamps: (pseudocode) SELECT e FROM entries WHERE e.path STARTS WITH "somePrefix" AND e.enabled <= timestamp AND ( e.disabled == null OR timestamp < e.disabled ) What index structure will I benefit from the most, if any? Should I have a non-sparse skiplist index on enabled field + a sparse one on disabled and a fulltext non-sparse one on the

Arangodb AQL recursive graph traversal

不想你离开。 提交于 2019-12-02 00:50:30
I have a graph with three collections which items can be connected by edges. ItemA is a parent of itemB which in turn is a parent of itemC. Elements only can be connected by edges in direction "_from : child, _to : parent" Currently I can get only "linear" result with this AQL query: LET contains = (FOR v IN 1..? INBOUND 'collectionA/itemA' GRAPH 'myGraph' RETURN v) RETURN { "root": { "id": "ItemA", "contains": contains } } And result looks like this: "root": { "id": "itemA", "contains": [ { "id": "itemB" }, { "id": "itemC" } ] } But I need to get a "hierarchical" result of graph traversal

NoSQL database: ArangoDB

♀尐吖头ヾ 提交于 2019-12-01 01:36:31
I have been looking for a database that can be embedded and also be file-based, like Sqlite. I wanted a NoSQL type of database with this kind of feature. The language is Python, and ArangoDB has binding for Python, and many other languages. I am finding conflicting facts about ArangoDB. In some cases I have seen articles say it is not an embedded DB, or can't be embedded, then see others that imply it is embedded. Also on the website it says that it stores its data in a special binary format, and then I see an article saying its mainly an In-Memory database. So its been very confusing. 1)So

NoSQL database: ArangoDB

爷,独闯天下 提交于 2019-11-30 20:32:16
问题 I have been looking for a database that can be embedded and also be file-based, like Sqlite. I wanted a NoSQL type of database with this kind of feature. The language is Python, and ArangoDB has binding for Python, and many other languages. I am finding conflicting facts about ArangoDB. In some cases I have seen articles say it is not an embedded DB, or can't be embedded, then see others that imply it is embedded. Also on the website it says that it stores its data in a special binary format,

Memory usage of ArangoDB

半城伤御伤魂 提交于 2019-11-29 22:27:36
I am trying to understand what the limits of Arangodb are and what the ideal setup is. From what I have understood arango stores all the collection data in the virtual memory and ideally you want this to fit in the RAM. If the collection grows and cannot fit in the RAM it will be swapped to disk. So my first question. If my db grows will I need to adjust the swap partition/file to accommodate the db? Since arango also syncs the data to disk does this mean that the data will always be located in the RAM and disk? So if I have a db that's 1.5GB and my RAM is 1GB I will need to at least have 0

ArangoDB AQL: Update single object in embedded array

霸气de小男生 提交于 2019-11-28 11:11:42
I am trying to update the attribute on a json document in an embedded array using AQL. How do i update the "addressline" for "home" type address using AQL below? User: { name: "test", address: [ {"addressline": "1234 superway", type:"home"}, {"addressline": "5678 superway", type:"work"} ] } AQL Attempt so far for u in users for a in u.address FILTER a.type='home' UPDATE u WITH {<What goes here to update addressline?>} in users Thank you for the help. Regards, Anjan dothebart To do this we have to work with temporary variables. We will collect the sublist in there and alter it. We choose a

ArangoDB AQL: Update single object in embedded array

a 夏天 提交于 2019-11-27 05:59:55
问题 I am trying to update the attribute on a json document in an embedded array using AQL. How do i update the "addressline" for "home" type address using AQL below? User: { name: "test", address: [ {"addressline": "1234 superway", type:"home"}, {"addressline": "5678 superway", type:"work"} ] } AQL Attempt so far for u in users for a in u.address FILTER a.type='home' UPDATE u WITH {<What goes here to update addressline?>} in users Thank you for the help. Regards, Anjan 回答1: To do this we have to