Carpe Diem

備忘録

Bigtable

BigQueryからBigtableへアクセスしてデータ分析

概要 Bigtableは数十億行、数千列規模に拡張可能な分散型NoSQLですが、 特定のカラムファミリのみ持つ行を全て抽出する といった時にcbt(CLIツール)やSDKではiterateしてデータをハンドリングするため、大規模データ分析の用途では使いづらさがあります。 そ…

Bridgeを使ってOpenCensusのSpanをOpenTelemetryに取り込む

概要 OpenTelemetryはOpenCensusやOpenTracingをまとめた形で生まれたので、既にOpenCensusやOpenTracingの形で実装されたライブラリは移行するのが大変です。 例えばGCPの各SDKは基本的にOpenCensusで実装されています。 そのようなライブラリを使用する際…

DataflowのAvro to BigtableテンプレートでQuotaエラーが発生した場合の対応

概要 Bigtableのデータを他プロジェクトに移したい場合、公式のDataflowテンプレートを用いて以下の図のようにExport & Importできます。 しかしBigtableのデータが多すぎるとImportする際に、 Error message from worker: java.lang.IllegalArgumentExcepti…

Bigtableで複数クラスタ構成におけるデータ整合性の保証

背景 Bigtableはレプリケーションを有効にしたマルチクラスタ構成にすることで負荷分散、高可用性を保証することが可能です。 一方でマルチクラスタにすることで 単一行のトランザクションが効かなくなる 書き込み後読み取り操作でレプリケーション遅延によ…

Bigtableの条件付き書き込みパターン

概要 BigtableにはCheckAndMutateRow APIがあり、書き込む際に条件をつけることで更新のロストなどを防ぐ仕組みが用意されています。 ※更新のロストについては以下を参考にしてください トランザクションの分離レベルで出てくる用語 - Carpe Diem 今回はよく…

Bigtableに時系列データを保存する

概要 Bigtableで時系列データを保存する手段として 縦長のテーブルを使用する 横長のテーブルを使用する 列バージョンを利用する の3種類あるのでそれぞれの特徴、使い方を紹介します。 環境 go v1.15.0 Google Cloud SDK v293.0.0 cloud.google.com/go/big…