This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2023-05-01
Channels
- # announcements (2)
- # babashka (26)
- # beginners (26)
- # biff (18)
- # boulder-clojurians (2)
- # cider (16)
- # clj-kondo (34)
- # cljs-dev (4)
- # clojure (22)
- # clojure-denver (10)
- # clojure-europe (16)
- # clojure-nl (1)
- # clojure-norway (10)
- # clojure-uk (2)
- # clojurescript (25)
- # conjure (3)
- # cursive (11)
- # datomic (11)
- # dev-tooling (6)
- # emacs (6)
- # etaoin (7)
- # events (1)
- # fulcro (6)
- # humbleui (11)
- # hyperfiddle (15)
- # instaparse (2)
- # introduce-yourself (2)
- # jobs-discuss (1)
- # lsp (26)
- # malli (7)
- # reitit (5)
- # releases (1)
- # sci (6)
- # shadow-cljs (16)
- # specter (5)
- # vim (5)
Kodemaker-folk (@magnars f.eks.): de har skrive om ytelse på Datomic spørringer - at det skalerer bra. Spørsmål: Kor mange datoms (`datomic.api/db-stats`) er det då snakk om i databasen? Og kor komplekse er spørringane? Me/eg har hatt ein del utfordringar med Datomic spørringar, blant anna OOM. Datomic har ingen query planner. Det er lett å få kryssprodukt => OOM, synest eg iallefall. Eg har brukt mykje tid på å få datomic queries til å gå raskt nok. I den aktuelle databasen er det p.t. 220 millioner datoms. Usikker på kor mykje antall datoms har å seie, men det gjev ein viss peikepinn.
ca 30mill i vår største database 🙃 Queries i prod-kode er ganske simple, vi bruker primært entity-api-et for å hente data. Vi gjør noen mer sammensatte queries via REPL-et for innsikt og support-arbeid.
Magnar har tilgang på flere produksjonssystemer enn meg, antageligvis med mer data i.
Har aldri opplevd OOM i et Datomic query, så det var nytt for meg. Datomic peers er jo veldig glade i minne, ettersom de får bedre ytelse av å ha flere blocks lett tilgjengelig, så jeg har alltid gitt dem røslig (tenk 4G). Kan det være der det har strandet, @UGJE0MM0W? Når det gjelder query planner, så finnes det nå noe: https://docs.datomic.com/pro/api/query-stats.html
Takk for svar 🙂 Per no har containerene 8 G minne. Vil tru dei hadde 16 G når dei gjekk ned. Takk for query-stats-lenka, eg har registrert at det har kome, men ikkje fått sett på det. Poenget mitt var mest å utfordre litt dette med at spørringar i Datomic skalerer så bra. Det står også i dokumentasjonen at ein som klient/peer bør https://docs.datomic.com/pro/best-practices.html#most-selective-clauses-first. For oss kom OOM-ene i to "runder". Ein sumar nådde databasen tydelegvis ein kritiske størrelse, og byrja å OOM-e, utan at ein hadde gjort nokon endringar. Feilen i vår kode var då at den lagde eit kryssprodukt som vart for stort. Den andre OOMen var (for meg) meir kryptisk, og handla om at unpacking av vektorer i input kan resultere i queries som kan gje OOM. Eg har dokumentert denne oppførselen i https://gist.github.com/ivarref/0d3d34eeeffbc4625d6120727368e405#file-datomic-oom-clj-L75 og var i kontakt med Datomic support om det, men eg fekk ikkje noko gehør for at dette var ein bug. Gisten er ein variant av problemet me hadde i prod. Takk for tilliten og spørsmål om meetup 🙂 Eg bur i Bergen diverre. Når tida tillet det, så har eg lyst til å skriva litt om desse tinga.
Det slår meg at det er temmelig sjelden at jeg skriver queries. For det meste bruker jeg entity-APIet. Jeg har også gått rett i indexen til tider.
Ja, som jeg nevnte tidligere: få og enkle queries i prod-kode. Jeg bruker nok mest queries “for hånd” fra REPL-et for å stille nysgjerrigheten