This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2017-07-11
Channels
- # aws (15)
- # beginners (55)
- # boot (116)
- # bristol-clojurians (2)
- # cider (4)
- # cljs-dev (439)
- # cljsrn (14)
- # clojure (135)
- # clojure-argentina (3)
- # clojure-czech (4)
- # clojure-italy (60)
- # clojure-russia (1)
- # clojure-spec (48)
- # clojure-uk (42)
- # clojurescript (170)
- # cloverage (11)
- # core-async (19)
- # cursive (13)
- # datomic (48)
- # emacs (2)
- # graphql (3)
- # hoplon (8)
- # jobs (1)
- # jobs-discuss (5)
- # klipse (11)
- # luminus (5)
- # lumo (5)
- # mount (48)
- # off-topic (96)
- # om (17)
- # onyx (14)
- # parinfer (30)
- # protorepl (1)
- # re-frame (90)
- # reagent (2)
- # remote-jobs (1)
- # spacemacs (12)
- # specter (20)
- # uncomplicate (1)
- # untangled (65)
- # vim (2)
- # yada (8)
@wei I think this depends more on the external communication architecture of the surrounding system than on the fact that it uses Datomic. We have an RPC-style architecture, in which each endpoint has its Plumatic schema - I wish I could use spec for that, but I need coercion which is an unfortunate conseaquence of using JSON a a format. A GraphQL-style may have a spec per write handler - and maybe some of it is either derived from the database schema or colocated with the schema definition.
@val_waeselynck Can you not use custom conformers for coercion?
Interesting, didn't know that was possible!
@val_waeselynck would you use clojure.spec instead of Plumatic if you were starting your app today?
I'd need to study spec more before I can answer that :)
@val_waeselynck let me turn the question differently then: are you happy with Plumatic?
@gws any special configuration needed? I’m trying to cram free trasactor onto a raspberry pi
Yeah, I set memory-index-max
to 1/4 the JVM heap size and object-cache-max
to 1/2 the JVM heap size
nooga: I've run one with a 256MB heap, and set a hard memory limit of 384MB for the entire transactor, not sure if you can go much lower but it may be possible
And how was it? Did it grind to a halt eventually? I’m running a small sensor hub, tx-ing 20-200 datoms every minute and started thinking about moving this to a spare raspberry pi I have lying around
It didn't grind to a halt, but I didn't even put that much load through it - I'd be interested to see your findings!
@val_waeselynck Hi Val, do you known if there’s a tool to visualize a Datomic schema ?
Something like this : https://github.com/Datomic/mbrainz-sample/blob/master/relationships.png
@gphilipp I don't use one (controversially, I derive schema from code) but I think @robert-stuttaford has some tools for that
@gphilipp i built https://github.com/Cognician/datomic-doc to help with exploring and documenting schema. no pretty diagrams, i’m afraid!
@robert-stuttaford This looks nice, I’ll take a look
@gphilipp interesting. Datomic doesn’t have a way to define which attributes belong to which entity (which would be required to auto-generate a diagram like mbrainz), BUT namespace in attribute keywords kind of play that role
So if you are strict on always using the same convention for attribute names, namely :entity-name/property-name, then I guess you could auto-generate this diagram
Sounds like a good opportunity for a PR to Cognician/datomic-doc
if @robert-stuttaford is keen 😛
I am not sure whether :entity-name/property-name
for attributes is a convention with Datomic though
@hmaurer it's a loose convention. But it will never be a solid convention because the openness of entities is desirable
@favila That’s what I thought. So long as it is somewhat widespread I guess a visualisation based on that convention could make sense
Better would be to think of the namespaces as corresponding to problem domain (i.e. attributes that are meant to be together) or even revision (e.g. :x.y.v2
)
@hmaurer you will probably want to share some attributes across several entity types
unless there's a higher-level schema encoded somewhere I don't think those visualizations can be automatic
another wrinkle is that you can have multiple, independent schemas overlaying each other
@hmaurer note that attributes are entities themselves, and you can use Datomic to annotate them with type information
To give some context, I’m trying to grasp Simulant schema for a POC at work https://github.com/Datomic/simulant/blob/master/resources/simulant/schema.edn. I just found out that @stuarthalloway had made a diagram out of it https://github.com/Datomic/simulant/wiki/Schema-diagram !
is [com.datomic/clj-client "0.8.606"]
still the latest version for the client library? it was released on 27-Nov-2016, seems a bit old
@val_waeselynck do you think it would make sense to then think of namespace in Datomic attributes as denotating “traits”?
Grouping attributes into traits/mixins definitely makes sense: however, if you're going to build something programmatically on top of it, don't base it on keyword-namespace. You're better off declaring the traits of the attributes explicitly in the database - it won't be that much effort.
In the sense that they group attributes relating to a particular “trait” of an entity