This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2016-08-19
Channels
- # admin-announcements (2)
- # beginners (25)
- # boot (93)
- # cider (2)
- # clara (2)
- # cljs-dev (63)
- # cljsjs (3)
- # cljsrn (38)
- # clojure (142)
- # clojure-austin (1)
- # clojure-brasil (2)
- # clojure-czech (1)
- # clojure-dev (7)
- # clojure-greece (1)
- # clojure-russia (170)
- # clojure-spec (11)
- # clojure-uk (65)
- # clojurescript (46)
- # clojurex (1)
- # code-reviews (3)
- # cursive (11)
- # datomic (35)
- # euroclojure (6)
- # events (2)
- # flambo (2)
- # hoplon (115)
- # instaparse (11)
- # jobs (21)
- # jobs-rus (3)
- # lambdaisland (2)
- # off-topic (17)
- # om (35)
- # onyx (161)
- # planck (1)
- # protorepl (7)
- # random (1)
- # re-frame (31)
- # reagent (19)
- # ring-swagger (21)
- # rum (5)
- # spacemacs (3)
- # specter (25)
- # test-check (20)
- # testing (7)
- # untangled (2)
- # yada (50)
@zentrope if you throw an exception from a tx function then nothing is added to the durable store, similar to rollback
@stuarthalloway Thanks. I personally like that approach.
@jdkealy: tests on circleci are totally possible IF your tests use a memory database - datomic:mem://
@robert-stuttaford: CI aside, that’s a pattern I’d suggest anyway
Storing information in reified transactions can be pretty inflexible sometimes
I wrote an exporter that exports a (subset of) a prod db, so that developers can use it as a dev db on their laptops
The exporter exports the datoms but transacts them in a different granularity (in chunks of 1000)
But this also means that the dev dump lacks the tx metadata
We're using conformity
for migrations, which uses tx metadata to mark transactions as "already performed".
Unfortunately, this means that conformity
considers all txs as "not yet performed", which leads to issue with schema alterations.
And as transactions are immutable, it's not easy to fix after the fact.
yep. you basically have to not-use-conformity for schema in your dump db
I mean it works for the most part, until you start renaming attributes
(I don't know why we started doing that, not a good idea unless you're forced to)
is there an idiomatic way to get enum
s in query results as keywords (their :db/ident
)?
if i do pull [* {:user/status [:db/ident]}]
i get a nested map which is an unnecessary complication
@onetom, pull does that by design, because you may have other things on that entity that you care to pull
d/entity
returns the keyword; d/pull
returns what you've printed
@pesterhazy I think the inflexibility is in the exporter, not in reified transactions. The exporter ignores a semantic of the db, so you cannot then expect that semantic to be preserved
and conformity is hardly the only thing that uses reified transactions
@robert-stuttaford: I was listening to your podcast episode on Datomic on a plane ride; it was interesting to hear about your experiences even though I’m already somewhat familiar with datalog/datomic/datascript -- thank you 🙂
absolutely my pleasure 🙂
was great fun to chat to the guys. it got Deep Nerd in there
Is there anything I can do to reduce transactor memory usage? I'm using datomic for a personal project; the database is only a couple hundred MB, but the transactor is eating 1.5G of memory.
Specifically a slow log? (e.g. log request id every time a request takes longer than Xms)
@robert-stuttaford but how do you boot the transactor? do you need to create a docker container ?
@codonnell: The transactor by default launches with 1 gig of memory. You can modify the properties in the transactor properties file and try to push this lower, but 1 gig is recommended for use on laptops/development. The transactor also accepts java arguments when executed so you can pass in -Xmx1g or whatever your desired memory usage is.
@jdkealy we use the AWS AMI that Datomic provides, after sprinkling some http://datadoghq.com agent code on it
howdy @jaret 🙂