This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2021-04-08
Channels
- # announcements (13)
- # asami (9)
- # aws (1)
- # aws-lambda (1)
- # babashka (37)
- # beginners (70)
- # calva (19)
- # cider (23)
- # clara (10)
- # clj-kondo (15)
- # cljdoc (14)
- # clojure (3)
- # clojure-bay-area (1)
- # clojure-europe (40)
- # clojure-nl (3)
- # clojure-serbia (1)
- # clojure-uk (31)
- # clojuredesign-podcast (1)
- # clojurescript (9)
- # community-development (7)
- # data-oriented-programming (1)
- # datomic (44)
- # emacs (13)
- # figwheel-main (14)
- # fulcro (6)
- # jobs (6)
- # malli (15)
- # meander (7)
- # off-topic (74)
- # other-languages (1)
- # pathom (3)
- # portal (3)
- # re-frame (25)
- # reagent (6)
- # reitit (2)
- # reveal (1)
- # rewrite-clj (6)
- # ring (5)
- # shadow-cljs (11)
- # specter (7)
- # xtdb (7)
Here's a question about Crux on Hacker News in case someone more knowledgeable than me wants to respond: https://news.ycombinator.com/item?id=26744895 > Why would you need a special database to implement this feature? Usually its just modelled by having 2 date fields and querying as appropriate. (My response would be "I don't know man, I've never actually used bitemporality much yet")
yeah - 'querying as appropriate' is fine when you've only got a couple of tables, but when you have explicit user-managed columns you then have to take them into account in every join of every query 🙂
more to manually performance optimise, too - to an RDBMS they're just ordinary columns - their inclusion in every join may be enough to cause it to choose an unsuitable plan; a bitemporal database knows more about them and so can optimise on your behalf
Crux, for example, indexes the content and the temporal information separately, so that a decent amount of the query can be executed on the content alone
So... "Performance"?
haha, yep 🙂 although day-to-day I think I'd value the ease and correctness higher, not having to worry that anyone querying the database has correctly applied the temporal filters every time - for the common 'as of now' case you pretty much transact and query Crux as if it's a regular atemporal database, but you still have the temporality support when you need it