10
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

はじめに

こんにちは、京セラコミュニケーションシステム 宮坂(@kccs_katsuhiro_miyasaka)です。

Bigtable使われている皆様、Bigtableはたくさんのデータを高速で読み書きできて非常に便利です。
しかし、データを参照する時に不便な思いを抱えた事は無いでしょうか。
コンソールから参照する事ができず、公式ツールを使うにも少々データを参照するのにコマンドを利用するのは冗長な気がしてしまいます。
慣れない人は特に難しいです。
そんな方向けに便利なツールをご紹介致します。

この記事の対象者

Bigtableのデータを参照するのにcbtを使っているが、参照するのみに使うのは少し大変だ。
cbtコマンドを覚えるのが大変だ、SQLで操作できないか。

といった方が対象になります。

アプリケーションの安全性を保障するわけではございませんので、
インストールは自己責任でお願い致します。

Bigtableのデータ構造

前提としてBigtableを簡単に解説します。
BigtableはKey-Value マップ形式でデータが登録されてます。
※RDB等のデータ構造に慣れた人は理解に少し時間がかかると思います。

[テーブル構造]
テーブル構造は以下の通り
行キー、列ファミリー、列、値をそれぞれ持っている構造になります。
ぞれぞれの列に複数の値を持たせることができます。

image.png


[データ例]

image.png

詳細は以下をご参照ください。

Bigtable ストレージ モデル

CBT(公式ツール)

インストール手順
リファレンス

コマンドで大体なんでもできるツール、コマンドに抵抗が無い人は慣れれば便利に使えます。
環境設定は、インストール後、ログインしてローカルの「.cbtrc」を編集すれば使えます。

vi .cbtrc
project = [プロジェクト名]
instance = [インスタンス名]

良く使うコマンド例
データ登録・参照・削除と言ったコマンドは揃っており、簡単な操作ならこちらのツールを使えば一通りの操作ができます。

# それぞれオプションが用意されてるので、リファレンスをご参照ください。
# テーブル一覧を参照
cbt ls
test_table1
test_table2
...
test_table3

# テーブルの中身を参照
# prefix=前方一致とか、regexで正規表現とかいろいろ便利な見方があります。
# 前述の[データ例]の状態を作り出してみました。
# cbt read [テーブル名]
# [表示形式]
# ----------------------------------------
# 行キー名
#    列ファミリー名:列名 @登録日時
#    値
# ----------------------------------------

cbt read  test_table1
----------------------------------------
TESTKEY#1
  cf1:cl1                                  @ 2022/12/02-11:39:16.394000
    "test-value1-2"
  cf1:cl1                                  @ 2022/12/02-11:39:15.038000
    "test-value1-1"
  cf1:cl2                                  @ 2022/12/02-11:39:17.796000
    "test-value2"
  cf2:cl1                                  @ 2022/12/02-11:39:21.979000
    "105"
  cf2:cl1                                  @ 2022/12/02-11:39:20.484000
    "101"
  cf2:cl1                                  @ 2022/12/02-11:39:19.109000
    "100"
  cf2:cl2                                  @ 2022/12/02-11:39:23.311000
    "0.2"

----------------------------------------
TESTKEY#2
  cf1:cl1                                  @ 2022/12/02-11:22:52.082000
    "val1"
  cf1:cl2                                  @ 2022/12/02-11:22:53.353000
    "val2"
  cf2:cl1                                  @ 2022/12/02-11:22:54.672000
    "val3"
  cf2:cl2                                  @ 2022/12/02-11:22:55.940000
    "val4"

#テーブルにデータを登録
#cbt set テーブル名 キー カラムファミリ:カラム=値
cbt set test_table1 TESTKEY#1 cf1:cl1=test-value1-1

#テーブルのキーを削除
#cbt deleterow [テーブル名] [キー名]
cbt deleterow test_table1 TESTKEY#1

慣れた人は便利に使いこなせますが
・少しデータを見みたい。
・あまりコマンドに慣れてない人がデータを参照したい。
というシチュエーションでは不便です。

そこでオススメなのが以下のツール。

BigTableViewer

BigTableViewer

JavaのGUIでできており、参照が可能です。
※Windows環境は、インストール用のmsiがあります。

起動すると以下の画面が表示されます。
image.png

まずはファイルからSet credetialsでサービスアカウントの認証ファイルを紐づけます。
※Bigtable参照権限を持つサービスアカウントを作成し、JSONキーファイル形式でダウンロードした認証ファイルになります。

image.png

紐づけたら、参照したいテーブルのプロジェクトとインスタンスを登録します。
image.png

これで準備完了です。

後はテーブルを選択して、「Execute」すると
image.png

データが参照できます。
コマンドと比べて格段に見やすいです。
※各カラムの最新値を初期表示してくれます。
image.png

CSV形式ですが、コピー&ペーストもできます。
image.png

SQL形式の正規表現でキー検索もできますので、例えば以下のような後方一致の条件で検索すると。

SELECT * FROM 'test_table1' WHERE KEY LIKE '.*#1' LIMIT 1000

対象キーだけを検索してくれます。
image.png

しかし、惜しいとこが1つだけあります。
テーブルの設計で1カラムに値が複数件セットされている場合同じ値が何個もあるように見えます。
表示されるタイムスタンプで見分けられますが、データが多いと不便です。

この場合は、詳細をcbtで見る等にした方が良いと思います。
※タイムスタンプである程度見分ける事が可能です。
image.png

今までBigtableの参照が不便でしたが、このツールを見つけて非常に便利になりました。
もしよろしければ、ご参考にして頂ければと思います。

10
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?