ArangoDB 3.0 Release – A Solid Ground to Scale
arangodb.com
arangodb.com
Regarding performance, it would be great if somebody with excellent knowledge about rethinkdb would contribute to https://github.com/weinberger/nosql-tests
(I'm the lead developer of the new ArangoDB Foxx, AMA)
It says that we can utilize npm, so, how is the compatibility with node? Native (C++) modules?
Is it used already in production somewhere?
(I am asking a lot of questions because I'm very interested, not anything else)
1) I don't think we currently have a benchmark specifically for Foxx. However we did some one-off tests in 2.8 and there was no noticeable difference between the plain HTTP API and a Foxx service using the equivalent JS API (just the V8 context switches).
2) See the section "Compatibility Caveats" in the docs: https://docs.arangodb.com/3.0/Manual/Foxx/Dependencies.html Specifically we can't support native modules and there are limits to what Node APIs we can support (network and filesystem APIs are different and more restricted, also Foxx is entirely synchronous).
3) Yes! Check out the case studies linked a the bottom of the website: https://www.arangodb.com/#casestudies All three of them use Foxx. I also dogfood Foxx: I'm the lead developer of a commercial e-learning product that uses full-stack JS with ArangoDB.
Feel free to swing by our community Slack channel if you have more questions: https://slack.arangodb.com
Saying Foxx is like stored procedures is overly simplistic.
ArangoDB's external API is the HTTP API. Foxx lets you extend that HTTP API with arbitrary code that will be executed in V8 with direct access to the same native APIs it uses internally.
The closest equivalents I'm aware of are RethinkDB's Horizon (which isn't hosted in the database) and CouchDB's CouchApps (which are far more limited in what they can do).
You can think of it as having a subset of Node.js running right on top of the database with direct memory access and scaling (Foxx services run on each coordinator).
You can use Foxx to host your entire server-side application inside ArangoDB in some cases but in our experience, the best approach is having a middleground where the data-intensive server-side code lives in Foxx services and the client-facing part (e.g. server-side rendering) exists outside of it.
Foxx offers you the option to put backend logic directly inside the database; it's not an all-or-nothing decision.
It apparently uses Facebook's RocksDB, which is also, I'm told, a pretty nice package. However, there is this:
https://github.com/facebook/rocksdb/blob/master/PATENTS
"The license granted hereunder will terminate, automatically and without notice, if you (or any of your subsidiaries, corporate affiliates or agents) initiate directly or indirectly, or take a direct financial interest in, any Patent Assertion: (i) against Facebook or any of its subsidiaries or corporate affiliates," ... and so on.
I think that means that if my company goes after (in any way, shape or fashion) any Facebook patents, and we're using ArangoDB, we're instantly in copyright violation.
Is this a roughly accurate assessment?
Thanks!
...until a given organization comes into patent conflict with any of Facebook's patents, at which time their grants disappear.
So if I'm understanding that correctly, doesn't that basically mean the same thing? You're no longer allowed to use their software?
Note that the grants only disappear if you initiate the conflict; they don't disappear if Facebook initiates and you counter-sue.
My problem is that I'm working for a subsidiary of a really big company that is directly competing with some parts of Facebook. There's a non-zero chance that some part of my company, far far away from me, will initiate an action that triggers this clause some time in the future.
In short: my company's ability to use a growing set of otherwise high-quality projects is greatly impacted because of this legal language. I also strongly suspect this isn't limited to just my organization.
One way or another, thank you for your attention.
I would love to hear from any other members of large organizations about this matter. Granted, my view is pretty limited, but this doesn't strike me as a good way forward for the overall free software community.
However, in general it is more flexible and safer to use Foxx, because it allows you to fine tune complexes queries and supports transactions.