Agens Graph – PostgreSQL Based Graph Database
agensgraph.com
agensgraph.com
Back in the early days PostgreSQL was a NoSQL database called Postgres, using a query language called POSTQUEL.
Then SQL was added, becoming PostgreSQL.
With Agens Graph adding an optional non-SQL query language back to it, it seems like it's gone a full circle. Hopefully on an upward slope though. :)
If anyone's interested in the pre-SQL Postgres, there's some info here: https://www.postgresql.org/about/history/
https://en.wikipedia.org/wiki/QUEL_query_languages
QUEL is a better language (more consistent), and SQL won not on technical grounds, but because Larry Ellison is a better salesman than Michael Stonebraker.
Your post is wholly based on time travel (~"nosql predates sql") and introduces a completely alternative evolution of database design in which quel never happened and we go "full circle" to the nosql-that-was-prior-to-sql.
Which is not to say that the poster wasn't wrong about their claim, but it's not invalid to make said claim in casual English in the particular way you're implying.
Though, also, in the more general case, "NoSQL" databases did certainly exist at the time Postgres was conceived (Postgres just wasn't one of them.) Navigational databases like IBM IMS were what we'd call "a NoSQL database" if they were conceived today.
I'd be interested in seeing performance comparisons as it seems Agens is implemented in C.
It looks neat but too new to entrust to any major project in my opinion. Also seems too new to put together and meaningful performance comparison since it still seems they're finding frequent improvements.
I really wished this could have been distributed as an extension rather than a totally separate Postgres package. It is much easier to play with extensions... I read somewhere they can't do it since they have to modify non-extensible bits of code:(
But I don't know why a performance comparison would not be meaningful at this point? I mean, it may get obsolete soon, but it's the only way to guide optimizations efforts - you do a test, decide what makes most sense to improve (cost/benefit) and then you fix it. Then you do the test again.
I'm sure Bitnine developers do such benchmarks as part of development, but perhaps they decided not to publish that at this point. That's perfectly understandable - development benchmarks are one thing, but publishing the results requires much more care. Particularly when it's a comparison with other products.
But hey, there's nothing simpler than doing a quick benchmark on your own - after all, the best benchmark is one modeling your particular use case.
So what is a "tree database"? A graph database with a bias for a specific ordering of its nodes. Does that make a tree database a query result (path traversal) in a graph database? The confusion of it all.
So imho one uses a "graph database" when (a) the domain is open ended, and (b) information is sketchy (precisely: incomplete), and as an important case in an open ended domain (c) we need to express a set of relationship types and ordering.
Semantic systems, for example, fit that description and can be reasonably considered as /fundamentally/ graph based. Some CRUD backend and OLAP on that domain likely does not.
To conclude, the naive impulse to reach for a graph db is likely induced by a recognition for needing something more expressive than a k/v, or doc store with secondary indexes, but fearing the dreaded RDBMS. Thus one "shoehorns" a static, completely captured, and fully described, domain unto a graph database cause E-R ain't sexy and SQL is a mystery. (Heads up: graph path expressions can get hairy too.)
You can see it here: http://github.com/neo4j/neo4j
See how there are 'community' and 'enterprise' top-level directories? The 'enterprise' directory contains the enterprise-specific code. It's a separate project in some senses but it does share the same repository, and it is open source.
As you can also see by looking at that repository, the Enterprise Edition is licensed as AGPL. Here is the license: https://github.com/neo4j/neo4j/blob/3.3/enterprise/LICENSE.t...
I'll quote:
If you have not executed a Commercial Agreement with Neo Technology, the
Software is subject to the terms of the GNU AFFERO
GENERAL PUBLIC LICENSE
Version 3, as follows:
Then follows the AGPL license.Here's the license: https://github.com/neo4j/neo4j/blob/3.3/enterprise/LICENSE.t...