Le tecnologie di elaborazione batch (come MapReduce, Hive, Pig) sono maturate e sono state ampiamente utilizzate nel settore. Questi sistemi hanno risolto con successo il problema dell'elaborazione di grandi volumi di dati. Tuttavia, prima è necessario raccogliere e archiviare grandi quantità di dati in un database o in un file system. Questo richiede molto tempo. Poi ci vuole tempo per completare i lavori di analisi dell'elaborazione batch prima di ottenere i risultati. Mentre ci sono molti casi in cui è necessario analizzare i risultati di una sequenza illimitata di dati in pochi secondi o sub-secondi. Per soddisfare la crescente domanda di elaborazione di tali dati in streaming, sono stati implementati e ampiamente adottati diversi sistemi di elaborazione in streaming, come Apache Storm, Apache Spark, IBM InfoSphere Streams e Apache Flink. Tuttavia, come valutare i sistemi di elaborazione dei flussi prima di sceglierne uno per lo sviluppo della produzione è una questione aperta. In questo libro presentiamo StreamBench, un framework di benchmark per facilitare il confronto delle prestazioni dei sistemi di stream processing. Una caratteristica fondamentale del framework StreamBench è la sua estensibilità: supporta la facile definizione di nuovi carichi di lavoro, oltre a facilitare il benchmark di nuovi sistemi di elaborazione di flussi.