Spanner について調べてみた

2024-10-24

はじめに

Zanzibar について調べている時、Spanner というデータベースについて触れられていたので、調べてみました。
Cloud Spanner とは | Google Cloud 公式ブログ に書かれていることをまとめただけです。

特徴

ざっくり言うと、リレーショナルデータベースでありながら、NoSQLのようなスケーラビリティを持つという、いいとこどりのデータベースサービスです。

どのように高可用性とスケーラビリティを実現しているのか

Spanner は、リージョン内の3つのゾーンにノード、ストレージが分散されている。
(この時点で、クラウドを前提にしていることがわかる)

テーブルは、スプリットという単位で分割されて管理されている。
スプリットは、3つのゾーンに複製して冗長化され、Paxos と呼ばれる。
Paxos の中から、どれか1つのゾーンがリーダーに決まる。
リーダーは書き込みトランザクションを管理し、それ以外は読み取りに使用される。

このように、データの冗長化やリクエストを分散することで、高可用性とスケーラビリティを実現している。

読み取りの種類

以下の2つの読み取り方法がある。

Strong Reads

Stale Read

おわりに

調べてみましたが、意外とシンプルな内容でした。
クラウドを前提とし、その特徴を活かすことで、高可用性とスケーラビリティを実現しているようです。
ちなみに、お値段はかなり高いです。

Zanzibar のような認可システムだと、可用性もスケーラビリティも両方求められるので、こういったデータベースが適しているのだな、と感じました。