0

Is the difference only logical / housekeeping related?

I did read this question but the answer there only deals with 1 edge definition vs multiple edge definitions within a graph which is now already covered in the documentation. So I'm curious.

1 Answers1

0

I have used Arango for 6 years and don't use Graph objects, all my queries are just AQL queries, which means you don't need to use a Graph to use the benefits of graph databases and to perform traversals.

The way I think of a 'Graph' in Arango is that it's a limited / curated view of your collections that is query-able, but also is helpful if you want it to manage some level of integrity on deletes.

Overall, it slows down a Traversal, so I find it better to avoid them. A key driver for my decision is that I don't need views, and I don't need the system to handle the deletion of edges if I delete a connected vertex, but that's just my use case.

David Thomas
  • 2,264
  • 2
  • 18
  • 20
  • Thank you, I need the deletion / edge integrity graphs provide though, so dealing with graphs is a must in this case. I don't want to handle that in client code. – RestOfTheBothWorlds Oct 26 '21 at 07:52
  • I handle that in Foxx, which is a microservice layer that can be an interface to your database for external REST clients. I would definitely recommend Foxx as it allows you to add business logic, security, and hide some parts of your data model from external clients. This gives you far more options related to ensuring your database is protected and used correctly than just a Graph. I never allow AQL queries to be sent to the database, all data interactions are passed through Foxx as standard REST API calls. Check out Foxx if you can, it's worth it. – David Thomas Oct 27 '21 at 02:01
  • I definitely considered foxx and use it here and there but even then, I'd use graph interaction methods for edge consistency. If I manually pick documents and follow their edges for delete operations, it becomes a maintenance burden (some schema updates would require revisiting delete endpoints to keep consistency). Honestly, if I wanted to manage all this myself, I wouldn't use ArangoDB to begin with, no? Any document store (even relational SQL) would work if you want to build and manage graphs yourself. – RestOfTheBothWorlds Oct 27 '21 at 17:01
  • SQL performance degrades exponentially the deeper the graph traversals get, that's the key advantage of Arango. – David Thomas Oct 28 '21 at 04:14