# Overview
A data stream is a real-time, continuous flow of data that can be captured, processed, and analyzed as it is generated. It is often used in situations where data enters a system as events via an [[Event Sourcing]] technique.
## General Use Cases for Data Streams #flashcard
- Process large amounts of data in real-time
- Need to support complex processing scenarios (e.g., event sourcing)
- [[Pub-sub]] use cases, when multiple consumers read from the same stream
<!--ID: 1751507776994-->
# Key Considerations
A data stream is often separate from the components that are able to process off of a stream. These [[Stream Processing]] systems read off of a stream to process the events.
## Consumer Groups
Streams allow for multiple consumer groups, so different consumers can independently read from the same stream.
## Windowing
An approach for grouping data in a stream together based on time or count.
## Scalability
### Partitioning
Similar to databases, a stream can be partitioned across multiple servers to handle more events. This will require a [[Partitioning]] strategy that ensures related events are stored on the same partition.
# Implementation Details
# Useful Links
## Products
- [[Kafka]]
- [[AWS Kinesis]]
- [[Confluent]]
# Related Topics
## Reference
#### Working Notes
#### Sources