|
Databases, of course, are complex software, with a long list of pros and cons. I prefer ArangoDB over OrientDB, after a multi-month evaluation of both. (I also considered Neo4J but could not afford it, in production, so it unfortunately never got a fair evaluation). As I mentioned earlier, in OrientDB, be careful using the eSQL syntax "INSERT INTO" and "UPDATE ... SET ..." for graphs, unless you are doing things 1 record at a time. Bulk inserts will cause an out-of-memory crash, as of version 1.4+. (I have never crashed ArangoDB, including performing 150M JSON bulk imports). In OrientDB, "CREATE VERTEX" has a very different syntax than "INSERT INTO" (and "CREATE EDGE" is very different than "UPDATE ... SET ..." when you add graph relationships to existing data). Because of this, I don't find that the eSQL stuff is very useful for more than simple queries. You can do JSON REST Bulk inserts which are very fast, but I find that creating graph relationships that way in OrientDB is challenging, unless you know the ID (###:###) of a vertex. This can be determined programatically, of course. ("UPDATE ... SET ..." when it worked in 1.2 / 1.3 was much easier). Oddly, the /etc/init.d/ scripts seemed broken on the Linux version of OrientDB -- they don't stop the database and are odd to configure. This should be easier (versions 1.2 through 1.6). I have mixed feelings about using the Java JVM for OrientDB, as opposed to native C/C++ used by ArangoDB. (My personal preference leans toward native C/C++.) ArangoDB seems very light-weight and responsive all the time, including startup. Again, documentation was hard-to-find and inconsistent, as of OrientDB 1.5/1.6, but it does seem to have improved since then... Finally, in my experience, eSQL (OrientDB) does not seem like a logical choice for JSON Documents or for Graphs. AQL (ArangoDB), after you get used to it, does seem to be designed for key-value pair queries, graphs, and documents, but it's query-only. (In ArangoDB, I actually like coding in JavaScript, mixing a bit of AQL in, when needed). Otherwise, I really liked OrientDB, at the time I evaluated it; I was actually hoping to stick with it. Overall, OrientDB has more features. The OrientDB team, also seems VERY responsive to requests. (I haven't needed to reach out to the ArangoDB people, yet, since I have been able to figure out everything myself, so far). Both OrientDB and ArangoDB are in a state of flux. New features and bug fixes are being done, all the time. OrientDB seems like a logical choice to replace SQL databases or for Java developers (for graphs and JSON documents). ArangoDB seems like a logical choice to replace MongoDB or for JavaScript developers (for graphs, JSON documents, and key-value pairs). OrientDB seems designed for scalability and flexible schema design. ArangoDB should be more scalable, soon (promised in ArangoDB 2.0). Back to the issue of query languages... There are other query options.... Both have Gremlin / TinkerPop. If you're used to that and like it, both OrientDB and ArangoDB are essentially on equal footing, query-wise. Looking back, I probably should have tried out Gremlin, whatever choice I made, during my evaluation of OrientDB vs. Neo4J vs. ArangoDB. For both OrientDB and ArangoDB I hope for Cypher (Neo4J's native query language) and for JSONiq (somewhat similar to ArangoDB's AQL, actually) as query language options. |
When I was first looking into graph databases the different query languages caused a lot of confusion.
Your comments are very insightful but they have only made the decision harder for me :( One on hand I have invested some time into orient db and I think I am grasping concepts of it well on the other it seems that it requires some care. But my use case does not require bulk inserts so I guess I will stick with it for now and keep my eye on arango db.