Fork me on GitHub
#datomic
<
2019-03-26
>
johnj17:03:56

Not to sound negative, but why do you keep up with datomic when stuff like this is never fixed?

favila17:03:32

Same as sticking with Clojure I guess? the alternatives are worse for what we do.

favila17:03:34

and using mysql with datomic is something you do only under duress. For us it was the only compatible hosted google storage option available

johnj17:03:23

Ok I guess "the alternatives are worse for what we do." is a good of enough reason. Just find it weird that they never fixed this, since mysql is still listed as a supported storage

johnj17:03:10

with no warning about this

favila17:03:30

the supported storage is "sql", and they happen to include some sql scripts for setting up the tables

favila17:03:43

in each of mysql, postgresql, and oracle dialects

favila17:03:57

I'm not sure that's the same as "mysql supported"

johnj17:03:44

is included in the distribution package

johnj17:03:12

so its ok to ship bad sql scripts?

favila17:03:08

I'd like it if they were better, but I don't feel like they're promising very much

johnj18:03:51

Do you need the history/time features of datomic?

favila18:03:43

life is pain without them

favila18:03:48

it's really hard to go back

favila18:03:26

any mutable storage we use as a disposable one

johnj18:03:57

Is that because you need high audit ability or somehting else?

favila18:03:21

we're in medicine so there's a baseline that's required, but datomic alone is not a full solution to that anyway

favila18:03:58

you need read logs too, and the datomic write log is too granular to make sense to an end user

favila18:03:24

but the difference for developers is incredible

favila18:03:38

it's like the difference between vcs vs non-vcs code

favila18:03:20

dbs are consistent snapshots even on small time scales, so lots of distributed system problems go away

favila18:03:44

if we make buggy writes to the db, we can find them and fix them

johnj18:03:54

Yeah, I can see how it can also help a ton with debugging

favila18:03:01

we end up answering "how the heck did this happen" questions we never could have otherwise, or which would have been too much work

favila18:03:32

and having a graph-shaped db with extensible schema is a big plus too

favila18:03:03

much easier to model and change than table-shaped or document-shaped dbs

johnj18:03:55

yes, those are all very handy and nice features of datomic, I guess my initial concern was about the sql script was more about the future of datomic on-premise

favila18:03:56

not as good for fast searches but because the db is so consistent and has a granular, incremental change queue it's easy to make derived views in other systems

favila18:03:15

oh, yeah, I don't know if on-premise has much of a future

favila18:03:30

that's the way the whole world is going for better or worse

favila18:03:48

"run this service yourself" is getting increasingly niche

favila18:03:07

I think it's just a Clojure thing generally though

johnj18:03:26

what do you mean?

favila18:03:51

stuff in clojure's constellation tends to be well designed and "simple" (in the sense of decomposable pieces) but have terrible fit-and-finish

favila18:03:23

with experience you don't see it anymore

johnj18:03:03

very true, mirrors my experience, get stuck too much in these "terrible fit-and-finish" details

johnj18:03:46

Like "this is great" but then this little thing puts you off

johnj18:03:11

like a bad sql script heh

johnj18:03:36

going to try it with pg, thanks for the msyql warning

mdhaney19:03:25

Regarding on-prem, I don’t see it going away anytime soon, if ever. It’s still their “flagship” product - Cloud is a more constrained version that is great if it happens to fit your particular requirements, but that only hits a small subset of use cases. To replace on-prem completely, they would first need to achieve feature parity in Cloud as it is missing some features that are critical requirements for a lot of use cases, like excision (pretty much anyone operating in the EU would need this capability). They would also need to extend Cloud to other platforms, like GCP and Azure, which would probably be a substantial effort. And even then, you would still have a non trivial number of customers that would demand deployment on their own infrastructure, either self hosted or on a private/hybrid cloud. Also look at the difference in licensing between the two - on-prem has got to be more profitable for Cognitect. I think Cloud was always meant to be a low friction way to bring new users to Datomic, and then up sell them to on-prem if/when their requirements exceed what Cloud can do. I doubt it was ever intended to replace on-prem completely.

favila19:03:51

I'm sure on-prem will continue to exist, but it looks to me like cloud is getting their energy and attention in a way on-prem no longer will. On-prem has actually lost rather than gained supported storage backends. Cloud is a much bigger market. I frequently hear people ask about migrating from on prem to cloud and never the other way around, even granted the feature disparity. And cloud is closely associated with datomic ions, which is a big feature advantage vs on-prem and will likely never have any on-prem equivalent because of how deeply it is wedded to aws and the datomic cloud system

favila19:03:54

I'm pretty sure clojure's tools.deps/deps.edn tooling was developed to further the goals of datomic ions; if true that means ions is even bending clojure roadmaps into its orbit

johnj19:03:38

@U09R86PA4 are you using mysql for other stuff that you can't trivially switch to pg ?

favila19:03:29

no, we're only using it for datomic, but it would be a hassle

favila19:03:33

switching is never trivial

johnj19:03:16

I though datomic backups made this easy, but I"m not experienced with it

favila19:03:20

backup-restore the db, figure out, set up and distribute new credentials, change all connection strings everywhere, rebuild and redeploy all images, etc

favila19:03:32

yeah, but moving the data is just one part

favila19:03:59

it's embedded in a running production system now. we could do it but without a clear tangible benefit it's just pointless busy-work

👍 4
favila19:03:26

and like I said, most of the load is borne by memcached

mdhaney20:03:01

@U09R86PA4 you may be right. Just as a counter argument, I see Ions a bit differently. Ions were needed to make Cloud feasible for non-trivial applications. For me at least, initially Cloud was just one of those “oh, neat” things - it wasn’t until Ions were available that I could really take it seriously. Without local querying, Datomic loses quite a bit of its power IMO. That’s the real purpose of Ions, to restore local querying, and the rest - like running your back end on Datomic’s infrastructure- is just gravy (and honestly, I can’t think of another way to make local querying work without going that route). So, that could explain why so much focus and resources were put into Ions, tool.deps, etc. - it was critical functionality needed to make Cloud a viable product. Even if the long term roadmap is away from on-prem, it will take some time. Given the pace of releases in the past, it will probably be at least a year before Cloud reaches feature parity with on-prem (unless Cognitect decides to double down and invest a lot more resources into Cloud). And more platforms will take time - AWS is the king now, but it’s hard to ignore the gains Microsoft have made in the last 2 years, to where Azure is on the verge of being a serious competitor (if not already). Point being, if the death of on-prem is imminent, we’re talking years before that happens.

johnj20:03:59

well sure, they have to support their existing customers, but all the hot/new stuff is going to happen in cloud for sure

stijn19:03:25

Hi, if a call to (d/db conn) is consistently throwing a timeout (anomalies/interrupted), where can I start looking for solutions? The only thing that is abnormal in the Cloudwatch dashboard is OpsPending, OpsThrottled, OpsTimeout reporting OpsTimeout numbers > 0

Brian Abbott22:03:48

Has anyone gotten errors like this before:

benoit22:03:58

It means your transaction contains a tempid as value but does not create a new entity with the same tempid so there is nothing to point this attribute to.

joshkh23:03:55

when i see this it's usually because i forgot that some reference value should be more nested than i thought:

{:tx-data [
           ;wrong
           {:player/name  "Brian"
            :player/color :green}

           ;right
           {:player/name  "Brian"
            :player/color {:color/rgb :green}}
           ]}

Brian Abbott01:03:54

Thank you for the replies guys - I really appreciate it. It turned out.... basically it was the wrong type. We were setting an id to another object as a string when it should have been a Long.

Brian Abbott01:03:03

But... the error message was confusing

Brian Abbott01:03:31

It should do some kind of "is this a valid ref format" check before hand. Also... I think I discovered a small bug/defect in datomic. When it dumped its stacktrace, for every method it dumped the full text of its API documentation.

benoit12:03:13

Strings are valid ref formats. You can now use simple strings instead of temp ids. I don't think Datomic can return a better error here.

Brian Abbott22:03:50

:db.error/tempid-not-an-entity tempid used only as value in transaction