🚀

【入門】GridDB Cloud 無料プランを使ってみよう!

2024/03/11に公開

ビッグデータ・IoT向けデータベースのマネージドサービス「GridDB® Cloud」の無料プラン が2023年12月に発表されました。
共用環境環境無料プランと専有環境有料プランの違いは次の通りです。詳細は、GridDB Cloudのドキュメンテーションを確認してください。

共用環境無料プラン 専用環境有料プラン
月額料金 無料 各プランごとに月額固定額
使用環境 1DBインスタンスを複数ユーザが共有
DBインスタンスを稼働させる環境は非公開
1DBインスタンスを1ユーザが専有
DBインスタンスを稼働させる環境は各プランごとに定義
接続方法 Web APIのみ Web APIおよびJDBC,ODBCなど
オプション購入 なし 各種あり
利用制限 ・データベースサイズ 10GB
・データ転送量 5GB/月
・1ユーザのWebAPIリクエスト数 3,000回/10分
各プランごとに定義
使用開始日 ECサイトで申し込んだ翌営業日 ECサイトで申し込んだ日から7営業日以内
解約日 ECサイトから解約申請の翌日 ECサイトから解約申請の翌月末
問い合わせ対応 フォーラムによるコミュニティベースで対応 東芝デジタルソリューションズ保守窓口で対応

なお、共用環境無料プランで、データ量や処理量が増えていった場合は、専用環境プランへ容易に移行できるようです。

今回、実際にGridDB Cloud 無料プラン(共有環境無料プラン)を使ってみました。
そこで、GridDB Cloud v2.0のGridDB Cloud 無料プラン(共有環境無料プラン)を申し込み、Web APIでGridDBへのデータ登録・確認をおこなうまでの一連の手順についてご紹介します。

ここでは、Web APIの実行には、URLシンタックスを用いてファイルを送信または受信する curlコマンドを使用します。curlコマンドについても詳しく説明していくので、初心者でWeb APIを実行して確認したいという方は、是非参考にしていただければ幸いです。

また、GridDB Cloud が提供するWeb APIの仕様について詳しく知りたい場合は、「GridDB Web APIリファレンス」を参照してください。

事前準備

事前準備は、

となります。

詳細については、GridDB Cloud 無料プランの申し込み⽅法を参照してください。申し込み手順をステップバイステップで紹介しています。

ユーザ登録 (GridDB Cloud ECサイトの利用登録)

ユーザ登録をまだ実施していない方は、ユーザ登録(GridDB Cloud ECサイトの利用登録)を実施してください。
すでにユーザ登録がお済みの方は、メールアドレスとパスワードを入力してログインして「共用環境無料プランの申し込み」を行います。
新規の方はユーザ登録します。
ユーザ登録に必要な情報は、メールアドレス、法人名、ご担当者名(自分の名前)、電話番号、郵便番号と、住所だけで、クレジットカードの情報などは不要です。

共用環境無料プランの申し込み

ユーザ登録したメールアドレスとパスワードでログインログインして、「共⽤環境無料プラン 0円/⽉」を選択し購入します。、
共用環境無料プランの購入すると、契約ID、運用管理GUIユーザID、パスワードや運用管理GUIのURL、WEB APIのURLなどの情報が電子メールで送られてきます。

ログイン (運用管理GUIへのログイン)

電子メールでが送付されてきたGridDB Cloudの運用管理GUIのURLをブラウザで開きます。今回の例では、https://cloud5197.griddb.com/portal5197/login/ です。

スクリーンショット 2023-12-19 17.13.17.png

ブラウザの言語設定に関係なく、英語表示されるようです。このままログインすると、メニューなども英語表示になってしまうので、まずは、Languageを日本語に変更しておきましょう。

スクリーンショット 2023-12-19 17.16.35.png

契約ID、ログインID(運用管理GUIユーザ)、パスワード入力し、GridDB Cloudにログインします。

ログインに成功すると、次のような運用管理GUIの画面が表示されます。

スクリーンショット 2023-12-19 23.48.25.png

この画面では GridDB のクラスタの稼働状況の確認などができるようです。

詳細は、GridDB Cloud クイックスタートガイドGridDB Cloud 運用管理GUIリファレンス(無料プラン向け) に記述されているみたいなので、ここでは詳細は省略します。

Web APIの実行と確認(疎通確認)

接続情報の確認

Web API のベースURLとクラスタ名を確認します。

Web API のベースURLの確認

Web API の ベースURL は、送付されてきた電子メールの「WEB API」に記載されているので確認しメモしてください。

例:

https://cloud5197.griddb.com/griddb/v2/

クラスタ名の確認

Web API の URLに必要な、クラスタ名を確認します。「クラスタ」画面に遷移し、次の接続情報をメモしてください。

クラスタ名 (クラスタ詳細の左上)
スクリーンショット 2023-12-20 0.46.21.png

今回の画面の例では、クラスタ名は「gs_clustermfcloud5197」となります。

データベース名の確認

データベース名はランダムな名前が割り当てられます。「クラスタ」画面で、「データベース」をクリックしてください。

スクリーンショット 2023-12-21 17.47.32.png

今回の画面の例では、データベース名は「kHoY3AbR」となります。

接続元の設定

初期設定では、WebAPIへのすべてのアクセスは拒否されています。そこで、接続許可するIPを設定し、WebAPIを使ったデータ登録を可能にします。

左のナビゲーションメニューより「ネットワークアクセス」を選択します。「WEBAPI アクセス」タブに遷移し、「接続許可IPアドレスの追加」ボタンをクリックします。

スクリーンショット 2023-12-20 0.47.44.png

スクリーンショット 2023-12-20 0.52.16.png

表示されたダイアログに、接続許可するIPアドレスを入力し、「追加」ボタンを押します。

スクリーンショット 2023-12-20 1.01.44のコピー.png

スクリーンショット 2023-12-20 1.03.06のコピー.png

:::note info
補足
パブリックIPアドレスは端末側でも確認できることもありますが、次のようなサイトでも確認できます。
https://www.cman.jp/network/support/go_access.cgi

なお、VPNを使っていたりすると、このサイトでも別のIPアドレスが表示されたりするケースはあるようです。
:::

データベースユーザの作成と権限の設定

データベースユーザの作成

次にデータベースユーザを作成します。「GridDBユーザ」画面に遷移し、「データベースユーザの作成」ボタンをクリックしてください。

スクリーンショット 2023-12-20 1.10.06.png

スクリーンショット 2023-12-20 1.12.31.png

ここでは、ユーザ名:「M012KTYUlm-test1」、パスワード:「M012KTYUlm-test1」としました。

:::note info
注意
ユーザ名は契約IDが必ず先頭に含まれます。
:::

スクリーンショット 2023-12-20 1.13.58.png

「作成」ボタンをクリックします。

スクリーンショット 2023-12-20 1.14.29.png

データベースユーザ名とそのパスワードが設定されました。

:::note warn
注意
この時点ではデータベースユーザの権限が設定されていません。
:::

データベースユーザの権限の設定

ユーザ名「M012KTYUlm-test1」をクリックします。

スクリーンショット 2023-12-21 18.04.46.png

スクリーンショット 2023-12-21 18.04.57.png

スクリーンショット 2023-12-21 18.05.24.png

スクリーンショット 2023-12-21 18.05.31.png

スクリーンショット 2023-12-21 18.05.42.png

スクリーンショット 2023-12-21 18.05.50.png

スクリーンショット 2023-12-21 18.07.12.png

Web APIの実行

では、本題のWeb APIの実行(疎通確認)に入ります。今回のWeb APIの実行は次のような流れでおこないます。

  1. データベース(データベース名:kHoY3AbR)への接続の確認
  2. コンテナ (コンテナ名:point01) を作成
    TIMESTAMP, BOOL, DOUBLEの3カラムで構成
  3. コンテナ一覧を取得
  4. 作成したコンテナの情報を取得
  5. ロウにデータを登録 
    "2021-06-27T10:30:00.000Z", false, "100"
    "2021-06-28T10:30:00.000Z", false, "100"
  6. 最大100件で、2021年6月28日 4時30分以降のデータを取得するという条件でロウの取得
  7. TQL実行
  8. "2021-06-28T10:30:00.000Z"のロウを削除
  9. SQL SELECTを文実行
  10. コンテナ (コンテナ名:point01) を削除

GridDB Cloud が提供するWeb APIの仕様の詳細については「GridDB Web APIリファレンス」を参照してください。

なお、今回使用する端末のosのバージョンは次の通りです。

$ sw_vers
ProductName:	macOS
ProductVersion:	12.7.1
BuildVersion:	21G920
$ 

Web APIの実行には、URLシンタックスを用いてファイルを送信または受信するコマンドラインツール curlを使用します。 今回利用したcurlコマンドのバージョンは次の通りです。

$ curl -V
curl 8.1.2 (x86_64-apple-darwin21.0) libcurl/8.1.2 (SecureTransport) LibreSSL/3.3.6 zlib/1.2.11 nghttp2/1.45.1
Release-Date: 2023-05-30
Protocols: dict file ftp ftps gopher gophers http https imap imaps ldap ldaps mqtt pop3 pop3s rtsp smb smbs smtp smtps telnet tftp
Features: alt-svc AsynchDNS GSS-API HSTS HTTP2 HTTPS-proxy IPv6 Kerberos Largefile libz MultiSSL NTLM NTLM_WB SPNEGO SSL threadsafe UnixSockets
$

なお、今回使用するcurlコマンドのオプションは次の通りです。

オプション 説明
-d 'データ' リクエストメソッドがPOST時にデータを指定する
-H (-header) リクエストヘッダにその情報を追加もしくは変更する 。POSTのフォーマットがJSONの場合は -H "Content-Type: application/json" という指定をする
-i HTTPヘッダを出力に含める
-L (--location) デフォルトではリダイレクトを追跡しないので、リダイレクトも追跡できるようにするオプション
-X (--request) リクエストメソッド GET、POST、PUT、DELETEなどのリクエストメソッドを指定する。
GETリクエストの際はXオプションを省略することができます。
-V バージョンを表示する
-v デバッグ: リクエストヘッダとレスポンスヘッダを標準エラー出力に表示する。

リクエストヘッダ

GridDBのWeb APIへの接続には次のContent-TypeとAuthorizationのヘッダが必須です。すべてのリクエストに付与してください。

ヘッダ 説明
Content-Type 「application/json; charset=UTF-8」を指定します
Authorization GridDBへアクセスするユーザとパスワードをBasic認証の形式 (BASE64でエンコードした値) で指定します。
例えばユーザ名:M012KTYUlm-test1とパスワード:M012KTYUlm-test1の場合、「Basic TTAxMktUWVVsbS10ZXN0MTpNMDEyS1RZVWxtLXRlc3Qx」となります。

:::note info
補足

echo "Basic $(echo -n ユーザ名:パスワード | base64)"

echo "Basic $(echo -n M012KTYUlm-test1:M012KTYUlm-test1 | base64)"

:::

では、実行してみます。

$ echo "Basic $(echo -n M012KTYUlm-test1:M012KTYUlm-test1 | base64)"
Basic TTAxMktUWVVsbS10ZXN0MTpNMDEyS1RZVWxtLXRlc3Qx
$ 

<!-- 動作エラーとなる

BASIC認証

Authorizationヘッダを使わず、同じことを curl コマンドオプションのオプション -u を使ってもできます。「:パスワード」を省略すると、curlコマンド実行時にプロンプトが出力されてパスワードを聞かれます。
-->

データベース接続確認

まずは、手始めにデータベースへの接続確認をしてみましょう。データベース接続確認のリクエスト送信先のURLは次の通りです。

GET ベースURL + クラスタ名/dbs/データベース名/checkConnection

今回の場合は、クラスタ名:「gs_clustermfcloud5197」、データベース名:「kHoY3AbR」となります。なお、GETリクエストメソッドの場合 -X GET を省略することができます。今後、省略します。

curlコマンドでを用いて、リクエストヘッダの認証情報をechoBasic認証の形式 (BASE64でエンコードした値) -H 'Basic TTAxMktUWVVsbS10ZXN0MTpNMDEyS1RZVWxtLXRlc3Qx' で送信し、データベース接続確認をする指定方法は次の通りです。

curl -i -L 'https://cloud5197.griddb.com/griddb/v2/gs_clustermfcloud5197/dbs/kHoY3AbR/checkConnection' \
-H 'Content-Type: application/json' \
-H 'Authorization: Basic TTAxMktUWVVsbS10ZXN0MTpNMDEyS1RZVWxtLXRlc3Qx'

<!-- 動作エラーとなる
-H 'Authorization:Basic $(echo -n M012KTYUlm-test1:M012KTYUlm-test1 | base64)'のようにechoコマンドでBasic認証の形式 (BASE64でエンコードした値)に変換して、リクエストヘッダの認証情報を送信し データベース接続確認をする指定方法は次の通りです。

curl -i -H 'Content-Type:application/json;charset=UTF-8' -H 'Authorization:Basic $(echo -n M012KTYUlm-test1:M012KTYUlm-test1 | base64)' https://cloud5197.griddb.com/griddb/v2/gs_clustermfcloud5197/dbs/kHoY3AbR/checkConnection

curlコマンドでを用いて、-u M012KTYUlm-test1:M012KTYUlm-test1 でサーバー認証の送信し、データベース接続確認をする指定方法は次の通りです。

curl -i -H 'Content-Type:application/json;charset=UTF-8' -H -u M012KTYUlm-test1:M012KTYUlm-test1 https://cloud5197.griddb.com/griddb/v2/gs_clustermfcloud5197/dbs/kHoY3AbR/checkConnection

-->

では、リクエストヘッダの認証情報をBasic認証の形式 (BASE64でエンコードした値) で送信してみます。

$ curl -i -L 'https://cloud5197.griddb.com/griddb/v2/gs_clustermfcloud5197/dbs/kHoY3AbR/checkConnection' \
> -H 'Content-Type: application/json' \
> -H 'Authorization: Basic TTAxMktUWVVsbS10ZXN0MTpNMDEyS1RZVWxtLXRlc3Qx'
HTTP/1.1 200 OK
Date: Fri, 22 Dec 2023 04:45:58 GMT
Content-Length: 0
Connection: keep-alive
Set-Cookie: ARRAffinity=0f8bc5d9c5b2341c0b55ca041f95daa510fb3166fa4f873a130341dda37c34af;Path=/;HttpOnly;Secure;Domain=dbaas-tenant-webapi-app-mfcloud5197.azurewebsites.net
Set-Cookie: ARRAffinitySameSite=0f8bc5d9c5b2341c0b55ca041f95daa510fb3166fa4f873a130341dda37c34af;Path=/;HttpOnly;SameSite=None;Secure;Domain=dbaas-tenant-webapi-app-mfcloud5197.azurewebsites.net
X-Rate-Limit-Remaining: 2991

$  

HTTPレスポンスのステータスが200になっていれば成功です。

コンテナの作成

次は、TIMESTAMP型, BOOL型, DOUBLE型の3カラムで構成される時系列コンテナpoint01を作成します。

コンテナの作成のリクエスト送信先のURLは次の通りです。

POST ベースURL + クラスタ名/dbs/データベース名/containers

ここでは、TIMESTAMP型, BOOL型, DOUBLE型の3カラムで構成される時系列コンテナpoint01を作成しますので、送信するリクエストボディは次の通りです。

{
  "container_name" : "point01",
  "container_type" : "TIME_SERIES",
  "rowkey" : true,
  "columns" : [
    {"name": "timestamp", "type": "TIMESTAMP"},
    {"name": "active", "type": "BOOL"},
    {"name": "voltage", "type": "DOUBLE"}
  ]
}

curlコマンドを用いた、TIMESTAMP型, BOOL型, DOUBLE型の3カラムで構成される時系列コンテナpoint01の作成の指定は次の通りです。

curl -i -X POST -H 'Content-Type:application/json;charset=UTF-8' -H 'Authorization:Basic TTAxMktUWVVsbS10ZXN0MTpNMDEyS1RZVWxtLXRlc3Qx' https://cloud5197.griddb.com/griddb/v2/gs_clustermfcloud5197/dbs/kHoY3AbR/containers -d '
{
  "container_name" : "point01",
  "container_type" : "TIME_SERIES",
  "rowkey" : true,
  "columns" : [
    {"name": "timestamp", "type": "TIMESTAMP"},
    {"name": "active", "type": "BOOL"},
    {"name": "voltage", "type": "DOUBLE"}
  ]
}
'

では、実際に curlコマンドでコンテナの作成を実行してみましょう。

$ curl -i -X POST -H 'Content-Type:application/json;charset=UTF-8' -H 'Authorization:Basic TTAxMktUWVVsbS10ZXN0MTpNMDEyS1RZVWxtLXRlc3Qx' https://cloud5197.griddb.com/griddb/v2/gs_clustermfcloud5197/dbs/kHoY3AbR/containers -d '
> {
>   "container_name" : "point01",
>   "container_type" : "TIME_SERIES",
>   "rowkey" : true,
>   "columns" : [
>     {"name": "timestamp", "type": "TIMESTAMP"},
>     {"name": "active", "type": "BOOL"},
>     {"name": "voltage", "type": "DOUBLE"}
>   ]
> }
> '
HTTP/1.1 201 Created
Date: Fri, 22 Dec 2023 05:09:19 GMT
Content-Length: 0
Connection: keep-alive
Set-Cookie: ARRAffinity=0f8bc5d9c5b2341c0b55ca041f95daa510fb3166fa4f873a130341dda37c34af;Path=/;HttpOnly;Secure;Domain=dbaas-tenant-webapi-app-mfcloud5197.azurewebsites.net
Set-Cookie: ARRAffinitySameSite=0f8bc5d9c5b2341c0b55ca041f95daa510fb3166fa4f873a130341dda37c34af;Path=/;HttpOnly;SameSite=None;Secure;Domain=dbaas-tenant-webapi-app-mfcloud5197.azurewebsites.net
X-Rate-Limit-Remaining: 2992

$   

HTTPレスポンスのステータスが201になっていれば成功です。

コンテナ一覧取得

コンテナ一覧取得のリクエスト送信先のURLは次の通りです。

GET ベースURL + クラスタ名/dbs/データベース名/containers/

curlコマンドを用いた、コンテナ一覧取得の指定は次の通りです。

curl -i -X GET -H 'Content-Type:application/json;charset=UTF-8' -H 'Authorization:Basic TTAxMktUWVVsbS10ZXN0MTpNMDEyS1RZVWxtLXRlc3Qx' https://cloud5197.griddb.com/griddb/v2/gs_clustermfcloud5197/dbs/kHoY3AbR/containers?limit=10\&offset=0

では、コンテナ一覧取得を実行してみましょう。

$ curl -i -X GET -H 'Content-Type:application/json;charset=UTF-8' -H 'Authorization:Basic TTAxMktUWVVsbS10ZXN0MTpNMDEyS1RZVWxtLXRlc3Qx' https://cloud5197.griddb.com/griddb/v2/gs_clustermfcloud5197/dbs/kHoY3AbR/containers?limit=10\&offset=0
HTTP/1.1 200 OK
Date: Fri, 22 Dec 2023 05:10:27 GMT
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Set-Cookie: ARRAffinity=0f8bc5d9c5b2341c0b55ca041f95daa510fb3166fa4f873a130341dda37c34af;Path=/;HttpOnly;Secure;Domain=dbaas-tenant-webapi-app-mfcloud5197.azurewebsites.net
Set-Cookie: ARRAffinitySameSite=0f8bc5d9c5b2341c0b55ca041f95daa510fb3166fa4f873a130341dda37c34af;Path=/;HttpOnly;SameSite=None;Secure;Domain=dbaas-tenant-webapi-app-mfcloud5197.azurewebsites.net
X-Rate-Limit-Remaining: 2993

{"names":["point01"],"total":1,"offset":0,"limit":10}
$ 

コンテナ情報取得

コンテナやテーブルの情報を取得してみましょう。

コンテナ情報取得のリクエスト送信先のURLは次の通りです。

GET ベースURL + クラスタ名/dbs/データベース名/containers/コンテナ名/info

curlコマンドを用いた、コンテナ情報取得の指定は次の通りです。

curl -i -H 'Content-Type:application/json;charset=UTF-8' -H 'Authorization:Basic TTAxMktUWVVsbS10ZXN0MTpNMDEyS1RZVWxtLXRlc3Qx' https://cloud5197.griddb.com/griddb/v2/gs_clustermfcloud5197/dbs/kHoY3AbR/containers/point01/info

では、実際に curlコマンドでコンテナ情報取得を実行してみましょう。

$ curl -i -H 'Content-Type:application/json;charset=UTF-8' -H 'Authorization:Basic TTAxMktUWVVsbS10ZXN0MTpNMDEyS1RZVWxtLXRlc3Qx' https://cloud5197.griddb.com/griddb/v2/gs_clustermfcloud5197/dbs/kHoY3AbR/containers/point01/info
HTTP/1.1 200 OK
Date: Fri, 22 Dec 2023 05:11:37 GMT
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Set-Cookie: ARRAffinity=0f8bc5d9c5b2341c0b55ca041f95daa510fb3166fa4f873a130341dda37c34af;Path=/;HttpOnly;Secure;Domain=dbaas-tenant-webapi-app-mfcloud5197.azurewebsites.net
Set-Cookie: ARRAffinitySameSite=0f8bc5d9c5b2341c0b55ca041f95daa510fb3166fa4f873a130341dda37c34af;Path=/;HttpOnly;SameSite=None;Secure;Domain=dbaas-tenant-webapi-app-mfcloud5197.azurewebsites.net
X-Rate-Limit-Remaining: 2994

{"container_name":"point01","container_type":"TIME_SERIES","rowkey":true,"columns":[{"name":"timestamp","type":"TIMESTAMP","index":[],"timePrecision":"MILLISECOND"},{"name":"active","type":"BOOL","index":[]},{"name":"voltage","type":"DOUBLE","index":[]}]}
$ 

HTTPレスポンスのステータスが200になっていれば成功です。

ロウの登録

次に、作成したコンテナpoint01にロウを登録します。
登録するロウは、JSON形式で指定します。ひとつのコンテナに複数のロウを登録することもできます。

ロウの登録のリクエスト送信先のURLは次の通りです。

PUT ベースURL + クラスタ名/dbs//データベース名/containers/コンテナ名/rows

今回、例として次のリクエストボディを送付します。

[
["2021-06-27T10:30:00.000Z", false, "100"],
["2021-06-28T10:30:00.000Z", false, "100"]
]

curlコマンドを用いた、ロウの今回のロウの登録の指定は次の通りです。

curl -i -X PUT -H 'Content-Type:application/json;charset=UTF-8' -H 'Authorization:Basic TTAxMktUWVVsbS10ZXN0MTpNMDEyS1RZVWxtLXRlc3Qx' https://cloud5197.griddb.com/griddb/v2/gs_clustermfcloud5197/dbs/kHoY3AbR/containers/point01/rows -d '
[
  ["2021-06-27T10:30:00.000Z", false, "100"],
  ["2021-06-28T10:30:00.000Z", false, "100"]
]
'

では、実際に curlコマンドでロウの登録を実行してみましょう。

$ curl -i -X PUT -H 'Content-Type:application/json;charset=UTF-8' -H 'Authorization:Basic TTAxMktUWVVsbS10ZXN0MTpNMDEyS1RZVWxtLXRlc3Qx' https://cloud5197.griddb.com/griddb/v2/gs_clustermfcloud5197/dbs/kHoY3AbR/containers/point01/rows -d '
> [
>   ["2021-06-27T10:30:00.000Z", false, "100"],
>   ["2021-06-28T10:30:00.000Z", false, "100"]
> ]
> '
HTTP/1.1 200 OK
Date: Fri, 22 Dec 2023 05:14:10 GMT
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Set-Cookie: ARRAffinity=0f8bc5d9c5b2341c0b55ca041f95daa510fb3166fa4f873a130341dda37c34af;Path=/;HttpOnly;Secure;Domain=dbaas-tenant-webapi-app-mfcloud5197.azurewebsites.net
Set-Cookie: ARRAffinitySameSite=0f8bc5d9c5b2341c0b55ca041f95daa510fb3166fa4f873a130341dda37c34af;Path=/;HttpOnly;SameSite=None;Secure;Domain=dbaas-tenant-webapi-app-mfcloud5197.azurewebsites.net
X-Rate-Limit-Remaining: 2995

{"count":2}
$ 

今回はHTTPレスポンスのステータスが200になっていて、レスポンスボディが {"count":2} のようになっていれば成功です。

ロウの取得

次に、コンテナpoint01に登録したロウを取得します。

リクエスト送信先のURLは次の通りです。

POST ベースURL + クラスタ名/dbs//データベース名/containers/コンテナ名/rows

今回、取得対象は最大100件で、2021年6月28日 4時30分以降のデータを取得するという条件でロウの取得をします。
timestampは時刻型なので、TQLの時刻型演算関数 TIMESTAMP(str)で時刻の文字列表現を時刻型に変換して指定します。
リクエストボディは次の通りです。

{
  "limit"  : 100,
  "condition" : "timestamp >= TIMESTAMP('2021-06-28T04:30:00.000Z')"
}

curlコマンドでのオプション -d で リクエストボディを指定する場合、次のように
 ①:ダブルクォーテーション部分をエスケープ ( " ⇒ \" )
 ②:シングルクォーテーション部分をダブルクォーテーションに修正 ( ‘ ⇒ " )
   ※②のダブルクォーテーションにエスケープは不要です。
とします。

curl -i -X POST -H 'Content-Type: application/json;charset=UTF-8' -H 'Authorization: Basic TTAxMktUWVVsbS10ZXN0MTpNMDEyS1RZVWxtLXRlc3Qx' https://cloud5197.griddb.com/griddb/v2/gs_clustermfcloud5197/dbs/kHoY3AbR/containers/point01/rows -d "
{
  \"limit\"  : 100,
  \"condition\" : \"timestamp >= TIMESTAMP('2021-06-28T04:30:00.000Z')\"
}
"

では、実際に curlコマンドでロウの取得を実行してみましょう。

$ curl -i -X POST -H 'Content-Type: application/json;charset=UTF-8' -H 'Authorization: Basic TTAxMktUWVVsbS10ZXN0MTpNMDEyS1RZVWxtLXRlc3Qx' https://cloud5197.griddb.com/griddb/v2/gs_clustermfcloud5197/dbs/kHoY3AbR/containers/point01/rows -d "
> {
>   \"limit\"  : 100,
>   \"condition\" : \"timestamp >= TIMESTAMP('2021-06-28T04:30:00.000Z')\"
> }
> "
HTTP/1.1 200 OK
Date: Fri, 22 Dec 2023 05:16:24 GMT
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Set-Cookie: ARRAffinity=0f8bc5d9c5b2341c0b55ca041f95daa510fb3166fa4f873a130341dda37c34af;Path=/;HttpOnly;Secure;Domain=dbaas-tenant-webapi-app-mfcloud5197.azurewebsites.net
Set-Cookie: ARRAffinitySameSite=0f8bc5d9c5b2341c0b55ca041f95daa510fb3166fa4f873a130341dda37c34af;Path=/;HttpOnly;SameSite=None;Secure;Domain=dbaas-tenant-webapi-app-mfcloud5197.azurewebsites.net
X-Rate-Limit-Remaining: 2996

{"columns":[{"name":"timestamp","type":"TIMESTAMP","timePrecision":"MILLISECOND"},{"name":"active","type":"BOOL"},{"name":"voltage","type":"DOUBLE"}],"rows":[["2021-06-28T10:30:00.000Z",false,100.0]],"offset":0,"limit":100,"total":1}
$ 

<!--
また、POSTするリクエストボディをreqbody.txtなどのテキストファイルに書き込み、標準入力から取り込ませてそのままPOSTさせるには、次のように指定できます。

cat reqbody.txt | curl -i -X POST -H 'Content-Type:application/json;charset=UTF-8' -H 'Authorization:Basic TTAxMktUWVVsbS10ZXN0MTpNMDEyS1RZVWxtLXRlc3Qx' https://cloud5197.griddb.com/griddb/v2/gs_clustermfcloud5197/dbs/public/containers/point01/rows -d @-

データをファイルで指定したい場合はファイル名の先頭に @ を付けて、 @reqbody.txt のように指定できます。ファイルではなく標準入力を指定するには 上のように @- とします。
-->

TQL実行

次にTQL文を実行します。

TQL実行のリクエスト送信先のURLは次の通りです。

POST ベースURL + クラスタ名/dbs/データベース名/tql

今回、コンテナpoint01に対して TQL文 `select * ‘を実行します。

[
  {"name" : "point01", "stmt" : "select * "}
]

curlコマンドを用いた、今回のTQL実行の指定は次の通りです。

curl -i -X POST -H 'Content-Type:application/json;charset=UTF-8' -H 'Authorization:Basic TTAxMktUWVVsbS10ZXN0MTpNMDEyS1RZVWxtLXRlc3Qx' https://cloud5197.griddb.com/griddb/v2/gs_clustermfcloud5197/dbs/kHoY3AbR/tql -d '
[ 
   {"name" : "point01", "stmt" : "select * "}
 ]
'

では、実際に curlコマンドでTQLを実行してみましょう。

$ curl -i -X POST -H 'Content-Type:application/json;charset=UTF-8' -H 'Authorization:Basic TTAxMktUWVVsbS10ZXN0MTpNMDEyS1RZVWxtLXRlc3Qx' https://cloud5197.griddb.com/griddb/v2/gs_clustermfcloud5197/dbs/kHoY3AbR/tql -d '
> [ 
>    {"name" : "point01", "stmt" : "select * "}
>  ]
> '
HTTP/1.1 200 OK
Date: Fri, 22 Dec 2023 05:18:17 GMT
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Set-Cookie: ARRAffinity=0f8bc5d9c5b2341c0b55ca041f95daa510fb3166fa4f873a130341dda37c34af;Path=/;HttpOnly;Secure;Domain=dbaas-tenant-webapi-app-mfcloud5197.azurewebsites.net
Set-Cookie: ARRAffinitySameSite=0f8bc5d9c5b2341c0b55ca041f95daa510fb3166fa4f873a130341dda37c34af;Path=/;HttpOnly;SameSite=None;Secure;Domain=dbaas-tenant-webapi-app-mfcloud5197.azurewebsites.net
X-Rate-Limit-Remaining: 2997

[{"columns":[{"name":"timestamp","type":"TIMESTAMP","timePrecision":"MILLISECOND"},{"name":"active","type":"BOOL"},{"name":"voltage","type":"DOUBLE"}],"results":[["2021-06-27T10:30:00.000Z",false,100.0],["2021-06-28T10:30:00.000Z",false,100.0]],"offset":0,"limit":1000000,"total":2,"responseSizeByte":34}]
$ 

運用管理GUIのクエリ機能(TQL)を用いた登録データの確認

ここでは、登録したデータを運用管理GUIのクエリ機能(TQL)で確認する方法について説明します。
「クエリ」画面を開きます。

右上の「SQL/TQL」の選択ボックスで「TQL」を選択します。
「コンテナを選択」のプルダウンでpoint01を選択します。

次に、point01のデータをすべて取得する次のTQL文を入力し、実行ボタンを押します。エディタ部分に文字が入力できない場合は、F5キーを押して画面を更新してください。

SELECT * 

実行結果が次のように表示されていれば成功です。

スクリーンショット 2023-12-22 14.42.02.png

ロウ削除

では、ロウキー "2021-06-28T10:30:00.000Z"を指定してロウを削除してみます。

DELETE ベースURL + クラスタ名/dbs/データベース名/containers//コンテナ名/rows

curlコマンドを用いた、ロウキー "2021-06-28T10:30:00.000Z"のロウの削除の指定は次の通りです。

curl -i -X DELETE -H 'Content-Type:application/json;charset=UTF-8' -H 'Authorization:Basic TTAxMktUWVVsbS10ZXN0MTpNMDEyS1RZVWxtLXRlc3Qx' https://cloud5197.griddb.com/griddb/v2/gs_clustermfcloud5197/dbs/kHoY3AbR/containers/point01/rows -d "[\""2021-06-28T10:30:00.000Z"\"]"

では、curlコマンドで実際に削除してみます。

$ curl -i -X DELETE -H 'Content-Type:application/json;charset=UTF-8' -H 'Authorization:Basic TTAxMktUWVVsbS10ZXN0MTpNMDEyS1RZVWxtLXRlc3Qx' https://cloud5197.griddb.com/griddb/v2/gs_clustermfcloud5197/dbs/kHoY3AbR/containers/point01/rows -d "[\""2021-06-28T10:30:00.000Z"\"]"
HTTP/1.1 204 No Content
Date: Fri, 22 Dec 2023 05:49:55 GMT
Connection: keep-alive
Set-Cookie: ARRAffinity=0f8bc5d9c5b2341c0b55ca041f95daa510fb3166fa4f873a130341dda37c34af;Path=/;HttpOnly;Secure;Domain=dbaas-tenant-webapi-app-mfcloud5197.azurewebsites.net
Set-Cookie: ARRAffinitySameSite=0f8bc5d9c5b2341c0b55ca041f95daa510fb3166fa4f873a130341dda37c34af;Path=/;HttpOnly;SameSite=None;Secure;Domain=dbaas-tenant-webapi-app-mfcloud5197.azurewebsites.net
X-Rate-Limit-Remaining: 2998

$

$

HTTPレスポンスのステータスが204になっていれば成功です。

SQL SELECT文実行

実際、ロウキー "2021-06-28T10:30:00.000Z"のロウが削除されたか確認するために、SQL SELECT文 "select * from point01"を実行してみます。

POST ベースURL + クラスタ名/dbs/データベース名/sql/select

SQL SELECT文を次のようなJSON形式で指定します。

[
  {"type" : "sql-select", "stmt" : "select * from point01"}
]

curlコマンドを用いた、SQL SELECT文 "select * from point01の指定は次の通りです。

curl -i -X POST -H 'Content-Type:application/json;charset=UTF-8' -H 'Authorization:Basic TTAxMktUWVVsbS10ZXN0MTpNMDEyS1RZVWxtLXRlc3Qx' https://cloud5197.griddb.com/griddb/v2/gs_clustermfcloud5197/dbs/kHoY3AbR/sql -d '
[
  {"type" : "sql-select", "stmt" : "select * from point01"}
]
'

では、curlコマンドで実際に実行してみます。

$ curl -i -X POST -H 'Content-Type:application/json;charset=UTF-8' -H 'Authorization:Basic TTAxMktUWVVsbS10ZXN0MTpNMDEyS1RZVWxtLXRlc3Qx' https://cloud5197.griddb.com/griddb/v2/gs_clustermfcloud5197/dbs/kHoY3AbR/sql -d '
> [
>   {"type" : "sql-select", "stmt" : "select * from point01"}
> ]
> '
HTTP/1.1 200 OK
Date: Fri, 22 Dec 2023 05:53:03 GMT
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Set-Cookie: ARRAffinity=0f8bc5d9c5b2341c0b55ca041f95daa510fb3166fa4f873a130341dda37c34af;Path=/;HttpOnly;Secure;Domain=dbaas-tenant-webapi-app-mfcloud5197.azurewebsites.net
Set-Cookie: ARRAffinitySameSite=0f8bc5d9c5b2341c0b55ca041f95daa510fb3166fa4f873a130341dda37c34af;Path=/;HttpOnly;SameSite=None;Secure;Domain=dbaas-tenant-webapi-app-mfcloud5197.azurewebsites.net
X-Rate-Limit-Remaining: 2999

[{"columns":[{"name":"timestamp","type":"TIMESTAMP","timePrecision":"MILLISECOND"},{"name":"active","type":"BOOL"},{"name":"voltage","type":"DOUBLE"}],"results":[["2021-06-27T10:30:00.000Z",false,100.0]],"responseSizeByte":33}]
$ 

HTTPレスポンスのステータスが200になっていれば成功です。

運用管理GUIのクエリ機能(SQL)を用いた登録データの確認

ここでは、登録したデータを運用管理GUIのクエリ機能(SQL)で確認する方法について説明します。
「クエリ」画面を開きます。右側に作成したコンテナ「point01」があることを確認します。

次に、point01のデータをすべて取得する次のSQL文を入力し、実行ボタンを押します。エディタ部分に文字が入力できない場合は、F5キーを押して画面を更新してください。

SELECT * FROM point01

実行結果が次のように表示されていれば成功です。

スクリーンショット 2023-12-22 14.51.25.png

コンテナ削除

では、最後に今回Web APIの疎通確認するために作成したコンテナ (コンテナ名:point01)を削除します。

DELETE ベースURL + クラスタ名/dbs/データベース名/containers

curlコマンドを用いた、コンテナ (コンテナ名:point01)の削除の指定は次の通りです。

curl -i -X DELETE -H 'Content-Type:application/json;charset=UTF-8' -H 'Authorization:Basic TTAxMktUWVVsbS10ZXN0MTpNMDEyS1RZVWxtLXRlc3Qx' https://cloud5197.griddb.com/griddb/v2/gs_clustermfcloud5197/dbs/kHoY3AbR/containers -d "[\"point01\"]"

では、実際に curlコマンドを用いて実行してみましょう。

$ curl -i -X DELETE -H 'Content-Type:application/json;charset=UTF-8' -H 'Authorization:Basic TTAxMktUWVVsbS10ZXN0MTpNMDEyS1RZVWxtLXRlc3Qx' https://cloud5197.griddb.com/griddb/v2/gs_clustermfcloud5197/dbs/kHoY3AbR/containers -d "[\"point01\"]"
HTTP/1.1 204 No Content
Date: Fri, 22 Dec 2023 05:54:18 GMT
Connection: keep-alive
Set-Cookie: ARRAffinity=0f8bc5d9c5b2341c0b55ca041f95daa510fb3166fa4f873a130341dda37c34af;Path=/;HttpOnly;Secure;Domain=dbaas-tenant-webapi-app-mfcloud5197.azurewebsites.net
Set-Cookie: ARRAffinitySameSite=0f8bc5d9c5b2341c0b55ca041f95daa510fb3166fa4f873a130341dda37c34af;Path=/;HttpOnly;SameSite=None;Secure;Domain=dbaas-tenant-webapi-app-mfcloud5197.azurewebsites.net
X-Rate-Limit-Remaining: 2999

$ 

HTTPレスポンスのステータスが204になっていれば成功とのことです。しかし、削除するコンテナ名の指定がタイプミスで誤っていたりして存在しないコンテナを指定しても、現状HTTPレスポンスのステータスが204になってしまうようです。

さいごに

今回、ビッグデータ・IoT向けデータベース GridDB をDB as a Serviceとして提供されるマネージドサービスである GridDB Cloud の共用環境無料プランを入手し、コマンドラインツール curlを使用をしたWeb APIの実行(疎通確認)についての一連の手順を詳しく紹介しました。

なお、記述について誤りがあったり、気になることがあれば、編集リクエストやコメントでフィードバックしていただけると助かります。


Discussion