Inserting 1.1M rows/s from Pandas into QuestDB with Arrow, Rust & Cython

This page summarizes the projects mentioned and recommended in the original post on /r/programming

Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
  • py-tsbs-benchmark

    Benchmark ingestion of the TSBS "dev ops" dataset into QuestDB via ILP using the `questdb` Python library and Pandas.

  • See latest commit: https://github.com/questdb/py-tsbs-benchmark/commit/22ef9fcd61caf8115046b19a9d610bc838b50adf

  • c-questdb-client

    Rust, C and C++ client for QuestDB InfluxDB Line Protocol

  • The main code is in Cython (and the fact that one can inspect the generated C is pretty neat) with auxilliary code in Rust. The main serialization logic is in Rust and it's in a separate repo: https://github.com/questdb/c-questdb-client/tree/main/questdb-rs.

  • 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.

    InfluxDB logo
  • Numba

    NumPy aware dynamic Python compiler using LLVM

  • You can also check out the Numba Python package that can sometimes help with some things: https://numba.pydata.org/. For example, I use it to implement a Numpy ufunc in the benchmark to generate a bounded random walk which would would be quite slow to do otherwise in pure Python for 10M rows: https://github.com/questdb/py-tsbs-benchmark/blob/ff0885c4aef852ca9a9f89919d0ad36bd6faec8f/py_tsbs_benchmark/bench_pandas.py#L15

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts