XTDB 2.x Early Access
xtdb.com
xtdb.com
I suppose what's at the heart of this, more than anything, is that Datalog has a near-trivial syntax that can transparently be accommodated by two simple data structures: lists and hash tables. Not so with SQL, whose COBOL-y nature obscures its syntax and makes it less straightforward to represent in everyday data structures.
AFAIK this is not solved in XTDB 1. I'm hoping XTDB 2 provides a better upgrade path for modestly sized databases like ours.
You have my attention. I actually raised an eyebrow reading that, last time this happened was when ChatGPT was released.
Temporal is a world of pain in SQL, bitemporal... nice.
edit: for those who haven't heard what bitemporal is, Wikipedia has an example: https://en.wikipedia.org/wiki/Temporal_database#Using_two_ax...
The whole thing looks really nice and polished. JUXT releases some really cool opensource stuff (I use tick all the time). But.. is there some catch? Like a PRO version or something? How are they paying the bills?
Thanks for all the work you guys do :))
But they are also offering paid support plans for xtdb: https://www.xtdb.com/support/production
After seeing what seems like oodles of sqlite and rocksdb plus a bespoke cross-machine coordinator databases posted on HN, is this like the new employment guaranty architecture? Do any of these have actual ability over something like ScyllaDB (I'm taking cassandra out because of the GC pauses probably being a problem)
RocksDB in particular is a single node SSD-tuned log-structured merge tree "database" written in a non-GC language. ScyllaDB is the same, but comes with the cassandra-protocol scaling and multiple datacenters.
Sure, go ahead and market your whatever, but if you're just (IMO) repackaging a log structured merge tree engine, with various newly implemented distributed transaction / conflict resolution coordination schemes .... you should probably show some good due diligence on if they are, you know, somewhat correct.
The Jepsen test suite basically shows every distributed data processing engine as flawed the first couple times. So much so I don't really trust your new fangled engine unless you pass Jepsen to some degree.
Is there some comparison metrics (lies, big lies, and benchmarks and all that) showing why these semi-bespoke databases are being used versus other, say, more proven, schemes?
I generally sympathise with your cynicism though that distributed consistency is much harder to get correct than most people realise. My own attraction to niche databases is the promise of better abstractions - the world desperately need those.
Is there anyone who's familiar with both and would like to share their thoughts on the two?
Arguably the biggest difference is that XTDB has a schemaless, dynamic core. Having a sane schema is of course important when building complex things, but we believe that the flexibility to experiment with schema (fully) in userspace is essential for moving the state of the art forwards. For instance a lots Clojure users these days prefer relying on https://github.com/metosin/malli for _all_ their schema needs.
Datomic's data model is something they call the 'universal schema' where you just specify the attributes and then create entities however you like from them. Datomic aligns more with how you structure data in Clojure, avoiding the impedance mismatch.
one more benefit of asking here, is people also share their practical experiences and how it is out there in the wild. Such stuff is usually missing from the wiki.
Find: ?friend-name, given: ?person
[[?person :person/friends ?friend]
[?friend :person/name ?friend-name]]
Given a person, get a set of the names of that person's friends.Incidentally, all variables (prefixed with ? by convention, not requirement) are valid inputs or outputs from the query. So for the same query, you could give `?friend-name` and extract `?person`, to get the IDs of the people who are friends with a person of a particular name. This just requires a change in the inputs and outputs, not in the query itself.
The format is [ID field value]. If `value` happens to be an ID, you can navigate by it.
There's a lot more to it than this, of course.
From the link: “Datalog is a declarative database query language with roots in logic programming. Datalog has similar expressive power as SQL.”