Skip to content
HomeVideosBooksBlogs
AllTop postsTopics
Podcasts
HistoryListsWatch laterLiked videosFollowing

The videos, books, blogs and podcasts Hacker News keeps recommending, all in one place.

VideosBooksBlogsPodcastsAboutPrivacySettings

Data from Hacker News, HackerTube, HackerBooks, HackerBlogs and Open Library. Credits · Not affiliated with Y Combinator.

HomeVideosBooksBlogsPodcasts
Ctrl K
    Q

    QuestDB Blog

    questdb.io · Company blog · on HN since 2019

    QuestDB's company blog covers its time series database, with posts on benchmarks, SIMD, Java and Rust performance.

    Visit blogHN submissions
    DatabasesSystems & Performance
    What HN says

    HN links it for QuestDB benchmarks against TimescaleDB, InfluxDB and ClickHouse. One commenter asks why Rust was added, and another questions the comparison set.

    Stats for nerds
    62HN people shared it
    86linked in comments
    2Kstory points
    Aug 2026last shared
    2020people per year2026

    Top posts on HN

    1. 1
      The Billion Row Challenge (1BRC) – Step-by-Step from 71s to 1.7s
      4 people · 277 points · first shared 2024 · 41 comments on HN
    2. 2
      1BRC merykitty's magic SWAR: 8 lines of code explained in 3k words
      2 people · 261 points · first shared 2024 · 83 comments on HN
    3. 3
      From Rust to reality: The hidden journey of fetch_max
      1 person · 259 points · first shared 2025 · 59 comments on HN
    4. 4
      How we achieved write speeds of 1.4M rows per second
      5 people · 191 points · first shared 2021 · 37 comments on HN
    5. 5
      Using SIMD to aggregate billions of values per second
      2 people · 171 points · first shared 2020 · 70 comments on HN
    6. 6
      Making a trading Gameboy: A pocket exchange and algo trading platform
      1 person · 166 points · first shared 2024 · 24 comments on HN
    7. 7
      NYC taxi meter and options pricing
      1 person · 125 points · first shared 2020 · 56 comments on HN
    8. 8
      A kernel bug froze my machine: Debugging an async-profiler deadlock
      1 person · 120 points · first shared 2025 · 18 comments on HN
    9. 9
      Debugging distributed database mysteries with Rust, packet capture and Polars
      1 person · 88 points · first shared 2024 · 3 comments on HN
    10. 10
      How Databases handle 10M devices in high-cardinality benchmarks
      2 people · 66 points · first shared 2021 · 14 comments on HN

    What HN people wrote when they linked it

    • kaliszadFeb 2025

      Yes and no. Statically typed languages only know that data stored in some piece of memory was conforming to some kind of shape/ interface when it was first stored there. That's why tricks like SIMD Within A Register (SWAR) work at all. E.g. when you need to parse temperatures from string input very fast like in the 1BRC: https://questdb.com/blog/billion-row-challenge-step-by-step/ How does your type system help there?

      With static typing, you are doing specification and optimization at the same time, which is maybe necessary because compilers and languages are not sufficiently smart but also because of this mix it complicates reasoning about correctness and performance. Also static typing introduces a whole universe of problems with itself. That's why we have reflection or stuff like memory inefficient IP address objects in Java:

      For a simple IPv4 address normally representable using 4 bytes/ 32 bits Java uses 56 bytes. The reason for it is Inet4Address object takes 24 B and the InetAddressHolder object takes another 32 B. The InetAddressHolder can contain not only the address but also the address family and original hostname that was possibly resolved to the address.

      For an IPv6 address normally representable using 16 bytes/ 128 bits Java uses 120 bytes. An Inet6Address contains the InetAddressHolder inherited from InetAddress and adds an Inet6AddressHolder that has additional information such as the scope of the address and a byte array containing the actual address.…

    • petercooperJun 2020

      I edit a database newsletter – https://dbweekly.com/ – so tend to always have my eyes out for new releases, what's coming along, and what not. And I thought I'd share a few more things that have jumped out at me recently in case anyone's in the mood for spelunking.

      1. QuestDB – https://questdb.io/ – is a performance-focused, open-source time-series database that uses SQL. It makes heavy use of SIMD and vectorization for the performance end of things.

      2. GridDB - https://griddb.net/en/ - is an in-memory NoSQL time-series database (there's a theme lately with these!) out of Toshiba that was boasting doing 5m writes per second and 60m reads per second on a 20 node cluster recently.

      3. MeiliSearch - https://github.com/meilisearch/MeiliSearch – not exactly a database but basically an Elastic-esque search server written in Rust. Seems to have really taken off.

      4. Dolt – https://github.com/liquidata-inc/dolt – bills itself as a 'Git for data'. It's relational, speaks SQL, but has version control on everything.

      TerminusDB, KVRocks, and ImmuDB also get honorable mentions.

      InfoWorld also had an article recently about 9 'offbeat' databases to check out if you want to go even further: https://www.infoworld.com/article/3533410/9-offbeat-databases-worth-a-look.html

      Exciting times in the database space!

    • puzpuzpuz-hnDec 2023

      > Unless I'm missing something, hashing function is fast compared to random bouncing around inside ram – very much faster then random memory accesses. So I can't see how it make a difference.

      In a GROUP BY, you may have a few hundred million rows, but only a few hundred groups within them. A slow function would slow down things dramatically in that case since the hash table remain small and data access is potentially linear.

      > Then you've got sorted data, in which case use a merge join instead of a hash join surely.

      This property is beneficial for GROUP BY which includes a timestamp or a function over timestamp. QuestDB organizes data sorted by time, so relying on insertion order may help to avoid redundant sorting if there is an ORDER BY clause with the timestamp column.

      As for merge join, we also use it in ASOF join: https://questdb.io/docs/reference/sql/join/#asof-join

    • giancarlostoroSep 2023

      Looks like they have an interesting range of customers[0] so my take on "why even add the Rust" is because their customers are already using Java, a total rewrite might be considered irresponsible as it would be incompatible with their existing customer base. I do have to wonder though, if some serious Java refactoring in any way, would have helped at all. How many code smells do they have going on in their codebase? Or is it to the best of their knowledge a really clean Java codebase?

      Note Discord themselves has used Rust for bottlenecks with Erlang/Elixir/Beam[1].

      [0]: https://questdb.io/customers/

      [1]: https://discord.com/blog/using-rust-to-scale-elixir-for-11-million-concurrent-users

    • bsmthAug 2021

      I'm writing docs for https://questdb.io/ which offers SQL-based analytics for time series. We have quite a few users already who use us for ML applications that rely on performance.

      Instead of writing an MQTT -> PostgreSQL bridge, you could use Telegraf to listen to MQTT topics and write data to QuestDB over InfluxDB line protocol when it meets certain criteria. One of our users shared the tooling they use in industrial IoT and a tutorial here for exactly this use case: https://questdb.io/tutorial/2020/08/25/questitto/#stack

    • koliberJun 2024

      Implement some none-trivial algorithm and then try to optimize the heck out of it. Focus on the concrete CPU, architecture, cache, and memory in the hardware you have in front of you. Forget portability for a moment.

      This comes to mind: https://www.morling.dev/blog/one-billion-row-challenge/

      Read how others have done it. Here's an example in Java that goes relatively low-level to squeeze out performance: https://questdb.io/blog/billion-row-challenge-step-by-step/

    Related

    ClickHouse Blogclickhouse.com281 people

    28M Hacker News comments as vector embedding search dataset

    ClickHouse Blog
    Company · last shared 2026
    FoundationDB Blogblog.foundationdb.com15 people

    Databases at 14.4Mhz

    FoundationDB Blog
    Company · last shared 2015
    InfluxData Bloginfluxdata.com118 people

    Open source takes continued investment, and that must be subsidized somehow

    InfluxData Blog
    Company · last shared 2026
    XTDB Blogxtdb.com39 people

    Trucks, tubes and truth – event-driven systems

    XTDB Blog
    Company · last shared 2026
    Tokutek Blogtokutek.com42 people

    532x Performance Increase for MongoDB with fractal tree indexes

    Tokutek Blog
    Company · last shared 2015
    GreptimeDB Bloggreptime.com26 people

    Error Stacking in Rust

    GreptimeDB Blog
    Company · last shared 2026
    PingCAP Blogpingcap.com123 people

    Generics and Compile-Time in Rust

    PingCAP Blog
    Company · last shared 2026
    Timescale Blogblog.timescale.com95 people

    How percentile approximation works and why it's more useful than averages

    Timescale Blog
    Company · last shared 2022