[HN Gopher] Differential Datalog: a programming language for inc...
___________________________________________________________________
Differential Datalog: a programming language for incremental
computation
Author : jitl
Score : 97 points
Date : 2022-11-08 17:23 UTC (5 hours ago)
(HTM) web link (github.com)
(TXT) w3m dump (github.com)
| gautamcgoel wrote:
| Maybe I'm just clueless, but after looking at the README I have
| no idea what this software does. Can someone ELI5?
| dathanb82 wrote:
| Lets you define queries over some data set declaratively, and
| instead of recomputing the query over the entire data set every
| time you want an updated answer, it uses Differential Dataflow
| <https://github.com/frankmcsherry/differential-dataflow> to
| efficiently(^1) calculate the new results by updating the
| results of the previous query execution in response to new
| updates to the data set.
|
| ^1: I'm not an expert on Differential Dataflow, so I don't know
| what "efficiently" means in this context, other than "should be
| faster than running the query from scratch."
| ryanschneider wrote:
| Tutorial which I didn't see linked in the README:
| https://github.com/vmware/differential-datalog/blob/master/d...
| Jtsummers wrote:
| It's under "Documentation" in the readme.
| karavelov wrote:
| What is the difference with https://github.com/rust-
| lang/datafrog? It's a Datalog engine written by Frank McSherry on
| top of differential dataflow, that's used here also
| ianbutler wrote:
| Why wouldn't I just use differential dataflow, bindings to it or
| a higher level library using it in a language I know like Rust or
| Python?
|
| I think differential dataflow is very interesting and could be
| very useful at scale for certain businesses but I just don't get
| the need for the lang.
|
| And I'll plug for https://bytewax.io/ which is one company I know
| doing interesting things within the niche!
|
| (I have no association to it besides having talked with the
| founder once upon a time.)
| jitl wrote:
| Learning DDLog was much easier for me than learning Rust and
| differential-dataflow. I tried writing some differential-
| dataflow a few years ago and it was beyond me. DDLog was very
| quick to pick up.
| carom wrote:
| For everyone's context, differential datalog is built on the
| differential dataflow library.
| andrenotgiant wrote:
| Even more context:
|
| SQL interface on Differential/Timely Dataflow =
| https://materialize.com/
|
| Python interface on Differential/Timely Dataflow =
| https://bytewax.io/
|
| Grossly oversimplified, but directionally correct.
| samuell wrote:
| For the record, the thread which I think triggered this one to be
| posted and getting to the front page:
|
| https://news.ycombinator.com/item?id=33518320
|
| (On cozo, a new embedded SQLite like database with datalog as a
| language, written in Rust).
| gavinray wrote:
| This seems like it would rock for building Language Server
| Protocol implementations or other similar things.
|
| There's a tool in Rust called Salsa that's tailored for this, but
| it's galaxy-brained (I watched an hourlong introduction video and
| could still barely grasp it).
|
| https://github.com/salsa-rs/salsa
| leeuw01 wrote:
| Looks awesome!
|
| It has been a while since a new version has been released. Has
| anything been published regarding future plans? Or is the current
| version "feature complete" for the foreseeable future?
| jitl wrote:
| I talked to some of the devs during HYTRADBOI
| (https://www.hytradboi.com/) in April and they seemed to be
| going strong - but in these trying times it's hard to know.
| carterschonwald wrote:
| it looks like the main application layer is a haskell code base,
| cool!
| Vaslo wrote:
| Don't know by looking at it if it is the related to or the same
| as my link below but had a class where the professor liked
| Datalog for some reason. Entire class found it hard to learn and
| not really useful, and not much more work to do similar things in
| other languages. Very niche but I know HN loves niche-y
| languages.
|
| http://www.learndatalogtoday.org/
|
| Maybe some useful scientific applications I am not aware of?
| PaulHoule wrote:
| Compared to SQL, Datalog lets you break down queries into
| smaller queries that are reusable.
|
| I think Datalog got some attention in the 1980s as a logically
| pure dialect of Prolog, then it practically disappeared from
| the literature for a while. I remember it being really hard to
| find anything about it around 2008, then when people got really
| tired of OWL and other semantic web tools Datalog came roaring
| back in the 2010s.
|
| Like the semantic web tools people have a hard time recognizing
| bog-standard database technology when they have been slightly
| reskinned and Datalog has long had that problem. One issue is
| that SQL has this crazy idiosyncratic syntax that hides the
| fact that it has a simple set of operators behind it, in the
| case of Datalog the operators are quite directly exposed which
| people seem to find too simple to understand.
| digdugdirk wrote:
| So is the functionality provided by something like SQLAlchemy
| attempting to cover the same use cases?
| PaulHoule wrote:
| In some ways, but it is more dynamic, that is, you can
| write recursive queries in a natural syntax like the way
| you write recursive functions in a normal programming
| language. You don't have awful hacks like
|
| https://www.postgresql.org/docs/current/queries-with.html
| Jtsummers wrote:
| One prior discussion:
|
| https://news.ycombinator.com/item?id=26514456 - March 20, 2021
| (62 comments)
|
| A few other submissions, but all with 0 comments.
| erichocean wrote:
| If you like this kind of thing, google _Self-Adjusting
| Computation_.
|
| One advantage of self-adjusting computation vs. the _differential
| dataflow_ approach is you can convert existing imperative code to
| it very easily. For example, a ray tracer with self-adjusting
| computation is written very similarly to a ray tracer without it.
|
| There's a C++ library that implements parallel-friendly self-
| adjusting computation here: https://github.com/cmuparlay/psac
|
| I see no reason why a Rust version couldn't be implemented.
| carterschonwald wrote:
| Self adjusting computation is such a great framework.
___________________________________________________________________
(page generated 2022-11-08 23:00 UTC)