This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2024-04-02
Channels
- # announcements (5)
- # beginners (36)
- # biff (2)
- # calva (51)
- # clojure (12)
- # clojure-austin (7)
- # clojure-europe (11)
- # clojure-nl (1)
- # clojure-norway (63)
- # clojure-uk (2)
- # community-development (5)
- # core-typed (10)
- # datomic (9)
- # graalvm (6)
- # honeysql (1)
- # jobs (4)
- # leiningen (14)
- # london-clojurians (1)
- # lsp (23)
- # malli (88)
- # missionary (10)
- # off-topic (41)
- # practicalli (7)
- # re-frame (1)
- # reitit (5)
- # releases (2)
- # remote-jobs (1)
- # ring (11)
- # squint (2)
- # xtdb (5)
Jeg snublet over en kjempebra YouTube-kanal om CSS, https://www.youtube.com/@dmtrmrv. Kanalen er ganske ny, bare noen måneder gammel, men har allerede noen virkelige perler. Han holder det kort og går ikke av sporet. Og det ser ut til at han virkelig vet hva han snakker om.
I dag på Parenteser-bloggen (en jevnlig påminnelse om at det bare er én "a" i parentesene vi skriver så ofte), så skriver jeg om grunnleggende bruk av entiets-API-et, og hvordan det lar deg skrive kode istedenfor SQL. 😊 https://parenteser.mattilsynet.io/alle-gatene-i-kommunen/
“men det betyr jo at det skjer ett nettverkskall til databasen hver iterasjon i kallet til map
” - jeg har en indre “person som er forutintatt og ikke kan Datomic” når jeg leser postene deres 😄
Litt nysgjerrig på hva @U04V5VAUN tenker om dette? Vi har jo tidligere diskutert SQL vs ymse
😛 Husker jeg rynket litt på nesen da jeg så Stuart Halloway presentere /_
syntaksen på NDC Oslo for en haug med år siden…
Ja, det er bittelitt syntaks. Men noen orders of magnitude mindre syntaks enn en SQL-streng 😅
Lurer på hvordan det skulle sett ut for å unngå syntaks :thinking_face: Kanskje man skulle fått lov til å navngi reversen i skjeamet, det hadde vært noe - men da kommer det ikke automatisk lenger.
Jo, men hva er det egentlig vi gjør her. Jeg har altså et poststed, og så vil jeg finne ut hvor mange gater det er der?
Kanskje et noe søkt tall, men stryk count
-en, så har vi dette i vår kodebase for å finne matrikkeladresse ut fra en “håndskrevet adresse”
ardoq_customers=# \d gate;
Table "public.gate"
Column | Type | Collation | Nullable | Default
-------------+---------+-----------+----------+---------
id | integer | | not null |
navn | text | | |
poststed_id | integer | | not null |
ardoq_customers=# \d poststed
Table "public.poststed"
Column | Type | Collation | Nullable | Default
----------+---------+-----------+----------+---------
id | integer | | not null |
postnr | text | | |
poststed | text | | |
ardoq_customers=# select count(*) from gate where poststed_id in (select id from poststed where poststed = 'OSLO');
count
-------
1
(1 row)
ardoq_customers=#
Så kan man myse litt å tenke seg til hvordan dette ville blitt i honey. Men det er klart at dette er mye nærmere query apiet til Datomic enn entitets apiet.
Man kan, hvis man vil være riktig vrang, si at entitets apiet til Datomic er et slags ORM der du , fordi data’ene ligger på klienten og ikke på en server langt unna, slipper unna all problematikk med n+1
Flisespikkeri (dette med ikke O) greia med hibernate var jo at du kunne “navigere” relasjoner på domene objektene dine, noe jeg ville påstå at gjøres i den blogposten.
Men nettverkstrafikken er helt annerledes, og dataaksessen er heller ikke sammenlignbar. I Hibernate skaper du en illusjon om å kunne gjøre det der mot en durabelig kostnad over nettverk. I Datomic er det sånn dataene ligger, så du henter bare de tingene du trenger å prosessere.
Men dette er egentlig litt på siden av “hvilken leamikk er hyggeligst å grave i dataene sine med” 😄
ardoq_customers=# select count(*) from gate where poststed_id in (select id from poststed where kommunenr in (select id from kommune where navn = 'OSLO'));
count
-------
1
(1 row)
ardoq_customers=#
Jeg merker meg at jeg har helt gått over til å bruke sub-selects, det passer mye bedre sånn som jeg tenker.
Datalog og SQL opererer i samme landskap vil jeg si. Datalog fungerer bedre for min hjerne, men det er sikkert subjektivt (som forsåvidt også entity-kodeeksempelet)
Datalog tegner visuelt ut hvordan jeg ville traversert grafen for å finne dataene jeg leter etter. Har alltid strevd med SQL fordi jeg ikke har hatt noen god mental modell. Enig i at sub-spørringer er lettere å lese enn joins.
https://github.com/korma/Korma er et slags entitetsoverbygg for SQL i Clojure. Har ikke brukt det. Heller ikke vurdert det noe særlig.
mye mer sansen for Honey, som faktisk gjør et løft ved å la deg manipulere datastrukturer heller enn makroer og strenger
Jepp. Jeg er veldig glad i nettopp de aspektene ved honey. Det er i allefall sinnsykt mye bedre enn å herje med strenger.
vi har sql-a en del for å grave i gammal data, og honey gjorde det veldig mye mer levelig. Holdt på å dævve etter første dagen med streng templates, for en utdatert måte å jobbe på
Jeg har hatt litt lyst til å prøve ut https://github.com/igrishaev/pg2
Snakker jo ikke honey direkte, men ungår såvidt jeg kan forstå å gjøre om til strenger først.