This is the implementation of the Cloud Spanner data handler for MindsDB.

Cloud Spanner is a fully managed, mission-critical, relational database service that offers transactional consistency at global scale, automatic, synchronous replication for high availability. It supports two SQL dialects: GoogleSQL (ANSI 2011 with extensions) and PostgreSQL.

Prerequisites

Before proceeding, ensure the following prerequisites are met:

  1. Install MindsDB locally via Docker or Docker Desktop.
  2. To connect Cloud Spanner to MindsDB, install the required dependencies following this instruction.
  3. Install or ensure access to Cloud Spanner.

Implementation

This handler was implemented using the google-cloud-spanner Python client library.

The required arguments to establish a connection are as follows:

  • instance_id is the instance identifier.
  • database_id is the database identifier.
  • project is the identifier of the project that owns the resources.
  • credentials is a stringified GCP service account key JSON.

Usage

In order to make use of this handler and connect to the Cloud Spanner database in MindsDB, the following syntax can be used:

CREATE DATABASE cloud_spanner_datasource
WITH
    engine = 'cloud_spanner',
    parameters = {
      "instance_id": "my-instance",
      "database_id": "example-id",
      "project": "my-project",
      "credentials": "{...}"
    };

You can use this established connection to query your table as follows:

SELECT *
FROM cloud_spanner_datasource.my_table;

Cloud Spanner supports both PostgreSQL and GoogleSQL dialects. However, not all PostgresSQL features are supported.