Real-Time Dashboard Using Kafka
Tags: kafka, realtimeanalytics, database, materializedviews
Published: 2022-02-01 18:31:38

As data becomes increasingly complex and voluminous, it's more important than ever to have a fast and reliable way to process it. Apache Kafka is an ideal tool to help you build a real-time dashboard to keep track of your business operations. This article will discuss how to create a real-time dashboard using Kafka.


## What is a Real-Time Dashboard?

Dashboards are an information management tool that allows executives to evaluate essential data in an easily digestible manner. Consequently, leaders are better equipped to recognize and reverse harmful patterns in company performance, understand which sections of the organization are functioning well, and discover the most significant prospects for progress.

A real-time dashboard is a visualization that is constantly updated with new data. The majority of these visualizations employ a combination of historical data and real-time information to discover emerging patterns or monitor efficiency. 
The fact that real-time dashboards' information is time-sensitive is essential. IT organizations use specialized software tools to collect computer and user-generated data, aggregate that data into useful information, and present it in real-time dashboards to the appropriate person who can use it to gain insight and improve decision-making. 

In today's digital environment, real-time SQL and obtaining business intelligence insights from processed data has become a popular trend. Real-time data helps IT companies and executives to respond to business, security, and operational concerns more swiftly.


## Apache Kafka as an Event Streaming Platform for Large Data Volumes

[Kafka](https://kafka.apache.org/) is a free and open-source software framework for storing, reading, and analyzing streaming data. Kafka is meant to function in a "distributed" environment. Instead of running on a single user's computer, it runs across multiple servers, exploiting a greater processing power and storage capacity.

Kafka operates as a cluster, storing messages from one or more producers. The streaming data is divided into segments known as topics. The producer might be single or multiple web hosts or web servers that broadcast the data. The producer disseminates data on a particular topic, and the consumers "listen" to the topic and consistently consume the data.

Businesses frequently use Kafka to build real-time SQL data pipelines because it can extract high-velocity, high-volume data.


## How Do I Make a Real-Time Dashboard Using Kafka?

There are several ways to build a real-time SQL dashboard using Kafka. In this case, we will use two technologies that can be used for a prevalent scenario. The technologies are [Debezium](https://debezium.io/) and [Materialize](https://materialize.com/).

The scenario is the following: Data from a Kafka stream needs to be joined with a database table, and the results need to be presented in a real-time dashboard. The data in both sources - the stream and the table - is, of course, changing.

These are examples of situations that would require the above-described solution:

- Sensor data analysis – A sensor configuration table needs to be joined with IoT sensor stream data in Kafka.
- API usage analysis – Combining API logs in a Kafka stream with a user table.
- Affiliate program analysis – Pageviews data in a Kafka stream combined with a user table.

The following sections describe the general approach, but you can consult the practical steps of [joining Kafka with a database using Debezium and Materialize](https://materialize.com/join-kafka-with-database-debezium-materialize/).

## Stream the database into Kafka using Debezium
Debezium is a [Change Data Capture (CDC)](https://materialize.com/change-data-capture-part-1/) software that uses logs to detect database changes and propagates them to Kafka. Whenever you insert, edit, or delete a record in your database, an event containing information about the change is instantly emitted.

This procedure occurs automatically, with no need for you to write a single line of code, almost as if it were a feature of the database itself. Therefore, this process ensures that every change is recorded. In other words, the database and Kafka stream are assured to be consistent.


## Connecting Kafka; Materialize a View

The next step is to materialize the Kafka stream and CDC data into a materialized view that holds the structure we need. Materialize, a state-of-the-art engine for materializing views on rapidly changing data streams is used for this.

Materialize is helpful for this challenge for several reasons:

- It's capable of sophisticated JOINs – Materialize supports JOINs far more broadly than other streaming platforms.
- It's strongly consistent – In a streaming solution, [eventual consistency might lead to unexpected consequences](https://materialize.com/eventual-consistency-isnt-for-streaming/).
- Views are created in conventional SQL – making it simple to connect to and query the results using existing libraries.

## Create a real-time dashboard
The final and most important aspect of analytics is viewing and engaging with data. Dashboards can be designed to continuously refresh and offer in-page filtering with a comprehensive collection of visualizations.

There are two primary ways to access the output of the Materialize view:

**Poll**
- PostgreSQL query – Materialize does not compute the results after each query; the computing is only done when new data comes in Kafka. Therefore, utilizing polling queries every second is fine.

**Push**
Materialize streams output via: 
- TAIL – You can stream changes to views using the TAIL command.
- Sink out to a new Kafka topic – You can use a sink to stream data out into another Kafka topic.

From here, you can interface with any dashboard engine. For example, a solution like Kibana may be utilized to interface with Kafka.


## What Are The Advantages of Using Kafka?

A few of the advantages of using Kafka for real-time dashboards include the following:

- High-throughput – Kafka is capable of handling high-velocity and high-volume data.
- Low Latency – Kafka can handle messages with very low latency (in the range of milliseconds).
- Fault-Tolerant  – Kafka tends to resist node failure within a cluster because it's distributed.
- Durability – Messages are persisted on disk. However, it [should not be used as a database](https://materialize.com/kafka-is-not-a-database/).
- Scalability – Kafka can be scaled by adding nodes. Capabilities like replication and partitioning contribute to its scalability.
- Real-Time – Because of a combination of the above features, Kafka can be ideal for handling real-time data pipelines.


## Use Kafka And Materialize to Create Real-Time Dashboards

Making operational decisions based on the most recent data is a competitive advantage for every business. However, real-time SQL pipelines and dashboard engineering are complex tasks requiring the correct technologies to be used effectively.

Luckily, powerful tools like log-based CDC and Materialize can be used for combining, reducing, and aggregating high-volume streams of data from Kafka into any output format your dashboard requires.