Help us understand the problem. What is going on with this article?

GCP: Bigtable

Bigtable

についてまとめます。
AWSのDynamoDB同様、有名なNoSQLデータベースですね。

Overview

https://cloud.google.com/bigtable/docs/overview

  • Key Value Store
  • 低レイテンシー
  • 高いRead/Writeスループット
  • 行が多いデータに向いている
  • HBase1 をはじめとするアプリケーションと連携できる
  • 1行は10MBいかないくらい
  • 時系列、マーケティング、財務、IoT、グラフデータに向いている
  • row/columns > column family > column qualifier
  • Tabletという隣接する列ごとにシャードされる
  • TabletsはColossusというGoogleのファイルシステムに格納される
  • row keyがノードで分散するようにするのがコツ
  • 関連する行は近くに置く, WashingtonDC#201803061617
  • データ圧縮は自動で行われる、ただし1MBを超えるものはしない、

Instances, clusters and nodes

https://cloud.google.com/bigtable/docs/instances-clusters-nodes

  • 1インスタンスは最大4クラスターもてる
  • 各クラスターはユニークなゾーンに配置される
  • クラスターを増やしてフェイルオーバーに備えることができる
  • ノードはコンピュータリソース
  • cpu usageやstorage utilizationをモニターできる

How to guides

https://cloud.google.com/bigtable/docs/how-to

schema

  • 1インデックス、セカンダリーはない
  • 行レベルでアトミック、行ごとに成否が決まる
  • 空の列が多いスパースなテーブルでもよい
  • テーブルはたくさん作らない
  • セルは10MBまで、行は100MBまでを目安に
  • row key
    • リバースドメイン名, com.googleみたいな
    • string identifier
    • timestamp, アクセスの仕方によるが, 何かの名前の後のほうがいい
    • aaa#bbb, みたいな複数の値を格納したもの
    • ニューメリックなユーザーidは避ける
  • columns
    • 不必要にqualifierを分けない
    • データがまとまっているときはprotocol bufferを使う

Backups

  • データをバックアップして復旧できる
  • ゾーンレベルの障害にはレプリケーションで対応するべき
  • 自動削除できる
  • クラスターレベルでテーブルがバックアップされる

Manage data

  • Avro, Parquet, Sequenceファイルが可能
  • HBaseやcsvからBigtableにインポートできる
  • cbtというcliが便利
  • client libraryで4種のwriteができる
    • simple write: ある行を変更する
    • incremental and append: 行を追加したり、値を増やしたりする
    • conditional write: 条件に合う行を変更する
    • batch write: 複数の行を変更する
  • read
    • single row
    • scan
    • filtered

Gabage collection

https://cloud.google.com/bigtable/docs/garbage-collection

不要になったデータ (行?) を、時間やバージョン数に応じて削除する

Performance

https://cloud.google.com/bigtable/docs/performance

ざっと眺めましょう。チューニングはたぶん試験に出ます。
おおまかなポイントは以下です。

  • SSD or HDD
  • スループットかレイテンシーか
  • 高リードか高ライトか
  • トラフィックがグローバルかどうか

App profiles

https://cloud.google.com/bigtable/docs/app-profiles

  • single cluster routing: リクエストを一つのクラスターに割り振る
  • Multi cluster routing: リクエストを近いクラスターに割り振る

...
以上でした。
このほかにもドキュメントはあるのですが、さすがに多くてまとめきれません。


  1. Hadoop上のNoSQLデータベース、https://hbase.apache.org/ 

brainpad
ブレインパッドは、2004年の創業以来、データによるビジネス創造と経営改善に向き合ってきたデータ活用・分析企業です。
http://www.brainpad.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away