Most active commenters

    ←back to thread

    169 points adityaathalye | 13 comments | | HN request time: 0.004s | source | bottom
    1. moomin ◴[] No.45118981[source]
    It's a pity that Clojure is kind of a hermetic space these days, because the concept of bitemporality really deserves much more attention. It's amazing how often you want to know "What was the P&L for March using the data available on Apr 4?" and how uncommon it is to find a database design that supports that kind of query.
    replies(4): >>45120261 #>>45120290 #>>45120880 #>>45120882 #
    2. galkk ◴[] No.45120261[source]
    Spanner does that with ease (I worked there, so I’m clearly biased).

    https://cloud.google.com/spanner/docs/timestamp-bounds#exact...

    replies(1): >>45120472 #
    3. lemonberry ◴[] No.45120290[source]
    "It's a pity that Clojure is kind of a hermetic space these days"

    If you don't mind sharing, I'm curious why you feel this way.

    replies(2): >>45120954 #>>45122895 #
    4. refset ◴[] No.45120472[source]
    That only covers the 'transaction time' axis though? And the page says retention is limited to 1 week. No doubt useful for some things, but probably not end-user reporting requirements.
    5. necubi ◴[] No.45120880[source]
    It's not particularly rare in analytical databases/query engines, nearly all of which support AsOf joins these days, including

      * Clickhouse
      * DuckDB
      * BigQuery
      * Snowflake
      * QuestDB
    replies(1): >>45121943 #
    6. 0_gravitas ◴[] No.45120882[source]
    'Hermetic' is an interesting word-choice, considering Clojure has a habit/raison detre of attaching to other host languages/ecosystems i.e. Jank (C++), ClojureScript (JS), Basilisp (Python), Phel (PHP), Babashka (general scripting), and of course, Clojure itself on the JVM.
    replies(1): >>45123917 #
    7. ◴[] No.45120954[source]
    8. refset ◴[] No.45121943[source]
    AsOf join in those systems solves a rather narrow problem of performance and SQL expressiveness for data with overlapping user-defined timestamps. The bitemporal model solves much broader issues of versioning and consistent reporting whilst also reducing the need for many user-defined timestamp columns.

    In a bitemporal database, every regular looking join over the current state of the world is secretly an AsOf join (across two dimensions of time), without constantly having to think about it when writing queries or extending the schema.

    replies(1): >>45123286 #
    9. jonahbenton ◴[] No.45122895[source]
    We hermits enjoy its use in our lairs, worlds of pure thought.
    10. sterlinm ◴[] No.45123286{3}[source]
    This is the book I like for an overview of the problem. https://www.amazon.com/Temporal-Relational-Kaufmann-Manageme...
    11. Garlef ◴[] No.45123917[source]
    Sure. But the other way around?

    Why is there no JS client for datomic (that is not abandoned)?

    replies(2): >>45125011 #>>45128264 #
    12. monsieurbanana ◴[] No.45125011{3}[source]
    datomic =/= clojure

    Clojure doesn't have much manpower, being a niche language and all, so maybe that's where your impression comes from. It's hardly on purpose, and there's many examples of software that ships with another language as public API.

    Rama is written in clojure but the main api is java

    Klipse is written in cljs but is marketed as a "javascript library"

    Even Datomic maintains a java api

    13. fulafel ◴[] No.45128264{3}[source]
    Rama[1] for example launched with Java API first. Probably for some reason Datomic just didn't get traction with JS users for some nontechnical reason.

    [1] https://redplanetlabs.com/