Glad to hear things are going well. I'm using datomic for a side project and loving it. Writing queries in datalog is easier than sql, and having the queries be composed of data structures instead of strings is so so nice.
I'm a big fan of Datomic and am interested to see how people will apply it.
One thing that fascinates me is that Datalog (the query language of Datomic and a precursor to SQL) doesn't have negation. (ie in an SQL query you can use the NOT operator in your WHERE clause - but you don't have the equivalent in Datomic datalog at present). It seems to be a low priority feature.
They very gently touch on this in the rationale page:
Datalog with negation is of equivalent power to relational algebra with recursion.
Which seems to suggest you don't need it.
You don't need it because since reads don't touch network you can run multiple queries with JVM code interspersed wth no network cost. So in your example you can query two sets seperately and do a set difference in your app process. Doing it in app process scales horizontally, doing the same thing in the database process (like SQL) scales vertically. So if they were to implement this in datalog, per my understanding they would probably be doing it in your process anyway.
We (Cognitect) appreciate the power of negation, and it has always been part of the plan. From a priority perspective, negation doesn't open categoric new possibilities for our customers in the way that excision, or the log API, or a new storage option does. But we will get there.
6 comments
[ 3.3 ms ] story [ 28.3 ms ] threadOne thing that fascinates me is that Datalog (the query language of Datomic and a precursor to SQL) doesn't have negation. (ie in an SQL query you can use the NOT operator in your WHERE clause - but you don't have the equivalent in Datomic datalog at present). It seems to be a low priority feature.
https://groups.google.com/forum/#!topic/datomic/UBWzp4nYOMk
They very gently touch on this in the rationale page: Datalog with negation is of equivalent power to relational algebra with recursion. Which seems to suggest you don't need it.
http://www.datomic.com/rationale.html
http://webdam.inria.fr/Alice/pdfs/Chapter-15.pdf
edit: realized it's a referral link, it's not mine, it's because I got there through Rich Hickey's list of books that influenced clojure: http://www.amazon.com/Clojure-Bookshelf/lm/R3LG3ZBZS4GCTH