Fork me on GitHub
#datomic
<
2016-01-20
>
bhagany01:01:34

@timgilbert: I do it without the namespace

bhagany01:01:02

also, I think the :db namespace is reserved, and I'm not sure if this usage falls into the "okay" category or not

dexter09:01:11

@stuartsierra: Thanks, that was what I needed to know

parameme12:01:54

Probably a popular question : But is there any blessed way of getting datomic data into Tableau / Wolfram .... insert pretty ad-hoc exploration and graphing system here?

parameme12:01:42

(I found https://github.com/lynaghk/c2) but that looks a little old and I was hoping to have some sizzle (ie. pretty dashboards) as a way of demonstrating datomic's power.

robert-stuttaford14:01:01

parameme probably through the use of some wrapper you write yourself. also, know that http://github.com/kovasb/session exists simple_smile

yenda14:01:18

wow thanks session is awesome. I join this link because the readme is not much to read https://medium.com/@kovasb/session-1a12997a5f70#.lfxz6kpdc

yenda14:01:48

the github repo has been overwritten with a non working project though

pesterhazy15:01:58

@yenda, did you dig up a link to a working one?

yenda15:01:49

no sadly I thought of going through the old commits but he just smashed the old code

parameme15:01:18

Session looks brilliant

yenda15:01:53

oh wait there are forks

Ben Kamphaus15:01:13

gorilla repl is also in that space, (not really an endorsement one way or the other, I don’t use it personally) http://gorilla-repl.org/

Ben Kamphaus15:01:53

regarding getting data in, under what terms or with what requirements? You can always get back results via REST server or your own export logic from a clojure/java peer into an environment for other language, or export queries in table form etc. (query results without find specifications are sets of tuples).

parameme15:01:46

Basically it is a business app - spreadsheets come in - we mangle them (hopefully add value) and then allow the data to be sliced and diced... several existent customers have requested ODBC access to a reporting schema or OLAP access...

parameme15:01:57

Tableau (desktop) has been amazing in the ad-hoc data visualisation and dashboard construction - but is pretty expensive for a web-based system... I have been looking around to see if there was anything that would speak datomic sufficiently to allow for either a) a reporting schema / cube or b) an ETL process to Redshift or some other supported columnar / MPP datastore so that existent tools could be used.

Ben Kamphaus15:01:42

@parameme you might be interested in Nubank’s talk from Strange Loop https://www.youtube.com/watch?v=VexLSuOvb0w - in this case its their own analysis environment but they outline some of their data wrangling process.

sdegutis18:01:56

When asserting a value on an entity which is the same as it had before, is it expensive, even though it's basically a no-op?

sdegutis18:01:37

In other words, is transacting {:db/id 1234 :foo/bar "quux"} fast when 1234 already has {:foo/bar "quux'}?

Ben Kamphaus18:01:51

@sdegutis: it’s not entirely a no-op, it will create a transaction entity for the otherwise empty transaction, i.e. transaction data will be something like [#datom[13194139534316 50 #inst "2016-01-20T18:11:45.847-00:00" 13194139534316 true]]

sdegutis18:01:21

Ahhh. Alright then.

sdegutis18:01:31

Doesn't sound terribly slow then.

Ben Kamphaus18:01:56

not slower than a normal transaction, no. takes more time than not transacting anything simple_smile

tmorten21:01:07

Hello All: I have a question about db partitions and when to use them wisely...for instance: would it make sense to have different partitions in the case you have a unique ID that only is unique inside a particular name? Ex: Company/items has many items which have a item number that identifies the item but only inside that particular company. Other companies may have same item number. So in this case companies would have its own partition?

Lambda/Sierra21:01:06

@tmorten: Datomic partitions have no relationship to unique attributes.

Lambda/Sierra21:01:31

Partitions are only related to Entity IDs, which Datomic generates.

Lambda/Sierra21:01:58

Values of an attribute declared :db.unique/value or :db.unique/identity must be globally unique across an entire database.

Lambda/Sierra21:01:10

If you need uniqueness scoped within another identifier, create a composite ID value that includes enough features to be globally unique, like "<company-ID>:<product-id>"

tmorten22:01:22

@stuartsierra: Composite IDs is exactly the path I was headed. I wasn't sure if there was a "best-practices" type approach, however.

Lambda/Sierra22:01:50

Composite IDs are the recommended approach. Use strings, not byte arrays.

tmorten22:01:33

Then "split" via ":"?

Lambda/Sierra22:01:13

or whatever character you want to use

tmorten23:01:37

@stuartsierra: thank you for the help!

timgilbert23:01:55

@tmorten: if you haven't watched it yet, I thought the final Day of Datomic video was very helpful in helping me get an idea about what partitions are useful for: http://www.datomic.com/part-vi-the-datomic-operational-model.html

tmorten23:01:33

@timgilbert: Got through video IV so far simple_smile

tmorten23:01:22

Good stuff though. I am definitely a Datomic noob!