Google Cloud Spanner 概要 セッションの 沼への誘いシリーズ
この記事は Google Cloud Japan Advent Calendar 2021 の 11日目の記事です。 はじめに この記事ではGoogle Cloudの特徴的なサービスの1つであるCloud Spannerについて紹介しています。Cloud Spannerはその高可用性からミッションクリティカル用途に向く、水平方向へのスケーラビリティを持つリレーショナルデータベースです。 Cloud Spannerについて、従来のRDBMSを利用していたデータベースエンジニアやアプリケーションエンジニアが、知っておいたほうが良いと思われる知識をまとめてみました。 私自身もこれまでOracle Databaseを始めとして、SQL ServerやMySQL、PostgreSQLなどのオープンソースDB、DBアプライアンスのExadataやCloud NativeデータベースとよばれるAmazo
Cloud Spanner は分散システムであり、SQL クエリの実行は場合によっては複雑な分散ストリーム処理となりうる。 よって、パフォーマンス劣化を起こさないように SQL の表現力による利益を得るには Cloud Spanner の低レベルアーキテクチャと高レベルのクエリ実行について両方理解する必要がある。 しかし、実行計画の活用やクエリチューニングについてはまだ公式にもコミュニティでも十分語られているとは言えない。 ここでは Cloud Spanner のクエリパフォーマンスに関係するドキュメントや API のレスポンスに含まれる実行計画の内容について、 公式には説明されていないことも含めた理解とその活用方法を解説する。 主にどのような特性を持つかについて説明しており、ベンチマークを行うのであれば実際のデータやワークロードの傾向について知っている立場で行うことを推奨する。 Use
フィードバックを送信 変更ストリームの概要 コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。 変更ストリームは、Cloud Spanner データベースのデータ変更(挿入、更新、削除)をほぼリアルタイムで監視してストリーミングします。 このページでは、Spanner の変更ストリームにより実施される処理の内容、および変更ストリームが機能する仕組みについて説明します。データベースの変更ストリームを作成して管理し、他のサービスに接続する方法については、次のステップの手順に従ってください。 変更ストリームの目的 変更ストリームは、データの変更を他のサービスにストリーミングする、柔軟かつスケーラブルな手段となります。一般的なユースケースには次のものがあります。 Spanner のデータ変更を BigQuery などのデータ ウェアハウスにレプリケートして分析する。
はじめにCloud Spanner では各言語ごとにライブラリが提供されており、アプリケーションはそれを使うことで非常に簡単にデータベースにアクセスすることができます。しかし Cloud Spanner の性能を最大限引き出すためには、クライアント側の設定値をチューニングしたりなど、クライアントライブラリの挙動を知っておくことが不可欠です。そこで本記事では Go 言語のクライアントライブラリ (google-cloud-go) を例に、クライアントライブラリがどのような処理をしているかをじっくりと紐解いてみたいと思います。 全てを一度にカバーすると結構なボリュームになってしまうので、まずは本記事で Spanner の「セッション管理」の部分について説明します。本記事を通して ClientConfig や SessionPoolConfig の各値の意味がわかるようになるのが目標です。 尚こ
こんにちは、メルペイのバックエンドエンジニアの @kazegusuri です。 メルペイではメインのデータベースとしてGoogle Cloud Spannerを利用しています。 マイクロサービスによっては秒間数千リクエストをSpannerで処理しています。 いかにSpannerをスケールできるようにして安定させられるかが会社全体として重要になっています。 本記事では数ヶ月間戦ってきたSpannerのレイテンシが高くなる問題とその解決法について紹介したいと思います。 社内への調査報告も含めて書いているため、かなり詳細で長い内容になっています。 なおこの問題の大部分はGoでSpannerを使ったときにだけ発生する問題のため、Javaなどの他の言語では該当しない可能性があります。 CreateSession問題 ここで紹介しなくても良いくらい基本的なところですが、CreateSessionが非常
Send feedback Life of Spanner Reads & Writes Stay organized with collections Save and categorize content based on your preferences. Spanner is a strongly-consistent, distributed, scalable database built by Google engineers to support some of Google's most critical applications. It takes core ideas from the database and distributed systems communities and expands on them in new ways. Spanner expose
こんにちは、メルペイのバックエンドエンジニアの @kazegusuri です。 メルペイではクラウド環境としてGoogle Cloud Platform(GCP)を採用しています。 そしてデータストレージとしてほとんどのマイクロサービスでGoogle Cloud Spannerを採用しています。 SpannerではMySQLのようなRDBMSとは全く異なるスキーマ設計や実装が必要となるため、日々試行錯誤しながらサービスの開発を行っています。 本記事ではサービス開発中に開発したSpanner用のコード生成ツールのYoについて紹介したいと思います。 xoについて Yoについて説明する前にYoの元になった xo について紹介します。 xoはMySQLだけでなくPostgreSQLやOracleなどの複数のデータベースに対応したコード生成ツールです。 今までGoでデータベースを扱うために data
There are two primary ways: Use LIMIT and OFFSET Use LIMIT and key-of-previous-page The OFFSET strategy lets you read an arbitrary page, but is not efficient since each time the query runs it must read the rows from all previous pages. It is the easiest to implement and can be an acceptable strategy (particularly if you only want the first few pages), but in general it is not recommended. The key-
これまで多くのトランザクションの要素技術を説明してきた。 Googleの公開している論文Spanner: Google's Globally-Distributed Database は公開当初、要求される専門技術の多さからよくわからないと言っている人が多かったが、これまでに説明した要素技術をベースにすると理解しやすい。 Spannerとは 複数のデータセンターに跨ってデータベースの内容を複製し続ける事で高い可用性を実現するという構想は数多くあった。 しかしそれらの分散データベースは実用的な速度を実現しようとすると、データモデルがただのRDBより単純化して使いにくかったりトランザクションをサポートしなかったりと、アプリケーションの一貫性を実現するのが難しい。 現にGoogleの社内でもBigtableなどを用いたアプリケーションは複数あるものの、それぞれでそのデータモデルの上で無理やりトラ
What DBAs need to know about Cloud Spanner, part 1: Keys and indexes Cloud Spanner is a relational and horizontally scalable database service, built from a cloud/distributed design perspective. It brings efficiency and high availability for developers and database administrators (DBAs), and differs structurally from typical databases you’re used to. In this blog series, we’ll explore some of the k
Last update: 2018/7/5 Google Cloud でゲーム担当をやっているサミールです。 本日のトピックは私が大好きな Cloud Spanner となります。Cloud Spanner は GCP のフルマネージド・グローバルスケール・リレーショナルデータベース・サービスです。Cloud Spanner は裏では NoSQL でよくある分散データベースですので、NoSQL の特性を提供しております。 HA (高可用性)水平方向のスケーラビリティ(動的にダウンタイムなしにノードの追加・削除が可能)なお MySQL のようなリレーショナルDB と同じ特性も提供しております。 スキーマ強整合性SQL クエリ(ANSI 2011)言い過ぎかもしれないが、マルチマスターの MySQL というイメージで良いと思います。 注意点:Cloud Spanner は MySQL 互換では
フィードバックを送信 Spanner のスキーマ設計の最適化 コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。 Google のストレージ テクノロジーは、世界最大級のアプリケーションでも利用されています。 しかし、これらのシステムを使うと常にこのような規模に自動的になるわけではありません。 設計者は、データをモデル化する方法を慎重に検討して、アプリケーションがさまざまな次元で成長したときに確実にスケールおよび実行できるようにする必要があります。 Spanner は分散データベースであり、効率よく使用するには、従来のデータベースとは異なる方法でスキーマ設計とアクセス パターンを考える必要があります。分散システムの性質上、設計者はデータと処理の局所性について考える必要があります。 Spanner は、水平方向へのスケールアウト機能によって、SQL クエリとトラ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く