title: Combining low-latency streams with multiple meta-data streams in Flink (enrichment)
body: <p>I am evaluating Flink for a streaming analytics scenario and haven't found sufficient information on how to fulfil a kind of ETL setup we are doing in a legacy system today.</p>
  
  <p>A very common scenario is that we have keyed, slow throughput, meta-data streams that we want to use for enrichment on high throughput data streams, something in the line of:</p>
  
  <p><a href="https://i.stack.imgur.com/VFqw1.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/VFqw1.png" alt="enter image description here"></a></p>
  
  <p>This raises two questions concerning Flink: How does one enrich a fast moving stream with slowly updating streams where the time windows overlap, but are not equal (Meta-data can live for days while data lives for minutes)? And how does one efficiently join multiple (up to 10) streams with Flink, say one data stream and nine different enrichment streams?</p>
  
  <p>I am aware that I can fulfil my ETL scenario with non-windowed external ETL caches, for example with Redis (which is what we use today), but I wanted to see what possibilities Flink offers. </p>