[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)