Of Streams and Tables in Kafka and Stream Processing, Part 1

@machinelearnbot 

In this article, perhaps the first in a mini-series, I want to explain the concepts of streams and tables in stream processing and, specifically, in Kafka. Hopefully, you will walk away with both a better theoretical understanding but also more tangible insights and ideas that will help you solve your current or next practical use case better, faster, or both. Some users have a stream processing or Kafka background, some have their roots in RDBMS like Oracle and MySQL, some have neither. One common question is, "What's the difference between streams and tables?" In this article I want to give both a short TL;DR answer but also a longer answer so that you can get a deeper understanding. Some of the explanations below will be slightly simplified because that makes them easier to understand and also easier to remember (like how Newton's simpler but less accurate gravity model is perfectly sufficient for most daily situations, saving you from having to jump straight to Einstein's model of relativity; well, fortunately, stream processing is never that complicated anyways).