# Stream Ingestion

Stream ingestion keeps Pinot close to the source of truth. Use it when rows should be queryable soon after they are emitted, and when the system needs a steady flow rather than periodic batch loads.

## Core decisions

Pick the stream connector and partitioning strategy.

Choose how Pinot should flush, commit, and complete segments.

Decide whether the table should remain purely realtime or later become hybrid.

## What matters most

The stream has to support the consumption mode you choose. The table config has to describe the partitioning, replicas, and segment lifecycle clearly enough that the servers can behave predictably under load.

## Learn more

The existing walk-throughs in [Import Data](https://docs.pinot.apache.org/build-with-pinot/ingestion) and [Data Ingestion Overview](https://docs.pinot.apache.org/build-with-pinot/ingestion) still contain the detailed mechanics.

## What this page covered

This page covered the stream-ingestion model and the main lifecycle choices behind it.

## Next step

Read [Upsert and Dedup](https://docs.pinot.apache.org/build-with-pinot/ingestion/upsert-dedup) if the stream should collapse duplicate keys or keep only the latest row.

## Related pages

* [Ingestion](https://docs.pinot.apache.org/build-with-pinot/ingestion)
* [Batch Ingestion](https://docs.pinot.apache.org/build-with-pinot/ingestion/batch-ingestion)
* [Upsert and Dedup](https://docs.pinot.apache.org/build-with-pinot/ingestion/upsert-dedup)
* [Formats and Filesystems](https://docs.pinot.apache.org/build-with-pinot/ingestion/formats-filesystems)
* [Original Stream Docs](https://docs.pinot.apache.org/build-with-pinot/ingestion/stream-ingestion/stream-ingestion)
