-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
-
sqlx
🧰 The Rust SQL Toolkit. An async, pure Rust SQL crate featuring compile-time checked queries without a DSL. Supports PostgreSQL, MySQL, and SQLite. (by launchbadge)
-
SaaSHub
SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives
I have been progressively going through and marking pages as out of date. If you find any other then either please do so yourself or report them to me and I'll do it.
It's worth mentioning that Snoyman's "Boring Haskell" is actually a fairly moderate position: if you look at his suggested list of language extensions, it's pretty broad (and fairly reasonable in my view).
unliftio (and safe-exceptions) contains a very controversial choice of of using uninterruptibleMask inside its bracket. The argument for it seem to come from this issue and comes from the fact that one of the most popular resource finalizers hClose is interruptible. This is a simplification. It is interruptible only if a file handle is used concurrently. Such usage of file handles is rather odd, and it suggest wrong architecture, for example leaking file handles using concurrency. When using file handles in synchronous setting, what withFile pattern encourages, hClose will not block and thus mask is enough.
HaskellDB was principled but the codebase was somewhat bitrotted, it had dubious denotational semantics, it was possible to write crashing queries. and only worked with a special "record" form data types that it had cooked up. On the other hand once one accepted the special "records" everything else looked like familiar Haskell. Queries were written in do-notation.
Recently I've been semi-persuaded that if you are a particularly advanced DB user — simply having raw SQL queries immediately available to be played with, shown to a local Postgres wizard on the team, pasted into psql to EXPLAIN, etc, might be important enough that switching to a raw SQL library (with syntax checking a la hasql-th or Rust's sqlx) could be worth it.