Fork me on GitHub
#datomic
<
2017-12-17
>
Oliver George01:12:58

@matan There's datomic-free for open source projects. Pretty sure it was made clear that they aren't going to make Datomic open source in one of the presentations at the latest Clojure Conj.

Oliver George01:12:24

They have a unique product. I'm glad they're doing their best to make a living from it.

daveliepmann10:12:57

"we have no freely available clojure-idiomatic data persistence other than datomic" — consider https://github.com/jackrusher/spicerack which stores Clojure data structures directly to disk.

matan10:12:23

@olivergeorge thanks for point that out about the open source option. By the way there was nothing in my question to imply someone should not make a living of their work.

matan10:12:52

@daveliepmann thanks, I will look into that as well!

daveliepmann10:12:41

@matan I'd be interested to hear what you mean about clojure-idiomatic in this context?

matan10:12:10

@daveliepmann mmmm good one. Something that lets you store and retrieve data as clojure data (implying no or less transformation and parsing in user code and/or the library code itself), then hopefully that querying itself is clojure-idiomatic (map, reduce, filter, and so on). Then maybe also something that has smooth concurrency features built into its API. Do these make any sense?

daveliepmann11:12:14

It does, but it's interesting to consider how much of that is included in Datomic, which—although it takes EDN rather than concatenated strings—I would say operates on quite Datomic-shaped structures (entity maps and datoms) rather than Clojure-shaped structures (vectors, sets). For instance, out-of-the-box Datomic has no ordered collections. And the query language is Datalog, not map/filter/reduce, right?

daveliepmann11:12:00

Maybe what I'm saying is that I like many aspects of Datomic idiom, but that feels distinct from Clojure idiom.

hmaurer12:12:16

@daveliepmann it most definitely is. Datomic is essentially a triple-store

hmaurer12:12:49

(although every “triple” also has information about the transaction which added it etc)

matan18:12:12

@hmaurer I always wonder why it's not described as a triple-store as such, by the company. It certainly functions as one, which is very useful for some types of applications

hmaurer18:12:39

@matan don’t they mention it somewhere in the doc? that’s odd

matan18:12:49

Maybe now they do

hmaurer12:12:22

It’s not at all the same as persisting clojure data structures

daveliepmann12:12:01

Precisely my point. I might go as far to say that something might likely be wrong if one finds oneself filtering the result of a Datalog query. The results are Clojure data structures and therefore mappable & reducible but so are the results from clojure.java.jdbc.

luchini15:12:14

@matan not an open-source alternative to Datomic but a great article diving into some of the aspects that make Datomic great. Someone could one day come up with a simplified open-source flavor of it http://www.aosabook.org/en/500L/an-archaeology-inspired-database.html

luchini17:12:28

I’ve released a beta version of Migrana today. Feedback is greatly appreciated! https://github.com/luchiniatwork/migrana

matan17:12:20

@luchini @daveliepmann @hmaurer thanks for all the comments, I admit to it being a little off-topic (in my own fault), but these concise insights are oftentimes hard to find elsewhere, so I learned really more than I was looking for

matan17:12:18

And about the blog post of designing a database as an archaeologist that's really an original way of looking at it, and I should probably set aside a couple of hours to go through that lengthy write-up 🙂

luchini17:12:42

It’s worth it. I’ve learned a lot

matan17:12:11

Thanks for noting! would you also do anything pragmatically different, after having gone through it? I might catch coffee with the author, he looks local from my area I think. Thanks again for commenting

luchini17:12:18

I love how he went as far as the querying engine. I would have loved to have seen him going deeper and building a disk storage because DataScript already does in-memory (in a more limited fashion). He also never goes into schemas which would make the whole thing even more interesting.

matan17:12:42

Yep, me too, just breezed through it

matan17:12:07

Sorry for criss-crossing with the festive announcement about migrana from @luchini just above 🙂

luchini17:12:40

No worries… I’ll be pinging this channel seeking feedback regularly 😄

sova-soars-the-sora22:12:27

Hi everyone, I have an implementation question

sova-soars-the-sora22:12:46

i have blurbs... :blurb/author :blurb/content :blurb/tag

sova-soars-the-sora22:12:03

I want to add tags additively throughout time to specific blurbs (that have content and an author minimum)

sova-soars-the-sora22:12:10

so I thought: write to db a blurb with b/content and b/author and then do a search, resolve the entity id, and then append tags in a comma-separated way to the db via :blurb/tag and :blurb/bid ... then I could do a search against the BID whenever someone asks for the tags.

sova-soars-the-sora22:12:57

This creates some intermediate states, which I may not need. Is there a way to write to the DB and use the resolved entity id immediately to add tag items one [comma separated chunk] at a time ?

sova-soars-the-sora22:12:32

I suppose tags also have authors as well. I wonder if there is a better way than doing: write blurb with author and with content to db, search for BID for what I just put it, then write tag with author and bid (one at a time)

sova-soars-the-sora22:12:52

search for the blurb EID = BID for what I just put in* *