This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2021-09-07
Channels
- # announcements (1)
- # babashka (28)
- # beginners (212)
- # calva (13)
- # clara (3)
- # clj-kondo (39)
- # cljsrn (1)
- # clojure (16)
- # clojure-australia (1)
- # clojure-europe (11)
- # clojure-nl (2)
- # clojure-spec (9)
- # clojure-uk (8)
- # clojurescript (66)
- # cloverage (3)
- # code-reviews (16)
- # cursive (12)
- # data-science (2)
- # datomic (118)
- # events (1)
- # garden (2)
- # improve-getting-started (1)
- # introduce-yourself (1)
- # jobs (4)
- # missionary (5)
- # numerical-computing (1)
- # off-topic (5)
- # pathom (3)
- # polylith (71)
- # re-frame (99)
- # reagent (17)
- # remote-jobs (5)
- # shadow-cljs (35)
- # tools-deps (5)
- # xtdb (4)
Hello! I'm trying to understand how Crux scales horizontally for reads. Please bear with my lack of ops/db experience. I've been reading https://opencrux.com/articles/what-is-crux.html, but I have some follow-up questions. Let's assume I have multiple Crux nodes backed by a single Postgres instance, and that write volume is low. Will adding more Crux nodes give me a linear increase in read throughput? Will this put more pressure on the backing PostgreSQL instance? When I want to upgrade Crux, will I have to upgrade all Crux nodes at the same time?
Hey!
> Let's assume I have multiple Crux nodes backed by a single Postgres instance, and that write volume is low.
> Will adding more Crux nodes give me a linear increase in read throughput?
Yes, definitely 🙂
> Will this put more pressure on the backing PostgreSQL instance?
There are some read pressure implications here, but in practice the write workload limit for Postgres is a much more significant pinch point than the read workload. After the initial reads during "ingestion" (transaction processing), Crux nodes don't generally read from Postgres very often outside of polling for new transactions, unless you use pull
or entity
heavily and have an undersized document cache configured (but even then I think Postgres is unlikely to be the bottleneck vs. network speed)
> When I want to upgrade Crux, will I have to upgrade all Crux nodes at the same time?
It's generally a good idea to upgrade all nodes at roughly the same time, but there is no requirement to do so - the only exceptions to this would be if we change an external API or some ingestion semantic that may affect the notion of consistency across multiple versions (particularly when load-balancing), but we try to identify and highlight all such changes in the release notes