Blogs
Technical Overview
Operational excellence
Sep 2021: Provisioning and Scaling Cloud Spanner using Terraform [New*]
Oct 2020: Scaling Cloud Spanner Instances
Jul 2020: Cloud Spanner Change Watcher and Cloud Spanner Change Publisher
May 2020: Create Cloud Spanner Scheduled Backups
Apr 2020: Instrumenting Cloud Spanner Go Applications with OpenCensus
Mar 2020: Troubleshooting Cloud Spanner Applications with OpenCensus
May 2018: Sharding of timestamp-ordered data in Cloud Spanner
Internals
Performance
July 2021: Measuring Cloud Spanner performance for your workload
Jan 2021: Diagnose Performance Issues in Cloud Spanner with Lock Statistics
Sep 2020: Analyze Running Queries in Cloud Spanner to Help Diagnose Performance Issues
Jul 2020: Introducing Cloud Spanner Read Stats
Jun 2020: Increase Visibility into Cloud Spanner Performance with Transaction Stats
May 2020: Use GFE Server-Timing Header in Cloud Spanner Debugging
Developer productivity
Oct 2021: Using the Cloud Spanner Emulator in CI/CD pipelines [New*]
Sep 2021: Deploying the emulator remotely [New*]
Sep 2021: Deploying/running the emulator locally [New*]
Sep 2021: Overview of various deployment options for the emulator [New*]
Sep 2021: Guide to Deploying a Cloud Spanner-based Node.js application [New*]
Jan 2021: Data operation with Cloud Spanner using Mercari Dataflow Template
Jun 2020: DML and Mutations - A Tale of Two Data Altering Techniques in Cloud Spanner
Apr 2020: Cloud Spanner Emulator
Dec 2019: Google Cloud Spanner Dialect for Hibernate released
Nov 2019: Opening the door to more dev tools for Cloud Spanner
Migration
June 2021: Tips for migrating from MySQL to Cloud Spanner [New*]
May 2021: Database migration from MySQL to Cloud Spanner, handling auto-incrementing keys
Oct 2020: How To Successfully Migrate Data From DynamoDB To Bigtable And Spanner
Sep 2020: Using DAL For Migration From DynamoDB To Spanner and Bigtable
Jul 2020: 6 Steps to Migrate to Cloud Spanner