DEV Community

Cover image for Quick tip: SingleStoreDB's Persistent Computed Columns
Akmal Chaudhri for SingleStore

Posted on • Edited on

Quick tip: SingleStoreDB's Persistent Computed Columns

Abstract

SingleStoreDB supports a feature called Persistent Computed Columns that enables the creation of a table column defined by an expression that uses other table columns. In this short article, we'll look at an example of how to use this feature with Geospatial data.

Introduction

When working with some types of data, it can be useful to automatically compute values, saving time and effort for the developer. In SingleStoreDB, this capability is available through Persistent Computed Columns. Let's see how to use this with a simple Geospatial example.

Create a SingleStoreDB Cloud account

A previous article showed the steps required to create a free SingleStoreDB Cloud account. We'll use PCC Demo Group as our Workspace Group Name and pcc-demo as our Workspace Name. We'll make a note of our password and host name.

Create the database and table

First, we'll download a CSV file containing some synthetic sensor data.

Next, we'll use a MySQL client to connect to SingleStoreDB Cloud, as follows:

mysql --local-infile \
      -u admin \
      -h <host> \
      -P 3306 \
      --default-auth=mysql_native_password \
      -p
Enter fullscreen mode Exit fullscreen mode

The <host> being replaced with the value obtained from SingleStoreDB Cloud.

We'll now create a database and database table, as follows:

CREATE DATABASE IF NOT EXISTS pcc_demo;

USE pcc_demo;

DROP TABLE IF EXISTS sensors;
CREATE ROWSTORE TABLE IF NOT EXISTS sensors (
    id INT PRIMARY KEY,
    name VARCHAR (50),
    latitude DOUBLE,
    longitude DOUBLE,
    location AS GEOGRAPHY_POINT(longitude, latitude) PERSISTED GEOGRAPHYPOINT,
    INDEX(location)
);
Enter fullscreen mode Exit fullscreen mode

Load the data

We'll now load the sensor data into the sensors table, as follows:

LOAD DATA LOCAL INFILE '/path/to/sensor.csv'
INTO TABLE sensors
IGNORE 1 LINES
COLUMNS TERMINATED BY ',';
Enter fullscreen mode Exit fullscreen mode

We would replace /path/to/ with the actual path to where the CSV file was located.

Our CSV file contains four columns (id, name, latitude, longitude). As the data are loaded into the table, the location column is automatically populated for us with a Geospatial Point by using the longitude and latitude values.

Query the data

Once the data are loaded we can check the table, as follows:

SELECT id, name, location FROM sensors LIMIT 5;
Enter fullscreen mode Exit fullscreen mode

The result should be similar to the following:

+----+-----------+-----------------------------------+
| id | name      | location                          |
+----+-----------+-----------------------------------+
|  1 | sensor_1  | POINT(88.44146008 -50.58444199)   |
|  3 | sensor_3  | POINT(93.61987432 -54.16528058)   |
|  6 | sensor_6  | POINT(-117.33446641 -55.57414366) |
|  9 | sensor_9  | POINT(-58.40311992 -5.46648307)   |
| 11 | sensor_11 | POINT(-141.93731583 10.42001621)  |
+----+-----------+-----------------------------------+
Enter fullscreen mode Exit fullscreen mode

We can now use the location column as part of Geospatial queries. This column is also indexed, similar to any standard column.

Summary

Through a quick example, we have seen how to use Persistent Computed Columns. As we loaded the CSV data, SingleStoreDB automatically created the data values in the extra column, saving us time and effort.

Top comments (0)