Fork me on GitHub
#datascript
<
2016-05-25
>
Dustin Getz16:05:19

@metasoarous: can you elaborate about client server data sync as handled by posh

Dustin Getz16:05:51

i see a sentence in the readme about “we are thinking about how to solve this” but i don’t understand how it can be solved without having massive slices of datom indexes sent to the client

Dustin Getz16:05:12

[9:52 AM] dustingetz Whena datomic peer does a query like [:find (count ?r :where [complicated]], and the jvm peer cache is cold, how does datomic know what pages of entities to load from storage? [11:20 AM] stuartsierra @dustingetz: The query engine evaluates the datalog clauses in order, fetching index segments from storage as needed. [11:20 AM] It knows which index segments to fetch based on which parts of the datalog clause are constants or bound variables.

metasoarous16:05:59

That will be the role of datsync

metasoarous16:05:24

Partial sync (scoping) and security filters pending.

metasoarous16:05:46

Aiming for web after tomorrow architecture

Dustin Getz16:05:34

Right, i dont understand how partial sync can be solved efficiently in that matter, because you need to send large slices of datom indexes to the client (any datom that could possibly be relevant to a query)

Dustin Getz16:05:30

They mention using some heuristics, but they don’t seem to be good enough

Dustin Getz16:05:07

you can’t send down 10000 entities because the ui wants to put the first 10 of them in a paged grid view

metasoarous16:05:34

There will be queries that get defined in client but executed on server to decide what data is needed

Dustin Getz19:05:15

@metasoarous: what if you want to render a blank form, you may not have an entity yet to attach metadata

metasoarous19:05:58

Doesn't matter; Pull expressions still describes that 🙂

metasoarous20:05:14

It specifies all the keys and relations youd need for the form

Dustin Getz20:05:03

I thin there are two layers of metadata in play

Dustin Getz20:05:25

the schema (essentially :db.valueType and :db.cardinality and the attrs) - which the pull expression knows about

Dustin Getz20:05:05

What about business model level stuff like, what query controls the select options on this :db.type/ref field?

metasoarous20:05:17

You'd be able to specify seed data for the form

metasoarous20:05:26

So it can query on that if it needs to

metasoarous20:05:22

But I've found that most often putting a metadata attribute in the attribute entities in the schema that specify what types of entities can be pointed to works well.