Rethinking Database Programming

(acadia.engineering)

67 points | by honungsburk 3 hours ago

11 comments

  • dwohnitmok 8 minutes ago
    I'm wary of languages that seek to own the database. In particular, the claim "Coexist with SQL" seems a bit suspect given that e.g. sum types have a custom binary encoding, which likely makes them difficult to interop with from other languages. This makes the claimed interop with other languages really more of a temporary stopping point towards full Acadia adoption rather than a viable long-term equilibrium, unless you e.g. eschew using sum types.

    This makes the database closer to something that Acadia compiles to, rather than something Acadia sits on top of. From my own developer experience this feels off, because I generally expect the data layer to be king and application code to revolve around that, rather than having data representation created in code and the database created off that (this is why I also dislike things like ORMs).

    In general I view databases as usually having more longevity than application code, especially as you accumulate more data over time. For serious production applications, the database often outlives multiple rewrites of the production application.

    I suspect though my concerns are overall rather minor. The ergonomics of the language itself seem enjoyable. Acadia seems like it would be great as an embedded DSL. It's a bit unfortunate that it currently seems coupled to creating an HTTP server. I think that Acadia has greater ambitions beyond just the database, as evidenced by creating a binary web connection with frontend Elm code to presumably obviate the need for encode-decode layers. It seems like Acadia is meant to be a stepping stone towards a closer frontend-backend fusion. But I agree with mjaniczek that something like Lamdera seems a better fit for that.

    But given how early Acadia is, I'm still very excited for where it goes. What I've listed is surmountable and I also feel that often a closer frontend-backend fusion might be worthwhile.

  • akoboldfrying 1 minute ago
    Is this at all similar to LINQ in C#? I never used it, but I'm vaguely aware of it being a functional approach to querying an RDBMS.
  • pelagicAustral 1 hour ago
    So this is capable of turning a one-liner of SQL into six lines of barely readable code?
    • fwlr 16 minutes ago
      It seems that is the price you pay for the power to turn a 600-line nightmare SQL query into 60 lines of barely readable code.
    • janderland 13 minutes ago
      SQL is a horrible language. I’d gladly program in something composable like Elm.
      • ch4s3 2 minutes ago
        Unfortunately Evan removed GROUP BY in 0.19 and left to buy cigarettes.
  • raumgeist 1 hour ago
    Looks very nice. Last year I took up rust, coming from c++, and some of the modern features rust brings are just so nice to have (even something as simple as not having to forward declare a class).

    This year I started working with postgres and you just can't help but notice how sql is coming from the c-Era of programming. Having better and more modern ways to express my queries would be great to improve correctness and performance.

  • DarkNova6 1 hour ago
    I was hoping for an alternative to PLSQL or stored procedures. But this isn’t about „Database Programming“, it’s a SQL replacement…
  • mjaniczek 50 minutes ago
    Having reusable functions and pipelines compiling to SQL sounds amazing. (EDIT: and sum types!) Will want to try this out on some side project later.

    Although for my Elm + backend needs I feel like I still prefer Lamdera: https://dashboard.lamdera.app/ - WebSocket communication and being able to push new data to clients immediately instead of juggling HTTP endpoints and the client having to pull/refresh. `sendToBackend`, `sendToFrontend`, `broadcast` are a great primitive.

  • honungsburk 3 hours ago
    New functional query language for PostgreSQL and SQLite by Evan Czaplicki the author of Elm
  • nylonstrung 57 minutes ago
    For columnar databases, I love Vortex' Dtypes which lets you attach semantic context in a logical type to what is essentially compressed Arrow https://docs.vortex.dev/concepts/dtypes#logical-types
  • ArtemKhymenko 1 hour ago
    Pretty nice, thanks
  • somelady 1 hour ago
    Exciting news!! Love Elm, can't wait to use it more
  • DarkNova6 1 hour ago
    It looks like the HN hug of death has found a new victim