This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2024-02-08
Channels
- # aleph (7)
- # announcements (12)
- # babashka (19)
- # beginners (4)
- # calva (29)
- # cider (20)
- # clj-kondo (20)
- # clojure (66)
- # clojure-austin (4)
- # clojure-europe (11)
- # clojure-nl (1)
- # clojure-norway (42)
- # clojure-uk (4)
- # clojuredesign-podcast (9)
- # conjure (1)
- # cursive (5)
- # datomic (42)
- # etaoin (4)
- # events (10)
- # garden (8)
- # graphql (1)
- # holy-lambda (7)
- # honeysql (3)
- # hyperfiddle (5)
- # missionary (11)
- # music (1)
- # off-topic (12)
- # practicalli (2)
- # re-frame (2)
- # reitit (6)
- # releases (2)
- # vim (2)
- # web-security (1)
- # xtdb (3)
Jeg er vel et eller annet sted mellom snøblind og stockholmsyndrom, men jeg synes SQL er ganske så elegant. Sånn, der fikk jeg sagt det også.
Minst ift. Mongo 🙂
Re https://no.wikipedia.org/wiki/Norrmalmstorgranet: dramatisk historie! edit: betre fortalt her: https://no.wikipedia.org/wiki/Stockholmsyndromet#Ranet_av_Kreditbanken_p%C3%A5_Norrmalmstorg
@ivar.refsdal vet ikke hvor elegant det er men jeg synes at
select foo, (select name from whatever w where w.id = bla.id) from bla where ...
er litt elegant, altså at man kan putte en select
inni en select
magefølelsen min sier at dette blir en N+1-spørring hvor den må kjøre selecten én gang for hver rad. Ikke at det alltid er et problem. Og den klarer kanskje å optimalisere seg ut av det i visse tilfeller og. Dette er mitt spørsmål, som ikke er et spørsmål, kanskje mere en kommentar.
Det er jo det som er så fett med deklarativ programmering. Jeg behøver ikke bry meg om hvor treigt dette er før det er for treigt, og jeg har i større grad enn
select foo, whatever.name from bla, whatever w where w.id = bla.id and ...
uttrykt min intensjon, så jeg vil påstå at en optimizer nå har mer kunnskap om hva den kan gjøre.Jeg synes også subselects er helt nydelig. select foo from bar where (foo_id) in (select id from foo where …)
Datomic støtter også noko lignande:
(d/q '[:find ?e-id ?wname
:keys :e/id :w/name
:in $
:where
[_ :e/id ?e-id]
[(datomic.api/q '[:find ?name .
:in $ ?e-id
:where
[?e :e/id ?e-id]
[?e :e/ref ?w]
[?w :w/name ?name]]
$ ?e-id) ?wname]]
(d/db conn))
Er det mogleg å få datomic.api/q inn i :find-clausen? Nokon som veit?er strengt tatt ikke så viktig å uttrykke alt som én spørring med Datomic, siden N+1 ikke har noen overhead der med lokale data 😄 Så query-apiet “mangler” en del sånne ting, fordi det ikke trengs
Sant det... men eg synest som @U04V5VAUN at det kan vera godt å få gjort alt i "ein" query (og så får noko anna ta seg av ytelsen om det vert eit problem)
Nå er jo heller ikke n+1 så farlig i disse spørringene siden alt skjer lokalt på serveren.
> er strengt tatt ikke så viktig å uttrykke alt som én spørring med Datomic, siden N+1 ikke har noen overhead der med lokale data 😄 Så query-apiet “mangler” en del sånne ting, fordi det ikke trengs Det gjelder kun når du bruker Peers! Med Client får du vel N+1-problemer.
sant, aldri brukt disse client-greiene, virker litt poengløst å bruke datomic uten peers spør du meg
jeg synes også peers virker mest attraktivt. Men har inntrykk av at Nubank bruker mer og mer Client. Uten at jeg forstår hvorfor.
Du kan flette pull inn i Datomic-spørringer, men jeg foretrekker å dele det opp. Finn det du leter etter først, plukk ut datapunktene etterpå. Lettere å lese for meg.
Uavhengig av kilde, men med SQL blir det et spørsmål om ytelse, så da har man ikke valgets luksus.
@U9MKYDN4Q skjønner du hvorfor Nubank heller mot client-API-et?
Client-APiet passar ju väldigt bra för typ konfiguration och i de fall man delat upp det i shardade databaser. Men jag håller helt med om att Peer-arkitekturen är den stora vinsten med datomic.
jaaa, Peer blir kanskje vanskelig når det blir veldig mye data? Hvis man ikke får plass til alt på én node?
Ja, det finns vissa sådana fall, absolut. Men i normalfallet läses ju indexen (och datat) in successivt efterhand. Men absolut kan det finns tillfällen där client-API är rätt. Jag älskar ju att ha allt i samma process så jag är partisk där.
Og beklager til @U04V5VAUN at alle hans forsøk på å snakke om databaser ender opp med Datomic-prat. Denne gangen var det ikke min feil! 😅
Någon nämnde lösningar med shardade databaser - där blir det tungt för peeren som måste hålla alla index i minnet. Just dä är client api det enda som är möjligt
om hensikten er å aggregere store mengder data som ikke får plass i RAM så er det vel bedre å speile dataene til en eller annen column store
Det er kanskje også verdt å poengtere at ingen av SQL-eksemplene av sub-selects in denne tråden krever flere Datomic spørringer. Sub-selects er et artefakt av at data i SQL er strukturert i tabeller. Dette smelter (som regel) bort i Datomic ettersom data er strukturert i "datoms" (RDF-aktive tupler)
Ift Nubank - de bruker client api fordi de kanskje bruker Datomic Cloud, som bare støtter dette?