This is exactly right, pushing language features into user-land just leads to a load of competing equivalent solutions that developers must learn. The language is simpler but it becomes harder to actually use.
7,416 karma · joined October 23, 2009
Email: charles@codemix.com
This is exactly right, pushing language features into user-land just leads to a load of competing equivalent solutions that developers must learn. The language is simpler but it becomes harder to actually use.
Edit: Turns out the Dutch are the third biggest consumers of milk per capita in the world[0], looking at the list of "tallest" countries on wikipedia[1], there seems to be a great deal of overlap at the top of the two lists. I wonder if a secondary factor could also be related to vitamin D exposure, but I couldn't find a data source for that.
0. https://en.wikipedia.org/wiki/List_of_countries_by_milk_cons...
1. https://en.wikipedia.org/wiki/Template:Average_height_around...
I'm sure an equally minimal http implementation using the net module would match or beat that, but since you'd never use either of them in production, the results are meaningless.
a "native graph database" is one that is actually designed for the task.
ArangoDB is OrientDB done right, but it's a lot younger.
If you're considering using either, you owe it to yourself to investigate whether postgres's Common Table Expressions [0] can do what you want instead. If you can stick with something more mature like postgres, then you'll be saving yourself a lot of pain.
[0] http://www.postgresql.org/docs/9.1/static/queries-with.html
Let's imagine you want to see how Fred is connected to Steve, their network looks like this:
[Fred] <-knows-> [Bob]
[Bob] <-isMarriedTo-> [Sally]
[Bob] <-knows-> [Alice]
[Alice] <-workedWith-> [John]
[John] <-wentToSchoolWith-> [Sandra]
[Sandra] <-knows-> [Steve]
Diagram: http://yuml.me/6ff3074eA "traditional" database like MySQL or Mongo makes this kind of query prohibitively expensive and complicated, as it must perform a new join for every connected person in the user's graph.
Graph databases come into their own because they are designed specifically for efficient traversal of these connecting edges. They typically do this by storing "pointers" on each vertex to its connected edges, so while a normal RDBMS requires something like a hash table lookup to resolve a join, a graph database can simply "jump" to the relevant record via a pointer. This means that things like Dijkstra's algorithm [0] can be implemented efficiently.
However, "traditional" graph databases like Neo4j require everything to be structured in terms of vertices and edges. This is often quite inconvenient, so Multi Model databases like ArangoDB integrate this graph approach with a document store as well, the idea being that if you can keep everything in the same db your app gets a lot simpler, you regain things like ACIDity that you'd normally lose by using 2 separate dbs, and performance should be a lot better too.
Nothing, most multi-model dbs store vertices (and edges) as documents
Hi, I'm Charles, the founder of codemix [0], we're a distributed team of 4 experienced developers + 1 designer, who're known for delivering very high quality web/mobile apps quickly.
We're based in the UK but we work with companies from all over the world who value our relentless pace and our ruthless user-centric pragmatism.
We focus on shipping quality software and making sure that software truly delivers on its full potential. Sometimes that means us taking on the entire project design/development ourselves and sometimes it means embedding ourselves into a larger team to really drive the project forward.
If you have a project that you need to take to market quickly, and you don't want to compromise on the user experience, I'd love to talk to you about it, email me at charles@codemix.com.