Bulk Ingestion (Arrow)
BULK_PULSE_V2=1 · set as an env var when starting aetheriusd; the standard path works without it What it is
Section titled “What it is”Bulk ingestion is the path you take to push (or pull) gigabytes of pre-shaped columnar data without paying the per-row cost of a SQL driver. AetheriusDB speaks the Apache Arrow wire format natively over Flight SQL, so a client can stream Arrow batches straight into a table — and stream query results straight back out into a Python or Polars memory space — without an intermediate row-by-row conversion step.
The same path serves COPY FROM against files and cloud object stores: workers
download Parquet chunks in parallel and load them into columnar storage.
Throughput is bounded by your network and storage hardware, not by the database.
Why use it
Section titled “Why use it”The Arrow path makes AetheriusDB a peer in the data-engineering ecosystem. Pandas, Polars, DuckDB, and Spark all speak Arrow natively, so bulk ingestion connects to them directly instead of requiring an adapter.
- Network-bound throughput — pipelines are limited by hardware, not the database.
- No serialization tax — the wire format is the same columnar format end to end.
- Parallel
COPY— multi-file loads from S3 or GCS download and ingest concurrently.
flowchart LR classDef cli fill:#1f2640,stroke:#00d4ff,color:#e8eaf0 classDef wire fill:#1f2640,stroke:#7c5cff,color:#e8eaf0 classDef store fill:#1f2640,stroke:#4ade80,color:#e8eaf0 P[Pandas / Polars<br/>Arrow batches]:::cli --> F[Flight SQL<br/>endpoint]:::wire F --> T[Table]:::store OBJ[S3 / GCS<br/>Parquet files] --> COPY[COPY FROM<br/>workers]:::wire COPY --> T
How to use it
Section titled “How to use it”From SQL, bulk loading is a COPY FROM against a file or object-store path. From
a Python client, it is a single Arrow-aware call over Flight SQL. Both end up in
the same table.
-- Bulk-load a directory of Parquet files from S3 in parallel.COPY sales FROM 's3://my-bucket/exports/2026/*.parquet' WITH (format = 'parquet', parallelism = 16);# Stream a SELECT out as Arrow batches over Flight SQL.import pyarrow.flight as flight
client = flight.connect('grpc://aether:8815')batches = client.do_get(flight.Ticket(b'SELECT * FROM sales'))df = batches.read_all().to_pandas()Round-trip cost between AetheriusDB and a Pandas DataFrame on the same host is dominated by memory bandwidth, not protocol overhead.