Fork me on GitHub
#clojure-norway
<
2024-04-02
>
teodorlu05:04:09

Morn! Tilbake til jobb. morning

augustl06:04:25

god morgen!

boosja07:04:09

God morgen 😄

kolstae07:04:10

God morgen!

pez07:04:21

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.

💯 3
msolli07:04:20

God morgen!

magnars10:04:23

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/

🔥 4
💯 3
🥳 2
2
augustl10:04:15

“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 😄

😅 2
cjohansen16:04:34

Litt nysgjerrig på hva @U04V5VAUN tenker om dette? Vi har jo tidligere diskutert SQL vs ymse

slipset16:04:31

Hva slipset synes om entitets api’et til Datomic?

cjohansen16:04:09

Tja, kanskje det? Egentlig dette:

cjohansen16:04:13

Vs tilsvarende SQL

slipset16:04:05

😛 Husker jeg rynket litt på nesen da jeg så Stuart Halloway presentere /_ syntaksen på NDC Oslo for en haug med år siden…

cjohansen16:04:45

Ja, det er bittelitt syntaks. Men noen orders of magnitude mindre syntaks enn en SQL-streng 😅

cjohansen16:04:57

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.

cjohansen16:04:00

Evt begge deler

slipset16:04:41

Jeg tror det blir litt epler og pærer lissom.

cjohansen16:04:12

Begge handler om å aksessere dataene dine fra lagring?

cjohansen16:04:34

Men klart, det er litt epler og pærer i hvor ressursbruken går

slipset16:04:51

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?

cjohansen16:04:12

Antall gater i de kommunene et gitt postnummer ligger i

cjohansen16:04:12

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”

slipset16:04:30

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=#

slipset16:04:08

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.

cjohansen16:04:35

Dette er ikke samme spørring - du hoppa over kommunen.

cjohansen16:04:51

Poststed Oslo er ikke det samme som Oslo kommune

slipset16:04:14

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

cjohansen16:04:33

Det er ikke en ORM, fordi det er ikke noen M

cjohansen16:04:49

Men ja, du slipper all problematikken fordi dataene ligger på klienten

cjohansen17:04:02

Og gjør en trade-off i hvor du bruker ressursene

slipset17:04:47

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.

cjohansen17:04:02

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.

cjohansen17:04:33

Men dette er egentlig litt på siden av “hvilken leamikk er hyggeligst å grave i dataene sine med” 😄

slipset17:04:56

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=#

slipset17:04:09

Selvom dette begynner å bli penere med joins.

slipset17:04:33

Men som sagt, dette er langt nærmere query apiet til Datomic.

cjohansen17:04:48

Ja, ihvertfall om du skriver det med joins

slipset17:04:23

Jeg merker meg at jeg har helt gått over til å bruke sub-selects, det passer mye bedre sånn som jeg tenker.

cjohansen17:04:29

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)

cjohansen17:04:19

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.

slipset17:04:40

https://github.com/korma/Korma er et slags entitetsoverbygg for SQL i Clojure. Har ikke brukt det. Heller ikke vurdert det noe særlig.

cjohansen17:04:09

Sånn sminke slutta jeg med da jeg sa meg ferdig med Ruby 😅

cjohansen17:04:46

mye mer sansen for Honey, som faktisk gjør et løft ved å la deg manipulere datastrukturer heller enn makroer og strenger

slipset17:04:35

Jepp. Jeg er veldig glad i nettopp de aspektene ved honey. Det er i allefall sinnsykt mye bedre enn å herje med strenger.

cjohansen17:04:59

Jepp. Og med datalog er det native til databasen ❤️ 😄

cjohansen17:04:40

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å

slipset17:04:29

Jeg har hatt litt lyst til å prøve ut https://github.com/igrishaev/pg2

slipset17:04:51

Snakker jo ikke honey direkte, men ungår såvidt jeg kan forstå å gjøre om til strenger først.

cjohansen17:04:37

jeg ser bare strenger?

slipset17:04:25

Men hvis jeg ikke husker helt feil. Postgres har to netverks protokoller en binær og en tekst. JDBC bruker tekst protokollen, der du sender sql strings, mens dette biblioteket bruker den binære protokollen.

cjohansen17:04:53

Høres besparende ut

teodorlu10:04:50

Morn! Håper dere har hatt en god ferie 🙂