datahike

https://datahike.io/, Join the conversation at https://discord.com/invite/kEBzMvb, history for this channel is available at https://clojurians.zulipchat.com/#narrow/stream/180378-slack-archive/topic/datahike
grischoun 2020-04-29T08:53:10.090600Z

@adam622 I started working on implementation of FDB for Datahike a few months back, https://gitlab.com/grischoun/datahike-fdb. The current status is that it can store datoms but it is not connected to datahike yet. If someone is interested in porting it into Datahike’s backend protocol, let me know.

whilo 2020-04-29T18:39:13.091200Z

That is a good starting point for set theory, which is the foundation of most of modern mathematics. We had collected quite a bit of material a few years ago together with @metasoarous and @mail524 here https://github.com/metasoarous/datsync/wiki/Literature. I think this is a good introduction to Datalog: http://www.nowpublishers.com/articles/foundations-and-trends-in-databases/DBS-017

whilo 2020-04-29T18:49:04.091500Z

The internals can be taken apart in fairly simple primitives, but we need to make this more obvious. Compositionality with clean abstractions is one of our core objectives, Datomic did this very well also. The indices are pattern matched against here: https://github.com/replikativ/datahike/blob/master/src/datahike/db.cljc#L158. All they need to do is provide an (efficient) iterator over triples in EAVT, AVET, AEVT form. Since we want to have efficient persistent indices, we use the hitchhiker-tree logic and semantics over multiple durable storage backends which are fairly simple blob stores (konserve provides a lense-like interface in general though). So for persistent semantics one should implement a konserve backend while for more fine-grained integration into another store (probably without persistent semantics) directly implementing the index interface is the way to go. We then also provide a (new) configuration data-DSL by @timo, which is mapped onto the stores here: https://github.com/replikativ/datahike/blob/master/src/datahike/store.cljc.

whilo 2020-04-29T19:02:15.091900Z

@tangj1122 It is great to meet you. I am using the Zettelkasten method inside of emacs and thought about mapping org-mode parse trees onto a schema like Roam (basically having emacs run a query on the Roam database to create the file to edit first and transact it back on file save events). There is also https://org-roam.readthedocs.io/en/latest/ which uses SQLite, but maybe the author would like this idea as well 🙂.

nprbst 2020-04-29T19:53:16.092700Z

Thank you! Will dig in to those...

Timur Latypoff 2020-04-29T20:34:58.095600Z

Hi guys! I am very new to Datahike and Datomic — and loving the ease of use of Datahike already! Is there a way to visualize what's inside Datahike's DB (say, with PostgreSQL backend), or REPL is the only way?

whilo 2020-04-29T21:53:51.096700Z

@timur058 Hey, nice to have you here. We are currently working on a UI for the transactor which will provide table views on query results, probably as React components that you can also move into your own frontend.

2❤️
nprbst 2020-04-29T21:58:32.097400Z

Ohhh...that's exciting! When do you figure there will be something made public, @whilo?

whilo 2020-04-29T22:49:50.098Z

@konrad.kuehne Is working on the transactor interface here: https://github.com/replikativ/datahike-server/blob/master/src/cljs/datahike_dashboard/core.cljs

whilo 2020-04-29T22:51:36.099900Z

I hacked on this last night as a template to include React-Leaflet and render markers on a map. You can just take these transact and query examples to talk to the server. I am doing it with cider-jack-in-cljs with shadow-cljs as backend and it worked fine, but we do not have instructions yet.

whilo 2020-04-29T22:52:15.100600Z

We hope to provide something more polished soon, but I cannot make a direct commitment yet. But we are super happy to work on this together with other people.

alekcz 2020-04-29T23:27:39.102300Z

If any one else wants to get it up and running: Clone the repo and cd. Then open two terminals. • Terminal 1: lein run • Terminal 2: npm install then npx shadow-cljs watch app • Then checkout http://localhost:8080/ in your browser