diff --git a/CLA_rev1.1.pdf b/CLA_rev1.1.pdf new file mode 100644 index 0000000..778416b Binary files /dev/null and b/CLA_rev1.1.pdf differ diff --git a/README.md b/README.md index 5020b44..2e78cd1 100644 --- a/README.md +++ b/README.md @@ -1,21 +1,23 @@ # GridDB ドキュメンテーション -GridDB Community Edition v4.5 のドキュメントのレポジトリです。 +GridDB Community Edition v5.8 のドキュメントのレポジトリです。 ## マニュアル一覧 | マニュアル名称| 概要 | |------------|---------------------| |[GridDB クイックスタートガイド](manuals/GridDB_QuickStartGuide/toc.md)|GridDBの概要やGridDBを簡単に利用する手順を説明したマニュアルです。 | -|[GridDB 機能リファレンス](manuals/GridDB_FeaturesReference/toc.md)| GridDBの機能全般について説明したマニュアルです。 | -|[GridDB Java APIリファレンス](http://griddb.github.io/docs-ja/manuals/GridDB_Java_API_Reference.html)|アプリケーション開発のための Java APIの仕様書(リファレンス)です。| -|[GridDB C APIリファレンス](http://griddb.github.io/docs-ja/manuals/GridDB_C_API_Reference.html)|アプリケーション開発のための C APIの仕様書(リファレンス)です。| -|[GridDB TQLリファレンス](manuals/GridDB_TQL_Reference/toc.md)| アプリケーション開発のためのクエリ言語TQLの仕様書(リファレンス)です。| -|[GridDB JDBCドライバ説明書](manuals/GridDB_JDBC_Driver_UserGuide/toc.md)| データベースにアクセスするための JDBC ドライバのマニュアルです。 | -|[GridDB SQLリファレンス](manuals/GridDB_SQL_Reference/toc.md)| アプリケーション開発のためのSQLの仕様書(リファレンス)です。 | +|[GridDB 機能リファレンス](manuals/md_reference_feature/md_reference_feature.md)| GridDBの機能全般について説明したマニュアルです。 | +|[GridDB Java APIリファレンス](http://griddb.github.io/docs-ja/manuals/md_reference_java_api/md_reference_java_api.html)|アプリケーション開発のための Java APIの仕様書(リファレンス)です。| +|[GridDB C APIリファレンス](http://griddb.github.io/docs-ja/manuals/md_reference_c_api/md_reference_c_api.html)|アプリケーション開発のための C APIの仕様書(リファレンス)です。| +|[GridDB TQLリファレンス](manuals/md_reference_tql/md_reference_tql.md)| アプリケーション開発のためのクエリ言語TQLの仕様書(リファレンス)です。| +|[GridDB JDBCドライバ説明書](manuals/md_reference_jdbc/md_reference_jdbc.md)| データベースにアクセスするための JDBC ドライバのマニュアルです。 | +|[GridDB SQLリファレンス](manuals/md_reference_sql/md_reference_sql.md)| アプリケーション開発のためのSQLの仕様書(リファレンス)です。 | +|[GridDB SQLチューニングガイド](manuals/md_sql_tuning_guide/md_sql_tuning_guide.md)| SQLのチューニング手順やSQL最適化のルールについて説明したマニュアルです。 | +|[GridDB プログラミングガイド](manuals/md_programming_guide/md_programming_guide.md)| JavaやC言語のAPIの使用方法や、データ登録や検索などのプログラム例を説明したマニュアルです。 | ## コミュニティ - Issue リクエスト、質問、またはバグレポートがある場合は、GitHubのIssueを用いてください。 - PullRequest -コードなどを提供したい場合は、GitHub pullrequest 機能を使用します。 GridDBコントリビュータライセンス契約 (CLA_rev1.1.pdf)に同意する必要があります。 GitHub pullrequest 機能を使用することにより、GridDBコントリビュータライセンス契約に同意したものと見なされます。 +コードなどを提供したい場合は、GitHub pullrequest 機能を使用します。 [GridDBコントリビュータライセンス契約 (CLA_rev1.1.pdf)](https://github.com/griddb/docs-ja/blob/master/CLA_rev1.1.pdf)に同意する必要があります。 GitHub pullrequest 機能を使用することにより、GridDBコントリビュータライセンス契約に同意したものと見なされます。 diff --git a/manuals/GridDB_FeaturesReference/data-model.md b/manuals/GridDB_FeaturesReference/data-model.md deleted file mode 100644 index dbeadff..0000000 --- a/manuals/GridDB_FeaturesReference/data-model.md +++ /dev/null @@ -1,209 +0,0 @@ -# データモデル - - -GridDBは、Key-Valueに似た独自のKey-Container型データモデルです。以下の特徴があります。 -- Key-Valueをグループ化するコンテナというRDBのテーブルに似た概念を導入 -- コンテナに対してデータ型を定義するスキーマ設定が可能。カラムにインデックスを設定可能。 -- コンテナ内のロウ単位でトランザクション操作が可能。また、コンテナ単位でACIDを保証します。 - - -データモデル - - -GridDBのデータは、ブロック、コンテナ、テーブル、ロウ、パーティション、パーティショングループという単位でデータ管理されています。 - - -- ブロック - - ブロックとは、ディスクへのデータ永続化処理(以降、チェックポイントと呼びます)のデータ単位であり、GridDBの物理的なデータ管理の最小単位です。 - ブロックには複数のコンテナのデータが配置されます。ブロックサイズは、GridDBの初期起動前に定義ファイル(クラスタ定義ファイル)で設定します。 - - GridDBは、システムの初期起動とともにデータベースファイルが作成されるため、初期起動以降ブロックサイズの変更はできません。 - -- コンテナ(テーブル) - - 利用者とのI/Fとなるデータ構造です。 複数のブロックで構成されます。 NoSQL I/Fで操作する場合はコンテナ、NewSQL I/Fで操作する場合はテーブルと呼びます。コンテナ(テーブル)には、コレクション(テーブル)と時系列コンテナ(時系列テーブル)の2種類のデータタイプが存在します。 - - アプリケーションでデータを登録する前には、必ずコンテナ(テーブル)を作成しておく必要があります。 - -- ロウ - - ロウは、コンテナやテーブルに登録される1行のデータを指します。コンテナやテーブルには複数のロウが登録されますが、データは同じブロックに配置されるわけではありません。登録・更新されるタイミングに応じて、パーティション内の適切なブロックに配置されます。 - - ロウは複数のデータ型のカラムから構成されます。 - -- パーティション - - パーティションは、1つ以上のコンテナやテーブルを含むデータ管理の単位です。 - - パーティションはクラスタ間でのデータ配置の単位であり、ノード間の負荷バランスを調整するためのデータ移動や、障害発生に備えたデータ多重化(レプリカ)管理のための単位です。データのレプリカはパーティション単位にクラスタを構成するノードに配置されます。 - - パーティション内のコンテナに対して更新操作ができるノードはオーナノードと呼ばれ、1つのパーティションに対して1つのノードが割り当てられます。オーナノード以外でレプリカを保持するノードは、バックアップノードとなります。パーティションには、レプリカの数の設定値に応じてマスタデータと複数のバックアップデータがあります。 - - コンテナとパーティションの関連は恒久的なもので、コンテナ作成時に、所属するパーティションが決定した後は変わりません。パーティションとノードの関連は一時的なもので、自律的データ配置によってパーティションが別のノード上に移動する場合があります。 - -- パーティショングループ - - 複数のパーティションをグルーピングしてまとめた単位をパーティショングループと呼びます。 - - パーティショングループの保持するデータがOSのディスクに保存される物理的なデータベースファイルとなります。パーティショングループは、ノードで実行するデータベース処理スレッドの並列度に応じた数で作成されます。 - - - データ管理の単位 - - -  - - -## コンテナ - -GridDBにデータを登録し、検索するには、データを格納するコンテナ(テーブル)を作成する必要があります。 NoSQL I/Fで操作する場合はコンテナ、NewSQL I/Fで操作する場合はテーブルと呼びます。 - -コンテナ(テーブル)もデータベースと同様の命名規則があります。 -- 指定可能な文字列は、英数字およびアンダースコア\_、ハイフン-、ドット.、スラッシュ/、イコール=です。ただし、先頭文字に数字は指定できません。 -- 命名時の大文字・小文字は保持されますが、大文字小文字を同一視した場合に同一名となるコンテナ(テーブル)は作成できません。 - - ->##### メモ ->- 同一のデータベースの中で、[ビュー](#label_view)と同じ名前のコンテナは作成できません。 - -### 種別 - -コンテナ(テーブル)には、2つのデータタイプがあります。 -時々刻々発生するデータを発生した時刻とともに管理するのに適したデータタイプである **時系列コンテナ(時系列テーブル)** とさまざまなデータを管理する **コレクション(テーブル)** です。 - - -### データ型 - -コンテナ(テーブル)にはスキーマを設定できます。登録できるデータ型には、基本的なデータ型である **基本型** と **配列型** があります。 - -#### 基本型 - -登録できる基本型のデータを説明します。基本型とは、他の型の組み合わせで表現できない、基本的な型です。 - -| データ型 | 説明 | -|-------------|--------------------------------------------------------------------------------------------------| -| BOOL型 | 真または偽のいずれかの値 | -| STRING型 | Unicodeコードポイントを文字とする、任意個数の文字の列より構成 | -| BYTE型 | -27から27-1 (8ビット)の整数値 | -| SHORT型 | -215から215-1 (16ビット)の整数値 | -| INTEGER型 | -231から231-1 (32ビット)の整数値 | -| LONG型 | -263から263-1 (64ビット) の整数値 | -| FLOAT型 | IEEE754で定められた単精度型(32ビット)浮動小数点数 | -| DOUBLE型 | IEEE754で定められた倍精度型(64ビット)浮動小数点数 | -| TIMESTAMP型 | 年月日ならびに時分秒からなる時刻を表す型。データベースに保持されるデータ形式はUTCで、精度はミリ秒 | -| GEOMETRY型 | 空間構造を表すためのデータ型 | -| BLOB型 | 画像や音声などのバイナリデータのためのデータ型 | - -STRING型、GEOMETRY型、BLOB型は管理できるデータのサイズに以下の制限があります。制限値は、GridDBの定義ファイル(gs_node.json)のデータベースの入出力単位であるブロックサイズに応じて値が異なります。 - -| 型 | ブロックサイズ(64KB) | ブロックサイズ (1MB~32MB) | -|------------|--------------------------------|---------------------------------| -| STRING型 | 最大31KB (UTF-8エンコード相当) | 最大128KB (UTF-8エンコード相当) | -| GEOMETRY型 | 最大31KB (内部格納形式相当) | 最大128KB (内部格納形式相当) | -| BLOB型 | 最大1GB - 1Byte | 最大1GB - 1Byte | - - -**GEOMETRY型(空間型)** - -GEOMETRY型(空間型)のデータは地図情報システムなどでよく利用されています。空間型のデータは、NoSQLインターフェースでのみ使用できます。NewSQLインターフェースでは未サポートです。 - -GEOMETRY型のデータは、WKT(Well-known text)を用いて記述します。WKTは、地理空間に関する情報の標準化などを推進している非営利団体OGC(Open Geospatial Consortium)にて策定されています。GridDBでは、コンテナのカラムをGEOMETRY型に設定することで、WKTで記述された空間情報をカラムに格納できます。 - -GEOMETRY型では以下のWKT形式をサポートします。 - -- POINT - - 2次元または3次元の座標により生成される点。 - - 記述例: POINT(0 10 10) -- LINESTRING - - 2つ以上の点により表現される、2次元または3次元空間上の直線の集合。 - - 記述例: LINESTRING(0 10 10, 10 10 10, 10 10 0) -- POLYGON - - 直線の集合により表現される、2次元または3次元空間上の閉じた領域。POLYGONの頂点は反時計回りに指定します。POLYGON内に島をつくる場合、内部の点は時計回りで指定します。 - - 記述例: POLYGON((0 0,10 0,10 10,0 10,0 0))、POLYGON ((35 10, 45 45, 15 40, 10 20, 35 10),(20 30, 35 35, 30 20, 20 30)) -- POLYHEDRALSURFACE - - 2次元または3次元の座標により生成される点 - - 記述例: POLYHEDRALSURFACE (((0 0 0, 0 1 0, 1 1 0, 1 0 0, 0 0 0)), ((0 0 0, 0 1 0, 0 1 1, 0 0 1, 0 0 0)),((0 0 0, 1 0 0, 1 0 1, 0 0 1, 0 0 0)), ((1 1 1, 1 0 1, 0 0 1, 0 1 1, 1 1 1)),((1 1 1, 1 0 1, 1 0 0, 1 1 0, 1 1 1)),((1 1 1, 1 1 0, 0 1 0, 0 1 1, 1 1 1)) ) -- QUADRATICSURFACE - - 定義式f(X) = <AX, X> + BX + cにより表現される、3次元空間上の2次曲面。 - -ただし、空間構造QUADRATICSURFACEはコンテナに登録することはできず、検索条件としてのみ使用できます。 - -GEOMETRY型を利用した演算は、APIやTQLで実行できます。 - -TQLでは2次元、3次元の空間を定義する空間生成関数と空間型データ間での演算の関数を提供します。TQLではコンテナ内のGEOMETRY型のカラムと指定した空間データで演算を行いその結果を以下のようにして得ることができます。 - -``` example - SELECT * WHERE ST_MBRIntersects(geom, ST_GeomFromText('POLYGON((0 0,10 0,10 10,0 10,0 0))')) -``` - -TQLで提供する関数の詳細は『[GridDB TQLリファレンス](../GridDB_TQL_Reference/toc.md)』を参照ください。 - -#### 複合型 - -コンテナに登録できる、基本型の組み合わせで構成される型を定義します。 現バージョンでは配列型のみです。 - -- 配列型 - - 値の列を表します。基本型のデータの内、GEOMETRY型とBLOB型を除く基本型を配列型として、データを保持することができます。配列で保持できるデータ量の制限は、データベースのブロックサイズに応じて値が異なります。 - - | 型 | ブロックサイズ(64KB) | ブロックサイズ (1MB~32MB) | - |--------|---------------------|----------------------| - | 配列数 | 4000 | 65000 | - - - - >##### メモ - >配列型カラムでは、TQLでの操作に以下の制約があります。 - >- 配列型カラムのi番目の値の比較はできますが、全要素に関する演算(集計演算)はできません。 - > - (例)columnAが配列型で定義されたとした場合 - > - select \* where ELEMENT(0, columnA) > 0 のような配列内の要素を指定した比較はできます。ただし、ELEMENTの"0"の部分に変数は指定できません。 - > - select SUM(columnA) のような集計計算はできません。 - - - -### 主キー - -コンテナ(テーブル)には、主キーを設定できます。主キーによって、コンテナ(テーブル)のロウの一意性を保障します。また主キーを設定したカラムには、NULL値を許容しません。 - -主キーは、コンテナではROWKEY(ロウキー)、テーブルではPRIMARY KEY(プライマリキー)と呼びます。 - -- 時系列コンテナ(時系列テーブル)の場合 - - ROWKEY(PRIMARY KEY)は先頭カラムに設定できます。(GridDBではカラムを0番から数えるため、カラム番号0に設定します。) - - ROWKEY(PRIMARY KEY)は、TIMESTAMP型です。 - - 指定は必須です。 -- コレクション(テーブル)の場合 - - ROWKEY(PRIMARY KEY)は先頭カラムより連続した複数のカラムに設定できます。ロウキーを複数のカラムに設定した場合は、複合ロウキーと呼びます。設定できるカラム数の上限は16個です。 - - 例) 先頭カラムより連続したカラムであるstr1, str2, str3をロウキーに設定できます。 - ``` - CREATE TABLE sample_table1 - (str1 string, str2 string, str3 string, str4 string, str5 string, int1 integer, - PRIMARY KEY(str1, str2, str3)); - ``` - - 例) 連続していないカラムであるstr1, str3, str4をロウキーに設定することはできません。以下のSQLを実行するとエラーになります。 - ``` - CREATE TABLE sample_table2 - (str1 string, str2 string, str3 string, str4 string, str5 string, int1 integer, - PRIMARY KEY(str1, str3, str4)); - ``` - - ROWKEY(PRIMARY KEY)は、STRING、INTEGER、LONG、TIMESTAMPのいずれかの型のカラムです。 - - 指定は必須ではありません。 - -ROWKEY(PRIMARY KEY)に設定したカラムには、カラムの型に応じてあらかじめ既定された、デフォルトの索引が設定されます。 - -GridDBの現バージョンでは、ROWKEY(PRIMARY KEY)に指定できるSTRING、INTEGER、LONG、TIMESTAMPのすべての型のデフォルトの索引はTREE索引です。 - - - -## ビュー - -コンテナのデータを参照するためのビューを作成できます。 - -ビュー作成時に、コンテナに対する参照(SELECT文)を定義します。ビューはコンテナと似たオブジェクトですが実データを持ちません。ビューを含むクエリの実行時に、ビュー作成時に定義されたSELECT文を評価して結果を返します。 - -ビューは参照(SELECT)のみ可能です。ビューに対して、データの追加(INSERT)/更新(UPDATE)/削除(DELETE)を行うことはできません。 - - ->##### メモ ->- 同一のデータベースの中で、コンテナと同じ名前のビューは作成できません。 ->- ビューの命名規則は、[コンテナの命名規則](#label_container)と同様です。 diff --git a/manuals/GridDB_FeaturesReference/database-function.md b/manuals/GridDB_FeaturesReference/database-function.md deleted file mode 100644 index 3f38ab3..0000000 --- a/manuals/GridDB_FeaturesReference/database-function.md +++ /dev/null @@ -1,1064 +0,0 @@ -# データベース機能 - - -## リソースの管理 - -GridDBのクラスタを構成するリソースには、メモリ上のデータベースのほかにディスク上に永続化されるリソースがあります。 永続化リソースには、以下のものがあります。 - -- データベースファイル - - クラスタを構成するノードの保有するデータをディスクやSSDに書き込み、永続化したファイル群です。データベースファイルは、定期的にメモリ上のデータベースが書き込まれるチェックポイントファイルと、データ更新の都度保存されるトランザクションログファイルを総称します。 - -- チェックポイントファイル - - パーティショングループがディスクに永続化されたファイルです。ノード定義ファイルのサイクル(/checkpoint/checkpointInterval)でメモリ上の更新情報が反映されます。 ファイルのサイズはデータ容量に応じて拡張されます。一度拡張されたデータファイルのサイズは、コンテナやロウなどのデータを削除しても減少しません。なお、データ削除後の空き領域は再利用されます。チェックポイントファイルは複数に分割して配置することも可能です。 - -- トランザクションログファイル - - トランザクションの更新情報がログとしてシーケンシャルに保存されるファイルです。 - -- 定義ファイル - - クラスタを構成する際のパラメータファイル(gs_cluster.json:以降、クラスタ定義ファイルと呼ぶ)と、クラスタ内でのノードの動作やリソースを設定するパラメータファイル(gs_node.json:以降、ノード定義ファイルと呼ぶ)の2つがあります。また、GridDBの管理ユーザのユーザ定義ファイルもあります。 - -- イベントログファイル - - GridDBサーバのイベントログが保存されます。イベントログにはエラーや警告などのメッセージが含まれます。 - -- バックアップファイル - - GridDBのデータファイルのバックアップデータが保持されます。 - - -データベースファイル - - -これらのリソースは、GridDBホーム(環境変数GS_HOMEで指定されるパス)で配置を定義します。 初期インストール状態では、/var/lib/gridstoreディレクトリがGridDBホームで、このディレクトリの下に各リソースの初期データが配置されます。 - -初期の配置状態は以下のとおりです。 - -``` example -/var/lib/gridstore/ # GridDBホームディレクトリ - admin/ # 統合運用管理機能ホームディレクトリ - backup/ # バックアップディレクトリ - conf/ # 定義ファイルディレクトリ - gs_cluster.json # クラスタ定義ファイル - gs_node.json # ノード定義ファイル - password # ユーザ定義ファイル - data/ # データベースファイルディレクトリ - log/ # サーバイベントログ・運用ツールログディレクトリ -``` - -GridDBホームは、OSユーザgsadmの.bash_profileファイルの設定で変更できます。GridDBホームを変更する場合は、上記ディレクトリのリソースも適宜移動してください。 - -.bash_profileファイルには、環境変数GS_HOMEとGS_LOGの2つの環境変数の設定がされています。 - -``` example -vi .bash_profile - -# GridStore specific environment variables -GS_LOG=/var/lib/gridstore/log -export GS_LOG -GS_HOME=/var/lib/gridstore          ★GridDBホームの変更 -export GS_HOME -``` - -データベースディレクトリやバックアップディレクトリ、サーバイベントログディレクトリは、ノード定義ファイルの設定値を変更することで変更できます。 - -クラスタ定義ファイルやノード定義ファイルで設定できる内容に関しましては[パラメータ](parameter.md)を参照してください。 - - -## データアクセス機能 - -GridDBのデータにアクセスするには、NoSQLインターフェースもしくはNewSQLインターフェースを用いてアプリケーションを開発する必要があります。データアクセスでは、コンテナやテーブルがクラスタデータベースのどこに配置されているかの位置情報を意識する必要はなく、GridDBのクラスタデータベースに接続するだけでアクセスができます。コンテナがクラスタを構成するどのノードに配置されているのかをアプリケーションシステムが意識する必要はありません。 - -GridDBのAPIでは、クラスタデータベースへの初期接続時に、ノード情報(パーティション)とともにコンテナの配置ヒント情報をクライアント側に保持(キャッシュ)します。 - -アプリケーションが利用するコンテナが切り替わる度に、配置されているノードを探す処理のためクラスタにアクセスする必要はなく、コンテナを保持するノードに直に接続して処理をするため、通信のオーバヘッドを最小限としています。 - -GridDBではリバランス処理により、コンテナ配置は動的に変わりますが、クライアントキャッシュは定期的に更新されるため、コンテナの位置は透過です。タイミングによってクライアントからのアクセスでノードがミスヒットした時でも、自動的に再配置情報を取得して処理を継続します。 - - -### TQLとSQL - -データベースのアクセス言語として、TQLとSQL-92準拠のSQLをサポートしています。 - -- TQLとは - - 簡易版SQLとして、コンテナを単位とした検索、集計演算などの機能をサポートします。TQLはNoSQLインターフェースから利用します。 - - TQLは、小規模なコンテナに対して少量ヒットするような検索に適しています。データ量・ヒット件数が少ない場合には、SQLより低いレイテンシで検索できることが特徴です。ヒット件数を少量にする手段の一つとして、TQL構文のLIMIT節の指定があります。 - - 大量データを含むコンテナを検索する場合は、SQLの利用を推奨します。 - - NewSQLインターフェースで作成したコンテナや、パーティショニングされたテーブルに対しても、TQLを利用することができます。パーティショニングされたテーブルに対するTQLについては、次の制限があります。 - - - 構文では、WHERE節の条件式によるフィルタリングが利用できます。集計演算、時系列データ選択・補間演算、最大値・最小値のロウ集合選択演算、ORDER BYなどは利用できません。 - - - 更新用ロックをかけることはできません。 - - TQLの詳細は『[GridDB TQLリファレンス](../GridDB_TQL_Reference/toc.md)』を参照ください。 - -- SQLとは - - ISOで言語仕様の標準化が行われており、GridDBではSQL-92に準拠したデータの操作や定義を行うためのインターフェースをサポートします。SQLはNewSQLインターフェースから利用します。 - - NoSQLインターフェースで作成したコンテナに対しても、SQLを利用することができます。 - - SQLの詳細は『[GridDB SQLリファレンス](../GridDB_SQL_Reference/toc.md)』を参照ください。 - - -### 複数コンテナへの一括処理機能 - -GridDBが提供するNoSQL I/Fでは、時々刻々発生するイベント情報を高速に処理するためのインターフェースを用意しています。 - -大量に発生するイベントを発生の都度データベースサーバに送信していると、ネットワークへの負荷が高くなりシステムのスループットがあがりません。通信回線帯域が狭い場合特に顕著な影響がでます。NoSQL I/Fでは複数のコンテナに対する複数のロウの登録や、複数のコンテナへの複数の問い合わせ(TQL)を1リクエストで処理するためのマルチ処理が用意されています。頻繁にデータベースサーバにアクセスしないため、システム全体のスループットがあがります。 - -以下に例を挙げます。 - -- マルチプット(multiput) - - - 複数のセンサのイベント情報をデータベースに登録する処理として、センサ名毎にコンテナを用意します。センサ名とセンサの時系列イベントのロウ配列を作り、複数のセンサ分まとめたリスト(Map)を作成します。このリストデータを1回のAPI呼び出しでGridDBのデータベースに登録します。 - - - マルチプットのAPIでは、複数クラスタからなるGridDBのノードに対して、1個以上のコンテナへの登録要求をまとめて行うことで通信処理を効率化します。また、マルチ登録処理では、トランザクション実行時のMVCCは行わず、高速に処理します。 - - - マルチプットでは、トランザクションのコミットは、autocommitとなります。1件単位にデータが確定されます。 - - -multiput処理 - - - -- マルチクエリ(fetchAll) - - - センサのイベント情報を集計する処理などで、コンテナへのクエリ問い合わせを複数実行するのではなく、1つの問い合わせで実行することができます。たとえば、センサから取得したデータの一日の最大値、最小値、平均値などの集計結果の取得や、最大値や最小値をもつロウ集合や特定の条件に合致するロウ集合といったロウ集合のデータ取得を最適化します。 - - -fetchAll処理 - - -- マルチゲット(multiget) - - - センサのイベント情報を取得する処理などで複数機器のRowkeyを指定した一括データ取得ができます。 RowKeyPredicateオブジェクトにデータ取得の条件を設定し、複数の機器のデータを一括で取得します。 - - - RowKeyPredicateオブジェクトでは以下の2形式のいずれかで取得条件を設定します。 - - 取得範囲の指定 - - 指定した個別の値 - - -multiget処理 - - - -## 索引機能 - -コンテナ(テーブル)のカラムに対し索引を作成することで、条件付き検索が高速に処理できます。 - -索引タイプにはハッシュ索引(HASH)、ツリー索引(TREE)、空間索引(SPATIAL)の3種類があります。 ハッシュ索引は、コンテナ内のクエリでの検索時の等価検索で利用します。ツリー索引は、等価検索のほかに、範囲(より大きい/等しい、より小さい/等しいなど)を含む参照に利用します。 - -設定できる索引はコンテナ(テーブル)のタイプやカラムのデータ型に応じて異なります。 - -- ハッシュ索引(HASH) - - 等価検索を高速に行えますが、ロウをシーケンシャル(逐次的)に読み込んでいくような検索には向いていません。 - - コレクションにおける次に示す型のカラムに対して設定できます。時系列コンテナ、テーブル、時系列テーブルには設定できません。 - - STRING - - BOOL - - BYTE - - SHORT - - INTEGER - - LONG - - FLOAT - - DOUBLE - - TIMESTAMP -- ツリー索引(TREE) - - 等価検索のほかに、範囲(より大きい/等しい、より小さい/等しいなど)を含む参照に利用します。 - - 時系列コンテナ(時系列コレクション)のROWKEY(PRIMARY KEY)に対応するカラムを除く、任意種別のコンテナ(テーブル)における次に示す型のカラムに対して設定できます。 - - STRING - - BOOL - - BYTE - - SHORT - - INTEGER - - LONG - - FLOAT - - DOUBLE - - TIMESTAMP - - ツリー索引のみ、複数のカラムを指定した索引を作成できます。これを複合索引と呼びます。1つの複合索引に指定できるカラム数の上限は16個で、同じカラムを複数回指定することはできません。 -- 空間索引(SPATIAL) - - コレクションにおけるGEOMETRY型カラムに対してのみ設定できます。空間検索を高速に行う場合に指定します。 - -コンテナに作成できる索引の数に制限はありませんが、索引の作成は慎重に設計する必要があります。索引は、設定されたコンテナのロウに対して挿入、更新、または削除の各操作が実行されると更新されます。したがって、頻繁に更新されるロウのカラムに多数の索引を作成すると、挿入、更新、または削除の各操作でパフォーマンスに影響ができます。 - -索引は以下のようなカラムに作成します。 -- 頻繁に検索されたり、ソートされたりするカラム -- TQLのWHERE節の条件で頻繁に使用されるカラム -- カーディナリティの高い(重複した値があまり含まれない)カラム - - ->##### メモ ->- テーブル(時系列テーブル)のカラムには、ツリー索引のみ設定できます。 - - - -## 時系列データ特有の機能 - -GridDBでは、高頻度で発生するセンサなどのデータ管理のために、メモリを最大限有効利用するデータ配置アルゴリズム(TDPA:Time Series Data Placement Algorithm)に従いデータ配置処理します。時系列コンテナ(時系列テーブル)では、内部データを周期性で分類しながらメモリ配置します。アフィニティ機能でヒント情報を与えるとさらに配置効率が上がります。また、データは必要に応じてディスクに追い出しながら、ほぼゼロコストで有効期限切れのデータを解放しています。 - -時系列コンテナ(時系列テーブル)は、TIMESTAMP型のROWKEY(PRIMARY KEY)を持ちます。 - -### 圧縮機能 - -時系列コンテナ(時系列テーブル)は、データを圧縮して保持することができます。 圧縮オプションの指定は時系列コンテナ(時系列テーブル)作成時に指定します。データを圧縮することでメモリ使用効率を上げることができます。 - -ただし、圧縮オプションが設定されている時系列コンテナ(時系列テーブル)に対しては、以下に示すロウ操作を行えませんので注意してください。 - -- 指定ロウの更新 -- 指定ロウの削除 -- 指定時刻より新しい時刻のロウが存在する場合の、ロウの新規作成 - -圧縮オプションには次の指定ができます。 -- HI :誤差あり間引き圧縮方式であることを示します。 -- NO :無圧縮であることを示します。 -- SS :誤差なし間引き圧縮方式であることを示します。 - -それぞれのオプションの内容は以下のとおりです。 - -#### 誤差あり間引き圧縮(HI) - -誤差あり間引き圧縮(HI)では、前回までおよび直後に登録したデータと同じ傾斜を表すロウは省かれます。同じ傾斜かを判定する条件はユーザが指定できます。 - -指定されたカラムが条件を満たし、それ以外のカラムの値が前回のデータと同じ場合のみロウデータは省かれます。条件は、誤差の幅(Width)で指定します。 - - - 時系列コンテナ(時系列テーブル)の圧縮 - - -圧縮の指定を設定できるデータタイプは以下です。 -- LONG -- INTEGER -- SHORT -- BYTE -- FLOAT -- DOUBLE - -圧縮は不可逆圧縮のため、間引き圧縮で間引かれたデータをデータ登録時のままの値で復元することはできません。 - -省かれたデータはinterpolate(補完)やsample(サンプリング)処理の際に、指定された誤差の範囲内で復元できます。 - -#### 誤差なし間引き圧縮(SS) - -誤差なし間引き圧縮(SS)では、直前および直後に登録したロウと同じデータを持つロウは省かれます。省かれたデータはinterpolateやsample処理の際に、誤差を発生することなく復元できます。 - - -### TQLの演算機能 - -#### 集計演算 - -採取したデータの時間間隔でデータに重みをつけて計算します。つまり、時間間隔が長い場合、長時間その値が続いたことを想定した計算となります。 - -集計演算には以下の関数があります。 - -- TIME_AVG - - - 重み付きで平均を求める演算です。 - - 検索の条件に合致した各ロウについて、前後それぞれの時刻のロウとの中間時刻間の期間を特定の単位で換算したものを、重み付け値として使用します。条件で指定した時刻のロウのみが存在しない場合は、存在しないロウの代わりに条件に指定した時刻の直前、直後のロウを用いて重みづけ計算をします。 - - 計算の詳細イメージを図示します。 - - - 重みづけの集計演算(TIME_AVG) - - -#### 選択・補間演算 - -時刻データは、収集されるデータの内容や収集タイミングにより想定した時刻より多少の時間のずれが発生することがあります。したがって時刻データをキーにして検索する際にも、指定した時刻周辺のデータが取得できる機能が必要です。 - -時系列コンテナ(時系列テーブル)を検索し、指定したロウを取得するための以下のような関数があります。 - -- TIME_NEXT(\*, timestamp) - - 指定の時刻と同一またはその直後の時刻を持つ1つのロウを選択します。 - -- TIME_NEXT_ONLY(\*, timestamp) - - 指定の時刻の直後の時刻を持つ1つのロウを選択します。 -- TIME_PREV(\*, timestamp) - - 指定の時刻と同一またはその直前の時刻を持つ1つのロウを選択します。 -- TIME_PREV_ONLY(\*, timestamp) - - 指定の時刻の直前の時刻を持つ1つのロウを選択します。 - -また、実体のロウのカラムの値を補間演算で計算するための以下のような関数があります。 - -- TIME_INTERPOLATED(column, timestamp) - - 指定の時刻に関して、一致するロウの指定のカラムの値、または、隣接する前後のロウの指定カラムの値を線形補間して得られた値を求めます。 - -- TIME_SAMPLING(\*|column, timestamp_start, timestamp_end, interval, DAY|HOUR|MINUTE|SECOND|MILLISECOND) - - 開始・終了時刻を指定して、特定範囲のロウ集合をサンプリングします。 - - サンプリング位置の時刻は、開始時刻に対し非負整数倍のサンプリング間隔を加えた時刻のうち、終了時刻と同じかそれ以前のもののみです。 - - 各サンプリング位置の時刻と一致するロウが存在する場合は該当ロウの値を使用します。存在しない場合は補間された値を使用します。 - -### 期限解放機能 - -期限解放とは、設定した保持期間を超えたロウデータを、検索や削除などの操作対象から外して参照不可とした後、DBから物理的に削除する機能です。 利用されなくなった古いデータを操作の対象から外して削除することで、DBサイズを一定に保ち、データベースサイズ肥大化によるパフォーマンス低下を防ぐことができます。 - - -期限解放 - - -保持期間はコンテナ単位に設定します。保持期間を越えたロウを「期限切れデータ」と呼びます。期限切れデータは参照不可となってAPIから操作できなくなるので、アプリケーションからはそのロウは存在しない状態になります。期限切れデータは、一定期間が経過すると、DBから物理的に削除する対象のデータになります。この削除対象となった期限切れデータを「コールドデータ」と呼びます。コールドデータは、そのまま自動的にDBから削除することも可能ですし、データを残しておく必要がある場合は外部ファイルに保存してから自動削除することもできます。 - -#### 期限解放の種類 - -保持期間の設定には次の2種類があります。 時系列コンテナにはロウ期限解放、パーティショニングされたテーブルにはパーティション期限解放をご利用ください。 - -- ロウ期限解放 - - - 時系列コンテナに対して設定できます。 - - 設定項目は、保持期間、保持期間の単位、分割数です。 - - 保持期間の単位として設定できるのは、日/時/分/秒/ミリ秒の単位です。年単位、月単位の指定はできません。 - - ロウの保持期限は、ロウキーに格納された日時(保持期間開始日)に保持期間を足した日時です。保持期限はロウごとに計算します。 - - コールドデータになる単位は、「保持期間÷分割数」の期間のロウです。たとえば、期間が720日で分割数指定が36の場合、720日÷36=20日間のロウ単位でコールドデータになり、物理的データ削除は20日分まとめて行なわれます。 - - -ロウ期限解放 - - - -- パーティション期限解放 - - インターバル、インターバルハッシュでパーティショニングされたテーブルに対して設定できます。コンテナの場合は時刻型のパーティショニングキーを持つ場合にのみ設定できます。 - - 設定項目は、保持期間、保持期間の単位です。 - - 保持期間の単位として設定できるのは、日/時/分/秒/ミリ秒の単位です。年単位、月単位の指定はできません。 - - ロウの保持期限は、データパーティションのロウ格納期間の最終日時に保持期間を足した日時です。同じデータパーティションに格納されているロウは、全て同じ保持期限になります。 - - コールドデータになる単位は、データパーティションです。物理的データ削除はデータパーティション単位で行われます。 - (ただし、削除されるのはロウデータのみです。データパーティション自体は削除されないので、データパーティションの削除を別途行ってください。 - データパーティションの削除方法は『[GridDB SQLリファレンス](../GridDB_SQL_Reference/toc.md))』をご参照ください。 - - - パーティション期限解放 - - -ロウ期限解放とパーティション期限解放のまとめです。 - - -| | ロウ期限解放 | パーティション期限解放 | -|-------------------------|-------------------------------------------|--------------------------| -| コンテナ種別 | 時系列コンテナ | インターバル、インターバルハッシュでパーティショニングされたテーブル(コレクションの場合はパーティショニングキーが時刻型の場合のみ) | -| 設定項目 | 保持期間と単位、分割数 | 保持期間と単位 | -| 保持期限 | ロウキーに格納された日時に保持期間を足した日時 | データパーティションのデータ格納期間の最終日時に保持期間を足した日時 | -| 期限切れデータになる単位 | ロウ | データパーティション | -| コールドデータになる単位 | '保持期間÷分割数'の期間のロウ群 | データパーティション | - - ->##### メモ ->- 期限解放の設定は、コンテナ作成時に行います。作成後に設定を変更することはできません。 ->- ロウ期限解放とパーティション期限解放を同じコンテナに設定することはできません。 ->- 保持期限超過の判定に使用される現在時刻は、GridDBの各ノードの実行環境に依存します。したがって、ネットワークの遅延や実行環境の時刻設定のずれなどにより、クライアントの時刻よりGridDBのノードの時刻が進んでいる場合、期限切れ前のロウにアクセスできなくなる場合があります。逆にクライアントの時刻のみ進んでいる場合は、期限切れロウにアクセスできる場合があります。意図しないロウの喪失を避けるために、最低限必要な期間よりも大きな値を設定することを推奨します。 ->- 期限切れのロウは、検索や更新といったロウ操作の対象から外れ、存在しないものとみなされます。期限切れのロウに対して行われた操作はエラーにはなりません。 ->- 例) 保持期限が30日の設定の場合、現在から31日前の日時のロウを登録しても登録処理はエラーにはならず、かつ、コンテナにはそのロウは保存されません。 ->- 期限解放を設定する場合は、必ずクラスタの全ノードの時刻を同期してください。時刻がずれていると、ノード間で期限解放されるタイミングが異なるなどの問題が生じる場合があります。 ->- 期限切れデータからコールドデータになるまでの期間は、期限解放の保持期間の設定によって異なります。 -> - 保持期間:期限切れからコールドデータになるまでの最大期間 -
~3日 : 約1.2時間 -
3日~12日 : 約5時間 -
12日~48日 : 約19時間 -
48日~192日 : 約3日 -
192日~768日 : 約13日 -
768日~ : 約38日 - - - - - -## テーブルパーティショニング機能 - -複数ノードで動作するGridDBのアプリケーションを高速化するには、処理するデータをできるだけメモリに配置することが重要です。 データ登録数が多い巨大なテーブルでは、テーブルのデータを分割してノードに分散配置することで、複数ノードのCPUやメモリリソースを効率的に活用した処理が可能です。分割したデータは、「データパーティション」という複数の内部コンテナに格納します。データをどのデータパーティションに格納するかは、テーブル作成時に指定された「パーティショニングキー」のカラムの値を基に決定します。 - -GridDBではテーブルパーティショニングの方法として、ハッシュパーティショニング、インターバルパーティショニング、インターバル-ハッシュパーティショニングの3種類があります。 - -テーブルの作成・削除、データの登録・更新・検索はNewSQLインターフェースで実行できます。(一部制限があります。詳細は[TQLとSQL](#tql_and_sql)を参照ください) - -- データ登録 - - テーブルにデータを登録すると、パーティショニングキーの値とパーティショニングの方法に応じて、適切なデータパーティションにデータが自動的に登録されます。データパーティションを直接指定してデータ登録することはできません。 - -- 索引 - - テーブルに索引を作成した場合、データパーティション単位でのローカル索引が作成されます。テーブル全体でのグローバル索引を作成することはできません。 - -- トリガ - - パーティショニングされたテーブル(コンテナ)にトリガは設定できません。 - -- データ操作 - - パーティショニングキーに指定したカラムがプライマリキーである場合、パーティショニングキーに対するデータ更新操作は、エラーになります。データを削除してから再登録してください。 - - パーティショニングキーに指定したカラムがプライマリキーでない場合、NoSQL I/Fでのみ更新操作が可能です。 - -- 時系列テーブルの機能 - - テーブルが時系列の場合、期限解放機能を使用できます。圧縮機能は使用できません。 - -- 点 - - V4.3よりプライマリキー以外のカラムをパーティショニングキーに指定した場合、デフォルトではエラーとなります。指定可能とするにはクラスタ定義ファイル(gs_cluster.json)の/sql/partitioningRowkeyConstraintにfalseを設定する必要があります。 - - プライマリキー以外のカラムをパーティショニングキーに指定した場合、プライマリキーの制約は、データパーティションの単位では保証しますが、テーブル全体では保証しません。そのため、テーブル全体としては、プライマリキーに同じ値が重複して登録される場合があります。 - - -テーブルパーティショニング - -### テーブルパーティショニングの利点 - -テーブルパーティショニングを利用して、大規模なデータを分割することで、メモリの効率的な利用や検索の処理対象データの絞込みによる性能向上の効果があります。 - -- メモリの効率的な利用 - - 登録や検索などの処理では、処理に必要なデータパーティションがメモリに読み込まれます。処理対象外のデータパーティションは読み込まれないため、処理対象のデータが局所的で一部のデータパーティションに集中する場合は、メモリ上に読み込むデータ量が少なくなります。メモリへのスワップイン/スワップアウトの頻度が低減して、パフォーマンスが向上します。 - -- 検索の処理対象データの絞込み - - 検索する際に、問合わせの絞込み条件に合致するデータパーティションのみを処理対象とします。必要ではないデータパーティショニングにはアクセスしません。この機能をプルーニングと呼びます。 処理対象となるデータ量が小さくなるため、パフォーマンスが向上します。プルーニングが有効になる問合せの絞込み条件は、パーティショニング種別ごとに異なります。 - -上記の点について、テーブルパーティショニングを利用しない場合と利用する場合の特徴を説明します。 - -テーブルパーティショニングを利用せずに大規模データをひとつのテーブルに格納する場合、処理に必要なデータをすべてメモリ上に載せることができず、メモリとデータベースファイル間でのスワップイン/スワップアウトが頻繁に発生してパフォーマンスが低下します。特に大規模テーブルのデータ量よりもGridDBノードのメモリが小さい場合に低下が顕著になります。また、テーブルに対するアクセスが1ノードに集中するため、並列度が低くなります。 - - -テーブルパーティショニングを使用しない場合 - - -テーブルパーティショニングを利用した場合、大規模データを各データパーティションに分割して、複数ノードに分散配置します。 - -登録や検索などの処理の際には、処理に必要なデータパーティションがメモリに読み込まれます。処理対象外のデータパーティションは読み込まれないため、テーブルパーティショニングを使わない大規模テーブルと比較すると必要なデータ量は小さくなる場合が多く、メモリへのスワップイン/スワップアウトの頻度が低減します。各データパーティションにデータを偏りなく均等に分割した方が各ノードのCPUやメモリリソースを有効に活用することができます。 - -また、データパーティションはノードに分散配置されるため、データへの並列アクセスが可能になります。 - - -テーブルパーティショニングを使用する場合 - - -### ハッシュパーティショニング - -ハッシュパーティショニングでは、ハッシュ値 (HASH) に基づいてテーブルパーティションに均等にデータを分割して格納します。 - -高い頻度でデータ登録を行うアプリケーションシステムでの利用においては、テーブルの末尾にアクセスが集中し、待ち時間が発生する場合があります。ハッシュ分割を使用すると複数のテーブルが用意されるため、アクセス分散できます。 - -ハッシュパーティショニング - - -- データの分割 - - パーティショニングキーとハッシュの分割数Mを指定されることで、パーティショニングキーの値から1~Mの整数を返すハッシュ関数を定義し、その返値に基づいてデータ分割を行います。分割数Mの最大値は1024です。 - -- パーティショニングキー - - パーティショニングキーに指定できるカラムのデータ型に制限はありません。 - -- データパーティションの作成 - - テーブル作成時に、指定されたハッシュの分割数Mの数のデータパーティションを自動的に作成します。テーブル作成後は、データパーティションの数は変更できません。変更する場合は、テーブルの再作成が必要となります。 - -- データパーティションの削除 - - データパーティション単体を指定して削除することはできません。 - - テーブルの削除により、そのテーブルを構成するデータパーティションをすべて削除します。 - -- プルーニング - - ハッシュの場合は、パーティショニングキーの値一致検索を行う場合にプルーニングが適用され、条件に適したデータパーティションのみ処理対象とするため、処理速度の向上やメモリ使用量削減の効果があります。 - -### インターバルパーティショニング - -インターバルパーティショニングでは、指定された一定の値間隔でデータを分割して、データパーティションに格納します。各データパーティションに格納するデータの区間(下限値から上限値)は、指定された値間隔を基に自動的に決定します。 - -ある一定の範囲の値を持つデータを同じデータパーティション上に格納するので、登録するデータが連続値の場合や、特定期間の範囲の検索を行う場合などに、より少ないメモリで処理できます。 - - -インターバルパーティショニング - - -- データの分割 - - 値間隔の基準値(分割幅値)に基づいてデータ分割を行います。 パーティショニングキーの型によって、指定できる分割幅値の範囲が異なります。 - - BYTE型 : 1~27-1 - - SHORT型 : 1~215-1 - - INTEGER型 : 1~231-1 - - LONG型 : 1000~263-1 - - TIMESTAMP型 : 1以上 - - パーティショニングキーがTIMESTAMP型の場合は、単位に「DAY」を指定します。 - -- パーティショニングキー - - パーティショニングキーに指定できるデータ型は、BYTE型, SHORT型, INTEGER型, LONG型, TIMESTAMP型です。 パーティショニングキーはひとつのカラムで、NOT NULL制約を設定する必要があります。 - -- データパーティションの作成 - - テーブル作成時には、データパーティションを作成しません。データ登録時、該当するデータパーティションが存在しない場合に、データパーティションを自動的に作成します。 - - データパーティション数の上限値は10000個です。データパーティション数が上限値に達すると、新規のデータパーティションが必要なデータ登録はエラーになります。エラーが発生した場合は、不要なデータパーティションを削除して、データ登録を再実行してください。 - - テーブル作成時には、登録するデータの分布とデータパーティション上限数10000を考慮して、分割幅値を決定してください。分割幅値に対してデータの範囲が幅広く、データパーティションが大量に作成されるようなテーブルでは、データパーティション削除のメンテナンスが頻繁に必要になります。 - -- データパーティションの削除 - - データパーティション単体を削除できます。一度削除したデータパーティションは、再作成できません。 - 削除したデータパーティションに対する新規データ登録はすべてエラーとなります。 - データパーティションを削除する前には、メタテーブルで削除対象のデータパーティションが管理するデータの範囲を確認してください。 - メタテーブルの詳細は『[GridDB SQLリファレンス](../GridDB_SQL_Reference/toc.md)』をご参照ください。 - - テーブルを削除すると、そのテーブルを構成するデータパーティションをすべて削除します。 - - ロウ期限解放が設定されていた場合、期限解放によって空になったデータパーティションを自動的に削除しません。 - テーブル全体に対する検索を行った場合、すべてのデータパーティションが処理対象になるため、不要なデータパーティションはあらかじめ削除した方が効率的な検索ができます。 - -- データパーティションのメンテナンス - - データパーティション数が10000に達する場合、または、不要なデータパーティションがある場合は、データパーティションを削除してメンテナンスする必要があります。 - - - データパーティション数の確認方法 - - データパーティションの情報を管理しているメタテーブルを参照して確認します。詳細は『[GridDB SQLリファレンス](../GridDB_SQL_Reference/toc.md)』を参照ください。 - - - データパーティションの削除方法 - - テーブルパーティションの下限値を指定して削除を行います。詳細は『[GridDB SQLリファレンス](../GridDB_SQL_Reference/toc.md)』を参照ください。 - - -インターバルパーティションテーブル作成・削除の例 - - -- プルーニング - - where句の条件にパーティショニングキーを指定した検索を行う場合、条件に適したデータパーティションのみ処理対象とするため、処理速度の向上やメモリ使用量削減の効果があります。 - -### インターバル-ハッシュパーティショニング - -インターバル-ハッシュパーティショニングは、インターバルパーティショニングとハッシュパーティショニングを組み合わせたものです。まずインターバルパーティショニングでデータを分割し、その分割されたデータに対して、さらにハッシュパーティショニングが行われます。 データパーティショニングの数は、インターバルパーティションニングによって分割した区間の数×ハッシュの分割数になります。 - - -インターバル-ハッシュパーティショニング - -インターバルパーティショニングで分割したデータパーティションを、さらにハッシュによって適切にノードに分散することができます。一方で、データパーティション数が多くなることで、検索時のオーバヘッドが発生します。ノード分散と処理のオーバヘッドを考慮してご利用ください。 - -インターバル-ハッシュパーティショニングは、インターバルパーティショニングとハッシュパーティショニングを組み合わせたものなので、基本的な機能はそれぞれのパーティショニングの機能と同等です。インターバル-ハッシュパーティショニングに特有の点のみ説明します。 - -- データの分割 - - インターバル-ハッシュパーティショニングでの分割幅値は、LONGの場合のみインターバルパーティションと値の範囲が異なります。 - - BYTE型 : 1~27-1 - - SHORT型 : 1~215-1 - - INTEGER型 : 1~231-1 - - LONG型 : 1000×ハッシュの分割数~263-1 - - TIMESTAMP型 : 1以上 - -- データパーティションの数 - - ハッシュで分割された数も含めて、データパーティション数の上限値は10000個です。上限に達した場合の動作やメンテナンスが必要な点については、インターバルパーティショニングと同様です。 - -- データパーティションの削除 - - インターバルで分割した単位でデータパーティション群を削除できます。同じインターバル区間をハッシュ分割したデータパーティション単体の削除はできません。 - -### テーブルパーティショニング種別の選択基準 - -GridDBでは、テーブルパーティショニングの分割の種別として、ハッシュ、インターバル、インターバルハッシュをサポートします。 - -検索やデータアクセスの条件となるようなカラムを、テーブルを分割するためのパーティショニングキーとします。そのパーティショニングキーの値に対して、大量データを均等に分割するための範囲が決定できる場合にはインターバルパーティショニングもしくはインターバル-ハッシュパーティショニング、決定が困難な場合にはハッシュを選択します。 - - -データの範囲 - - -- インターバルパーティショニング、インターバル-ハッシュパーティショニング - - データを均等に分割するための区間(分割幅値)が事前に決定できる場合には、インターバルパーティショニングを選択します。 インターバルパーティションへの問合せでは、プルーニングによって、条件に合致するデータパーティションのみにアクセスして結果を取得するため、パフォーマンスが改善します。また、検索だけでなく、特定の範囲にデータを連続登録する場合もパフォーマンスが改善します。 - - - インターバルパーティショニング - - - 従って、インターバルパーティショニングを利用する場合は、アプリケーションで頻繁に登録・検索するデータ範囲を意識して分割幅値を決定することで、使用するメモリの削減が可能です。例えば、センサデータなどの時系列データで、かつ直近データに対する検索が多いシステムの場合には、検索対象の範囲をインターバルパーティショニングの分割幅値にすると、処理対象となるデータパーティションサイズのメモリで検索のパフォーマンスを保つことができます。 - - - インターバルパーティショニングの登録と検索処理の例 - - さらに、インターバル-ハッシュパーティショニングを利用して、インターバルパーティショニングで分割したデータパーティションをハッシュパーティショニングで均等分割してノードに分散配置することで、特定範囲のデータに対する並列アクセスも可能になります。 - - - インターバルハッシュパーティショニング - - -- ハッシュパーティショニング - - 格納するデータの特徴が事前にわからない場合、また、データを均等に分割可能な区間をあらかじめ決めることが困難な場合には、ハッシュパーティショニングを選択します。パーティショニングキーにユニークな値のカラムを指定することで、自動的に大量データを均等分割することができます。 - - - ハッシュパーティショニング - - - ハッシュパーティショニングにより、テーブル全体への並列アクセス、および一致検索に限ってパーティションプルーニングが可能なため、システムのパフォーマンスを改善できます。ただし、高いパフォーマンスを得るためには、ノード毎に管理するテーブルパーティション全てを格納できるサイズのメモリが必要です。 - - - ハッシュパーティショニングの登録と検索処理の例 - - -## トランザクション機能 - -GridDBではコンテナ単位のトランザクション処理をサポートし、トランザクションの特性として一般的に言われるACID特性をサポートしています。以下にトランザクション処理でサポートしている機能の詳細を説明していきます。 - -### トランザクションの開始と終了 - -コンテナに対して、ロウの検索・更新などの操作を行なったときに新たなトランザクションが開始され、データの更新結果を確定(コミット)または破棄(アボート)した時にトランザクションが終了します。 - - ->##### メモ ->- コミットとは、処理中のトランザクションの情報を確定し、データを永続化させる処理です。 -> - GridDBではコミット処理でトランザクションの更新したデータがトランザクションログとして保管され、保持していたロックが解放されます。 ->- アボートとは、トランザクションの処理途中のデータをすべてロールバックする(処理を取り消す)処理です。 -> - GridDBでは処理途中のデータはすべて破棄され、保持していたロックも解放されます。 - - -トランザクションの初期の動作はautocommit(自動コミット)に設定されています。 - -autocommitでは、アプリケーションからのコンテナに対する更新(データの追加、削除、変更)操作開始毎に新たなトランザクションが開始され、操作終了とともに自動的にコミットされます。 autocommitをオフにすることで、アプリケーションからの要求に応じたタイミングでトランザクションのコミット、アボートを指示できます。 - -トランザクションのライフサイクルは、トランザクションのコミットやアボートによる完了とともにタイムアウトによるエラー終了があります。トランザクションがタイムアウトによりエラー終了した場合、そのトランザクションはアボートされます。トランザクションのタイムアウトは、トランザクションが開始してからの経過時間です。 トランザクションのタイムアウト時間は、アプリケーション単位にGridDBに接続する際のパラメータとして指定することができます。また、タイムアウト時間の上限値はノード定義ファイル(gs_node.json)に設定できます。 - -### トランザクションの一貫性レベル - -トランザクションの一貫性レベルにはimmediate consistencyとeventual consistencyの2種類があります。この指定はアプリケーションごとにGridDBに接続する際のパラメータとして指定することもできます。 デフォルトはimmediate consistencyです。 - -- immediate consistency - - - コンテナに対する他のクライアントからの更新結果は、該当トランザクションの完了後即座に反映されます。そのため、常に最新の内容を参照します。 - -- eventual consistency - - - コンテナに対する他のクライアントからの更新結果は、該当トランザクションが完了した後でも反映されていない場合があります。 そのため、古い内容を参照する能性があります。 - -immediate consistencyは更新操作、読み取り操作で有効です。 eventual consistencyは読み取り操作でのみ有効です。 常に最新の結果を読み取る必要のないアプリケーションではeventual consistencyを指定すると読み取り性能が向上します。 - -### トランザクションの隔離レベル - -データベースの内容は常に整合性が保たれている必要があります。 複数のトランザクションを同時実行させたとき、一般に以下の現象が課題として挙がります。 - -- ダーティリード - - トランザクションが書き込んだコミットされていないデータを、別のトランザクションで読み込んでしまう現象です。 - -- 反復不能読み取り - - トランザクション内で以前読み込んだデータを再読み込みできなくなる現象です。トランザクション内で以前読み込んだデータを再度読み込もうとしても、別のトランザクションがそのデータを更新、コミットしたために、以前のデータが読み込めなくなります(更新後の新しいデータを読み込むことになります) - -- ファントムリード - - トランザクション内で以前得られた問い合わせの結果が得られなくなる現象です。トランザクション内で以前実行した問い合わせを再実行しても、別のトランザクションがその問い合わせ条件を満たすデータを変更、追加し、コミットしたために、同じ条件で問い合わせを実行しても、以前の結果が得られなくなります(更新後のデータを得ることになります)。 - -GridDBでは、トランザクションの隔離レベルとして「READ_COMMITTED」をサポートしています。 READ_COMMITTEDでは、確定した最新データを常に読み取ります。 - -トランザクションを実行する場合、他のトランザクションからの影響を受けないように配慮する必要があります。隔離レベルは、実行トランザクションを他のトランザクションからどの程度隔離するか(どの程度整合性を保てるか)を示す指標であり、4つのレベルがあります。 - -4つの隔離レベルおよび、それに対して同時実行時の課題であげた現象が起こる可能性は以下のとおりです。 - -| 隔離レベル | ダーティリード | 反復不能読み取り | ファントムリード | -|----------------------------|------------------|------------------|------------------| -| READ_UNCOMMITTED | 発生の可能性あり | 発生の可能性あり | 発生の可能性あり | -| READ_COMMITTED | 安全 | 発生の可能性あり | 発生の可能性あり | -| REPEATABLE_READ | 安全 | 安全 | 発生の可能性あり | -| SERIALIZABLE | 安全 | 安全 | 安全 | - -READ_COMMITEDでは、以前読み込んだデータを再度読み込んだ場合に、以前のデータとは異なるデータを得たり、問い合わせを再実行した場合に、同じ検索条件で問い合わせを実行しても異なる結果を得てしまうことがあります。これは前回の読み込み後に、別のトランザクションによって更新、コミットが行われ、データが更新されたためです。 - -GridDBでは、MVCCによって、更新中のデータを隔離しています。 - -### MVCC - -GridDBでは、READ_COMMITTEDを実現するために「MVCC(Multi-Version Concurrency Control:多版型同時実行制御方式)」を採用しています。 - -MVCCとは、各トランザクションがデータベースに対して問い合わせるときに、別のトランザクションが更新中の最新のデータでなく、更新前のデータを参照して処理を行う方式です。更新前のデータを参照してトランザクションを並行実行できるため、システムのスルー プットが向上します。 - -実行中のトランザクションの処理がコミットすると、他のトランザクションも最新のデータを参照できます。 - - -MVCC - - -### ロック - -コンテナに対する複数トランザクションからの更新処理要求競合時の一貫性を保つため、データのロック機構があります。 - -ロックの粒度は、コンテナの種別に応じて異なります。またロックの範囲は、データベースへの操作の種別に応じて異なります。 - -#### ロックの粒度 - -コンテナの種別ごとのロックの粒度は次のとおりです。 - -- コレクション・・・ロウ単位でロックします。 -- 時系列コンテナ・・・ロウ集合でロックされます。 - - 時系列コンテナは、ブロックをいくつかに分割したデータ処理の単位に複数のロウを配置します。 このデータ処理の単位をロウ集合とよびます。コレクションでのロックの粒度よりもデータ粒度が荒いですが、大量に発生する時系列コンテナを高速に処理するためのデータの管理の単位です。 - -これらは、コンテナの種別ごとのユースケースの分析に基づいています。 - -- コレクションデータはRDBのテーブルと同様にデータを管理するため、既存のロウデータが更新されるケースがある -- 時系列コンテナは時々刻々発生するデータを保持するデータ構造であり、特定の時刻のデータが更新されるケースは少ない - -#### データベース操作によるロック範囲 - -コンテナへの操作にはデータの登録、削除のみならず、データ構造の変更に伴うスキーマ変更や、アクセス高速化のための索引作成などの操作があります。ロック範囲は、コンテナ全体への操作、またはコンテナのロウ単位の操作のいずれかによって異なります。 - -- コンテナ単位のロック - - 索引操作(createIndex/dropIndex) - - コンテナ削除 - - スキーマ変更 -- ロックの粒度に従ったロック - - put/update/remove - - get(forUpdate) - - ロウへのデータ操作ではロックの粒度に沿ったロックを確保します。 - -ロック確保で競合した場合、先行したトランザクションがコミットもしくはロールバック処理で実行が完了しロックを解放するまで、後続のトランザクションはロック確保待ちとなります。 - -ロック確保待ちは、トランザクションの実行完了以外では、タイムアウトでも解消されます。 - -### データ永続化 - -コンテナやテーブルに登録・更新されたデータは、ディスクやSSDに永続化され、ノード障害発生時のデータ消失から保護されます。メモリ上の更新データをブロック単位にデータベースファイルに定期的に保存するチェックポイント処理と、データ更新に同期して更新データをシーケンシャルにトランザクションログファイルに書き込むトランザクションログ処理の2つの処理があります。 - -トランザクションログの書き込みには、以下のいずれかをノード定義ファイルに設定できます。 - -- 0: SYNC -- 1以上の整数値: DELAYED_SYNC - -"SYNC"では、更新トランザクションのコミット・アボートごとに、ログ書き込みを同期的に行います。"DELAYED_SYNC"では、更新時のログ書き込みを、更新タイミングとは関係なく、指定秒数毎に遅延して行います。デフォルト値は"1(DELAYED_SYNC 1秒)"です。 - -"SYNC"を指定するとノード障害発生時に最新の更新内容を消失する可能性が低くなりますが更新が多いシステムでは性能に影響します。 - -一方、"DELAYED_SYNC"を指定すると、更新性能は向上しますが、ノード障害発生時ディスクに書き込まれていない更新内容があるとそれらが失われます。 - -クラスタ構成でレプリカ数が2以上の場合は、他のノードにレプリカを持つため、"DELAYED_SYNC"設定でも1ノード障害時に最新の更新内容を失う可能性は低くなります。 更新頻度が高く、性能が要求される場合には、"DELAYED_SYNC"を設定することも考慮してください。 - -チェックポイントでは、更新ブロックをデータベースファイルに更新します。 チェックポイント処理は、ノード単位に設定したサイクルで動作します。チェックポイントのサイクルはノード定義ファイルのパラメータで設定します。初期値は、60秒です。 - -チェックポイントの実行サイクルの数値を上げることで、ディスクへの永続化を夜間に実施するなど比較的時間に余裕がある時間帯に設定することができます。一方サイクルを長くした場合に、システム処理外でノードを再起動した際にロールフォワードすべきトランザクションログファイルが増え、リカバリ時間が増えるという欠点もあります。 - -チェックポイント実行時に更新のあったデータは、チェックポイントの書き込みブロックとは別のメモリにプールし、保持します。 チェックポイントを高速に行うにはチェックポイントの並列実行を設定します。並列実行を設定した場合、トランザクションの同時実行数と同じ数まで並列で処理されます。 - - -チェックポイント - - -### タイムアウト処理 - -タイムアウト処理は、NoSQL I/F、NewSQL I/Fで設定できる内容が異なります。 - -#### NoSQL I/Fのタイムアウト処理 - -NoSQL I/Fでは、アプリケーション開発者に通知されるタイムアウトには2種類のタイムアウトがあります。アプリケーションの処理時間の制限に関するトランザクションタイムアウトと、障害発生時の回復処理のリトライ時間に関するフェイルオーバータイムアウトの2つです。 - -- トランザクションタイムアウト(transactionTimeout) - - 処理対象のコンテナにアクセスを開始してからタイマが開始され、指定した時間を超えるとタイムアウトが発生します。 - - 長時間更新ロックを保有するトランザクション(更新モードで検索し、ロックを保持したまま解放しないアプリケーション)や長時間大量の結果セットを保持するトランザクション(長時間、クラスタシステムのメモリを解放しないアプリケーション)などからロックやメモリを解放するために用意されたタイムアウト時間です。トランザクションタイムアウトに達したらアプリケーションはアボートされます。 - - トランザクションタイムアウトは、クラスタ接続時のパラメータとしてアプリケーションで指定できます。タイムアウト時間の上限値はノード定義ファイルで指定します。 タイムアウト時間の上限値の初期値は300秒です。処理に長時間かかるトランザクションの発生を監視をするためには、システムの要件に合わせてタイムアウト時間とその上限値を設定してください。 - -- フェイルオーバータイムアウト(failoverTimeout) - - クラスタを構成するノードに障害が発生したとき、ノードに接続しているクライアントが代替えノードに接続する際のエラーリトライ時のタイムアウト時間です。リトライ処理で新たな接続先が見つかった場合、クライアントアプリケーションにはエラーは通知されません。フェイルオーバータイムアウトは、初期接続時のタイムアウトにも利用されます。 - - フェイルオーバータイムアウトは、クラスタ接続時のパラメータとしてアプリケーションで指定できます。システムの要件に合わせてタイムアウト時間を設定してください。 - -トランザクションタイムアウト、フェイルオーバータイムアウトともに、Java APIやC APIでGridStoreオブジェクトを用いてクラスタに接続する際に設定できます。 -詳細は『[GridDB Java APIリファレンス](http://griddb.github.io/docs-ja/manuals/GridDB_Java_API_Reference.html)』や『[GridDB C APIリファレンス](http://griddb.github.io/docs-ja/manuals/GridDB_C_API_Reference.html)』を参照ください。 - -  - -#### NewSQL I/Fのタイムアウト処理 - -NewSQL I/Fでは、ログイン(接続)タイムアウト、ネットワーク応答タイムアウト、クエリタイムアウトの3種類のタイムアウトがあります。 - -- ログイン(接続)タイムアウト - - クラスタに初期接続する際のタイムアウトです。初期設定は5分に設定されていますが、APIのDriverManagerで変更可能です。 - -- ネットワーク応答タイムアウト - - クライアントとクラスタ間の応答監視でのタイムアウトです。GridDBの現バージョンでは、タイムアウトは5分であり、タイムアウト時間の変更はできません。 - - クライアントからの通信で15秒間サーバが無応答の場合にはリトライし、5分間応答がない場合タイムアウトとなります。長時間のクエリ処理中にタイムアウトとなることはありません。 - -- クエリタイムアウト - - 実行するクエリ単位にタイムアウト時間を設定できます。初期設定ではタイムアウト時間は設定されていません。(長時間のクエリ実行を許容しています。)長時間クエリの監視をするために、システムの要件に合わせてタイムアウト時間を設定してください。設定は、APIのStatementで設定できます。 - - -## レプリケーション機能 - -クラスタを構成する複数のノード間では、ユーザが設定したレプリケーション数に従って、パーティション単位にデータのレプリカが作成されます。 - -データのレプリカを分散ノード間で保持することで、ノード障害が発生しても、ノンストップで処理を継続できます。クライアントAPIでは、ノードの障害を検出すると、自動的にレプリカを保持する別ノードにアクセスを切り替えます。 - -レプリケーション数のデフォルト値は2で、複数ノードのクラスタ構成で動作した場合、データが2重化されます。 - -コンテナに更新があると、多重化されたパーティションのうちオーナノード(レプリカのマスタを持つノード)が更新されます。 - -その後オーナノードから更新内容がバックアップノードに反映されますが、その方法は2つあります。 - -- 非同期レプリケーション - - 更新処理のタイミングと同期せずにレプリケーションを行います。準同期レプリケーションに対して更新性能に優れますが、可用性では劣ります。 - -- 準同期レプリケーション - - 更新処理のタイミングで同期的にレプリケーションを行いますが、レプリケーション完了の待ち合わせは行いません。可用性の面では優れますが、性能面では劣ります。 - -可用性よりも性能を重視する場合は非同期レプリケーションに、可用性を重視する場合は準同期レプリケーションに設定してください。 - - ->##### メモ ->- レプリケーション数の設定は、クラスタ定義ファイル(gs_cluster.json)の/cluster/replicationNumで設定します。 レプリケーションの同期設定は、クラスタ定義ファイル(gs_cluster.json)の/transaction/replicationModeで設定します。 - - -## アフィニティ機能 - -アフィニティとは、関連のあるデータを結びつける機能です。GridDBには、アフィニティ機能としてデータアフィニティとノードアフィニティの2つの機能があります。 - -### データアフィニティ機能 - -データアフィニティとは、関連の強いデータを同じブロックに配置し、データアクセスの局所化を図ることでメモリヒット率を高めるための機能です。メモリヒット率を高めることで、データアクセス時のメモリミスヒットを減らし、スループットを高めることができます。データアフィニティを利用することで小メモリマシンでもメモリを有効活用して動作させることができます。 - -データアフィニティの設定はコンテナ(テーブル)作成時にプロパティとしてヒント情報を与えます。ヒント情報は、コンテナ(テーブル)名の命名規則と同様に指定できる文字に制限があります。同じヒント情報があるデータをできるだけ同じブロックに配置します。 - -データアフィニティのヒント情報は、データの更新頻度や参照頻度に応じて設定します。 たとえば、分単位、日単位、月単位、年単位にデータをサンプリングや参照する監視システムに対して、以下のような利用方法でシステムのデータが登録・参照・更新される場合のデータ構造を考えます。 - -1. 監視機器から分単位のデータが送信され、監視機器単位に作成したコンテナにデータを保存 -2. 日単位のデータレポート作成のため、一日分のデータの集計を分単位データから行い、日単位コンテナ(テーブル)に保存 -3. 月単位のデータレポート作成のため、日単位コンテナ(テーブル)のデータの集計を行い、月単位コンテナ(テーブル)に保存 -4. 年単位のデータレポート作成のため、月単位コンテナ(テーブル)のデータの集計を行い、年単位コンテナ(テーブル)に保存 -5. カレントの使用量(分単位、日単位)は常に表示パネルに更新表示 - -GridDBでは、コンテナ単位にブロックを占有するのではなく、ブロックには時刻の近いデータが配置されます。したがって、2.の日単位コンテナ(テーブル)を参照し、月単位の集計を行い集計時間をROWKEY(PRIMARY KEY)とする3.のデータと、分単位の1.のデータが同一ブロックに保存される可能性があります。 - -メモリが小さく監視データがすべてメモリに収まらない大容量データで4.の年単位の集計処理を行なう場合、ブロックが分断して配置された3.のデータをメモリに配置するために、常時必要な1.のデータがメモリから追い出されるなど、直近でないデータの読み込みにより監視したいデータがスワップアウトされる状況が発生します。 - -この場合データアフィニティで、分単位、日単位、月単位などコンテナ(テーブル)のアクセス頻度に沿ったヒントを与えることで、アクセス頻度の低いデータと高いデータをデータ配置時に別ブロックに分離します。 - -このように、データアフィニティ機能によってアプリケーションの利用シーンに合わせたデータ配置ができます。 - - -データアフィニティ - -### ノードアフィニティ機能 - -ノードアフィニティとは、関連の強いコンテナやテーブルを同じノードに配置し、データアクセス時のネットワーク負荷を減少させるための機能です。GridDBのTQLではコンテナデータのJOIN操作はありませんが、GridDBのSQLではテーブルのJOIN操作が記述できます。テーブルのJOIN操作時にクラスタの別ノードに配置されたテーブルのネットワークアクセスでの負荷を減少させることができます。また、複数ノードを用いた並列処理ができなくなるため、ターンアラウンド時間の短縮には効果がない反面、ネットワーク負荷の減少によりスループットが上がる可能性があります。 - - -ノードアフィニティによるコンテナ/テーブルの配置 - - - -ノードアフィニティ機能を利用するには、コンテナ(テーブル)作成時にコンテナ(テーブル)名にヒント情報を与えます。ヒント情報が同一のコンテナ(テーブル)は同一のパーティションに配置されます。 以下のように指定します。 - -- コンテナ(テーブル)名@ノードアフィニティヒント情報 - -ノードアフィニティのヒント情報の命名もコンテナ(テーブル)名の命名規則と同様です。 - - - -## トリガ機能 - -トリガ機能とは、コンテナのロウデータへの操作(登録/更新もしくは削除)が行われた際に、Java Messaging Service(JMS)またはRESTを用いて自動的に通知する機能です。 アプリケーションシステムでデータベースの更新をポーリングして監視する必要はなく、事象の通知をうけることができます。 - - -トリガ機能の動作 - - -- 通知方法 - - アプリケーションシステムへの通知方法は、以下の2種類です。 - - Java Messaging Service(JMS) - - REST - -- 操作 - - 操作できる機能は、トリガ設定、トリガ解除、トリガ情報取得の3つです。 - -- 通知タイミング - - ロウの新規作成または更新、削除が行われたタイミングで通知を行ないます。 - - レプリケーション完了までは待ちません。また、自動コミットモードでない場合は、未コミットの状態で通知を行ないます。 - -- 通知内容 - - コンテナ名、操作の種類(ロウの新規作成または更新、削除)を通知します。 - - 通知対象カラムの指定がある場合、操作が行われたロウの指定されたカラムの値も併せて通知します。 - -- エラー発生時の処理 - - 通知時にエラーが発生した場合はイベントログにエラー情報を記録します。再送は行いません。 - -- その他 - - 複数のロウを一括して新規作成・更新する操作を行った場合、個別のロウ単位で通知を行ないます。この操作は、Java APIの場合Container#put(java.util.Collection)もしくはGridStore#multiPut(Map)の呼び出しに相当します。 - - トリガが設定されたコンテナのスキーマを変更した場合、トリガは変更後のコンテナに引き継がれますが、変更後のスキーマに含まれないカラムは通知対象カラム名集合から自動的に削除されます。 - - 同一のコンテナに対しJMS通知とREST通知の両方を設定することは可能ですが、トリガ名は別にする必要があります。 - - ->#### 注意 ->- トリガと更新性能に関する -> - トリガが発火するコンテナ数、および発火するトリガ数に応じて更新性能が低下します。トリガが必要なコンテナだけに最小限のトリガ付与を行うようにしてください。 ->- トリガ通知先サーバの処理性能に関する -> - GridDBの更新処理のスループットに比べて通知先サーバのスループットが極端に低い場合、トリガ処理に失敗し、イベントログにエラーメッセージが記録されることがあります。トリガ設定されているコンテナを高頻度で更新する場合、通知先サーバの性能も確認して調整してください。 - - -## コンテナ(テーブル)の定義変更 - - -コンテナ作成後に、カラム追加などのコンテナ定義の変更を行うことができます。変更可能な操作と使用するAPIは以下の通りです。 - -| 操作 | NoSQL API | JDBC | -|----------------------|-----------|------| -| カラム追加(末尾) | ○ | ○ | -| カラム追加(末尾以外) | ○(※1) | × | -| カラム削除 | ○(※1) | × | - -- (※1)末尾以外へのカラム追加やカラム削除の操作は、内部的にコンテナ再作成の処理を行うため、データ量が多いコンテナは処理に時間がかかります。 -- 上記以外の操作(コンテナ名やカラム名の変更など)はできません。 - -### カラム追加 - -コンテナに新しいカラムを追加します。 - -- NoSQL APIの場合 - - GridStore\#putContainerを用いてカラム追加します。 - - 既存コンテナからコンテナ情報情報ContainerInfoを取得し、コンテナ情報に新しいカラムをセットしてからputContainerを実行します。 - 詳細は『[GridDB Java APIリファレンス](http://griddb.github.io/docs-ja/manuals/GridDB_Java_API_Reference.html)』をご参照ください。 - - - 【プログラム例】 - ```java - // コンテナ情報を取得 - ContainerInfo conInfo = store.getContainerInfo("table1"); - List newColumnList = new ArrayList(); - for ( int i = 0; i < conInfo.getColumnCount(); i++ ){ - newColumnList.add(conInfo.getColumnInfo(i)); - } - // 新しいカラムを末尾にセット - newColumnList.add(new ColumnInfo("NewColumn", GSType.INTEGER)); - conInfo.setColumnInfoList(newColumnList); - - // カラム追加 - store.putCollection("table1", conInfo, true); - ``` - -- JDBC - - SQLのALTER TABLE構文を用いてカラム追加します。 - - SQLの場合は、末尾へのカラム追加の操作のみできます。詳細は『[GridDB SQLリファレンス](../GridDB_SQL_Reference/toc.md)』をご参照ください。 - -カラムを追加した後に既存ロウを取得した場合、追加カラムの値はカラムのデータ型ごとに定義されている「空の値」が返ります。 -空の値の詳細は『[GridDB Java APIリファレンス](http://griddb.github.io/docs-ja/manuals/GridDB_Java_API_Reference.html)』のContainer<K,R>をご参照ください。 -(V4.1では、制限事項「カラム追加後に既存のロウを参照した時、NOT NULL制約が付いていないカラムはNULLが返る」があります。) - - -カラム追加の例 - - -### カラム削除 - -コンテナのカラムを削除します。NoSQL APIのみで操作できます。 - -- NoSQL API - - GridStore\#putContainerを用いてカラム削除します。既存コンテナからコンテナ情報ContainerInfoを取得し、削除対象のカラム情報を除いてからputContainerを実行します。 - 詳細は『[GridDB Java APIリファレンス](http://griddb.github.io/docs-ja/manuals/GridDB_Java_API_Reference.html)』をご参照ください。 - - -## データベース圧縮/解放機能 - - - -### データブロック圧縮 - -GridDBは、メモリ上のデータをデータベースファイルに書き込むことで、メモリサイズに依存しない大容量化を実現できますが、ストレージのコストは増加します。データブロック圧縮機能は、データベースファイル(チェックポイントファイル)を圧縮することで、データ量に伴って増加するストレージコストの削減を支援する機能です。 特に、HDDと比べ容量単価が高いフラッシュメモリをより効率的に活用できます。 - -**圧縮方法** - -メモリ上のデータをデータベースファイル(チェックポイントファイル)に書き出す際に、GridDBの書き出し単位であるブロック毎に圧縮操作を行います。圧縮により空いた領域は、Linuxのファイルブロック割り当て解除処理を行うため、ディスク使用量を削減できます。 - -**サポート環境** - -データブロック圧縮はLinuxの機能を利用しているため、Linuxカーネルバージョンとファイルシステムに依存します。データブロック圧縮のサポート環境は以下です。 -- OS: RHEL / CentOS 7.2以上 -- ファイルシステム:XFS -- ファイルシステムのブロックサイズ:4KB - - ※上記以外の環境でデータブロック圧縮を有効にした場合、GridDBノードの起動に失敗します。 - -**設定方法** - -GridDBノードごとに圧縮機能を設定します。 - -- ノード定義ファイル(gs_node.json)の/datastore/storeCompressionModeに以下の文字列を設定します。 - - 圧縮機能を無効にする場合:NO_COMPRESSION(既定値) - - 圧縮機能を有効にする場合:COMPRESSION -- GridDBノード起動時(再起動時)に設定を適用します。 -- GridDBノードを再起動することで、圧縮機能の動作を有効/無効に変更することができます。 - - ->#### 注意 ->- データブロック圧縮の対象は、チェックポイントファイルのみです。トランザクションログファイル、バックアップファイル、およびGridDBのメモリ上のデータは圧縮しません。 ->- データブロック圧縮により、チェックポイントファイルはスパースファイルになります。 ->- 圧縮機能を有効に変更しても、すでにチェックポイントファイルに書き込み済みのデータは圧縮できません。 - - -### データブロック未使用領域解放 - -データブロック未使用領域解放機能は、データベースファイル(チェックポイントファイル)の使用されていないブロック領域に対して、Linuxのファイルブロック割り当て解除処理を行い、データベースファイルのサイズ(実ディスク割当量)を縮小することができる機能です。 - -以下のようなケースにおいて、ディスク使用量を削減したい場合にご利用ください。 - -- データを大量に削除した場合 -- 今後データ更新の予定が無く、DBを長期保存するような場合 -- データ更新時にディスクフルになり、回避する暫定手段としてDBサイズ縮小が必要な場合 - -未使用領域を解放する処理や、本機能のサポート環境、実行方法について説明します。 - -**解放処理** - -GridDBノード起動時に、データベースファイル(チェックポイントファイル)の未使用領域を解放します。 解放された領域は、新たなデータ更新が発生しない限りディスク領域は割り当てられません。 - -**サポート環境** - -サポート環境は、[データブロック圧縮](#block_data_compression)機能と同じです。 - -**実行方法** - -GridDBノード起動時に、gs_startnodeコマンドでデータブロック未使用領域解放オプション(--releaseUnusedFileBlocks)を指定します。 - -データベースファイル(チェックポイントファイル)の未使用領域サイズとディスク割当サイズは、下記の方法で確認してください。 -- gs_statコマンドで表示される項目 - - storeTotalUse - - ノードがチェックポイントファイルで保有する全データ容量(バイト) - - - checkpointFileAllocateSize - - チェックポイントファイルに割り当てられたブロックの総サイズ(バイト) - -データブロック未使用領域解放機能の実施目安としては、データブロック未使用領域が多い(上記の値の比較で、storeTotalUse ≪ checkpointFileAllocateSize) 場合です。 - - ->#### 注意 ->- 本機能の対象は、チェックポイントファイルのみです。トランザクションログファイル、バックアップファイルの未使用領域は解放しません。 ->- 本機能を実施すると、チェックポイントファイルはスパースファイルになります。 ->- チェックポイントファイルのディスク使用量は削減できますが、スパースファイルになることでフラグメントが発生しやすくなり、性能面ではデメリットになる可能性があります。 ->- 起動時に領域解放処理が行われるため、通常の起動処理より時間がかかる場合があります。 diff --git a/manuals/GridDB_FeaturesReference/img/arc_DataPieces.png b/manuals/GridDB_FeaturesReference/img/arc_DataPieces.png deleted file mode 100644 index 0a97540..0000000 Binary files a/manuals/GridDB_FeaturesReference/img/arc_DataPieces.png and /dev/null differ diff --git a/manuals/GridDB_FeaturesReference/img/arc_DatabaseFile.png b/manuals/GridDB_FeaturesReference/img/arc_DatabaseFile.png deleted file mode 100644 index ec6e283..0000000 Binary files a/manuals/GridDB_FeaturesReference/img/arc_DatabaseFile.png and /dev/null differ diff --git a/manuals/GridDB_FeaturesReference/img/func_checkpnt.png b/manuals/GridDB_FeaturesReference/img/func_checkpnt.png deleted file mode 100644 index d114299..0000000 Binary files a/manuals/GridDB_FeaturesReference/img/func_checkpnt.png and /dev/null differ diff --git a/manuals/GridDB_FeaturesReference/introduction.md b/manuals/GridDB_FeaturesReference/introduction.md deleted file mode 100644 index 471bfc2..0000000 --- a/manuals/GridDB_FeaturesReference/introduction.md +++ /dev/null @@ -1,62 +0,0 @@ -# はじめに - -## 本書の目的と構成 - -本書は、GridDBを用いたシステム設計・開発を行う設計・開発者の方を対象に、Community Edition の機能について説明します。 - -なお、本書は、以下のような構成となっています。 - -- GridDBの仕組み - - GridDBのクラスタ動作の仕組みについて説明します。 -- GridDBのデータモデル - - GridDBのデータモデルについて説明します。 -- GridDBが提供する機能 - - GridDBが提供するデータ管理の機能について説明します。 -- パラメータ - - GridDBの動作を制御するパラメータについて説明します。 - - ->#### 注意 ->- GridDB Community Editionではシングル構成のみであり、複数ノードによるクラスタ構成は Standard Edition および Advanced Editionのみ限定となっています。 ->- OSユーザ(gsadm)はパッケージを使ってGridDBをインストールした場合に作成されます。 - -## 用語一覧 - -GridDBで利用する用語を一覧で解説します。 - -| 用語 | 意味 | -|--------------------------------|------------------------------------------------------------------------| -| ノード | GridDBでデータ管理を行う個々のサーバプロセスを指します。 | -| クラスタ | 一体となってデータ管理を行う、1つ、もしくは複数のノードの集合を指します。 | -| マスタノード | クラスタ管理処理を行うノードです。 | -| フォロワノード | クラスタに参加している、マスタノード以外のノードです。 | -| 構成ノード数 | GridDBクラスタを構成するノード数を指定します。GridDBが初回に起動する際に、クラスタが成立する閾値として用いられます。(構成ノード数のノードがクラスタに参加することでクラスタサービスが開始されます。) | -| 有効ノード数 | GridDBクラスタを構成するノードの内、クラスタに組み込まれた稼働中のノードの数です。 | -| ブロック | ブロックとは、ディスクへのデータ永続化処理(以降、チェックポイントと呼びます)のデータ単位であり、GridDBの物理的なデータ管理の最小単位です。ブロックには複数のコンテナのデータが配置されます。ブロックサイズは、GridDBの初期起動前に定義ファイル(クラスタ定義ファイル)で設定します。 | -| パーティション | コンテナを配置するデータ管理の単位です。クラスタ間でのデータ配置の最小単位であり、ノード間の負荷バランスを調整するため(リバランス)や、障害発生時のデータ多重化(レプリカ)管理のためのデータ移動や複製の単位です。 | -| パーティショングループ | 複数のパーティションをまとめたグループであり、データをディスクに永続化する際のファイルシステム上のデータファイルに相当します。1つのパーティショングループに1つのチェックポイントファイルが対応します。パーティショングループは、ノード定義ファイルの並列度(/dataStore/concurrency)の数だけ作成されます。 | -| ロウ | コンテナ(テーブル)に登録される1行のデータを指します。コンテナ(テーブル)には複数のロウが登録されます。ロウは、コンテナ(テーブル)のスキーマ定義に対応したカラムの値から構成されます。 | -| コンテナ(テーブル) | ロウの集合を管理する入れ物です。NoSQL I/Fで操作する場合はコンテナ、NewSQL I/Fで操作する場合はテーブルと呼ぶ場合があります。呼び方が異なるだけで、実体は同じオブジェクトです。コンテナには、コレクションと時系列コンテナの2種類のデータタイプが存在します。 | -| コレクション(テーブル) | 一般の型のキーを持つロウを管理するコンテナ(テーブル)の1種です。 | -| 時系列コンテナ(時系列テーブル) | 時刻型のキーを持つロウを管理するコンテナ(テーブル)の1種です。時系列のデータを扱う専用の機能を持ちます。 | -| データベースファイル |クラスタを構成するノードの保有するデータをディスクやSSDに書き込み、永続化したファイル群です。データベースファイルは、定期的にメモリ上のデータベースが書き込まれるチェックポイントファイルと、データ更新の都度保存されるトランザクションログファイルを総称します。 | -| チェックポイントファイル | パーティショングループがディスクに書き込まれたファイルです。 ノード定義ファイルのサイクル(/checkpoint/checkpointInterval)でメモリ上の更新情報が反映されます。 | -| トランザクションログファイル | トランザクションの更新情報がログとして逐次保存されるファイルです。 | -| LSN(Log Sequence Number) | パーティションごとに割り当てられる、トランザクションでの更新時の更新ログシーケンス番号です。クラスタ構成のマスタノードは、各ノードが保持している全パーティションのLSNのうちの最大数(MAXLSN)を保持しています。 | -| レプリカ | 複数のノードにパーティションを多重化配置することを指します。レプリカには更新されるマスタデータであるオーナと参照に利用されるバックアップがあります。 | -| オーナノード | パーティション内のコンテナに対して更新操作ができるノードです。複製されたコンテナのうち、マスタとなるコンテナを記録しているノードです。 | -| バックアップノード | 複製されたコンテナのうち、バックアップのためのデータを記録しているノードです。 | -| 定義ファイル | クラスタを構成する際のパラメータファイル(gs_cluster.json:以降クラスタ定義ファイルと呼ぶ)とクラスタ内でのノードの動作やリソースを設定するパラメータファイル(gs_node.json:以降ノード定義ファイルと呼ぶ)の2つがあります。また、GridDBの管理ユーザのユーザ定義ファイルもあります。 | -| イベントログファイル | GridDBサーバのイベントログが保管されるファイルです。エラーや警告などのメッセージが含まれます。 | -| OSユーザ(gsadm) | GridDBの運用機能を実行できる権限を持つユーザです。GridDBインストール時にgsadmというOSのユーザが作成されます。 | -| 管理ユーザ | GridDBの運用操作を行うために用意されたGridDBのユーザです。 | -| 一般ユーザ | アプリケーションシステムで利用するユーザです。 | -| ユーザ定義ファイル | 管理ユーザが登録されるファイルです。初期インストールではsystem,adminの2つの管理ユーザが登録されています。 | -| クラスタデータベース | GridDBのクラスタシステムでアクセスできるデータベース全体を総称します。 | -| データベース | クラスタデータベースに作成される、論理的なデータ管理の単位です。クラスタデータベース内にデフォルトではpublicというデータベースが作成されています。新規にデータベースを作成し、一般ユーザに利用権限をあたえることで、ユーザ毎のデータ分離が実現できます。 | -| フェイルオーバ― | 稼働中のクラスタに障害が発生した際に、バックアップノードがその機能を自動的に引き継ぎ、処理を続行する仕組みです。 | -| クライアントフェイルオーバー | 稼働中のクラスタに障害が発生した際、クライアント側のAPIで障害時のリトライ処理としてバックアップノードに自動的に接続し直し、処理を続行する仕組みです。 | -| テーブルパーティショニング | データ登録数が多い巨大なテーブルのデータを複数のノードに分散配置することで、複数ノードのメモリを有効に利用し、かつ複数ノードのプロセッサの並列実行を可能とし、巨大テーブルのアクセスを高速化するための機能です。 | -| データパーティション | テーブルパーティショニングによって分割されたデータを格納する入れ物を総称します。テーブルパーティショニングされた1つのテーブルに対して、データパーティションは複数作成されます。データパーティションは、通常のコンテナと同様に各ノードに分散配置されます。データパーティションの数や格納するデータの範囲は、テーブルパーティショニングの種類(ハッシュ、インターバル、インターバル-ハッシュ)によって異なります。 | -| データアフィニティ | 関連の強いコンテナのデータを同じブロックに配置し、データアクセスの局所化を図ることでメモリヒット率を高めるための機能です。 | -| ノードアフィニティ | 関連の強いコンテナを同じノードに配置し、データアクセス時のネットワーク負荷を減少させるための機能です。 | diff --git a/manuals/GridDB_FeaturesReference/operating-function.md b/manuals/GridDB_FeaturesReference/operating-function.md deleted file mode 100644 index aa59e48..0000000 --- a/manuals/GridDB_FeaturesReference/operating-function.md +++ /dev/null @@ -1,334 +0,0 @@ -# 運用機能 - - -## ユーザ管理機能 - -GridDBのユーザには、インストール時に作成されるOSユーザとGridDBの運用/開発を行なうGridDBのユーザ(以降GridDBユーザと呼ぶ)の2種類があります。 - -### OSユーザ - -OSユーザは、GridDBの運用機能を実行できる権限を持つユーザであり、GridDBインストール時にgsadmというユーザが作成されます。以降このOSユーザをgsadmと呼びます。 - -GridDBのリソースはすべて、gsadmの所有物となります。また、GridDBの運用操作のコマンド実行はすべてgsadmで実行します。 - -運用操作では、GridDBサーバに接続し運用操作を実行できる権限を持ったユーザか否かの認証を行います。この認証は、GridDBユーザで行います。 - -### GridDBユーザ  - -- 管理ユーザと一般ユーザ - - GridDBのユーザには、管理ユーザと一般ユーザの2種類があり、利用できる機能に違いがあります。GridDBインストール直後には、デフォルトの管理ユーザとして、system、adminの2ユーザが登録されています。 - - 管理ユーザは、GridDBの運用操作を行うために用意されたユーザであり、一般ユーザはアプリケーションシステムで利用するユーザです。 - - セキュリティの面から、管理ユーザと一般ユーザは利用用途に応じて使い分ける必要があります。 - -- ユーザの作成 - - 管理ユーザは、gsadmが登録/削除することができ、その情報は、GridDBのリソースとして定義ファイルディレクトリのpasswordファイルに保存されます。管理ユーザは、OSのローカルファイルに保存/管理されるため、クラスタを構成する全ノードで同一の設定となるように、配置しておく必要があります。また、管理ユーザは、GridDBサーバ起動前に設定しておく必要があります。起動後に登録しても有効にはなりません。 - - 一般ユーザは、GridDBのクラスタ運用開始後に管理ユーザが作成します。クラスタサービス開始前に一般ユーザの登録はできません。一般ユーザはGridDBのクラスタ構成後に作成し、GridDBデータベース内の管理情報として保持するため、クラスタに対してNewSQLインタフェースを用いて登録するのみです。 - - 管理ユーザについては、クラスタ間での自動的な情報伝達は行われないため、定義ファイルのマスタ管理ノードを決めマスタ管理ノードからクラスタを構成する全ノードに配布管理するなどの運用管理を行い、全ノードで同じ設定とする必要があります。 - - - GridDBのユーザ - - - -- ユーザ作成時の規則 - - ユーザ名には命名規則があります。 - - 管理ユーザ:『gs\#』で始まるユーザを指定します。『gs\#』以降は英数字およびアンダースコアのみで構成します。大文字と小文字は同一として扱うため、gs\#managerとgs\#MANAGERは同時には登録できません。 - - - 一般ユーザ:英数字およびアンダースコアで指定します。ただし、先頭文字に数字は指定できません。また、大文字と小文字は同一として扱うため、userとUSERは同時には登録できません。管理ユーザのデフォルトユーザである、system,adminは作成できません。 - - - パスワード:指定できる文字に制限はありません。 - - なお、ユーザ名およびパスワードに指定できる文字列は、それぞれ64文字です。 - -### 利用できる機能 - -管理ユーザができる運用操作と一般ユーザが利用できる操作を以下に示します。運用操作のうちGridDBユーザを用いずに、gsadmで実行可能なコマンドは◎印で明記します。 - -| 操作 | 操作詳細 | 利用する運用コマンド、インタフェース | gsadm | 管理ユーザ | 一般ユーザ | -|------------------------|-------------------------------------|--------------------------------------------|-------|------------|-----------------------| -| ノード操作 | ノードの起動 | gs_startnode | | ○ | × | -| | ノードの停止 | gs_stopnode | | ○ | × | -| クラスタ操作 | クラスタの構築 | gs_joincluster | | ○ | × | -| | クラスタの停止 | gs_stopcluster | | ○ | × | -| ユーザ管理 | 管理ユーザ登録 | gs_adduser | ◎ | × | × | -| | 管理ユーザの削除 | gs_deluser | ◎ | × | × | -| | 管理ユーザのパスワード変更 | gs_passwd | ◎ | × | × | -| | 一般ユーザの作成 | NewSQL I/F | | ○ | × | -| | 一般ユーザの削除 | NewSQL I/F | | ○ | × | -| | 一般ユーザのパスワード変更 | NewSQL I/F | | ○ | ○:本人のみ | -| データベース管理 | データベースの作成・削除 | NewSQL I/F | | ○ | × | -| | データベースへのユーザ割り当て/解除 | NewSQL I/F | | ○ | × | -| データ操作 | コンテナやテーブルの作成・削除 | NoSQL/NewSQL I/F | | ○ | ○:本人のDB内で更新操作が可能な場合のみ | -| | コンテナやテーブルへのデータ登録 | NoSQL/NewSQL I/F | | ○ | ○:本人のDB内で更新操作が可能な場合のみ | -| | コンテナやテーブルの検索 | NoSQL/NewSQL I/F | | ○ | ○:本人のDB内のみ | -| | コンテナやテーブルへの索引操作 | NoSQL/NewSQL I/F | | ○ | ○:本人のDB内で更新操作が可能な場合のみ | -| システムステータス管理 | システム情報の取得 | gs_stat | | ○ | × | - - -### データベースとユーザ - -GridDBのクラスタデータベース(以降クラスタデータベースと呼びます)を利用ユーザ単位にアクセスを分離することができます。分離する単位を **データベース** と呼びます。 データベースは、クラスタデータベースの初期状態では以下のデータベースがあります。 - -- public - - 管理ユーザ、一般ユーザのすべてがアクセスできるデータベースです。 - - 接続先データベースを指定せずに接続した場合はこのデータベースが利用されます。 - -データベースはクラスタデータベースに複数作成することができます。データベースの作成、削除、ユーザへの割り当ては管理ユーザが行います。 - -データベース作成時の規則は以下に示すとおりです。 - -- クラスタデータベースに作成できるユーザ数、データベース数の上限は各々128個までです。 -- データベース名に指定可能な文字列は、英数字およびアンダースコア\_、ハイフン-、ドット.、スラッシュ/、イコール=です。ただし、先頭文字に数字は指定できません。 -- データベース名に指定できる文字列は、64文字です。 -- データベース名命名時の大文字・小文字は保持されますが、大文字小文字同一視した場合に同一名となるデータベースは作成できません。例えば、databaseとDATABASEは同時には登録できません。 -- デフォルトデータベースである「public」および「information_schema」は指定できません。 - -データベースへ一般ユーザを割り当てる際、権限を指定します。権限は以下の種類があります。 -- ALL - - コンテナ作成やロウ登録、検索、索引作成などコンテナに関するすべての操作が可能 -- READ - - 検索の操作のみ可能 - -データベースにアクセスできるのは割り当てた一般ユーザと管理ユーザのみです。管理ユーザはすべてのデータベースにアクセスすることができます。 データベースへ一般ユーザを割り当てる際、以下規則があります。 -- 1データベースに複数の一般ユーザを割り当てることができる -- データベースに一般ユーザを割り当てる際、指定できる権限は1種類のみ -- 1データベースに複数の一般ユーザを割り当てる際、ユーザごとに異なる権限を指定することができる -- 1ユーザには複数のデータベースを割り当てることができる - - -データベースとユーザ - -## 障害処理機能 - -GridDBでは、クラスタを構成する各ノードでデータのレプリカを保持するため、単一点故障に対してのリカバリは不要です。 GridDBでは障害発生時には以下のような動作を行ないます。 - - -1. 障害発生時、障害ノードはクラスタから自動的に離脱する。 -2. 離脱した障害ノードに代わり、バックアップノードへのフェイルオーバーが行われる。 -3. 障害によりノード台数が減少するため、自律的にパーティションの再配置を行う(レプリカも配置する)。 - -障害の回復したノードはオンラインでクラスタ運用に組み込むことができます。障害によりUNSTABLEな状態となったクラスタには、gs_joinclusterコマンドを用いてノードを組み込めます。ノード組込みにより、自律的にパーティションの再配置が行われノードのデータ、負荷バランスが調整されます。 - -このように、単一点故障の場合にはリカバリのための事前の準備は不要ですが、シングル構成で運用する場合や、クラスタ構成においても複数の障害が重なった場合にはリカバリの操作が必要です。 - -クラウド環境で稼働させる場合、物理的なディスクの障害やプロセッサ障害で意図せずともクラスタを構成する複数ノードの障害、複数ノードでのデータベース障害といった多重障害となるケースがあります。 - -### 障害の種類と処置 - -発生する障害と対処方法の概要を以下の表に示します。 - -ノード障害とは、プロセッサ障害やGridDBのサーバプロセスのエラーによりノードが停止した状態、データベース障害とは、ディスクに配置したデータベースへのアクセスでエラーが発生した状態を指します。 - -| GridDBの構成 | 障害の種類 | 動作と処置 | -|--------------|----------------------|----------------------------------------------------------------------| -| シングル構成 | ノード障害 | アプリケーションからアクセスはできなくなりますが、ノードの障害要因を取り除き再起動するだけで、処理が完了したトランザクションのデータはリカバリされます。ノード障害が長期化した際は、別ノードでのリカバリを検討します。 | -| シングル構成 | データベース障害 | アプリケーションでエラーを検出するため、バックアップしたデータからデータベースファイルを復旧します。データはバックアップ時点に復旧されます。 | -| クラスタ構成 | 単一ノード障害 | アプリケーションにはエラーが隠ぺいされ、レプリカのあるノードで処理が継続できます。障害が発生したノードでのリカバリ操作は不要です。 | -| クラスタ構成 | 複数ノード障害 | レプリカのオーナ/バックアップの双方のパーティションが障害対象ノードに存在する場合、対象パーティションにアクセスができませんが、クラスタは正常に稼働します。ノードの障害要因を取り除き再起動するだけで、処理が完了したトランザクションのデータはリカバリされます。ノードの障害が長期化する場合は別ノードでのリカバリを検討します。 | -| クラスタ構成 | 単一データベース障害 | 単一ノードでのデータベース障害は、クラスタを構成する他のノードでデータアクセスが継続するため、異なるディスクにデータベース配置先を変更し、ノードを再起動するだけでリカバリされます。 | -| クラスタ構成 | 複数データベース障害 | レプリカで復旧できないパーティションは最新のバックアップデータからバックアップ採取時点にリカバリさせる必要があります。 | - - -### クライアントフェイルオーバー - -クラスタ構成で運用している際にノード障害が発生した場合、障害ノードに配置されているパーティション(コンテナ)にはアクセスできません。この時、クライアントAPI内で、自動的にバックアップノードに接続し直して処理を継続するクライアントフェイルオーバー機能が動作します。クライアントAPI内で自動的に障害対策を行うため、アプリケーション開発者はノードのエラー処理を意識する必要がありません。 - -しかし、複数のノードの同時障害やネットワーク障害などにより、アプリケーション操作対象にアクセスできずエラーになることもあります。 - -エラー発生後のリカバリではアクセス対象のデータに応じて以下の点を考慮する必要があります。 - -- 時系列コンテナやロウキーが定義されているコレクションの場合、失敗した操作またはトランザクションを再実行すればリカバリできます。 - -- ロウキーが定義されていないコレクションの場合データベースの内容チェックをした上で、再実行する必要があります。 - - ->##### メモ ->- アプリケーションでのエラー処理を単純化するためにコレクションを使う場合は、ロウキーの定義を推奨します。 単一のカラム値での一意化ができない場合で、複数のカラム値で一意化できる場合は、複数カラムの値を連結した値を持つカラムをロウキーにし、データを一意に識別できるようにすることを推奨します。 - - -## イベントログ機能 - -イベントログは、GridDBノード内部で発生した例外などのイベント情報に関するメッセージやシステム稼働情報を記録するログです。 - -イベントログは、環境変数GS_LOGで示すディレクトリにgridstore-%Y%m%d-n.logというファイル名で作成されます(例: gridstore-20150328-5.log)。ファイルは以下のタイミングで切り替わります。 - -- 日付が変わって一番最初にログが書かれるとき -- ノードを再起動したとき -- 1ファイルのサイズが1MBを超えたとき - -イベントログファイルの上限数の初期値は30です。30ファイルを超えると古いファイルから削除されます。ファイル数の上限値はノード定義ファイルで変更できます。 - -イベントログの出力形式は以下の内容です。 - -- (日付時刻) (ホスト名) (スレッド番号) (ログレベル) (カテゴリ) \[(エラー・トレース番号):(エラー・トレース番号名)\](メッセージ) <(base64詳細情報: サポートサービスにて問題点分析用の詳細情報)> - - エラー・トレース番号名で発生した事象の概要が判ります。 - -``` example - -2014-11-12T10:35:29.746+0900 TSOL1234 8456 ERROR TRANSACTION_SERVICE [10008:TXN_CLUSTER_NOT_SERVICING] (nd={clientId=2, address=127.0.0.1:52719}, pId=0, eventType=CONNECT, stmtId=1) - -``` - -## 稼働状況の確認機能 - -### 性能・統計情報 - -GridDBの性能・統計情報は、運用コマンドのgs_statを利用して確認できます。gs_statはクラスタで共通の情報とノード独自の性能情報・統計情報を表示します。 - -gs_statコマンドでの出力のうち、performance構造が、性能・統計情報に関連する項目です。 - -出力例を以下に示します。出力される内容はバージョンによって異なります。 - -``` example --bash-4.1$ gs_stat -u admin/admin -s 192.168.0.1:10040 -{ - : - "performance": { - "batchFree": 0, - "checkpointFileSize": 65536, - "checkpointFileUsageRate": 0, - "checkpointMemory": 2031616, - "checkpointMemoryLimit": 1073741824, - "checkpointWriteSize": 0, - "checkpointWriteTime": 0, - "currentTime": 1428024628904, - "numConnection": 0, - "numTxn": 0, - "peakProcessMemory": 42270720, - "processMemory": 42270720, - "recoveryReadSize": 65536, - "recoveryReadTime": 0, - "sqlStoreSwapRead": 0, - "sqlStoreSwapReadSize": 0, - "sqlStoreSwapReadTime": 0, - "sqlStoreSwapWrite": 0, - "sqlStoreSwapWriteSize": 0, - "sqlStoreSwapWriteTime": 0, - "storeDetail": { - "batchFreeMapData": { - "storeMemory": 0, - "storeUse": 0, - "swapRead": 0, - "swapWrite": 0 - }, - "batchFreeRowData": { - "storeMemory": 0, - "storeUse": 0, - "swapRead": 0, - "swapWrite": 0 - }, - "mapData": { - "storeMemory": 0, - "storeUse": 0, - "swapRead": 0, - "swapWrite": 0 - }, - "metaData": { - "storeMemory": 0, - "storeUse": 0, - "swapRead": 0, - "swapWrite": 0 - }, - "rowData": { - "storeMemory": 0, - "storeUse": 0, - "swapRead": 0, - "swapWrite": 0 - } - }, - "storeMemory": 0, - "storeMemoryLimit": 1073741824, - "storeTotalUse": 0, - "swapRead": 0, - "swapReadSize": 0, - "swapReadTime": 0, - "swapWrite": 0, - "swapWriteSize": 0, - "swapWriteTime": 0, - "syncReadSize": 0, - "syncReadTime": 0, - "totalLockConflictCount": 0, - "totalReadOperation": 0, - "totalRowRead": 0, - "totalRowWrite": 0, - "totalWriteOperation": 0 - }, - : -} -``` - -性能・統計情報に関連する情報を説明します。storeDetail構造は、内部のデバッグ情報のため説明は省きます。 -- 種別は以下を示します - - CC:クラスタ全体の現在の値 - - c:指定ノードの現在の値 - - CS:クラスタ全体のサービス開始後の累積値 - - s:ノード全体のサービス開始後の累積値 - - CP:クラスタ全体のサービス開始後のピーク値 - - p:ノード全体のサービス開始後のピーク値 -- 監視すべき事象、数値を確認し、運用を継続するにあたり検討すべき項目を示します。 - -| 出力パラメータ | 種別 | 説明 | 監視すべき事象 | -|----------------------------|------|-----------------------------------------------------|-----| -| checkpointFileSize | c | チェックポイントファイルサイズ(バイト) | | -| checkpointFileUsageRate | c | チェックポイントファイル利用率 | | -| checkpointMemory | c | チェックポイント用checkpointメモリ量(バイト) | | -| checkpointMemoryLimit | c | チェックポイント用checkpointMemoryLimit設定(バイト) | | -| checkpointWriteSize | s | チェックポイント処理CPファイルライトサイズ(バイト) | | -| checkpointWriteTime | s | チェックポイント処理CPファイルライト時間(ミリ秒) | | -| checkpointFileAllocateSize | c | チェックポイントファイルに割り当てられたブロックの総サイズ(バイト) | | -| currentTime | c | 現在時刻 | | -| numConnection | c | 現在のコネクション数。トランザクション処理で使用している接続数であり、クラスタ処理で使用している接続数は含まれない。クライアントの数+保有するパーティション*レプリカ数の値となる。 | ログの監視でコネクション不足が発生している場合はノード構成のconnectionLimitの値を見直します。| -| numSession | c | 現在のセッション数 | | -| numTxn | c | 現在のトランザクション数 | | -| peakProcessMemory | p | プロセス最大使用メモリ量(バイト) storememoryの値を含め、GridDBサーバの利用したメモリのピーク値 | peakProcessMemory、processMemoryがノードの実装メモリより大きくOSのスワップが発生している場合、メモリの追加や一時的にstorememoryLimitの値を下げるなどの検討が必要 | -| processMemory | c | プロセス使用メモリ量(バイト) | | -| recoveryReadSize | s | リカバリ処理でチェックポイントファイルを読み込んだサイズ(バイト) | | -| recoveryReadTime | s | リカバリ処理でチェックポイントファイルを読み込んだ時間(ミリ秒) | | -| sqlStoreSwapRead | s | SQLストアスワップ処理のファイルからの読み込み回数 | | -| sqlStoreSwapReadSize | s | SQLストアスワップ処理のファイルからの読み込みサイズ(バイト) | | -| sqlStoreSwapReadTime | s | SQLストアスワップ処理のファイルからの読み込み時間(ミリ秒) | | -| sqlStoreSwapWrite | s | SQLストアスワップ処理のファイルへの書き込み回数 | | -| sqlStoreSwapWriteSize | s | SQLストアスワップ処理のファイルへの書き込みサイズ(バイト) | | -| sqlStoreSwapWriteTime | s | SQLストアスワップ処理のファイルへの書き込み時間(ミリ秒) | | -| storeMemory | c | インメモリデータベースでの使用メモリ量(バイト) | | -| storeMemoryLimit | c | インメモリデータベースでの使用メモリ量制限(バイト) | | -| storeTotalUse | c | データベースファイル内のデータ容量を含めたノードが保有する全データ容量(バイト) | | -| swapRead | s | スワップ処理のファイルからの読み込み回数 | | -| swapReadSize | s | スワップ処理のファイルからの読み込みサイズ(バイト) | | -| swapReadTime | s | スワップ処理のファイルからの読み込み時間(ミリ秒) | | -| swapWrite | s | スワップ処理のファイルへの書き込み回数 | | -| swapWriteSize | s | スワップ処理のファイルへの書き込みサイズ(バイト) | | -| swapWriteTime | s | スワップ処理のファイルへの書き込み時間(ミリ秒) | | -| syncReadSize | s | 同期処理CPファイルからの読み込みサイズ(バイト) | | -| syncReadTime | s | 同期処理CPファイルからの読み込み時間(ミリ秒) | | -| totalLockConflictCount | s | ロウロック競合発生回数 | | -| totalReadOperation | s | 検索処理回数 | | -| totalRowRead | s | ロウ読み出し回数 | | -| totalRowWrite | s | ロウ書き込み回数 | | -| totalWriteOperation | s | 登録更新処理回数 | | - - -## 運用コマンド - - -GridDBの運用動作を指示するコマンドには以下があります。GridDBの運用コマンドはすべてgs_で始まります。 - -| 種類 | コマンド | 機能 | -|----------------------|--------------------|---------------------| -| ノード操作 | gs_startnode | ノードの起動 | -| | gs_stopnode | ノードの停止 | -| クラスタ操作 | gs_joincluster | 指定ノードをクラスタ構成へ参加させる。クラスタを構成する際に使用。 | -| | gs_leavecluster | クラスタから特定ノードを切り離す。メンテナンス等で特定ノードを切り離す際に利用する。切り離したノードに配置されているパーティションは再配置(リバランス)される | -| | gs_stopcluster | クラスタを構成する全ノードをクラスタから切り離す。全ノードを停止する際に利用する。ノード切り離しに伴うパーティションのリバランスは発生しない | -| | gs_stat | ノードやクラスタの稼働情報や性能情報を情報取得 | -| 管理ユーザ操作 | gs_adduser | 管理ユーザの登録 | -| | gs_deluser | 管理ユーザの削除 | -| | gs_passwd | 管理ユーザのパスワードの変更 | diff --git a/manuals/GridDB_FeaturesReference/parameter.md b/manuals/GridDB_FeaturesReference/parameter.md deleted file mode 100644 index 12d0a0e..0000000 --- a/manuals/GridDB_FeaturesReference/parameter.md +++ /dev/null @@ -1,196 +0,0 @@ -# パラメータ - - -GridDBの動作を制御するパラメータについて説明します。GridDBのパラメータにはノードの設定情報や利用できるリソースなどの設定を行うノード定義ファイルと、クラスタの動作設定を行うクラスタ定義ファイルがあります。 定義ファイルの項目名と初期状態での設定値とパラメータの意味を説明します。 - -設定値の単位は以下のように指定します。 - -- バイトサイズ: TB、GB、MB、KB、B、T、G、M、K、またはこれらの小文字表記で指定可能。特に記載のない限り、単位の省略はできません。 - -- 時間: h、min、s、msで指定可能。特に記載のない限り、単位の省略はできません。 - -  - -## クラスタ定義ファイル(gs_cluster.json) - - -クラスタ定義ファイルは、クラスタを構成する全ノードで同一の設定にしておく必要があります。partitionNum,storeBlockSizeパラメータはデータベースの構造を決める重要なパラメータのため、GridDBの初期起動後は値の変更ができません。 - -クラスタ定義ファイルの各設定項目の意味を以下に説明します。 - -初期状態で含まれていない項目も項目名を追加することでシステムに認識させることができます。 変更の欄ではパラメータの変更可否と変更タイミングを示します -- 変更不可 :ノードを一度起動したのちは変更はできません。変更したい場合データベースを初期化する必要があります。 -- 起動   :クラスタを構成する全ノードを再起動することで、変更できます。 -- オンライン:オンライン稼働中にパラメータを変更できます。ただし、変更内容は永続化されないため、定義ファイルの内容を手動で変更する必要があります。 - -  - -| GridDBの構成 | 初期値 | パラメータの意味と制限値 | 変更 | -|----------------------------------------------|-----------|--------------------------------------------------|----------| -| /notificationAddress | 239.0.0.1 | マルチキャストアドレスの標準設定です。cluster,transactionの同じ名前のパラメータが省略された場合、本設定が有効になります。異なる値が設定されている場合、個別設定のアドレスが有効です。 | 起動 | -| /dataStore/partitionNum | 128 | パーティション数を構成するクラスタ台数で分割配置できる公倍数で指定します。 整数: 1以上、10000以下で指定します。 | 変更不可 | -| /dataStore/storeBlockSize | 64KB | ディスクI/Oのサイズ(64KB,1MB,4MB,8MB,16MB,32MB)を指定します。ブロックサイズを大きくすると1ブロックに格納できるレコードが増えるため、大規模テーブルのフルスキャンに向きますが、競合が発生する可能性が高くなります。システムにあったサイズを十分に検討して設定してください。サーバ起動後は変更できません。 | 変更不可 | -| /cluster/clusterName | なし | クラスタを識別するための名称を指定します。必須入力のパラメータです。 | 起動 | -| /cluster/replicationNum | 2 | レプリカ数を指定します。レプリカ数が2の場合、パーティションが2重化されます。 | 起動 | -| /cluster/notificationAddress | 239.0.0.1 | クラスタ構成用マルチキャストアドレスを指定します。 | 起動 | -| /cluster/notificationPort | 20000 | クラスタ構成用マルチキャストポートを指定します。 ポート番号として指定可能な範囲の値を指定します。 | 起動 | -| /cluster/notificationInterval | 5秒 | クラスタ構成用マルチキャスト周期です。 1s以上、231s未満の値を指定します。 | 起動 | -| /cluster/heartbeatInterval | 5秒 | クラスタ間でのノードの生存確認チェック周期(ハートビート周期)です。 1s以上、231s未満の値を指定します。 | 起動 | -| /cluster/loadbalanceCheckInterval | 180秒 | クラスタを構成するノード間の負荷バランス調整のため、バランス処理を実施するか否かのデータ採取周期を指定します。 1s以上、231s未満の値を指定します。 | 起動 | -| /cluster/notificationMember | なし | クラスタ構成方式を固定リスト方式にする際に、アドレスリストを指定します。 | 起動 | -| /cluster/notificationProvider/url | なし | クラスタ構成方式をプロバイダ方式にする際に、アドレスプロバイダのURLを指定します。 | 起動 | -| /cluster/notificationProvider/updateInterval | 5秒 | アドレスプロバイダからリストを取得する間隔を指定します。1s以上、231s未満の値を指定します。 | 起動 | -| /sync/timeoutInterval | 30秒 | クラスタ間のデータ同期時のタイムアウト時間を指定します。 タイムアウトが発生した場合、システムの負荷が高い、障害発生などの可能性があります。 1s以上、231s未満の値を指定します。 | 起動 | -| /transaction/notificationAddress | 239.0.0.1 | クライアントが初期に接続するマルチキャストアドレスです。クライアントにはマスタノードが通知されます。 | 起動 | -| /transaction/notificationPort | 31999 | クライアントが初期に接続するマルチキャストポートです。ポート番号として指定可能な範囲の値を指定します。 | 起動 | -| /transaction/notificationInterval | 5秒 | クライアントへのマスタ通知用マルチキャスト周期。1s以上、231s未満の値を指定します。 | 起動 | -| /transaction/replicationMode | 0 | トランザクションでデータ更新をする時のデータの同期(レプリケーション)方法を指定します。文字列または整数で、 "ASYNC"または0(非同期)、"SEMISYNC"または1(準同期)を指定します。 | 起動 | -| /transaction/replicationTimeoutInterval | 10秒 | トランザクションが準同期レプリケーションでデータを同期する際のノード間通信のタイムアウト時間を指定します。1s以上、231s未満の値を指定します。 | 起動 | -| /transaction/authenticationTimeoutInterval | 5秒 | 認証タイムアウト時間を指定します。 | 起動 | -| /sql/notificationAddress | 239.0.0.1 | JDBCクライアントが初期に接続するマルチキャストアドレスです。クライアントにはマスタノードが通知されます。 | 起動 | -| /sql/notificationPort | 41999 | JDBCクライアントが初期に接続するマルチキャストポートです。ポート番号として指定可能な範囲の値を指定します。| 起動 | -| /sql/notificationInterval | 5秒 |JDBCクライアントへのマスタ通知用マルチキャスト周期です。1s以上、231s未満の値を指定します。 | 起動 | - -  - -## ノード定義ファイル(gs_node.json) - -ノード定義ファイルでは、クラスタを構成するノードのリソースを初期設定します。オンライン運用では、配置されているリソース、アクセス頻度などから、オンラインで値を変更できるパラメータもあります。逆に一度設定すると変更できない値(concurrency)もありますので注意してください。 - -ノード定義ファイルの各設定項目の意味を以下に説明します。 - -初期状態で含まれていない項目も項目名を追加することでシステムに認識させることができます。 変更の欄ではパラメータの変更可否と変更タイミングを示します -- 変更不可 :ノードを一度起動したのちは変更はできません。変更したい場合データベースを初期化する必要があります。 -- 起動   :クラスタを構成する全ノードを再起動することで、変更できます。 -- オンライン:オンライン稼働中にパラメータを変更できます。ただし、変更内容は永続化されないため、定義ファイルの内容を手動で変更する必要があります。 - -ディレクトリの指定は、フルパスもしくは、GS_HOME環境変数からの相対パスで指定します。相対パスは、GS_HOMEの初期ディレクトリが基点となります。GS_HOMEの初期設定ディレクトリは、/var/lib/gridstoreです。 - -| GridDBの構成 | 初期値 | パラメータの意味と制限値 | 変更 | -|--------------------------------------|----------------------------|---------------------------------|-----| -| /serviceAddress | なし | cluster,transaction,syncの各サービスアドレスの初期値を設定。3項目のアドレスを設定せずに本アドレスの設定のみで各サービスアドレスの初期値を設定できる。 | 起動 | -| /dataStore/dbPath | data | データベースファイルの配置ディレクトリをフルパスもしくは、相対パスで指定する。 | 起動 | -| /dataStore/dbFileSplitCount | 0 (分割無し) | チェックポイントファイルの分割数。 | 不可 | -| /dataStore/dbFilePathList | 空リスト | チェックポイントファイル分割時の分割チェックポイントファイルの配置ディレクトリリスト。
dbFileSplitCountに1以上を指定した場合は必須。複数設定可能(例:["/stg01","/stg02"])。ただし、dbFileSplitCount以上のディレクトリ数は指定不可。 | 起動 | -| /dataStore/backupPath | backup | バックアップファイルの配置ディレクトリのパスを指定。 | 起動 | -| /dataStore/syncTempPath | sync | データ同期用一時ファイルの配置ディレクトリのパスを指定。 | 起動 | -| /dataStore/storeMemoryLimit | 1024MB | データ管理用メモリの上限。 | オンライン | -| /dataStore/concurrency | 4 | 処理の並列度を指定。 | 不可 | -| /dataStore/logWriteMode | 1 | ログ書き出しモード・周期を指定。 -1または0の場合トランザクション終了時にログ書き込み、1以上231未満の場合、秒単位の周期でログ書き込み | 起動 | -| /dataStore/persistencyMode | 1(NORMAL) | 永続化モードでは、データ更新時の更新ログファイルの保持期間を指定する。1(NORMAL)、2(RETAINING_ALL_LOGS) のいずれかを指定。"NORMAL" は、チェックポイントにより、不要になったトランザクションログファイルは削除されます。"RETAINING_ALL_LOGS"は、全てのトランザクションログファイルを残します。 | 起動 | -| /dataStore/storeWarmStart | false(無効) | 再起動時にチャンクメモリ上限までインメモリ化するかを指定。 | 起動 | -| /dataStore/affinityGroupSize | 4 | アフィニティグループ数 | 起動 | -| /dataStore/storeCompressionMode | NO_COMPRESSION | データブロック圧縮モード | 起動 | -| /dataStore/autoExpire | false | 期限解放が設定されたコンテナのロウを、コールドデータになった後に自動削除するかを指定。false:自動削除しない(長期アーカイブ実行による削除が必要) true:自動削除する | オンライン | -| /checkpoint/checkpointInterval | 60秒 | メモリ上のデータ更新ブロックを永続化するチェックポイント処理の実行周期 | 起動 | -| /checkpoint/checkpointMemoryLimit | 1024MB | チェックポイント専用書き出しメモリの上限 ※チェックポイント中に更新トランザクションがある場合に必要となるメモリ領域を上限値までプール。 | オンライン | -| /checkpoint/useParallelMode | false(無効) | チェックポイントを並列実行するかどうかを指定。※並列スレッド数は並列度(concurrency)と同じ数になります。| 起動 | -| /checkpoint/checkpointCopyInterval | 100ms | データの更新や追加が行われたブロックをチェックポイント処理でディスクに出力する際の出力処理間隔 | 起動 | -| /cluster/serviceAddress | 上位のserviceAddressに従う | クラスタ構成用待ち受けアドレス | 起動 | -| /cluster/servicePort | 10010 | クラスタ構成用待ち受けポート | 起動 | -| /cluster/notificationInterfaceAddress | "" | マルチキャストパケットを送信するインターフェースのアドレスを指定 | 起動 | -| /sync/serviceAddress | 上位のserviceAddressに従う | クラスタ間でデータ同期のための受信アドレス | 起動 | -| /sync/servicePort | 10020 | データ同期用待ち受けポート | 起動 | -| /system/serviceAddress | 上位のserviceAddressに従う | 運用コマンド用待ち受けアドレス | 起動 | -| /system/servicePort | 10040 | 運用コマンド用待ち受けポート | 起動 | -| /system/eventLogPath | log | イベントログファイルの配置ディレクトリのパス | 起動 | -| /transaction/serviceAddress | 上位のserviceAddressに従う | クライアント通信向けトランザクション処理用待ち受けアドレス(/transaction/localserviceAddressの指定がない場合、クラスタ内部通信向けも兼ねる) | 起動 | -| /transaction/localServiceAddress | 上位のserviceAddressに従う | クラスタ内部通信向けトランザクション処理用待ち受けアドレス | 起動 | -| /transaction/servicePort | 10001 | トランザクション処理用待ち受けポート | 起動 | -| /transaction/connectionLimit | 5000 | トランザクション処理接続数の上限 | 起動 | -| /transaction/transactionTimeoutLimit | 300秒 | トランザクションタイムアウト時間の上限値 | 起動 | -| /transaction/reauthenticationInterval | 0s(無効) | 再認証間隔。(指定時間を超えると再認証が行われ、既に接続中の一般ユーザに対する権限等の変更が反映される。) デフォルト(0s)の場合、再認証は無効。| オンライン | -| /transaction/workMemoryLimit | 128MB | トランザクション処理でのデータ参照(get、TQL)時のメモリの上限サイズ(並列度ごと) | オンライン | -| /transaction/notificationInterfaceAddress | "" | マルチキャストパケットを送信するインターフェースのアドレスを指定 | 起動 | -| /sql/serviceAddress | 上位のserviceAddressに従う | クライアント通信向けNewSQL I/Fアクセスの処理用待ち受けアドレス(/sql/localServiceAddressの指定がない場合、クラスタ内部通信向けも兼ねる) | 起動 | -| /sql/localServiceAddress | 上位のserviceAddressに従う | クラスタ内部通信向けNewSQL I/Fアクセスの処理用待ち受けアドレス | 起動 | -| /sql/servicePort | 20001 | NewSQL I/Fアクセスの処理用待ち受けポート | 起動 | -| /sql/storeSwapFilePath | swap | SQL中間ストアのスワップファイルの配置ディレクトリのパス | 起動 | -| /sql/storeSwapSyncSize | 1024MB | SQL中間ストアのスワップファイルのsyncおよび物理メモリキャッシュ消去を行うサイズ | 起動 | -| /sql/storeMemoryLimit | 1024MB | SQL処理でメモリ上に保持する中間データの最大値 | 起動 | -| /sql/workMemoryLimit | 32MB | SQL処理でオペレータが使用するメモリの最大値 | 起動 | -| /sql/workCacheMemory | 128MB | SQL処理でオペレータが使用するメモリのうち、使用後に解放せずにキャッシュするメモリサイズ | 起動 | -| /sql/connectionLimit | 5000 | NewSQL I/Fアクセスの処理接続数の上限 | 起動 | -| /sql/concurrency | 4 | 同時実行スレッド数 | 起動 | -| /sql/traceLimitExecutionTime | 300秒 | スロークエリをイベントログに残す実行時間の下限値 | オンライン | -| /sql/traceLimitQuerySize | 1000 | スロークエリに残るクエリ文字列のサイズ上限(バイト) | オンライン | -| /sql/notificationInterfaceAddress | "" | マルチキャストパケットを送信するインターフェースのアドレスを指定 | 起動 | -| /trace/fileCount | 30 | イベントログファイルの上限数 | 起動 | - - - - -システムの制限値 -================ - -数値に関する制限 ----------------- - -| ブロックサイズ | 64KB | 1MB~32MB | -|--------------------------------------------|-------------|-------------------| -| 文字列型/空間型のデータサイズ | 31KB | 128KB | -| BLOB型のデータサイズ | 1GB - 1Byte | 1GB - 1Byte | -| 配列長 | 4000 | 65000 | -| カラム数 | 1024個 | 約7K~32000個(※1) | -| 索引数(コンテナ1個あたり) | 1024個 | 16000個 | -| 線形補完圧縮の対象カラム数 | 100個 | 100個 | -| ユーザ数 | 128 | 128 | -| データベース数 | 128個 | 128個 | -| トリガのURL | 4KB | 4KB | -| アフィニティグループ数 | 10000 | 10000 | -| 解放期限付き時系列コンテナの分割数 | 160 | 160 | -| GridDBノードが管理する通信バッファのサイズ | 約2GB | 約2GB | - -| ブロックサイズ | 64KB | 1MB | 4MB | 8MB | 16MB | 32MB | -|----------------------------|-------------|-------------|-------------|-------------|-------------|-------------| -| パーティションサイズ | 約4TB | 約64TB | 約256TB | 約512TB | 約1PB | 約2PB | - -- 文字列型、トリガのURL - - 制限値はUTF-8エンコード相当 -- 空間型 - - 制限値は内部格納形式相当 -- (※1) カラム数 - - カラム数の上限には、固定長カラム(ブール型、整数型、浮動小数点数型、時刻型)の合計サイズが59KBまでという制約があります。この制約に当てはまらない場合は、カラム数の上限は32000個になります。 - - 例) LONG型カラムのみのコンテナの場合:カラム上限数は7552 ( 固定長カラムの合計サイズ 8B \* 7552 = 59KB ) - - 例) BYTE型カラムのみのコンテナの場合:カラム上限数は32000 ( 固定長カラムの合計サイズ 1B \* 32000 = 約30KB → 固定長カラムのサイズ制約には当てはまらないので、上限の32000個のカラムを作成できる) - - 例) STRING型カラムのみのコンテナの場合:カラム上限数は32000 ( 固定長カラムのサイズ制約には当てはまらないので、上限の32000個のカラムを作成できる) - -ネーミングに関する制限 ----------------------- - -| 名前 | 使用可能な文字 | 長さの上限 | -|------------------------|----------------------------------------------------|-------------------------------| -| 管理ユーザ | 先頭が"gs\#"で始まる。それ以外の文字は英数字、'\_' | 64文字 | -| 一般ユーザ | 英数字、'\_'、'-'、'.'、'/'、'=' | 64文字 | -| パスワード | Unicodeコードポイントを文字とする
任意個数の文字の列(NULL文字(U+0000)は不可) | 64バイト(UTF-8エンコード換算) | -| クラスタ名 | 英数字、'\_'、'-'、'.'、'/'、'=' | 64文字 | -| データベース名 | 英数字、'\_'、'-'、'.'、'/'、'=' | 64文字 | -| コンテナ名
テーブル名
ビュー名 | 英数字、'\_'、'-'、'.'、'/'、'='
(ノードアフィニティを指定する場合のみ'@') | 16384文字(ブロックサイズ64KB)
131072文字(ブロックサイズ1MB~32MB) | -| カラム名 | 英数字、'\_'、'-'、'.'、'/'、'=' | 256文字 | -| 索引名 | 英数字、'\_'、'-'、'.'、'/'、'=' | 16384文字(ブロックサイズ64KB)
131072文字(ブロックサイズ1MB~32MB) | -| トリガ名 | 英数字、'\_'、'-'、'.'、'/'、'=' | 256文字 | -| バックアップ名 | 英数字、'\_' | 12文字 | -| データアフィニティ | 英数字、'\_'、'-'、'.'、'/'、'=' | 8文字 | - -- 大文字小文字の区別 - - クラスタ名・トリガ名・バックアップ名、パスワードは、大文字小文字の区別があります。したがって、例に示すような大文字小文字のみ異なる表記は、異なるものとして扱います。 - - ``` example - 例) trigger, TRIGGER - ``` - -- それ以外の名前は、大文字小文字の区別がありません。大文字小文字表記は同一視します。 -- 作成時に指定された大文字小文字の表記は、データとして保持します。 -- TQL/SQL構文で名前を引用符"で囲う場合は、大文字小文字の表記を区別した検索を行います。 - - ``` example - 例) コンテナ名 SensorData の Column1 を検索する場合 - select "Column1" from "SensorData" 検索可能 - select "COLUMN1" from "SENSORDATA" "SENSORDATA"というコンテナは存在しないので検索不可 - ``` - -- TQL/SQL構文での名前指定 - - 引用符"で囲わない場合は、英数字、'\_'(数字は先頭不可)の名前しか記述できません。それ以外の名前を記述する場合には引用符で囲んでください。 - ``` example - 例) select "012column", data_15 from "container.2017-09" - ``` diff --git a/manuals/GridDB_FeaturesReference/structure-of-griddb.md b/manuals/GridDB_FeaturesReference/structure-of-griddb.md deleted file mode 100644 index 0a6ca67..0000000 --- a/manuals/GridDB_FeaturesReference/structure-of-griddb.md +++ /dev/null @@ -1,391 +0,0 @@ -# 仕組み - -GridDBのクラスタ動作の仕組みについて説明します。 - - - ->## 重要 ->**GridDB Community Editionは、1ノードで動作させるシングル構成のみで、複数ノードで構成されるクラスタの構成には対応していません**。 - -## クラスタの構成 - -GridDBは複数ノードで構成されるクラスタで動作します。アプリケーションシステムからデータベースにアクセスするにはノードが起動されており、かつクラスタが構成 (クラスタサービスが実行) されている必要があります。 - -クラスタは、ユーザが指定した構成ノード数のノードがクラスタへ参加することで構成され、クラスタサービスが開始されます。構成ノード数のノードがクラスタに参加するまでクラスタサービスは開始されず、アプリケーションからはアクセスできません。 - -ノード1台で動作させる場合にも、クラスタを構成する必要があります。この場合構成ノード数を1台でクラスタを構成することになります。ノード1台で動作させる構成をシングル構成と呼びます。 - -クラスタ名と構成ノード数 -
- - - -ネットワーク上にあるGridDBの多数のノードを用いて、正しく(意図したノードを用いて)クラスタが構成できるよう、クラスタ名を使って複数のクラスタを区別します。これにより、同じネットワーク上に複数のGridDBクラスタが構成できます。 -クラスタは、クラスタ名、構成ノード数、接続方式の設定が等しいノードで構成されます。クラスタ名は、クラスタを構成するノード毎に保有するクラスタ定義ファイルに設定するとともに、クラスタ構成する際のパラメータでも指定します。 - -マルチキャストを用いてクラスタを構成する方式をマルチキャスト方式と呼びます。クラスタ構成方式については、[クラスタ構成方式](#cluster_configuration_methods)を参照してください。 - -次にクラスタ構成の操作の流れを示します。 - - クラスタ構成の動作 - - - -ノードの起動、クラスタの構成には、[運用コマンド](operating-function.md#operating_commands)のgs_startnode/gs_joinclusterコマンドを用います。また、OS起動と同時にノードを起動し、クラスタを構成するサービス制御機能もあります。 - - -クラスタを構成するには、クラスタに参加させるノードの数(構成ノード数)とクラスタ名をすべての参加ノードで一致させる必要があります。 - -クラスタサービスは、クラスタでの運用開始後に構成するノードに障害がありクラスタからノードが切り離された場合でも、過半数のノードが参加している限りサービスは継続します。 - -過半数以上のノードさえ動作していればクラスタ運用は継続できるので、クラスタ運用中にメンテナンス等のために、オンラインでノード切り離したり、メンテナンス完了後にノードを組込む操作ができます。さらには、システムを増強するためにノードを追加することもオンラインでできます。 - -クラスタ内部の通信を行うネットワークとクライアント通信専用のネットワークを分離させることが可能です。 - -### ノードのステータス - -ノードには、ノードの状態を表す複数の種類のステータスがあります。ユーザのコマンド実行やノードの内部処理によってステータスが遷移します。[クラスタのステータス](#status_of_cluster)は、クラスタに属する複数のノードのノードステータスによって決まります。 - -ノードステータスの種類と遷移、確認方法を説明します。 - -#### ノードステータスの種類 - - | ノードステータス | 説明 | - |-----------|----------------------------------------------| - | STOP | ノードでGridDBサーバが起動されていない状態です。 | - | STARTING | ノードでGridDBサーバが起動処理中の状態です。前回の運転状態に応じて、データベースのリカバリ処理などの起動時の処理が行われます。クライアントからアクセスできるのは、gs_statコマンドでのシステムの状態確認のみです。アプリケーションからのアクセスはできません。 | - | STARTED | ノードでGridDBサーバが起動されている状態です。ただし、クラスタには参加していないため、引き続きアプリケーションからのアクセスはできません。クラスタを構成するには、gs_joinclusterのクラスタ操作コマンドでクラスタへの参加を指示します。 | - | WAIT | クラスタ構成待ちの状態です。ノードはクラスタへの参加を通知しているが、構成ノード数のノードが足りておらず、ノード数が構成ノード数になるまで待ち状態となります。また、クラスタを構成するノードが過半数以下になり、クラスタのサービスが停止した際のノード状態もWAIT状態になります。 | - | SERVICING | クラスタが構成されており、アプリケーションからのアクセスが可能な状態です。ただし、ノード停止時の障害後の再起動などでパーティションのクラスタ間での同期処理が発生した場合、アクセスが遅延することがあります。 | - | STOPPING | ノードを停止指示後、停止するまでの中間ステータスです。 | - | ABNORMAL | SERVICING状態もしくは、状態遷移の途中でノードがエラーを検出した際のステータスです。ABNORMAL状態となったノードは、自動的にクラスタから切り離されます。システムの動作情報を採取してから、ABNORMAL状態のノードを強制停止・再起動する必要があります。再起動することで、リカバリ処理が自動的に行われます。| - -#### ノードステータスの遷移 - -ノードステータス - - - | ステータス遷移 | 状態遷移事象 | 説明 | - |----------------|-------------|-----------------------------------------------------------------------| - |    ① | コマンド実行 | ノード起動(gs_startnodeコマンドのコマンド実行) | - |    ② | システム | リカバリ処理やデータベースファイルのロードが完了すると、状態は自動遷移 | - |    ③ | コマンド実行 | クラスタ参加(gs_joinclusterのコマンド実行) | - |    ④ | システム | 構成ノード数のノードがクラスタに参加すると状態は自動遷移 | - |    ⑤ | システム | クラスタを構成する他のノードが障害等によりサービスから切り離され、構成ノード数が設定値の過半数を下回った時に、状態が自動遷移 | - |    ⑥ | コマンド実行 | ノードをクラスタから切り離す(gs_leaveclusterコマンドのコマンド実行) | - |    ⑦ | コマンド実行 | ノードをクラスタから切り離す(gs_leavecluster/gs_stopclusterコマンドのコマンド実行) | - |    ⑧ | コマンド実行 | ノード停止(gs_stopnodeコマンドのコマンド実行) | - |    ⑨ | システム | 終了処理が完了次第、サーバプロセスを停止 | - |    ⑩ | システム | システム障害により切り離された状態。この状態では一度ノードを強制的に停止する必要がある。 | - - -##### ノードステータスの確認方法 - - ノードステータスは、ノードの稼働状況とノードの役割の2つの状態の組合せによって決まります。 - - ノードの稼働状況とノードの役割は、gs_statコマンドを実行した結果のjson形式のデータから確認できます。(ノードの稼働状況:/cluster/nodeStatusの値、ノードの役割:/cluster/clusterStatusの値) - - ノードステータスと、ノードの稼働状況とノードの役割の2つの状態の組合せを次に示します。 - - | ノードステータス | ノードの稼働状況
(/cluster/nodeStatus) | ノードの役割
(/cluster/clusterStatus) | - |------------|------------------------------|------------------------| - | STOP | -(gs_statの接続エラー) | -(gs_statの接続エラー) | - | STARTING | INACTIVE | SUB_CLUSTER | - | STARTED | INACTIVE | SUB_CLUSTER | - | WAIT | ACTIVE | SUB_CLUSTER | - | SERVICING | ACTIVE | MASTERまたはFOLLOWER | - | STOPPING | NORMAL_SHUTDOWN | SUB_CLUSTER | - | ABNORMAL | ABNORMAL | SUB_CLUSTER | - -#### ノードの稼働状況 - -ノードの稼働状況を表します。gs_statコマンドの/cluster/nodeStatusの値で確認できます。 - -| ノードの稼働状況 | 説明 | -|------------------|------------------------| -| ACTIVE | アクティブ状態 | -| ACTIVATING | アクティブ状態に遷移中 | -| INACTIVE | 非アクティブ状態 | -| DEACTIVATING | 非アクティブ状態に遷移中 | -| NORMAL_SHUTDOWN | シャットダウン処理中 | -| ABNORMAL | 異常状態 | - - -#### ノードの役割 - -ノードの役割を表します。gs_statコマンドの/cluster/clusterStatusの値で確認できます。 - -ノードには「マスタ」と「フォロワ」という二つの役割があります。 -クラスタが開始する時には、クラスタを構成するノードのひとつが必ず「マスタ」になります。マスタはクラスタ全体の管理を行います。マスタ以外のノードはすべて「フォロワ」になります。フォロワは、マスタからの指示に基づいて同期などのクラスタ処理を行います。 - -| ノードの役割 | 説明 | -|-----------------------------|-----------| -| MASTER | マスタ | -| FOLLOWER | フォロワ | -| SUB_CLUSTER/SUB_MASTER | 役割未定 | - -### クラスタのステータス - -クラスタの稼働ステータスは各ノードの状態で決まり、そのステータスには稼働/中断/停止の3つの種類があります。 - -クラスタのサービスは、システムの初回構築時においては、ユーザが指定したクラスタ構成するノード数(構成ノード数)のノードがすべてクラスタに参加した時点で開始されます。 - -初回のクラスタ構築時、クラスタを構成するノードがすべてクラスタに組み入れられておらず、クラスタ構成待ちの状態が【INIT_WAIT】状態です。構成ノード数のノードがクラスタに参加完了した時点で状態は自動遷移し稼働状態となります。 - -稼働状態には【STABLE】と【UNSTABLE】の2つの状態があります。 - -- 【STABLE】状態 - - 構成ノード数で指定したノードの数でクラスタが構成されており、サービスが提供できている安定した状態。 -- 【UNSTABLE】状態 - - 構成ノード数に満たない状態で、かつ、構成ノード数の過半数が稼働している状態 - - 構成ノード数の過半数が稼働している限り、クラスタのサービスは継続します。 - -メンテナンスなどでノードをクラスタより切り離しても、構成ノード数の過半数が動作している限りクラスタは【UNSTABLE】状態で運用できます。 - -クラスタを構成するノードが、構成ノード数の半数以下となった場合、スプリットブレイン発生を防ぐためにクラスタは自動的にサービスを中断します。クラスタのステータスは【WAIT】状態となります。 - -- スプリットブレインとは、 - - 複数のノードを相互接続して1台のサーバのように動作させる密結合クラスタシステムにおいて、ハードウェアやネットワークの障害によりシステムが分断されたことを契機に、同じ処理を行なう複数のクラスタシステムが同時にサービスを提供してしまう動作をいいます。この状態で運用を継続した場合、複数のクラスタでレプリカとして保有するデータをマスタデータとして動作してしまい、データの一貫性が取れない状態となってしまいます。 - -【WAIT】状態からクラスタサービスを再開するには、エラーの回復したノードや新規のノードをノード追加操作でクラスタへ追加していきます。 再び構成ノード数のノードがクラスタに参加完了した時点で状態は【STABLE】状態となり、サービスが再開されます。 - -ノードの障害等でクラスタを構成するノード数が半数以下となり、クラスタのサービスが中断した場合でも、ノード追加操作でエラーの回復したノードや新規のノードをクラスタへ追加していき過半数のノードがクラスタに参加した時点で自動的にクラスタのサービスは再開されます。 - -クラスタステータス - - -STABLE状態はgs_statの示すjsonのパラメータである、/cluster/activeCountと/cluster/designatedCountの値が等しい状態です。 - -``` example -$ gs_stat -u admin/admin -{ - "checkpoint": { - "archiveLog": 0, -     : -     : - }, - "cluster": { - "activeCount":4,            ★ クラスタ内で稼働中のノード - "clusterName": "test-cluster", - "clusterStatus": "MASTER", - "designatedCount": 4, ★ 構成ノード数 - "loadBalancer": "ACTIVE", - "master": { - "address": "192.168.0.1", - "port": 10040 - }, - "nodeList": [             ★ クラスタを構成するマシンリスト - { - "address": "192.168.0.1", - "port": 10040 - }, - { - "address": "192.168.0.2", - "port": 10040 - }, - { - "address": "192.168.0.3", - "port": 10040 - }, - { - "address": "192.168.0.4", - "port": 10040 - }, - - ], - : - : -``` - -### パーティションのステータス - -パーティションステータスは、クラスタ上のパーティション全体の状態を表します。 -クラスタステータスが稼働状態の時に、パーティションにアクセスできる状態か、パーティションに偏りが無いかなどを表すステータスです。 - -| パーティションステータス | 説明 | -|--------------|----------------| -| NORMAL | すべてのパーティションがデータ配置目標と同一の正常な状態 | -| NOT_BALANCE | レプリカロスやオーナロスは発生していないが、パーティションの配置が偏っている状態 | -| REPLICA_LOSS | レプリカのデータが欠損しているパーティションが存在する状態
(該当パーティションの可用性が落ちている・ノード離脱できない) | -| OWNER_LOSS | オーナのデータが欠損しているパーティションが存在する状態
(該当パーティションのデータにはアクセスできない) | -| INITIAL | クラスタ構成に参加していない初期状態 | - -パーティションステータスは、マスタノードへのgs_statコマンドの実行で確認できます。(/cluster/partitionStatusの値) - -```example -$ gs_stat -u admin/admin -{ -  : -  : -"cluster": { - : - "nodeStatus": "ACTIVE", - "notificationMode": "MULTICAST", - "partitionStatus": "NORMAL", - : -``` - ->##### メモ ->- マスタノード以外の/cluster/partitionStatusの値は、正しくない場合があります。必ずマスタノードの値を確認してください。 - - -## クラスタ構成方式 - -クラスタは、ネットワーク上に存在するノード同士がお互いを認識することで構成されます。 ノードは、認識した他のノードのアドレスをリストとして持ちます。 - -GridDBは、アドレスリストを構成する方法が異なる3つのクラスタ構成方式を提供します。環境や利用ケースによってクラスタ構成方式を使い分けることができます。クラスタ構成方式によって、クライアントや運用ツールの接続方式も異なります。 - -クラスタ構成方式には、マルチキャスト方式と固定リスト方式とプロバイダ方式の3つがあります。推奨はマルチキャスト方式です。 - -固定リスト方式かプロバイダ方式を用いることで、マルチキャストが利用不可能な環境でのクラスタ構成、クライアント接続が可能になります。 - -- マルチキャスト方式 - - マルチキャストでノードのディスカバリを行い、アドレスリストを自動構成します。 -- 固定リスト方式 - - クラスタ定義ファイルに固定のアドレスリストを指定して起動することで、そのリストを利用します。 -- プロバイダ方式 - - アドレスプロバイダが提供するアドレスリストを取得して利用します。 - - アドレスプロバイダはWebサービスとして構成するか、静的コンテンツとして構成することができます。 - -クラスタ構成方式の比較は次のとおりです。 - -| 項目 | マルチキャスト方式(推奨) | 固定リスト方式 | プロバイダ方式 | -|--------------|------------------------------------|-----------------------------------------------|-----------------------| -| 設定 | ・マルチキャストアドレス、ポート | ・全ノードのIPアドレス:ポートのリスト | ・プロバイダURL | -| 利用ケース | ・マルチキャストが利用できる | ・マルチキャストが利用できない
・正確にシステム規模の見積りが行える | ・マルチキャストが利用できない
・システム規模が見積れない | -| クラスタ動作 | ・一定時間間隔でノードの自動ディスカバリを行う。 | ・全ノードに同一のアドレスリストを設定する
・ノード起動時に1度だけそのリストを読み込む | ・アドレスプロバイダから一定時間間隔でアドレスリストを取得 | -| メリット | ・ノード追加のためのクラスタ再起動不要 | ・リストの整合性チェックが行われるため、間違いが無い | ・ノード追加のためのクラスタ再起動不要 | -| デメリット | ・クライアント接続にマルチキャストを要する | ・ノード追加にクラスタ再起動が必要
・アプリ側の接続設定の更新も必要 | ・アドレスプロバイダの可用性確保が必要 | - - -### クラスタ構成方式の設定 - -マルチキャスト方式が利用できない環境では、固定リスト方式またはプロバイダ方式でクラスタを構成します。 以下では、固定リスト方式とプロバイダ方式それぞれのネットワーク設定について説明します。 - -#### 固定リスト方式 - -固定のアドレスリストを与えてノードを起動することで、そのリストを利用してクラスタを構成します。 - -固定リスト方式でクラスタを構成する場合は、クラスタ定義ファイルのパラメータを設定します。 - -**クラスタ定義ファイル** - -| パラメータ | データ型 | 意味 | -|-----------------------------|----------|--------------------------------------------------------------------------| -| /cluster/notificationMember | string | クラスタ構成方式を固定リスト方式にする際に、アドレスリストを指定します。 | - -クラスタ定義ファイルの設定例は以下のとおりです。 - -``` example -{ - : - : - "cluster":{ - "clusterName":"yourClusterName", - "replicationNum":2, - "heartbeatInterval":"5s", - "loadbalanceCheckInterval":"180s", - "notificationMember": [ - { - "cluster": {"address":"172.17.0.44", "port":10010}, - "sync": {"address":"172.17.0.44", "port":10020}, - "system": {"address":"172.17.0.44", "port":10040}, - "transaction": {"address":"172.17.0.44", "port":10001}, - "sql": {"address":"172.17.0.44", "port":20001} - }, - { - "cluster": {"address":"172.17.0.45", "port":10010}, - "sync": {"address":"172.17.0.45", "port":10020}, - "system": {"address":"172.17.0.45", "port":10040}, - "transaction": {"address":"172.17.0.45", "port":10001}, - "sql": {"address":"172.17.0.45", "port":20001} - }, - { - "cluster": {"address":"172.17.0.46", "port":10010}, - "sync": {"address":"172.17.0.46", "port":10020}, - "system": {"address":"172.17.0.46", "port":10040}, - "transaction": {"address":"172.17.0.46", "port":10001}, - "sql": {"address":"172.17.0.46", "port":20001} - } - ] - }, - : - : -} -``` - -#### プロバイダ方式 - -アドレスプロバイダが提供するアドレスリストを取得してクラスタ構成を行います。 - -プロバイダ方式でクラスタを構成する場合は、クラスタ定義ファイルのパラメータを設定します。 - -**クラスタ定義ファイル** - -| パラメータ | データ型 | 意味 | -|----------------------------------------------|----------|---------------| -| /cluster/notificationProvider/url | string | クラスタ構成方式をプロバイダ方式にする際に、アドレスプロバイダのURLを指定します。 | -| /cluster/notificationProvider/updateInterval | string | アドレスプロバイダからリストを取得する間隔を指定します。1s以上、231s未満の値を指定します。 | - -クラスタ定義ファイルの設定例は以下のとおりです。 - -``` example -{ - : - : - "cluster":{ - "clusterName":"yourClusterName", - "replicationNum":2, - "heartbeatInterval":"5s", - "loadbalanceCheckInterval":"180s", - "notificationProvider":{ - "url":"http://example.com/notification/provider", - "updateInterval":"30s" - } - }, - : - : -} -``` - -アドレスプロバイダはWebサービスとして構成するか、静的コンテンツとして構成することができます。 アドレスプロバイダは以下の仕様を満たす必要があります。 - -- GETメソッドに対応。 -- URLにアクセスすると、そのURLが書かれたクラスタ定義ファイルを持つクラスタのノードのアドレスリストをレスポンスとして返す。 - - レスポンスボディ:固定リスト方式において指定するノードリストの内容と同等のJSON - - レスポンスヘッダ:Content-Type:application/jsonを含む - -アドレスプロバイダからのレスポンスの例は以下のとおりです。 - -``` example -$ curl http://example.com/notification/provider -[ - { - "cluster": {"address":"172.17.0.44", "port":10010}, - "sync": {"address":"172.17.0.44", "port":10020}, - "system": {"address":"172.17.0.44", "port":10040}, - "transaction": {"address":"172.17.0.44", "port":10001}, - "sql": {"address":"172.17.0.44", "port":20001} - }, - { - "cluster": {"address":"172.17.0.45", "port":10010}, - "sync": {"address":"172.17.0.45", "port":10020}, - "system": {"address":"172.17.0.45", "port":10040}, - "transaction": {"address":"172.17.0.45", "port":10001}, - "sql": {"address":"172.17.0.45", "port":20001} - }, - { - "cluster": {"address":"172.17.0.46", "port":10010}, - "sync": {"address":"172.17.0.46", "port":10020}, - "system": {"address":"172.17.0.46", "port":10040}, - "transaction": {"address":"172.17.0.46", "port":10001}, - "sql": {"address":"172.17.0.46", "port":20001} - } -] -``` - - ->##### メモ ->- 各アドレスおよびポートはノード定義ファイルのserviceAddressおよびservicePortをモジュール(cluster,syncなど)ごとに指定します。 ->- クラスタ定義ファイルの/cluster/notificationAddress、/cluster/notificationMember、/cluster/notificationProviderは、使用するクラスタ構成方式に合わせていずれか1つを設定してください。 diff --git a/manuals/GridDB_FeaturesReference/toc.md b/manuals/GridDB_FeaturesReference/toc.md deleted file mode 100644 index 4b8c4cf..0000000 --- a/manuals/GridDB_FeaturesReference/toc.md +++ /dev/null @@ -1,15 +0,0 @@ -GridDB 機能リファレンス - -# 目次 - -[はじめに](introduction.md) - -[仕組み](structure-of-griddb.md) - -[データモデル](data-model.md) - -[データベース機能](database-function.md) - -[運用機能](operating-function.md) - -[パラメータ](parameter.md) diff --git a/manuals/GridDB_JDBC_Driver_UserGuide/introduction.md b/manuals/GridDB_JDBC_Driver_UserGuide/introduction.md deleted file mode 100644 index 43bf88e..0000000 --- a/manuals/GridDB_JDBC_Driver_UserGuide/introduction.md +++ /dev/null @@ -1,5 +0,0 @@ -# はじめに - -GridDB v4.5 Community Edition では、SQL92に準拠したSQLとともに、標準仕様に準拠したアプリケーションインターフェースであるJDBC(Javaインターフェース)を利用できます。 - -本書では、GridDB Community Edition(以降 GridDB CE と記載します)のJDBC ドライバの取り扱い方法および、注意事項について記載しています。 diff --git a/manuals/GridDB_JDBC_Driver_UserGuide/overview.md b/manuals/GridDB_JDBC_Driver_UserGuide/overview.md deleted file mode 100644 index 5cf6ec7..0000000 --- a/manuals/GridDB_JDBC_Driver_UserGuide/overview.md +++ /dev/null @@ -1,158 +0,0 @@ -# 概要 - -JDBCパラメータのプログラムでの指定形式や使用できるデータ型、使用上の注意点を説明します。 - -  - -## 接続方法 - -### ドライバの指定 - -JDBCドライバファイル `gridstore-jdbc.jar` をクラスパスに追加します。これによりドライバが自動的に登録されます。 さらに必要に応じて、以下のようにしてドライバクラスを読み込みます。通常は不要です。 - -``` example -Class.forName("com.toshiba.mwcloud.gs.sql.Driver"); -``` - -  - -### 接続時のURL形式 - -URLは以下の (A)~(D) の形式となります。クラスタ構成方式がマルチキャスト方式の場合、通常は (A) の形式で接続してください。 GridDBクラスタ側で自動的に負荷分散が行われ適切なノードに接続されます。 GridDBクラスタとの間でマルチキャストでの通信ができない場合のみ、他の形式で接続してください。 - -#### (A) マルチキャスト方式のGridDBクラスタの適切なノードへ自動的に接続する場合 - -``` example -jdbc:gs://(multicastAddress):(portNo)/(clusterName)/(databaseName) -``` - -- multicastAddress:GridDBクラスタとの接続に使うマルチキャストアドレス。(デフォルト: 239.0.0.1) -- portNo:GridDBクラスタとの接続に使うポート番号。(デフォルト: 41999) -- clusterName:GridDBクラスタのクラスタ名 -- databaseName:データベース名。省略した場合はデフォルトデータベース(public)に接続します。 - -#### (B) マルチキャスト方式のGridDBクラスタ内のノードに直接接続する場合 - -``` example -jdbc:gs://(nodeAddress):(portNo)/(clusterName)/(databaseName) -``` - -- nodeAddress:ノードのアドレス -- portNo:ノードとの接続に使うポート番号。(デフォルト: 20001) -- clusterName:ノードが属するGridDBクラスタのクラスタ名 -- databaseName:データベース名。省略した場合はデフォルトデータベース(public)に接続します。 - -#### (C) 固定リスト方式のGridDBクラスタに接続する場合 - -クラスタ構成方式が固定リスト方式の場合、この形式で接続してください。 - -``` example -jdbc:gs:///(clusterName)/(databaseName)?notificationMember=(notificationMember) -``` - -- clusterName:GridDBクラスタのクラスタ名 -- databaseName:データベース名。省略した場合はデフォルトデータベース(public)に接続します。 -- notificationMember:ノードのアドレスリスト(URLエンコードが必要)。デフォルトポートは20001 - - 例:192.168.0.10:20001,192.168.0.11:20001,192.168.0.12:20001 - -※notificationMemberはgs_cluster.jsonファイルを編集することで変更可能です。 アドレスリストで使うポートは、gs_node.jsonファイルを編集することで変更可能です。 - -#### (D) プロバイダ方式のGridDBクラスタに接続する場合 - -クラスタ構成方式がプロバイダ方式の場合、この形式で接続してください。 - -``` example -jdbc:gs:///(clusterName)/(databaseName)?notificationProvider=(notificationProvider) -``` - -- clusterName:GridDBクラスタのクラスタ名 -- databaseName:データベース名。省略した場合はデフォルトデータベースに接続します -- notificationProvider:アドレスプロバイダのURL(URLエンコードが必要) - -※notificationProviderはgs_cluster.jsonファイルを編集することで変更可能です。 - -なお、(A)~(D)いずれの場合でも、ユーザ名・パスワードをURLに含める場合は、URLの末尾に次のように追加してください。 - -``` example -?user=(ユーザ名)&password=(パスワード) -``` - -  - -### 接続タイムアウトの設定 - -以下の(A)、(B)どちらかの方法で接続タイムアウトを設定できます。両方が設定された場合、(B)の設定が優先されます。 どちらも設定されない場合、デフォルト値300秒(5分)が使用されます。 - -#### (A) DriverManager\#setLoginTimeout(int seconds)で指定する - -secondsの値によって、以下のように設定されます。設定後、DriverManager\#getConnectionまたはDriver\#connectで取得する全てのGridDBへのConnectionに接続タイムアウトが設定されます。 - -- 値が1~Integer.MAX_VALUEの設定値の場合 - - 指定した秒数で設定されます -- 値がInteger.MIN_VALUEの設定値~0の場合 - - 設定されません - -#### (B) DriverManager\#getConnection(String url, Properties info)またはDriver\#connect(String url, Properties info)で指定する - -引数infoにキー”loginTimeout”でプロパティを追加してください。キー”loginTimeout”に対応する値が数値に変換できた場合、取得したConnectionにのみ以下のように接続タイムアウトが設定されます。 - -- 変換した値が1~Integer.MAX_VALUEの場合 - - 指定した秒数で設定されます -- 変換した値が0以下 または Integer.MAX_VALUEより大きい場合 - - 設定されません - -  - -### その他情報の設定 -前述した設定のほか、接続時には次の情報も設定できます。 - -- アプリケーション名 -- タイムゾーン(Z|±HH:MM|±HHMM) - -※タイムゾーン処理を行う場合、GridDBからの取得コストが増えるため、極力アプリ側で処理を行うことを推奨します。 - - -以下の(A)、(B)どちらかの方法でこれらは設定できます。両方が設定された場合は -エラーとなります。 - -#### (A) URLで指定する - -アプリケーション名をURLに含める場合は、URLの末尾に次のように追加してください。 - -``` example -?applicationName=(アプリケーション名) -``` - -タイムゾーンをURLに含める場合は、URLの末尾に次のように追加してください。 - -``` example -?timeZone=(タイムゾーン) -``` - - -ユーザ名・パスワードもURLに含める場合は、次のように追加してください。 - -``` example -?user=(ユーザ名)&password=(パスワード)&applicationName=(アプリケーション名)&timeZone=(タイムゾーン) -``` - -タイムゾーンの記号「:」など、URLエンコードが必要なものは適宜実施してください。 - -#### (B) DriverManager#getConnection(String url, Properties info)またはDriver#connect(String url, Properties info)で指定する - -引数infoに下記のキーでプロパティを追加してください。 - -- アプリケーション名: applicationName -- タイムゾーン: timeZone - - -## 注意点 -- NoSQLインタフェース/NewSQLインタフェースの違い - - NoSQLインタフェースのクライアントで作成したコンテナは、NewSQLインタフェースのJDBCドライバで参照、更新可能です。更新には行の更新だけでなく、コンテナのスキーマや索引の変更を含みます。 - - NewSQLインタフェースのJDBCドライバで作成したテーブルは、NoSQLインタフェースのクライアントで参照、更新可能です。 - - NoSQLインタフェースの場合は「コンテナ」、NewSQLインタフェースの場合は「テーブル」と呼びます。呼び方が異なるだけでどちらも同じオブジェクトを指します。 - - NoSQLインタフェースのクライアントで作成した時系列コンテナを、JDBCドライバからSQLで検索した場合、NoSQLクライアントからTQLで検索した場合と異なり、主キーに対するORDER BY句がなければ結果は時刻順とはなりません。SQL結果の時刻順整列が必要な場合には主キーに対するORDER BYを指定してください。 -- 一貫性について、インタフェースの違いによらず、トランザクションの分離レベルとしてREAD COMMITTEDをサポートしています。 - NewSQLインタフェースによる検索・更新結果は、NoSQLインタフェースにて部分実行オプションを有効にしてTQLを実行した場合と同様、実行開始時点の単一のスナップショットに基づくとは限りません。 - 実行対象のデータ範囲に応じて分割された、個々の実行時点のスナップショットに基づく場合があります。 - この特性は、パーティショニングされていない単一のテーブルに対する、NoSQLインタフェースによるデフォルト設定での操作とは異なります。 diff --git a/manuals/GridDB_JDBC_Driver_UserGuide/sample.md b/manuals/GridDB_JDBC_Driver_UserGuide/sample.md deleted file mode 100644 index c58ebcd..0000000 --- a/manuals/GridDB_JDBC_Driver_UserGuide/sample.md +++ /dev/null @@ -1,48 +0,0 @@ -# サンプル - -JDBCのサンプルプログラムは以下のとおりです。 - -``` java -// Java APIのSample2が実行されている必要があります。 -package test; - -import java.sql.*; - -public class SampleJDBC { - public static void main(String[] args) throws SQLException { - if (args.length != 5) { - System.err.println( - "usage: java SampleJDBC (multicastAddress) (port) (clusterName) (user) (password)"); - System.exit(1); - } - - // urlは"jdbc:gs://(multicastAddress):(portNo)/(clusterName)"形式 - String url = "jdbc:gs://" + args[0] + ":" + args[1] + "/" + args[2]; - String user = args[3]; - String password = args[4]; - - System.out.println("DB Connection Start"); - - // GridDBクラスタとの接続 - Connection con = DriverManager.getConnection(url, user, password); - try { - System.out.println("Start"); - Statement st = con.createStatement(); - ResultSet rs = st.executeQuery("SELECT * FROM point01"); - ResultSetMetaData md = rs.getMetaData(); - while (rs.next()) { - for (int i = 0; i < md.getColumnCount(); i++) { - System.out.print(rs.getString(i + 1) + "|"); - } - System.out.println(""); - } - rs.close(); - System.out.println("End"); - st.close(); - } finally { - System.out.println("DB Connection Close"); - con.close(); - } - } -} -``` diff --git a/manuals/GridDB_JDBC_Driver_UserGuide/toc.md b/manuals/GridDB_JDBC_Driver_UserGuide/toc.md deleted file mode 100644 index 50469cc..0000000 --- a/manuals/GridDB_JDBC_Driver_UserGuide/toc.md +++ /dev/null @@ -1,11 +0,0 @@ -GridDB JDBCドライバ説明書 - -# 目次 - -[はじめに](introduction.md) - -[概要](overview.md) - -[仕様](specifications.md) - -[サンプル](sample.md) diff --git a/manuals/GridDB_QuickStartGuide/using-rpm.md b/manuals/GridDB_QuickStartGuide/using-rpm.md index 3992cfb..5716ea2 100644 --- a/manuals/GridDB_QuickStartGuide/using-rpm.md +++ b/manuals/GridDB_QuickStartGuide/using-rpm.md @@ -1,9 +1,10 @@ # RPMファイルを利用する場合 - CentOS 7.6の環境での動作を確認しています。 + CentOS 7.9の環境での動作を確認しています。 >#### 注意 + >- 事前にPython3をインストールしてください。 >- このパッケージをインストールすると、OS内にgsadmユーザが作成されます。運用コマンドはgsadmユーザで操作してください。 > 例 > ``` @@ -13,7 +14,7 @@ > ``` >- gsadmユーザでログインすると環境変数 GS_HOMEとGS_LOGが自動的に設定されます。また、運用コマンドの場所が環境変数 PATHに設定されます。 >- Javaクライアントのライブラリ(gridstore.jar)は/usr/share/java上に、サンプルは/usr/griddb-XXX/docs/sample/program上に配置されます。 - + >- 過去版がインストールされている場合は、アンインストール後、/var/lib/gridstore上のconf/,data/を削除してください。 ## インストール @@ -56,7 +57,8 @@ OSのグループgridstoreとユーザgsadmが作成されます。ユーザgsad gs_cluster.json # クラスタ定義ファイル gs_node.json # ノード定義ファイル password # ユーザ定義ファイル - data/ # データベースファイルディレクトリ + data/ # データファイル,チェックポイントログディレクトリ + txnlog/ # トランザクションログファイルディレクトリ log/ # ログディレクトリ ``` @@ -68,6 +70,7 @@ OSのグループgridstoreとユーザgsadmが作成されます。ユーザgsad gs_cluster.json # クラスタ定義ファイル gs_node.json # ノード定義ファイル password # ユーザ定義ファイル + conf_multicast/ # 定義ファイルディレクトリ(リモート接続用) 3rd_party/ docs/ manual/ @@ -80,7 +83,12 @@ OSのグループgridstoreとユーザgsadmが作成されます。ユーザgsad ## 起動/停止 -gsadmユーザで操作してください。それ以外は「[ソースコードを利用する場合](using-source-code.md#ソースコードを利用する場合)」の「起動/停止」と同じです。 +gsadmユーザで操作してください。 +また、デフォルトはローカル接続限定の設定になっていますので、以下の操作でコンフィグを変更してください。 + + [gsadm]$ cp /usr/griddb-X.X.X/conf_multicast/* conf/. + +それ以外は「[ソースコードを利用する場合](using-source-code.md#ソースコードを利用する場合)」の「起動/停止」と同じです。 ## サンプルプログラムのビルド・実行方法 diff --git a/manuals/GridDB_QuickStartGuide/using-source-code.md b/manuals/GridDB_QuickStartGuide/using-source-code.md index 17734b6..8f4c136 100644 --- a/manuals/GridDB_QuickStartGuide/using-source-code.md +++ b/manuals/GridDB_QuickStartGuide/using-source-code.md @@ -1,6 +1,9 @@ # ソースコードを利用する場合 - CentOS 7.6 (gcc 4.8.5) の環境での動作を確認しています。 + CentOS 7.9 (gcc 4.8.5) の環境での動作を確認しています。 + + ※事前にtclをインストールしてください。例) yum install tcl.x86_64 + ※事前にPython3をインストールしてください。例) yum install python3 ## サーバ、クライアント (java) のビルド @@ -28,10 +31,6 @@ GridDBのソースコードをダウンロードしてビルドしてくださ >#### 注意 >- これら環境変数は、以降で説明する運用コマンドで参照されます。 ->- デフォルトのビルド環境はトリガ機能を無効にしています。トリガ機能を有効にするにはビルドする際に次のオプションを追加してください。 ->``` ->$ ./configure --enable-activemq ->``` ## 環境設定 diff --git a/manuals/GridDB_SQL_Reference/introduction.md b/manuals/GridDB_SQL_Reference/introduction.md deleted file mode 100644 index 0c978a6..0000000 --- a/manuals/GridDB_SQL_Reference/introduction.md +++ /dev/null @@ -1,7 +0,0 @@ -# はじめに - -GridDB v4.5 Community Edition では、GridDB のデータに SQL でアクセスできるインターフェース (SQL インタフェース) を提供します。 - -本書では、GridDB Community Edition(以降 GridDB CE と記載します)のサポートするデータベースにアクセスするための SQL インタフェースの SQL について説明します。 -SQL インターフェースは、NoSQL インタフェースとは異なるインタフェースですのでご注意ください。 -SQL インターフェースは、NoSQL インターフェースで作成したコンテナをテーブルとみなして参照・更新可能です。更新には行の更新だけでなく、コンテナのスキーマや索引の変更を含みます。また、SQL インターフェースで作成したテーブルは、コンテナとして NoSQL インターフェースで参照・更新可能です。 diff --git a/manuals/GridDB_SQL_Reference/metatables.md b/manuals/GridDB_SQL_Reference/metatables.md deleted file mode 100644 index 70daf73..0000000 --- a/manuals/GridDB_SQL_Reference/metatables.md +++ /dev/null @@ -1,241 +0,0 @@ -## メタテーブルとは -# メタテーブル - - -GridDBの管理用のメタデータを参照することができるテーブル群です。 - - ->#### メモ ->- メタテーブルは、参照のみ可能です。データの登録や削除はできません。 ->- [SELECT](#select)で参照する際、メタテーブル名は引用符"で囲んでください。 - - ->#### 注意 ->- メタテーブルのスキーマは将来のバージョンで変更される可能性があります。 - - -## テーブル情報 - -テーブルに関する情報を取得できます。 - -**テーブル名** - -\#tables - -**スキーマ** - -| 列名 | 内容 | 型 | -|----------------------------|-----------------------------------------------------|---------| -| DATABASE_NAME | データベース名 | STRING | -| TABLE_NAME | テーブル名 | STRING | -| TABLE_OPTIONAL_TYPE | テーブル種別
COLLECTION / TIMESERIES | STRING | -| DATA_AFFINITY | データアフィニティ | STRING | -| EXPIRATION_TIME | 期限解放経過時間 | INTEGER | -| EXPIRATION_TIME_UNIT | 期限解放経過単位 | STRING | -| EXPIRATION_DIVISION_COUNT | 期限解放分割数 | STRING | -| COMPRESSION_METHOD | 時系列圧縮方式 | STRING | -| COMPRESSION_WINDOW_SIZE | 時系列圧縮間引き最大期間 | INTEGER | -| COMPRESSION_WINDOW_SIZE_UNIT | 時系列圧縮間引き最大期間単位 | STRING | -| PARTITION_TYPE | パーティショニング種別 | STRING | -| PARTITION_COLUMN | パーティショニングキー | STRING | -| PARTITION_INTERVAL_VALUE | 分割値(インターバル/インターバルハッシュの場合) | INTEGER | -| PARTITION_INTERVAL_UNIT | 分割単位(インターバル/インターバルハッシュの場合) | STRING | -| PARTITION_DIVISION_COUNT | 分割数(ハッシュの場合) | INTEGER | -| SUBPARTITION_TYPE | パーティショニング種別
(インターバルハッシュの場合にHASH)| STRING | -| SUBPARTITION_COLUMN | パーティショニングキー
(インターバルハッシュの場合)| STRING | -| SUBPARTITION_INTERVAL_VALUE | 分割値 | INTEGER | -| SUBPARTITION_INTERVAL_UNIT | 分割単位 | STRING | -| SUBPARTITION_DIVISION_COUNT | 分割数
(インターバルハッシュの場合) | INTEGER | -| EXPIRATION_TYPE | 期限解放種別
ROW / PARTITION | STRING | - -## 索引情報 - -索引に関する情報を取得できます。 - -**テーブル名** - -\#index_info - -**スキーマ** - -| 列名 | 内容 | 型 | -|------------------|------------------------------|--------| -| DATABASE_NAME | データベース名 | STRING | -| TABLE_NAME | テーブル名 | STRING | -| INDEX_NAME | 索引名 | STRING | -| INDEX_TYPE | 索引種別
TREE / HASH / SPATIAL | STRING | -| ORDINAL_POSITION | 索引内のカラム列順序(1からの連番) | SHORT | -| COLUMN_NAME | 列名 | STRING | - -## パーティショニング情報 - -パーティショニングされたテーブルの内部コンテナ(データパーティション)に関する情報を取得することができます。 - -**テーブル名** - -\#table_partitions - -**スキーマ** - -| 列名 | 内容 | 型 | -|-------------------------|---------------------------------------|--------| -| DATABASE_NAME | データベース名 | STRING | -| TABLE_NAME | パーティショニングされたテーブルの名前 | STRING | -| PARTITION_BOUNDARY_VALUE | データパーティションの下限値 | STRING | - - -#### 仕様 - -- ロウ1件がひとつのデータパーティションの情報を表します。 - - 例えば、分割数128のハッシュパーティショニングテーブルの場合、TABLE_NAMEにテーブル名を指定して検索するとロウが128個表示されます。 -- 上記の列以外にも複数の列が表示されます。 -- 下限値でソートする場合、対象のパーティショニングキーの型に合わせてキャストする必要があります。 - -#### 例 - -- データパーティションの数を確認する - - ``` example - SELECT COUNT(*) FROM "#table_partitions" WHERE TABLE_NAME='myIntervalPartition'; - - COUNT(*) - ----------------------------------- - 8703 - ``` - -- データパーティションの下限値を確認する - - ``` example - SELECT PARTITION_BOUNDARY_VALUE FROM "#table_partitions" WHERE TABLE_NAME='myIntervalPartition' - ORDER BY PARTITION_BOUNDARY_VALUE; - - PARTITION_BOUNDARY_VALUE - ----------------------------------- - 2016-10-30T10:00:00Z - 2017-01-29T10:00:00Z - : - ``` - -- インターバルパーティショニングのテーブル「myIntervalPartition2」(パーティショニングキーの型:INTEGER、分割基準値 20000)のデータパーティションの下限値一覧を確認する - - ``` example - SELECT CAST(PARTITION_BOUNDARY_VALUE AS INTEGER) V FROM "#table_partitions" - WHERE TABLE_NAME='myIntervalPartition2' ORDER BY V; - - PARTITION_BOUNDARY_VALUE - ----------------------------------- - -5000 - 15000 - 35000 - 55000 - : - ``` - -## ビュー情報 - -ビューに関する情報を取得できます。 - -**テーブル名** - -\#views - -**スキーマ** - -| 列名 | 内容 | 型 | -|----------------------------|-----------------------------------------------------|---------| -| DATABASE_NAME | データベース名 | STRING | -| VIEW_NAME | ビュー名 | STRING | -| VIEW_DEFINITION | ビュー定義文字列 | STRING | - -## 実行中SQL情報 - -実行中のSQL(クエリまたはジョブ)に関する情報を取得できます。 - -**テーブル名** - -\#sqls - -**スキーマ** - -| 列名 | 内容 | 型 | -|----------------------------|-----------------------------------------------------|----------| -| DATABASE_NAME | データベース名 | STRING | -| NODE_ADDRESS | 処理実行中のノードのアドレス(system) | STRING | -| NODE_PORT | 処理実行中のノードのポート(system) | INTEGER | -| START_TIME | 処理開始時刻 | TIMESTAMP| -| APPLICATION_NAME | アプリケーション名 | STRING | -| SQL | クエリ文字列 | STRING | -| QUERY_ID | クエリID | STRING | -| JOB_ID | ジョブID | STRING | - -## 実行中イベント情報 - -実行中のイベントに関する情報を取得できます。 - -**テーブル名** - -\#events - -**スキーマ** - -| 列名 | 内容 | 型 | -|----------------------------|-----------------------------------------------------|----------| -| NODE_ADDRESS | 処理実行中のノードのアドレス(system) | STRING | -| NODE_PORT | 処理実行中のノードのポート(system) | INTEGER | -| START_TIME | 処理開始時刻 | TIMESTAMP| -| APPLICATION_NAME | アプリケーション名 | STRING | -| SERVICE_TYPE | サービス種別(SQL/TRANSACTION/CHECKPOINT/SYNC) | STRING | -| EVENT_TYPE | イベント種別(PUT/CP_START/SYNC_START など) | STRING | -| WORKER_INDEX | ワーカーのスレッド番号 | INTEGER | -| CLUSTER_PARTITION_INDEX | クラスタパーティション番号 | INTEGER | - -## コネクション情報 - -接続中のコネクションに関する情報を取得できます。 - -**テーブル名** - -\#sockets - -**スキーマ** - -| 列名 | 内容 | 型 | -|----------------------------|-----------------------------------------------------|----------| -| SERVICE_TYPE | サービス種別(SQL/TRANSACTION) | STRING | -| SOCKET_TYPE | ソケット種別 | STRING | -| NODE_ADDRESS | 接続元ノードのアドレス(ノード視点) | STRING | -| NODE_PORT | 接続元ノードのポート(ノード視点) | INTEGER | -| REMOTE_ADDRESS | 接続先ノードのアドレス(ノード視点) | STRING | -| REMOTE_PORT | 接続先ノードのポート(ノード視点) | INTEGER | -| APPLICATION_NAME | アプリケーション名 | STRING | -| CREATION_TIME | ソケット生成時刻 | TIMESTAMP| -| DISPATCHING_EVENT_COUNT | イベントハンドリングの要求を開始した総回数 | LONG | -| SENDING_EVENT_COUNT | イベント送信を開始した総回数 | LONG | - -ソケット種別は次の通り。 - -|値 |説明| -|-|-| -|SERVER |サーバ間同士のTCP接続 | -|CLIENT |クライアントとのTCP接続 | -|MULTICAST |マルチキャストソケット | -|NULL |接続中など現時点で不明の場合| - -#### 例 - -クライアントとのTCP接続(ソケット種別:CLIENT)の場合に限り、そのコネクションが -実行待ちかどうかを判別することができます。 - -具体的には、DISPATCHING_EVENT_COUNTの方がSENDING_EVENT_COUNTより大きい場合、 -実行待ち状態のタイミングが存在した可能性が比較的高いと判定できます。 - -``` example -SELECT CREATION_TIME, NODE_ADDRESS, NODE_PORT, APPLICATION_NAME FROM "#sockets" -WHERE SOCKET_TYPE='CLIENT' AND DISPATCHING_EVENT_COUNT > SENDING_EVENT_COUNT; - -CREATION_TIME NODE_ADDRESS NODE_PORT APPLICATION_NAME --------------------------------------------------------------------- -2019-03-27T11:30:57.147Z 192.168.56.71 20001 myapp -2019-03-27T11:36:37.352Z 192.168.56.71 20001 myapp - : -``` diff --git a/manuals/GridDB_SQL_Reference/reserved-words.md b/manuals/GridDB_SQL_Reference/reserved-words.md deleted file mode 100644 index ab24700..0000000 --- a/manuals/GridDB_SQL_Reference/reserved-words.md +++ /dev/null @@ -1,5 +0,0 @@ -# 予約語 - -GridDBのSQLでは、以下の単語が予約語として定義されています。 - -ABORT ACTION AFTER ALL ANALYZE AND AS ASC BEGIN BETWEEN BY CASE CAST COLLATE COLUMN COMMIT CONFLICT CREATE CROSS DATABASE DAY DELETE DESC DISTINCT DROP ELSE END ESCAPE EXCEPT EXCLUSIVE EXISTS EXPLAIN EXTRACT FALSE FOR FROM GLOB GRANT GROUP HASH HAVING HOUR IDENTIFIED IF IN INDEX INITIALLY INNER INSERT INSTEAD INTERSECT INTO IS ISNULL JOIN KEY LEFT LIKE LIMIT MATCH MILLISECOND MINUTE MONTH NATURAL NO NOT NOTNULL NULL OF OFFSET ON OR ORDER OUTER PARTITION PARTITIONS PASSWORD PLAN PRAGMA PRIMARY QUERY RAISE REGEXP RELEASE REPLACE RESTRICT REVOKE RIGHT ROLLBACK ROW SECOND SELECT SET TABLE THEN TIMESTAMPADD TIMESTAMPDIFF TO TRANSACTION TRUE UNION UPDATE USER USING VALUES VIEW VIRTUAL WHEN WHERE WITHOUT XOR YEAR diff --git a/manuals/GridDB_SQL_Reference/sql-description-format.md b/manuals/GridDB_SQL_Reference/sql-description-format.md deleted file mode 100644 index 10e2551..0000000 --- a/manuals/GridDB_SQL_Reference/sql-description-format.md +++ /dev/null @@ -1,158 +0,0 @@ -# SQL記述形式 - -ここでは、SQLインターフェースで使用できるSQLの記述形式について示します。 - -## 使用できる操作 - -SELECT文の他、CREATE TABLE等のDDL(Data Definition Language、データ定義言語)やINSERT/DELETE文などをサポートしています。詳細は[GridDBでサポートされるSQL文](sql-commands-supported.md#sql_commands_supported_by_griddb_ae)を参照して下さい。 - ---- -## データ型 - -### データ格納に使用する型 - -SQLインターフェースでデータの格納に使用する型は次の通りです。この型名はテーブル作成時にカラム型として記述できます。 - -| データ型 | 内容詳細 | -|-------------|--------------------------------------------------------| -| BOOL型 | true/false | -| BYTE型 | -27から27-1 (8ビット)の整数値 | -| SHORT型 | -215から215-1 (16ビット)の整数値 | -| INTEGER型 | -231から231-1 (32ビット)の整数値 | -| LONG型 | -263から263-1 (64ビット)の整数値 | -| FLOAT型 | 単精度型(32ビット) IEEE754で定められた浮動小数点数 | -| DOUBLE型 | 倍精度型(64ビット) IEEE754で定められた浮動小数点数 | -| TIMESTAMP型 | 日付と時刻の組 | -| STRING型 | Unicodeコードポイントを文字とする、任意個数の文字の列 | -| BLOB型 | 画像や音声などのバイナリデータのためのデータ型
入力したままの形式で保存されるラージオブジェクト
文字xあるいはXをつけて、X'23AB'のような16進表現もできる | - -また、テーブルにNULL値を格納することができます。NULL値に対して“IS NULL”などの演算子を使用すると、SQL仕様に沿った結果を返却します。 - -### テーブル作成時にカラム型として記述可能な表現 - -SQLインターフェースでは、テーブル作成時にカラム型として記述された型名について、[データ格納に使用する型](#data_types_used_in_data_storage)で列挙した型名と一致しなくても、ルールに従って解釈しデータの格納に使用する型を決定します。 - -以下のルールを上から順にチェックし、合致したルールによってデータ格納に使用する型を決定します。 ルールのチェック時には記述した型名およびルールでチェックする文字列の大文字小文字は区別しません。 -複数のルールに合致した場合はより上にあるルールが優先されます。 -どのルールにも当てはまらない場合はエラーとなりテーブル作成に失敗します。 - -| ルールNo. | テーブル作成時にカラム型として記述した識別子 | 作成するテーブルのカラム型 | -|-----------|----------------------------------------------------|------------------------------------| -| 1 | [データ格納に使用する型](#data_types_used_in_data_storage)に列挙した型名 | テーブル作成時に指定された型に従う | -| 2 | REAL | DOUBLE型 | -| 3 | TINYINT | BYTE型 | -| 4 | SMALLINT | SHORT型 | -| 5 | BIGINT | LONG型 | -| 6 | INTを含む型名 | INTEGER型 | -| 7 | CHAR, CLOB, TEXTのいずれかを含む型名 | STRING型 | -| 8 | BLOBを含む型名 | BLOB型 | -| 9 | REAL, DOUBのいずれかを含む型名 | DOUBLE型 | -| 10 | FLOAを含む型名 | FLOAT型 | - -上記ルールによるデータ型決定の例を示します。 -- 記述した型名が"BIGINTEGER"→INTEGER型(ルール6) -- 記述した型名が"LONG"→LONG型(ルール1) -- 記述した型名が"TINYINT"→BYTE型(ルール3) -- 記述した型名が"FLOAT"→FLOAT型(ルール1) -- 記述した型名が"VARCHAR"→STRING型(ルール7) -- 記述した型名が"CHARINT"→INTEGER型(ルール6) -- 記述した型名が"BIGBLOB"→BLOB型(ルール8) -- 記述した型名が"FLOATDOUB"→DOUBLE型(ルール9) -- 記述した型名が"INTREAL"→INTEGER型(ルール6) -- 記述した型名が"FLOATINGPOINT"→INTEGER型(ルール6) -- 記述した型名が"DECIMAL"→エラー - -NoSQLインターフェースのクライアントにおけるデータ型と同等の型をSQLインターフェイスで使用する場合は、以下のように記述してください。ただし、一部同等の型が存在せず、使用できないものがあります。 - -| NoSQLインターフェースのデータ型 | 同等の型となるSQLインターフェースのカラム型記述 | -|--------------------------------------|----------------------------------------------------| -| STRING(文字列型) | STRING または STRING型となる表現 | -| BOOL(ブール型) | BOOL | -| BYTE(8ビット整数型) | BYTE または BYTE型となる表現 | -| SHORT(16ビット整数型) | SHORT または SHORT型となる表現 | -| INTEGER(32ビット整数型) | INTEGER または INTEGER型となる表現 | -| LONG(64ビット整数型) | LONG または LONG型となる表現 | -| FLOAT(32ビット単精度浮動小数点数型) | FLOAT または FLOAT型となる表現 | -| DOUBLE(64ビット倍精度浮動小数点数型) | DOUBLE または DOUBLE型となる表現 | -| TIMESTAMP(時刻型) | TIMESTAMP | -| GEOMETRY(空間型) | テーブル作成時のカラム型には指定できません | -| BLOB型 | BLOB または BLOB型となる表現 | -| 配列型 | テーブル作成時のカラム型には指定できません | - -### コンテナをテーブルとしてアクセスするときのデータ型と値の扱い - -NoSQLインターフェースのクライアントで作成したコンテナを、SQLインターフェースでアクセスする場合のコンテナのカラム型および値の扱いを以下に示します。 - -| コンテナのカラム型 | SQLにマッピングされるデータ型 | 値 | -|--------------------|----------------------------------|----------------| -| STRING型 | STRING型 | 元の値と同一 | -| BOOL型 | BOOL型 | 元の値と同一 | -| BYTE型 | BYTE型 | 元の値と同一 | -| SHORT型 | SHORT型 | 元の値と同一 | -| INTEGER型 | INTEGER型 | 元の値と同一 | -| LONG型 | LONG型 | 元の値と同一 | -| FLOAT型 | FLOAT型 | 元の値と同一 | -| DOUBLE型 | DOUBLE型 | 元の値と同一 | -| TIMESTAMP型 | TIMESTAMP型 | 元の値と同一 | -| GEOMETRY型 | NULL定数と同等の型(Types.UNKNOWN) | 全ての値がNULL | -| BLOB型 | BLOB型 | 元の値と同一 | -| 配列型 | NULL定数と同等の型(Types.UNKNOWN) | 全ての値がNULL | - -### SQLでサポートしていないデータ型の扱い - -NoSQLインタフェースでサポートしているが、SQLインタフェースではサポートしていないデータ型は次の通りです。 - -- GEOMETRY型 -- 配列型 - -これらのデータ型のデータに対して、SQLインタフェースでアクセスした場合の扱いについて説明します。 - -- テーブル作成 CREATE TABLE - - テーブル作成時のカラムのデータ型として、これらのデータ型は指定できません。エラーになります。 - -- テーブル削除 DROP TABLE - - 削除対象テーブルがこれらのデータ型のカラムを持っていても、テーブル削除はできます。 - -- 登録/更新/削除 INSERT/UPDATE/DELETE - - これらのデータ型のカラムを持つテーブルに対しては、INSERT/UPDATE/DELETEはエラーになります。 - - これらのデータ型のカラムの値は指定せずに、サポート範囲のデータ型のカラムの値だけ指定しても、ロウを登録・更新することはできません。 - - ``` - // NoSQLインタフェースを用いて作成したテーブル -  名前 : sample1 -  カラム: id INTEGER型 - value DOUBLE型 - geometry GEOMETRY型 - - // INTEGER型とDOUBLE型のカラムのみ指定してロウの登録 →テーブルにGEOMETRY型のカラムがあるので、エラーが発生する - INSERT INTO sample1 (id, value) VALUES (1, 192.3) - ``` - -- 検索 SELECT - - これらのデータ型のカラムを持つテーブルを検索すると、そのカラムの値は常にNULLが返ります。 - - -- 索引作成/削除 CREATE INDEX/DROP INDEX - - GEOMETRY型カラムへの索引作成・削除は可能です。 - - 配列型カラムへの索引作成・削除はできません。エラーになります。(NoSQLインタフェースでも、配列型カラムへの索引作成・削除は未サポートです) - -## ユーザとデータベース - -GridDBのユーザには、管理ユーザと一般ユーザの2種類があり、利用できる機能に違いがあります。 また、データベースを作成することで、利用ユーザ単位にアクセスを分離することができます。 -ユーザ、データベースの詳細は『[GridDB 機能リファレンス](../GridDB_FeaturesReference/toc.md)』を参照ください。 - -## ネーミングの規則 - -ネーミングの規則は次の通りです。 - -- データベース名・テーブル名・ビュー名・列名・索引名および一般ユーザ名は、1文字以上のASCII英数字ならびにアンダースコア「\_」、ハイフン「-」、ドット「.」、スラッシュ「/」、イコール「=」の列で構成されます。 -- テーブル名にはノードアフィニティ機能向けに「@」の文字も指定できます。 - -ノードアフィニティ機能、ネーミングの規則・制限についての詳細は、『[GridDB 機能リファレンス](../GridDB_FeaturesReference/toc.md)』を参照ください。 - - ->#### メモ ->- 名前にASCII英数字とアンダースコア以外の文字を含む、または、先頭文字が数字のテーブルやカラムなどをSQL文に記述する場合は、引用符"で囲んでください。 -> ``` -> SELECT "column.a1" FROM "Table-5" -> ``` diff --git a/manuals/GridDB_SQL_Reference/toc.md b/manuals/GridDB_SQL_Reference/toc.md deleted file mode 100644 index 1d1ce59..0000000 --- a/manuals/GridDB_SQL_Reference/toc.md +++ /dev/null @@ -1,13 +0,0 @@ -GridDB SQLリファレンス - -# 目次 - -[はじめに](introduction.md) - -[SQL記述形式](sql-description-format.md) - -[サポートされるSQL文](sql-commands-supported.md) - -[メタテーブルとは](metatables.md) - -[予約語](reserved-words.md) diff --git a/manuals/GridDB_TQL_Reference/annex.md b/manuals/GridDB_TQL_Reference/annex.md deleted file mode 100644 index ce6f197..0000000 --- a/manuals/GridDB_TQL_Reference/annex.md +++ /dev/null @@ -1,27 +0,0 @@ - -# 付録 - - -## 値の範囲 - -値の上限などの値の範囲を説明します。 -システムの制限値については、『[GridDB 機能リファレンス](../GridDB_FeaturesReference/toc.md)』を参照してください。 - -### 基本型の取りうる値 -以下の基本型の取りうる値は、次の通りです。 - -| 型 | 取りうる値 | -|----|-----------| -| ブール(BOOL)型 | 真または偽 | -| BYTE型 | -27から27-1 | -| SHORT型 | -215から215-1 | -| INTEGER型 | -231から231-1 | -| LONG型 | -263から263-1 | -| FLOAT型 | IEEE754準拠 | -| DOUBLE型 | IEEE754準拠 | -| 時刻(TIMESTAMP)型 | 西暦1970年1月1日のはじめから西暦9999年12月31日の終わりまで(UTC相当)。精度はミリ秒。うるう秒は扱わない | - - -空間(GEOMETRY)型でTQL演算に使用できる値はST_GeomFromText関数が返す任意の値です。このうちコンテナに格納できる値はQUADRATICSURFACE構造を除いたものです。 - -APIを通じて基本型とマッピングされるオブジェクトの表現範囲は、上記の範囲と異なる場合があります。上記の範囲を超えた値を持つオブジェクトの内容をコンテナに格納することはできませんが、検索条件の構築など、その他操作の可否を規定するものではありません。たとえば、Java APIにて時刻型にマッピングされるjava.util.Dateオブジェクトでは、コンテナに格納できない西暦1970年より前の年の時刻も表現でき、その値をロウキーの条件としてRowKeyPredicateオブジェクトや時系列のサンプリングクエリに含めることができます。しかし、その条件でロウを取得しようとした時点でエラーが検出される可能性があります。マッピングされるオブジェクトの具体的な表現範囲は、個々のオブジェクトの型の定義を参照してください。 diff --git a/manuals/GridDB_TQL_Reference/introduction.md b/manuals/GridDB_TQL_Reference/introduction.md deleted file mode 100644 index c1c8b1f..0000000 --- a/manuals/GridDB_TQL_Reference/introduction.md +++ /dev/null @@ -1,6 +0,0 @@ - -# はじめに - -GridDB v4.5 Community Edition のアプリケーションプログラミングインタフェースには、基本的なデータアクセスとTQLの実行ができるNoSQLインタフェースとSQL92に準拠したSQLを実行できるNewSQLインタフェースの2種類を提供しています。 - -本書では、GridDB Community Edition(以降 GridDB CE と記載します)のNoSQL インタフェースの 1つである TQLについて説明します。 diff --git a/manuals/GridDB_TQL_Reference/toc.md b/manuals/GridDB_TQL_Reference/toc.md deleted file mode 100644 index 79b02ca..0000000 --- a/manuals/GridDB_TQL_Reference/toc.md +++ /dev/null @@ -1,11 +0,0 @@ -GridDB TQLリファレンス - -# 目次 - -[はじめに](introduction.md) - -[データ型](type.md) - -[TQL構文・演算機能](tql-syntax-and-calculation-functions.md) - -[付録](annex.md) diff --git a/manuals/GridDB_TQL_Reference/type.md b/manuals/GridDB_TQL_Reference/type.md deleted file mode 100644 index c125f3a..0000000 --- a/manuals/GridDB_TQL_Reference/type.md +++ /dev/null @@ -1,59 +0,0 @@ -# データ型 - -フィールドならびにクエリ演算で用いる値の制約を示す、型について定義します。 - -## 基本型 - -他の型の組み合わせで表現できない、基本的な型を定義します。 - -### ブール(BOOL)型 - -真または偽のいずれかの値を表します。 - -### 文字列(STRING)型 - -Unicodeコードポイントを文字とする、任意個数の文字の列より構成されます。ただし、NULL文字(U+0000)は扱いません。 -上限サイズについては『[GridDB 機能リファレンス](../GridDB_FeaturesReference/toc.md)』を参照してください。 - -### 整数型 - -それぞれ次の範囲の整数値を表します。 -- BYTE型: -27から27-1 (8ビット) -- SHORT型: -215から215-1 (16ビット) -- INTEGER型: -231から231-1 (32ビット) -- LONG型: -263から263-1 (64ビット) - -### 浮動小数点数型 - -IEEE754で定められた浮動小数点数を表します。精度に応じた次の型があります。 -- FLOAT型: 単精度型(32ビット) -- DOUBLE型: 倍精度型(64ビット) - -※演算精度は原則IEEE754準拠ですが、実行環境により異なる場合があります。 - -### 時刻(TIMESTAMP)型 - -年月日ならびに時分秒からなる時刻を表します。表現範囲については付録の[値の範囲](annex.md#label_range_of_values)を参照してください。 - -### 空間(GEOMETRY)型 - -空間構造を表します。上限サイズについては『[GridDB 機能リファレンス](../GridDB_FeaturesReference/toc.md)』を参照してください。 -各構造の表す座標の数値として非数(NAN)や正負の無限大(INF、-INF)は扱いません。 また、SRID (Spatial Reference System Identifier)を整数型の値として格納できますが、SRIDの表す座標系による座標の範囲制限や、SRIDの変換による座標変換については対応していません。 - -### BLOB型 - -画像や音声などのバイナリデータを表します。上限サイズについては『[GridDB 機能リファレンス](../GridDB_FeaturesReference/toc.md)』を参照してください。 - -## 複合型 - -基本型の組み合わせで構成される型を定義します。 - -### 配列型 - -値の列を表します。以下の型について配列型を提供します。長さとは、構成される配列要素の数であり、最小値は0となります。 -長さの上限については『[GridDB 機能リファレンス](../GridDB_FeaturesReference/toc.md)』を参照してください。配列の要素にNULLは設定できません。 -- ブール型 -- 文字列型 -- 整数型 -- 浮動小数点数型 -- 時刻型 diff --git a/manuals/README.md b/manuals/README.md deleted file mode 100644 index 99a3c67..0000000 --- a/manuals/README.md +++ /dev/null @@ -1,13 +0,0 @@ -# GridDB Community Edition v4.5 マニュアル - -## マニュアル一覧 - -| マニュアル名称| 概要 | -|------------|---------------------| -|[GridDB クイックスタートガイド](GridDB_QuickStartGuide/toc.md)|GridDBの概要やGridDBを簡単に利用する手順を説明したマニュアルです。 | -|[GridDB 機能リファレンス](GridDB_FeaturesReference/toc.md)| GridDBの機能全般について説明したマニュアルです。 | -|[GridDB Java APIリファレンス](http://griddb.github.io/docs-ja/manuals/GridDB_Java_API_Reference.html)|アプリケーション開発のための Java APIの仕様書(リファレンス)です。| -|[GridDB C APIリファレンス](http://griddb.github.io/docs-ja/manuals/GridDB_C_API_Reference.html)|アプリケーション開発のための C APIの仕様書(リファレンス)です。| -|[GridDB TQLリファレンス](GridDB_TQL_Reference/toc.md)| アプリケーション開発のためのクエリ言語TQLの仕様書(リファレンス)です。| -|[GridDB JDBCドライバ説明書](GridDB_JDBC_Driver_UserGuide/toc.md)| データベースにアクセスするための JDBC ドライバのマニュアルです。 | -|[GridDB SQLリファレンス](GridDB_SQL_Reference/toc.md)| アプリケーション開発のためのSQLの仕様書(リファレンス)です。 | diff --git a/manuals/md_programming_guide/img/API.png b/manuals/md_programming_guide/img/API.png new file mode 100644 index 0000000..95574fa Binary files /dev/null and b/manuals/md_programming_guide/img/API.png differ diff --git a/manuals/md_programming_guide/img/TIME_AVG.png b/manuals/md_programming_guide/img/TIME_AVG.png new file mode 100644 index 0000000..255a715 Binary files /dev/null and b/manuals/md_programming_guide/img/TIME_AVG.png differ diff --git a/manuals/md_programming_guide/img/TIME_INTERPOLATED.png b/manuals/md_programming_guide/img/TIME_INTERPOLATED.png new file mode 100644 index 0000000..398ac4c Binary files /dev/null and b/manuals/md_programming_guide/img/TIME_INTERPOLATED.png differ diff --git a/manuals/md_programming_guide/img/TIME_NEXT_TIME_PREV.png b/manuals/md_programming_guide/img/TIME_NEXT_TIME_PREV.png new file mode 100644 index 0000000..3926680 Binary files /dev/null and b/manuals/md_programming_guide/img/TIME_NEXT_TIME_PREV.png differ diff --git a/manuals/md_programming_guide/img/TIME_SAMPLING.png b/manuals/md_programming_guide/img/TIME_SAMPLING.png new file mode 100644 index 0000000..e17bf1f Binary files /dev/null and b/manuals/md_programming_guide/img/TIME_SAMPLING.png differ diff --git a/manuals/md_programming_guide/md_programming_guide.md b/manuals/md_programming_guide/md_programming_guide.md new file mode 100644 index 0000000..9a2d1bb --- /dev/null +++ b/manuals/md_programming_guide/md_programming_guide.md @@ -0,0 +1,6079 @@ +# はじめに + +**本書では、GridDBのアプリケーションプログラミングについて説明します。** + +本書は、GridDBを用いたシステム設計・開発を行う設計・開発者の方を対象としています。 + +本書は、以下のような構成となっています。 + +- 概要 + + - 開発言語やNoSQL/NewSQLインタフェース、サポート範囲について説明します。 + +- Java API (NoSQLインタフェース) + + - NoSQLインタフェースのJavaのプログラミングについて説明します。 + +- C API (NoSQLインタフェース) + + - NoSQLインタフェースのCのプログラミングについて説明します。 + +- JDBC (NewSQLインタフェース) + + - NewSQLインタフェースのJavaのプログラミングについて説明します。 + + +# 概要 + +## 開発言語 + +GridDBのアプリケーションプログラミングインタフェースには、 +基本的なデータアクセスとTQLの実行ができるNoSQLインタフェースと、 +SQL92に準拠したSQLを実行できるNewSQLインタフェースの2種類があります。 + +NoSQLインタフェースは、NewSQLインタフェースに比べてSQLの処理部を介さないためデータ登録や検索の処理が高速に行えます。 +一方、NewSQLインタフェースは、 +SQLを用いたデータ分析やBI(Business Intelligence)やETL(Extract Transfer Load)ツールからのアクセスなどができます。 + +
+ NoSQLインタフェースとNewSQLインタフェース +
NoSQLインタフェースとNewSQLインタフェース
+
+ +| I/F | 特長 | 開発言語 | API名称 | +|-------------------|--------------|----------|-----------| +| NoSQLインタフェース | - 基本的なデータアクセスとTQLの実行
- 独自のAPI
- データ登録や検索の処理が高速 | Java
C
Python
Node.js
Go | Java API
C API
Python API
Node.js API
Go API | +| NewSQLインタフェース | - SQL92に準拠したSQLの実行
- 標準仕様に準拠したAPI
- SQLの並列分散処理 | Java
C | JDBC
ODBC(\*1) | + +(\*1) ODBCはEE限定です。 + + +[メモ] +- NoSQLインタフェースで作成したコンテナと、NewSQLインタフェースで作成したコンテナに違いはありません。 +どちらのインタフェースで作成したコンテナでも、両方のインタフェースからアクセスできます。 +- NewSQLインタフェースで作成したコンテナに対して「テーブル」という名称を使う場合がありますが、コンテナとテーブルは同じ意味を表します。 + + + +## サポート範囲 + +NoSQLインタフェースとNewSQLインタフェースでは、サポートしている機能やデータ型の範囲が異なります。 +本節では、各インタフェースのサポート範囲について説明します。 +サポート範囲の詳細は、「付録」をご参照ください。 + + +### データ型 +GridDBのデータ型には、基本型と複合型の2種類のデータ型があります。それぞれのサポート範囲を以下に示します。 + +**基本型のサポート** + +| GridDBのデータ型 | NoSQLインタフェース | NewSQLインタフェース | +|-------------------|---|---| +| BOOL型 | ○ | ○ | +| STRING型 | ○ | ○ | +| BYTE型 | ○ | ○ | +| SHORT型 | ○ | ○ | +| INTEGER型 | ○ | ○ | +| LONG型 | ○ | ○ | +| FLOAT型 | ○ | ○ | +| DOUBLE型 | ○ | ○ | +| TIMESTAMP型 | ○ | ○ | +| GEOMETRY型 | ○ | × | +| BLOB型 | ○ | △ | + +(※ ○:サポート、△:一部サポート、×:未サポート) + + + +**複合型のサポート** + +| GridDBのデータ型 | NoSQLインタフェース | NewSQLインタフェース | +|----------------|---|---| +| BOOL配列型 | ○ | × | +| STRING配列型 | ○ | × | +| BYTE配列型 | ○ | × | +| SHORT配列型 | ○ | × | +| INTEGER配列型 | ○ | × | +| LONG配列型 | ○ | × | +| FLOAT配列型 | ○ | × | +| DOUBLE配列型 | ○ | × | +| TIMESTAMP配列型 | ○ | × | + +(※ ○:サポート、×:未サポート) + + + +### 機能 + +GridDBの主な機能についてのサポート範囲を以下に示します。 + +**基本機能のサポート** + +| GridDBの機能 | NoSQLインタフェース | NewSQLインタフェース | +|---------------------------|----|-----| +| クラスタへの接続 | ○ | ○ | +|---------------------------|--------------------------|--------------------------| +| コンテナ作成/削除 | ○ | ○(SQL) | +| ロウ登録/削除 | ○ | ○(SQL) | +| TQL実行 | ○ | × | +| SQL実行 | × | ○ | +| コミット/ロールバック | ○ | × 自動コミットのみ | +|---------------------------|--------------------------|--------------------------| +| 索引作成/削除 | ○ | ○(SQL) | +|---------------------------|--------------------------|--------------------------| +| コンテナ名一覧の取得 | ○ | ○ | +| カラム情報の取得 | ○ | ○ | + +※ ○:サポート、○(SQL):SQLによるサポート、×:未サポート + + + +**拡張機能のサポート** + +| GridDBの機能 | NoSQLインタフェース | NewSQLインタフェース | +|----------------------------------|----|--------| +| アフィニティ設定 | ○ | ○(SQL) | +| パーティションコンテナ作成 | × | ○(SQL) | + +※ ○:サポート、△:一部サポート、×:未サポート + + + +# Java API (NoSQLインタフェース) + +## Java APIを利用したアプリケーションの開発 + +### サンプルプログラムの実行 + +サンプルプログラムのコンパイルと実行方法を説明します。 + +コンパイルと実行の際には、クラスパスにライブラリgridstore.jarを設定します。必要に応じてロギングなどのライブラリも設定してください。 + +- 例) Sample.javaのコンパイルと実行の例 + + ``` + $ javac -classpath "/usr/share/java/gridstore.jar:." Sample.java + $ java -classpath "/usr/share/java/gridstore.jar:." Sample + ``` + + + +サンプルプログラム一覧 + +| 分類 | プログラム名 | 内容 | 作成するコンテナ名 | +|------|------------|------|-------------------| +| [クラスタに接続する](#java_connect) | Connect.java | マルチキャスト方式でクラスタに接続して切断します。 | - | +| [コレクションを作成する(メソッド)](#java_create_collection_by_method) | CreateCollectionByMethod.java | メソッドでスキーマを指定する方法を用いて、コレクションを作成します。 | SampleJava_collection1 | +| [コレクションを作成する(クラス定義)](#java_create_collection_by_class) | CreateCollectionByClass.java | クラス定義でスキーマを指定する方法を用いて、コレクションを作成します。 | SampleJava_collection2 | +| [時系列コンテナを作成する(メソッド)](#java_create_container_by_method) | CreateTimeSeriesByMethod.java | メソッドでスキーマを指定する方法を用いて、時系列コンテナを作成します。 | SampleJava_timeseries1 | +| [ロウを登録する](#java_put_row) | PutRow.java | ひとつのコンテナにひとつのロウを登録します。 | SampleJava_PutRow | +| [複数のロウを登録する](#java_put_rows) | PutRows.java | ひとつのコンテナに複数のロウを登録します。 | SampleJava_PutRows | +| [ロウを取得する](#java_get_row) | GetRow.java | ロウキーを指定してコンテナからロウを取得します。 | SampleJava_GetRow | +| [TQLでロウを検索する](#java_tql_select) | TQLSelect.java | TQLのSELECT文でロウを取得します。 | SampleJava_TQLSelect | +| [TQLの集計関数を実行する](#java_tql_aggregation) | TQLAggregation.java | TQLのSELECT文で集計演算を実行します。 | SampleJava_TQLAggregation | +| [複数コンテナにロウを登録する](#java_multiput) | MultiPut.java | 複数のコンテナにロウを一括で登録します。 | SampleJava_MultiPut1, SampleJava_MultiPut2 | +| [複数コンテナからロウを取得する](#java_multiget) | MultiGet.java | 複数のコンテナからロウを一括で取得します。 | SampleJava_MultiGet1, SampleJava_MultiGet2 | +| [複数コンテナにTQLを実行する](#java_fetchall) | FetchAll.java | 複数のコンテナにTQLを一括で実行します。 | SampleJava_FetchAll1, SampleJava_FetchAll2 | +| [バイナリデータを登録・検索する](#java_binary) | BlobData.java | バイナリデータをコンテナに登録して、コンテナから取得します。 | SampleJava_BlobData | +| [ロウを更新する](#java_update) | UpdateRowByTQL.java | TQLで取得したRowSetを用いて、ロウを更新します。 | SampleJava_UpdateRowByTQL | +| [ロウを削除する(ロウキー)](#java_remove_row) | RemoveRowByRowkey.java | ロウキーを指定してロウを削除します。 | SampleJava_RemoveRowByRowkey | +| [ロウを削除する(TQL)](#java_remove_rowset) | RemoveRowByTQL.java | TQLで検索したロウを削除します。 | SampleJava_RemoveRowByTQL | +| [索引を作成する](#java_create_index) | CreateIndex.java | 索引を作成します。 | SampleJava_Index | +| [時系列の演算を行う](#java_timeseries_function) | TQLTimeseries.java | 時系列データに対して様々な演算を行います。 | SampleJava_TQLTimeseries | +| [配列型のデータを扱う](#java_arraydata) | ArrayData.java | 配列型のデータの登録と検索を行います。 | SampleJava_ArrayData | +| [空間型のデータを扱う](#java_geometry_data) | GeometryData.java | 空間型のデータの登録と検索を行います。 | SampleJava_GeometryData | +| [コンテナ名一覧を取得する](#java_containernames) | ContainerNames.java | コンテナ名の一覧を取得します。 | - | +| [コンテナのスキーマ情報を取得する](#java_containerinfo) | ContainerInformation.java | コンテナのスキーマ情報を取得します。 | SampleJava_Info | +| [複合ロウキーを使って複数コンテナからロウを取得する](#java_compositekey) | CompositeKeyMultiGet.java | 複合ロウキーを使って複数のコンテナからロウを一括で取得します。 | SampleJava_CompositeKeyMultiGet1, SampleJava_CompositeKeyMultiGet2 | + + +## プログラミングの基礎 + +Java APIを用いた基礎的なプログラミングを説明します。 + + + + +### クラスタに接続する + +データの登録や検索などの操作を行うためには、クラスタに接続する必要があります。接続処理では以下のメソッドを用います。 + +| 分類 | メソッド | +|-------|---------| +| GridStoreFactoryインスタンス取得 | GridStoreFactory GridStoreFactory.getInstance() | +| GridStoreインスタンス取得 | GridStore GridStoreFactory.getGridStore(java.util.Properties properties) | + + + +クラスタへの接続を行うプログラムの例を以下に示します。 + + +```java +import java.util.Properties; + +import com.toshiba.mwcloud.gs.GridStore; +import com.toshiba.mwcloud.gs.GridStoreFactory; + +public class Connect { + + public static void main(String[] args){ + try { + //=============================================== + // クラスタに接続する + //=============================================== + //(1)接続情報を指定する (マルチキャスト方式) + Properties prop = new Properties(); + prop.setProperty("notificationAddress", "239.0.0.1"); + prop.setProperty("notificationPort", "31999"); + prop.setProperty("clusterName", "myCluster"); + prop.setProperty("database", "public"); + prop.setProperty("user", "admin"); + prop.setProperty("password", "admin"); + prop.setProperty("applicationName", "SampleJava"); + + //(2)GridStoreオブジェクトを生成する + GridStore store = GridStoreFactory.getInstance().getGridStore(prop); + + //(3)コンテナ作成や取得などの操作を行うと、クラスタに接続される + store.getContainer("dummyContainer"); + + System.out.println("Connect to cluster"); + + //=============================================== + // 終了処理 + //=============================================== + // (4)接続をクローズする + store.close(); + System.out.println("success!"); + + } catch ( Exception e ){ + e.printStackTrace(); + } + } +} +``` + +接続処理の部分を説明します。 + +(1)クラスタのアドレスやユーザ、パスワードなどの接続情報をJavaのプロパティクラスに指定します。 + +(2)接続情報のプロパティを基に、GridStoreオブジェクトを生成します。 + +(3)GridStoreオブジェクトを用いてコンテナ作成や取得などの操作を行うと、GridDBクラスタへの接続処理が行われます。 + +(4)クローズで切断します。 + + +#### 接続方式 + +クラスタには、マルチキャスト方式、固定リスト方式、プロバイダ方式【EE限定】の3種類の接続方式があります。 + +| 接続方式 | 内容 | +| --------|------| +| マルチキャスト方式 | マルチキャスト通信を用いた方式 | +| 固定リスト方式 | クラスタを構成する全ノードのアドレスを直接指定する方式 | +| プロバイダ方式 | クラスタを構成する全ノードのアドレスをプロバイダを用いて提供する方式 | + +アプリケーションからクラスタに接続する際には、クラスタ定義ファイルgs_cluster.jsonで定義されている接続方式に合わせて、アプリケーション側の設定を行う必要があります。 + +まずはクラスタ定義ファイルgs_cluster.jsonを参照し、使用されている接続方式を確認してください。次に接続方式に基づいて、対応する値をPropertiesオブジェクトに設定してください。 + + +| 接続方式 | アプリケーションで指定する
プロパティのキー | 内容 | 指定する値 | +| --------|----------------------------------------|------|-----------| +| マルチキャスト方式 | notificationAddress

notificationPort | マルチキャストのアドレス

マルチキャストのポート番号 | /transaction/notificationAddressの値

/transaction/notificationPortの値 | +| 固定リスト方式 | notificationMember | クラスタを構成するノードのアドレスとポート番号のリスト | /cluster/notificationMemberの/transaction/addressと/transaction/portをリスト形式にした値 | +| プロバイダ方式 | notificationProvider | プロバイダのURL | /cluster/notificationProvider/urlの値 | + + +3つの接続方式について、クラスタ定義ファイルgs_cluster.jsonの記述内容と対応する接続プログラムの例を示します。 + +**マルチキャスト方式の例** + +- gs_cluster.jsonの記述(一部抜粋) + + ```json + { + "transaction":{ + "notificationAddress":"239.0.0.1", + "notificationInterval":"1s", + "notificationPort":31999, + } + } + ``` + +- 接続プログラムのGridStoreプロパティキーnotificationAddressとnotificationPortには、マルチキャストアドレスとポート番号を記述します。 + + ```Java + Properties prop = new Properties(); + prop.setProperty("notificationAddress", "239.0.0.1"); + prop.setProperty("notificationPort", "31999"); + prop.setProperty("clusterName", "myCluster"); + prop.setProperty("database", "public"); + prop.setProperty("user", "admin"); + prop.setProperty("password", "admin"); + prop.setProperty("applicationName", "SampleJava"); + ``` + + + +**固定リスト方式の例** + +- gs_cluster.jsonの記述(一部抜粋) + + ```json + { + "cluster":{ + "clusterName":"myCluster", + "replicationNum":2, + "notificationMember":[ + { + "cluster": {"address":"192.168.1.10", "port":10010}, + "sync": {"address":"192.168.1.10", "port":10020}, + "system": {"address":"192.168.1.10", "port":10040}, + "transaction": {"address":"192.168.1.10", "port":10001} + }, + { + "cluster": {"address":"192.168.1.11", "port":10010}, + "sync": {"address":"192.168.1.11", "port":10020}, + "system": {"address":"192.168.1.11", "port":10040}, + "transaction": {"address":"192.168.1.11", "port":10001} + }, + { + "cluster": {"address":"192.168.1.12", "port":10010}, + "sync": {"address":"192.168.1.12", "port":10020}, + "system": {"address":"192.168.1.12", "port":10040}, + "transaction": {"address":"192.168.1.12", "port":10001} + } + ] + } + } + ``` + +- 接続プログラムのGridStoreプロパティキーnotificationMemberには、アドレスとポート番号を:で連結してカンマで区切った値を記述します。 + + ```Java + Properties prop = new Properties(); + prop.setProperty("notificationMember", "192.168.1.10:10001,192.168.1.11:10001,192.168.1.12:10001"); + prop.setProperty("clusterName", "myCluster"); + prop.setProperty("database", "public"); + prop.setProperty("user", "admin"); + prop.setProperty("password", "admin"); + prop.setProperty("applicationName", "SampleJava"); + ``` + + + +**プロバイダ方式の例** + +- gs_cluster.jsonの記述(一部抜粋) + + ```json + { + "cluster":{ + "clusterName":"myCluster", + "replicationNum":2, + "notificationProvider":{ + "url":"http://example.com/notification/provider", + "updateInterval":"30s" + } + } + } + ``` + +- 接続プログラムのGridStoreプロパティキーnotificationProviderにはurlの値を記述します。 + + ```Java + Properties prop = new Properties(); + prop.setProperty("notificationProvider", "http://example.com/notification/provider"); + prop.setProperty("clusterName", "myCluster"); + prop.setProperty("database", "public"); + prop.setProperty("user", "admin"); + prop.setProperty("password", "admin"); + prop.setProperty("applicationName", "SampleJava"); + ``` + +#### プロパティ + +接続方式以外の主なプロパティは以下の項目です。 +その他のプロパティの詳細は、『[GridDB Java APIリファレンス](../md_reference_java_api/md_reference_java_api.html)』の「GridStoreFactory.getGridStore(java.util.Properties properties)」をご参照ください。 + + +| 項目 | プロパティのキー | 必須 | 指定する値 | +| -----------------|-----------------|---------|----------------| +| クラスタ名 | clusterName | 必須 | gs_cluster.jsonの/cluster/clusterNameに記載している値 | +| データベース名 | database | publicデータベースに接続する場合は省略可
それ以外は必須 | 接続するデータベース名 | +| ユーザ名 | user | 必須 | 接続するユーザ名(管理ユーザ・一般ユーザどちらも可) | +| パスワード | password | 必須 | 接続するユーザのパスワード | +| アプリケーション名 | applicationName | 省略可 | アプリケーションを識別するための名前
(運用ツールgs_shでコネクション情報や実行中イベントを確認する時に表示されます) | +| タイムゾーン | timeZone | 省略可 | 時分で指定:±hh:mm または ±hhmm
タイムゾーンID:「Z」のみサポート
上位(JavaVM)の環境引継ぎ:auto
※省略時は「Z」相当| +| マルチキャストパケットを受信するインターフェースアドレス | notificationInterfaceAddress | 省略可 | 複数のネットワークインターフェースがあるときにクラスタのネットワーク構成をマルチキャスト方式にする場合は、マルチキャストパケットを受信するインターフェースのIPアドレスを指定| +| フェイルオーバタイムアウト | failoverTimeout | 省略可 | クライアントフェイルオーバのタイムアウト時間(秒)
※省略時はGridStoreFactoryの設定値に従う| +| トランザクションタイムアウト | transactionTimeout | 省略可 | トランザクションのタイムアウト時間(秒)
※省略時は300(秒)| + + +[メモ] + +- 上記以外に、GridStoreFactoryに設定可能な以下のプロパティがあります。詳細は、『[GridDB Java APIリファレンス](../md_reference_java_api/md_reference_java_api.html)』の「GridStoreFactory.setProperties(java.util.Properties properties)」をご参照ください。 + + | 項目 | プロパティのキー | 必須 | 指定する値 | + | -----------------|-----------------|---------|----------------| + | フェイルオーバタイムアウト | failoverTimeout | 省略可 | クライアントフェイルオーバのタイムアウト時間(秒)
※省略時は120(秒)| + | 最大接続プールサイズ | maxConnectionPoolSize | 省略可 | 接続プールで保持する最大接続数
※省略時は16| + + +- 接続時にデータベースを指定します。その接続では、指定したデータベース上のデータにしかアクセスできません。別のデータベースに対して操作を行う場合には改めて接続処理を行ってください。 + - 例) データベースpublicの操作と、データベースuserDB1の操作を行う場合のプログラム + + ```Java + // データベース以外のプロパティ指定は省略 + + // データベースpublicに接続 + prop.setProperty("database", "public"); + GridStore store1 = GridStoreFactory.getInstance().getGridStore(prop); + store1.getContainer("container1"); // データベースpublic上のコンテナcontainer1を取得 + store1.close(); + + // データベースuserDB1に接続 + prop.setProperty("database", "userDB1"); + GridStore store2 = GridStoreFactory.getInstance().getGridStore(prop); + store2.getContainer("container1"); // データベースuserDB1上のコンテナcontainer1を取得 + store2.close(); + ``` + + + +- コンテナの取得getContainerを高速化するために、コンテナ情報をキャッシュする機能があります。 +アクセスするコンテナ数が多い場合にはキャッシュのサイズを増やすことを推奨します。 +キャッシュのサイズは、接続時のプロパティキーで指定します。 + - デフォルトではキャッシュ機能は無効です + - プロパティキーcontainerCacheSizeに指定する値は、キャッシュに情報を格納するContainerオブジェクトの数です + + ```java + prop.setProperty("containerCacheSize", "10000"); + ``` + + + +- クラスタに実際に接続するのは、GridStoreオブジェクトを生成してから、最初にコンテナ作成や検索などのデータ操作を実施した時です。 +接続先の誤りなどで接続が失敗する場合、GridStoreオブジェクトの生成GridStoreFactory.getGridStoreではエラーは発生せず、 +次のデータ操作のメソッドで接続エラーが発生します。 + + +- プロパティは、外部ファイルに記載して指定することもできます。詳細は付録をご参照ください。 + +- タイムゾーンでサポートされている範囲は以下になります。 + - オフセット範囲: -23:59~+23:59 + - 夏時間: 非サポート + - タイムゾーンID (JSTなど): 「Z」を除き非サポート + +- 日付時刻機能の中でタイムゾーンを扱う場合には付録の[日付時刻機能を利用する上でのアプリ向けの推奨事項](#date_function)をご参照ください。 + +### コンテナを作成する + +コンテナを作成します。コンテナには、コレクションと時系列コンテナの2つの種類があります。 +コンテナ作成では、カラム名やデータ型などのスキーマを指定する必要があります。 +スキーマを指定する方法として、次の2つの方法があります。 + +- メソッドでスキーマを指定する方法 + - Java APIのメソッドを使用して、スキーマを指定します。 + + +- クラス定義でスキーマを指定する方法 + - ユーザが定義したJavaのクラスを使用して、スキーマを指定します。 + + + +[メモ] +- コンテナ名で使える文字は、『[GridDB 機能リファレンス](../md_reference_feature/md_reference_feature.md)』の「名前の制限」を参照してください。 + + + +#### メソッドでスキーマを指定する方法 + +コンテナのスキーマは、Java APIのメソッドを使用して動的に指定します。 +スキーマを表すコンテナ情報クラスContainerInfoやカラム情報クラスColumnInfoを用います。 +これらのクラスを用いてコンテナを作成するメソッドは以下の通りです。 + +| 分類 | メソッド | +|----------------|---------| +| コレクション作成 | putCollection(String name, ContainerInfo info, boolean modifiable) | +| 時系列コンテナ作成 | putTimeSeries(String name, ContainerInfo info, boolean modifiable) | +| コンテナ(コレクション、または時系列コンテナ)作成 | GridStore.putContainer(String name, ContainerInfo info, boolean modifiable) | + +[メモ] +- コンテナ作成のメソッドputContainerは、コレクションと時系列コンテナのどちらの種類も作成できます。 +- 既に存在するコンテナと同じ名前を指定した場合、指定したスキーマ定義と既存コンテナのスキーマ定義が +同じであればエラーにはなりません。コンテナ取得getContainerを実行した時と同じ動作になります。 +- スキーマ定義が異なる場合、引数modifiableにtrueが指定されていると既存のスキーマ定義を変更します。 +引数modifiableにfalseが指定されているとエラーになります。modifiableは、既存コンテナのスキーマ変更を許可するかどうかを指定する変数です。 +コンテナの新規作成の場合はfalseを指定してください。 + + + +##### コレクションを作成する putCollection + +コレクション作成putCollectionを用いて、コレクションを作成するプログラムの全体を以下に示します。 + + +```Java +import java.util.ArrayList; +import java.util.List; +import java.util.Properties; + +import com.toshiba.mwcloud.gs.Collection; +import com.toshiba.mwcloud.gs.ColumnInfo; +import com.toshiba.mwcloud.gs.ContainerInfo; +import com.toshiba.mwcloud.gs.GSType; +import com.toshiba.mwcloud.gs.GridStore; +import com.toshiba.mwcloud.gs.GridStoreFactory; +import com.toshiba.mwcloud.gs.Row; + +public class CreateCollectionByMethod { + + public static void main(String[] args){ + try { + //=============================================== + // クラスタに接続する + //=============================================== + // 接続情報を指定する (マルチキャスト方式) + Properties prop = new Properties(); + prop.setProperty("notificationAddress", "239.0.0.1"); + prop.setProperty("notificationPort", "31999"); + prop.setProperty("clusterName", "myCluster"); + prop.setProperty("database", "public"); + prop.setProperty("user", "admin"); + prop.setProperty("password", "admin"); + prop.setProperty("applicationName", "SampleJava"); + + // GridStoreオブジェクトを生成する + GridStore store = GridStoreFactory.getInstance().getGridStore(prop); + // コンテナ作成や取得などの操作を行うと、クラスタに接続される + store.getContainer("dummyContainer"); + + //=============================================== + // コレクションを作成する + //=============================================== + // (1)コンテナ情報オブジェクトを生成 + ContainerInfo containerInfo = new ContainerInfo(); + + // (2)カラムの名前やデータ型をカラム情報オブジェクトにセット + List columnList = new ArrayList(); + columnList.add(new ColumnInfo("id", GSType.INTEGER)); + columnList.add(new ColumnInfo("productName", GSType.STRING)); + columnList.add(new ColumnInfo("count", GSType.INTEGER)); + + // (3)カラム情報をコンテナ情報オブジェクトに設定 + containerInfo.setColumnInfoList(columnList); + + // (4)ロウキーありの場合は設定する + containerInfo.setRowKeyAssigned(true); + + // (5)コレクション作成 + Collection collection = store.putCollection("SampleJava_collection1", containerInfo, false); + + System.out.println("Create Collection name=SampleJava_collection1"); + + //=============================================== + // 終了処理 + //=============================================== + collection.close(); + store.close(); + System.out.println("success!"); + + } catch ( Exception e ){ + e.printStackTrace(); + } + } +} +``` + +コレクションを作成する箇所を説明します。 +(2)カラム名やデータ型は、カラム情報ColumnInfoに指定します。 +複数のカラムがある場合は、ColumnInfoを複数生成します。 +(3)ColumnInfoはリストオブジェクトに格納して、コンテナ情報ContainerInfoにセットします。 +(5)この情報を用いて、putCollectionでコレクションを作成します。 + +[メモ] + +- setRowKeyAssignedでロウキーを設定すると、一番目のカラムがロウキーになります。 +- putCollectionの戻り値はCollectionです。 +総称型は、<ロウキーのデータ型, Row型>として返されます。 +ロウキーのデータ型は、ロウキーが無いコレクションの場合はVoid型、またはワイルドカード型”?"を指定します。 + + ```java + Collection collection = store.putCollection("collectionNotRowkey", containerInfo, false); + ``` + + + +##### 時系列コンテナを作成する putTimeSeries + +時系列コンテナ作成putTimeseries用いて、時系列コンテナを作成します。 +プログラム全体の流れはコレクションの作成と同様ですので、異なる部分のプログラムのみを示します。 + + +```Java +//=============================================== +// 時系列コンテナ作成する +//=============================================== +// (1)コンテナ情報オブジェクトを生成 +ContainerInfo containerInfo = new ContainerInfo(); + +// (2)カラムの名前やデータ型をカラム情報オブジェクトにセット +List columnList = new ArrayList(); +columnList.add(new ColumnInfo("date", GSType.TIMESTAMP)); +columnList.add(new ColumnInfo("value", GSType.DOUBLE)); +containerInfo.setColumnInfoList(columnList); + +// (3)ロウキーを設定 (時系列コンテナはロウキーの設定が必須) +containerInfo.setRowKeyAssigned(true); + +// (4)時系列コンテナ作成 +TimeSeries timeseries = store.putTimeSeries("SampleJava_timeseries1", containerInfo, false); + +System.out.println("Create TimeSeries name=SampleJava_timeseries1"); +``` + +[メモ] + +- 時系列コンテナの場合は、第一カラムはTIMESTAMP型のデータ型で、かつ、ロウキーの設定が必要です。 +- putTimeseriesの戻り値はTimeseriesです。総称型は、として返されます。 +- 時系列コンテナ特有の設定は、TimeseriesPropertiesオブジェクトを用います。 + + + +##### コンテナを作成する putContainer + +コンテナ作成putContainerメソッドは、コレクションと時系列コンテナのどちらでも作成することができます。 +コレクションと時系列コンテナの種別は、ContainerInfo.setTypeで指定します。 + +- コレクションの作成方法 + + ```Java + // カラム情報の指定は省略 + + // コンテナ種別を指定 + containerInfo.setType(ContainerType.COLLECTION); + + // コレクション作成 + Container collection = store.putContainer("collection3", containerInfo, false); + ``` + +- 時系列コンテナの作成方法 + + ```Java + // カラム情報の指定は省略 + + // コンテナ種別を指定 + containerInfo.setType(ContainerType.TIME_SERIES); + + // 時系列コンテナ作成 + Container timeseries = store.putContainer("timeseries3", containerInfo, false); + ``` + + + + +#### クラス定義でスキーマを指定する方法 +Javaのクラス定義を用いて、コンテナのスキーマを指定します。 +Javaのクラス変数が、GridDBのコンテナのカラムに対応付けされます。 + +例) 以下のようにJavaのクラスを定義した場合の対応付け + +- クラス変数とカラムの対応付け + - 変数 int id   → カラム 名前id、データ型Integer型 + - 変数 String productName → カラム 名前productName、データ型String型 + - 変数 int count     → カラム 名前count、データ型Integer型 + + + + ```java + class Products{ + @RowKey int id; // ロウキーを設定 + String productName; + int count; + } + ``` + + +クラス変数の並びと同じ順番で、カラムは作成されます。 +データ型の対応付けの詳細は、『[GridDB Java APIリファレンス](../md_reference_java_api/md_reference_java_api.html)』の「Interface Container」をご参照ください。 + + + +Javaのクラス定義を用いた方法では以下のメソッドを使用します。 + +| 分類 | メソッド | +|-------------------|----------| +| コレクション作成 | putCollection(String name, java.lang.Class rowType)
putCollection(String name, java.lang.Class rowType, boolean modifiable) | +| 時系列コンテナ作成 | putTimeSeries(String name, java.lang.Class rowType)
putTimeSeries(String name, java.lang.Class rowType, TimeSeriesProperties props, boolean modifiable) | +| コンテナ(コレクション、または時系列コンテナ)作成 | putContainer(String name, java.lang.Class rowType, ContainerInfo info, boolean modifiable) | + + +コレクション作成putCollectionを用いて、ロウキーありのコレクションを作成するプログラムの全体を以下に示します。(接続と終了処理はこれまでのプログラムと同様です。) + +時系列コンテナの作成putTimeseriesとコンテナ作成putContainerの場合も、プログラムの流れは同様です。 + + + +```Java +import java.util.Properties; + +import com.toshiba.mwcloud.gs.Collection; +import com.toshiba.mwcloud.gs.GridStore; +import com.toshiba.mwcloud.gs.GridStoreFactory; +import com.toshiba.mwcloud.gs.RowKey; + +public class CreateCollectionByClass { + + // コレクションのスキーマ定義用のクラス + static class Product{ + @RowKey int id; // ロウキーを設定 + String productName; + int count; + } + + public static void main(String[] args){ + try { + //=============================================== + // クラスタに接続する + //=============================================== + // 接続情報を指定する (マルチキャスト方式) + Properties prop = new Properties(); + prop.setProperty("notificationAddress", "239.0.0.1"); + prop.setProperty("notificationPort", "31999"); + prop.setProperty("clusterName", "myCluster"); + prop.setProperty("database", "public"); + prop.setProperty("user", "admin"); + prop.setProperty("password", "admin"); + prop.setProperty("applicationName", "SampleJava"); + + // GridStoreオブジェクトを生成する + GridStore store = GridStoreFactory.getInstance().getGridStore(prop); + // コンテナ作成や取得などの操作を行うと、クラスタに接続される + store.getContainer("dummyContainer"); + + //=============================================== + // コレクションを作成する + //=============================================== + // (1)コレクション作成 + Collection collection = store.putCollection("SampleJava_collection2", Product.class, false); + + System.out.println("Create Collection name=SampleJava_collection2"); + + //=============================================== + // 終了処理 + //=============================================== + collection.close(); + store.close(); + System.out.println("success!"); + + } catch ( Exception e ){ + e.printStackTrace(); + } + } +} +``` + +- コレクション作成putCollectionでは、Javaのクラスを引数に指定します。 +- putCollectionの戻り値はCollectionです。 + 総称型は、<ロウキーのデータ型, Row型>として返されます。 + ロウキーのデータ型は、ロウキーが無いコレクションの場合はVoid型、またはワイルドカード型”?"を指定します。 +- Javaのクラス定義では、以下のアノテーションが指定できます。 + - ロウキーは、アノテーション@RowKeyで指定します。 + - コンテナのカラムとして作成しないクラス変数には、@TransientRowFieldを指定します + - クラス変数の名前とは異なるカラム名を指定する場合には、@RowField(name="カラム名")を指定します + - カラムの順番を明示的に指定する場合には、@RowField(columnNumber=カラム番号)を指定します(カラム番号は0以上カラム数未満の値) + - 例) クラス定義とアノテーションの例 + - クラス変数commentは、コンテナのカラムには作らない + - クラス変数tmpは、変数名をそのままコンテナ名にはしない。別名"value"をつける。 + - カラムの順番は、id, value, status + + ```java + class Data{ + @TransientRowField + String comment; + + @RowField(columnNumber=2) + boolean status; + + @RowKey + @RowField(columnNumber=0) + int id; + + @RowField(name="value",columnNumber=1) + long tmp; + } + ``` + +[メモ] +- 既に存在するコンテナと同じ名前を指定した場合、指定したスキーマ定義と既存コンテナのスキーマ定義が +同じであればエラーにはなりません。コンテナの取得getContainerを実行した時と同じ動作になります。 +- スキーマ定義が異なる場合、引数modifiableにtrueが指定されていると既存のスキーマ定義を変更します。 +引数modifiableにfalseが指定されているとエラーになります。modifiableは、既存コンテナのスキーマ変更を許可するかどうかを指定する変数です。 +コンテナの新規作成の場合はfalseを指定してください。 + + +### コンテナを取得する + +コンテナの名前を指定して、コンテナを取得します。 +データの登録やTQLなどのロウ操作を行うためには、まずコンテナを取得する必要があります。 + +コンテナ取得には以下のメソッドがあります。ロウ操作する際のロウのタイプの違いによって2種類に分けられます。 + +**Rowインタフェース** + +- コンテナオブジェクトを取得します。取得したコンテナオブジェクトに対しては、com.toshiba.mwcloud.gs.Rowを使ってロウ操作できます。 + + | 分類 | メソッド | + |-------|---------| + | コレクション取得 | \ Collection\ getCollection(java.lang.String name) | + | 時系列コンテナ取得 | TimeSeries\ getTimeSeries(java.lang.String name) | + | コンテナ取得 | \ Container\ getContainer(java.lang.String name) | + + +**ユーザ定義のクラス** + +- コンテナオブジェクトを取得します。取得したコンテナオブジェクトに対しては、ユーザがスキーマとして定義したクラスを使ってロウ操作できます。 + + | 分類 | メソッド | + |-------|---------| + | コレクション取得 | \ Collection\ getCollection(java.lang.String name, java.lang.Class\ rowType) | + | 時系列コンテナ取得 | \ TimeSeries\ getTimeSeries(java.lang.String name, java.lang.Class\ rowType) | + + + +例) コンテナ取得(Rowインタフェースでロウ操作を行う) +```java +// コレクション取得 +Collection collection = store.getCollection("collection1"); + +// ロウ(Rowオブジェクト)を取得する +Row row = collection.get(0); +``` + +例) コンテナ取得(ユーザ定義のクラスでロウ操作を行う) +```java +static class Product{ + int id; + String productName; + int count; +} +// 省略 + +// コレクション取得 +Collection collection = store.getCollection("collection1", Product.class); + +// ロウ(Productオブジェクト)を取得する +Product product = collection.get(0); +``` + + + +### データを登録する + +コンテナにロウを登録する場合は、以下のメソッドを使用します。 + +| 分類 | メソッド | +|-------|---------| +| ロウ登録 | Container.put(R row) | + + + +コレクションを作成し、ロウをひとつ登録するプログラムの全体を以下に示します。 +(接続と終了処理はこれまでのプログラムと同様です。) + + +```Java +import java.util.ArrayList; +import java.util.List; +import java.util.Properties; + +import com.toshiba.mwcloud.gs.ColumnInfo; +import com.toshiba.mwcloud.gs.Container; +import com.toshiba.mwcloud.gs.ContainerInfo; +import com.toshiba.mwcloud.gs.GSType; +import com.toshiba.mwcloud.gs.GridStore; +import com.toshiba.mwcloud.gs.GridStoreFactory; +import com.toshiba.mwcloud.gs.Row; + +public class PutRow { + + public static void main(String[] args){ + try { + //=============================================== + // クラスタに接続する + //=============================================== + // 接続情報を指定する (マルチキャスト方式) + Properties prop = new Properties(); + prop.setProperty("notificationAddress", "239.0.0.1"); + prop.setProperty("notificationPort", "31999"); + prop.setProperty("clusterName", "myCluster"); + prop.setProperty("database", "public"); + prop.setProperty("user", "admin"); + prop.setProperty("password", "admin"); + prop.setProperty("applicationName", "SampleJava"); + + // GridStoreオブジェクトを生成する + GridStore store = GridStoreFactory.getInstance().getGridStore(prop); + // コンテナ作成や取得などの操作を行うと、クラスタに接続される + store.getContainer("dummyContainer"); + + //=============================================== + // コレクションを作成する + //=============================================== + ContainerInfo containerInfo = new ContainerInfo(); + List columnList = new ArrayList(); + columnList.add(new ColumnInfo("id", GSType.INTEGER)); + columnList.add(new ColumnInfo("productName", GSType.STRING)); + columnList.add(new ColumnInfo("count", GSType.INTEGER)); + containerInfo.setColumnInfoList(columnList); + containerInfo.setRowKeyAssigned(true); + + String containerName = "SampleJava_PutRow"; + store.putCollection(containerName, containerInfo, false); + System.out.println("Create Collection name="+containerName); + + + //=============================================== + // ロウを登録する + //=============================================== + //(1) Containerオブジェクトの取得 + Container container = store.getContainer(containerName); + if ( container == null ){ + throw new Exception("Container not found."); + } + + //(2) 空のロウオブジェクトの作成 + Row row = container.createRow(); + + //(3) ロウオブジェクトにカラム値をセット + row.setInteger(0, 0); + row.setString(1, "display"); + row.setInteger(2, 150); + + //(4) ロウの登録 + container.put(row); + + System.out.println("Put Row num=1"); + + //=============================================== + // 終了処理 + //=============================================== + container.close(); + store.close(); + System.out.println("success!"); + + } catch ( Exception e ){ + e.printStackTrace(); + } + } +} +``` + +ロウを登録する部分を説明します。 +(1)ロウを登録するコンテナを取得します。指定した名前のコンテナが存在しない場合はnullが返ります。 +(2)コンテナオブジェクトから、空のロウオブジェクトを生成します。 +(3)空のロウオブジェクトに、登録するデータをセットします。 +(4)コンテナにロウを登録します。 + +GridDBのデータ型とJavaのデータ型の対応付けは[データ型の対応付け](#java_data_type)を参照ください。 + +[メモ] +- ロウキーありのコンテナに対してputする場合、既に存在するロウキーと同じ値のロウを指定すると、既存のロウを更新します。 + +- コミットには、自動コミットモードと手動コミットモードの2つの動作モードがあります。 + - 自動コミットモードの場合、putを実行すると自動的にロウがコミットされます。commit()は不要です。 + - 手動コミットモードの場合には、明示的にcommit()が必要です。コミットはコンテナ単位です。コンテナをまたがったトランザクション処理はできません。 + - デフォルトは自動コミットモードです。 + - 例) 手動コミットモードの場合 + + ```Java + // 手動コミットモードの場合 + // (ロウオブジェクトの作成は省略) + + // 手動コミットモードを指定 + container.setAutoCommit(false); + + // ロウ登録 + container.put(row); + + // コミット + container.commit(); + ``` + +- ロウオブジェクトにカラム値をセットしなかった場合、カラムの初期値が登録されます。 +初期値は、カラムのデータ型によって定義されています。 +詳細はの「Interface Container」をご参照くださ『[GridDB Java APIリファレンス](../md_reference_java_api/md_reference_java_api.html)』い。 + + + + +**ひとつのコンテナに複数のロウを登録** + +複数のロウを一度に登録することもできます。以下のメソッドを使用します。 + +| 分類 | メソッド | +|-------|---------| +| ロウ登録 | Container.put(java.util.Collection rowCollection) | + +putを用いて複数のロウを登録するプログラムを示します。 + + +```Java +//=============================================== +// ロウを登録する +//=============================================== +// (1)Containerオブジェクトの取得 +Container container = store.getContainer(containerName); +if ( container == null ){ + throw new Exception("Container not found."); +} + +// (2)複数のロウオブジェクトの作成 +String[] nameList = {"notebook PC", "desktop PC", "keyboard", "mouse", "printer"}; +int[] numberList = {108, 72, 25, 45, 62}; + +List rowList = new ArrayList(); +for ( int i = 0; i < nameList.length; i++ ){ + Row row = container.createRow(); + row.setInteger(0, (i+1)); + row.setString(1, nameList[i]); + row.setInteger(2, numberList[i]); + rowList.add(row); +} + +// (3)複数のロウの登録 +container.put(rowList); + +System.out.println("Put Rows num=" + nameList.length); +``` + +複数のロウオブジェクトを作成してリストにセットします。リストを引数としてputを実行します。 + + +[メモ] +- ロウキーありのコンテナに対してputする場合、既に存在するロウキーと同じ値のロウを指定すると、既存のロウを更新します。 + + + + + +### データを取得する + +コンテナからロウを取得します。 + +ロウキーが設定されているコンテナの場合、ロウキーの値を指定してロウを取得できます。 +ロウキーが設定されていない場合は、後述のTQLを利用してロウを取得します。 + +| 分類 | メソッド | +|-------|---------| +| ロウ取得 | Container.get(K key) | + + + +ロウキーありのコレクションから、ロウキーの値が"0"のロウを取得するプログラムを以下に示します。 + + +```java +//=============================================== +// ロウを取得する +//=============================================== +// (1)Containerオブジェクトの取得 +Container container = store.getContainer(containerName); +if ( container == null ){ + throw new Exception("Container not found."); +} + +// (2)ロウキーを指定してロウを取得する +Row row = container.get(0); +if ( row == null ){ + throw new Exception("Row not found"); +} + +// (3)ロウからカラムの値を取り出す +int id = row.getInteger(0); +String name = row.getString(1); +int count = row.getInteger(2); + +System.out.println("Get Row id="+ id + ", name=" + name + ", count=" + count); +``` + +ロウを取得する処理の部分を説明します。 +(2)getにロウキーを指定して、コンテナからロウを取得します。 +(3)取得したロウからカラム値を取り出すには、カラムのデータ型に合わせたgetメソッドを使用します。 + + + +### TQLを実行する + +TQLを実行します。 + +TQLの実行では、SELECTの選択式の種類によって、実行結果のクラスや処理方法が異なります。 + +| SELECTの選択式の種類 | 内容 | 実行結果のクラス型 | +|---------------------|-----------------------|--------------------| +| ロウ(\*) | コンテナに格納されているロウを取得します
例) SELECT * FROM container1 | コンテナのロウオブジェクトの型
(Container\のRの型) | +| 集計演算(MAX, MIN, COUNTなど) | 集計演算の結果を取得します
例) SELECT COUNT(\*) FROM container1 | AggregationResult型 | + + + +[メモ] +- TQLでコンテナやカラムを指定する場合、名前に記号を含む名前はダブルクォーテーションで囲む必要があります。 + + ``` + select * from "test.container"; + ``` + + + +#### ロウを検索する + +ロウの値を検索するTQLを実行する場合は、以下のメソッドを使用します。 + +| 分類 | メソッド | +|-------|---------| +| クエリ生成 | Query\ Container\.query(java.lang.String tql) | +| クエリ実行 | RowSet\ Query\.fetch() | + + + +コレクションに対してカラムcountが50以上のロウを検索し、結果をidの昇順でソートして返すTQLのプログラムを示します。 + + +```Java +//=============================================== +// TQLで検索する +//=============================================== +// (1)Containerオブジェクトの取得 +Container container = store.getContainer(containerName); +if ( container == null ){ + throw new Exception("Container not found."); +} + +// (2)TQLで検索実行 +Query query = container.query("SELECT * WHERE count >= 50 ORDER BY id"); +RowSet rs = query.fetch(); + +// (3)結果をロウで取得 +while ( rs.hasNext() ) { + Row row = rs.next(); + int id = row.getInteger(0); + String name = row.getString(1); + int count = row.getInteger(2); + System.out.println("row id=" + id + ", name=" + name + ", count=" + count); +} +``` + +検索処理の部分を説明します。(2)実行するTQLでクエリオブジェクトを生成し、fetchで検索を実行します。 +(3)検索結果を取得します。コンテナのカラムのデータ型に合わせて、getメソッドでロウの値を取得します。 + + + + +#### 集計演算を行う + +集計演算のTQLを実行する場合は、以下のメソッドを使用します。 + +| 分類 | メソッド | +|-------|---------| +| クエリ生成 | Query\ Container\.query(java.lang.String tql, java.lang.Class\ rowType) | +| クエリ実行 | RowSet\ Query\.fetch() | + +コレクションに対して、カラムvalueの最大値を取得するプログラムを示します。 + + +```Java +// (オブジェクトの取得は省略) + +// (1)TQLで集計演算の実行 +Query query = container.query("SELECT MAX(value)", AggregationResult.class); +RowSet rs = query.fetch(); + +// (2)結果を取得 +if ( rs.hasNext() ){ + AggregationResult result = rs.next(); + long value = result.getLong(); + System.out.println("max = "+ value); +} +``` + +(1)クエリの生成時に、第2引数で集計演算結果の型であるAggregationResultを指定します。 +クエリを実行した結果はAggregationResultオブジェクトで返ります。 +(2)実行した集計演算の種類によってAggregationResultオブジェクトの値のデータ型は異なります。データ型に合わせてgetLong、getDoubleまたはgetTimestampで値を取得します。 + + + +TQLの集計演算の一覧を以下に示します。 + +| TQLの集計演算 | 内容 | 演算の引数 | 演算結果(AggregationResult)の値の型 | +|---------|------|-----------|-------------| +| MAX(column) | 指定カラムの最大値 | 数値型またはTIMESTAMP型のカラム | 指定カラムと同一の型 | +| MIN(column) | 指定カラムの最小値 | 数値型またはTIMESTAMP型のカラム | 指定カラムと同一の型 | +| COUNT(*) | 集計対象のロウの個数 | "*"のみ | LONG型 | +| SUM(column) | 指定のカラムの合計値 | 数値型のカラム | 指定カラムが整数型の場合LONG型
浮動小数点型の場合DOUBLE型 | +| AVG(column) | 指定のカラムの平均値 | 数値型のカラム | DOUBLE型 | +| VARIANCE(column) | 指定のカラムの分散値 | 数値型のカラム | DOUBLE型 | +| STDDEV(column) | 指定のカラムの標準偏差 | 数値型のカラム | DOUBLE型 | + + + + +[メモ] + +- 集計演算は、ひとつのクエリでひとつしか指定できません。 + - 例) 次のTQLはエラーになります。 SELECT MAX(value), MIN(value) + + + + +### 複数のコンテナに対して一括で操作を行う + +データの登録や検索の処理では、複数のコンテナに対して一度に操作を行うことができます。複数コンテナ用のメソッドは以下の通りです。 + +| 分類 | メソッド | +|-------|---------| +| 複数コンテナのロウ登録 | GridStore.multiPut(java.util.Map> containerRowsMap) | +| 複数コンテナのロウ取得 | GridStore.multiGet(java.util.Map> containerPredicateMap) | +| 複数コンテナのTQL実行 | GridStore.fetchAll(java.util.List> queryList) | + + + +ひとつのコンテナに対する操作と複数のコンテナに対する操作では、メソッドや取得条件などが異なりますので、 +用途に合わせて適切な方法をご利用ください。相違点を以下の表に示します。 +それぞれの方法の説明は、「本書での参照先」の部分をご参照ください。 + +| 分類 | 処理対象のコンテナ | メソッド | 取得条件の指定 | 本書での参照先 | +|------|--------------|----------|---------------|----------------------| +| ロウ登録 | ひとつ | Container.put(R row)
Container.put(java.util.Collection rowCollection) | - | [データを登録する](#java_put_row) | +| | 複数 | GridStore.multiPut(java.util.Map> containerRowsMap) | - | [複数コンテナのロウ登録](#java_multiput) | +| ロウ取得
(ロウキー指定) | ひとつ | Container.get(K key) | ロウキー指定 | [データを取得する](#java_get_row) | +| | 複数 | GridStore.multiGet(java.util.Map> containerPredicateMap) | RowKeyPredicateクラスによるロウキー指定、または、ロウキー範囲指定 | [複数コンテナのロウ取得](#java_multiget) | +| ロウ取得
(TQL実行) | ひとつ | GridStore.query(java.lang.String tql)
Query.fetch() | TQLのクエリ | [TQLを実行する](#java_tql_select) | +| | 複数 | GridStore.fetchAll(java.util.List> queryList) | TQLのクエリ | [複数コンテナのTQL実行](#java_fetchall) | + + + + +#### 複数コンテナのロウ登録 + +複数のコンテナに対して、複数のロウを登録します。 +コンテナ名と登録するロウのリストの組合せを作り、multiPutでロウを登録できます。 + +| 分類 | メソッド | +|-------|---------| +| 複数コンテナのロウ登録 | GridStore.multiPut(java.util.Map> containerRowsMap) | + +コレクションと時系列コンテナに、それぞれロウを2個ずつ登録するプログラムを以下に示します。 + + +```Java +//=============================================== +// 複数のコンテナにロウを登録する +//=============================================== +Map> paramMap = new HashMap>(); + +// (1)コレクション"SampleJava_MultiPut1"に対して登録するロウを生成する +{ + String containerName = "SampleJava_MultiPut1"; + Container container = store.getContainer(containerName); + if ( container == null ){ + throw new Exception("Container not found."); + } + + // 登録するデータ + String[] nameList = {"notebook PC", "desktop PC", "keyboard", "mouse", "printer"}; + int[] numberList = {55, 81, 39, 72, 14}; + + // ロウにデータをセットする + List rowList = new ArrayList(); + for ( int i = 0; i < nameList.length; i++ ){ + Row row = container.createRow(); + row.setInteger(0, (i+1)); + row.setString(1, nameList[i]); + row.setInteger(2, numberList[i]); + rowList.add(row); + } + paramMap.put(containerName, rowList); +} + +// (2)時系列コンテナ"SampleJava_MultiPut2"に対して登録するロウを生成する +{ + String containerName = "SampleJava_MultiPut2"; + Container container = store.getContainer(containerName); + if ( container == null ){ + throw new Exception("Container not found."); + } + + // 登録するデータ + String[] dateList = {"2018/12/01 10:20:19.111+0900", "2018/12/02 03:25:45.023+0900", + "2018/12/03 08:29:21.932+0900", "2018/12/04 21:55:48.153+0900"}; + double[] valueList = { 129.9, 13.2, 832.7, 52.9 }; + + // 日付の変換フォーマット + SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd hh:mm:ss.SSSZ"); + + // ロウにデータをセットする + List rowList = new ArrayList(); + for ( int i = 0; i < dateList.length; i++ ){ + Row row = container.createRow(); + row.setTimestamp(0, format.parse(dateList[i])); + row.setDouble(1, valueList[i]); + rowList.add(row); + } + paramMap.put(containerName, rowList); +} + +// (3)複数のコンテナに対してロウを登録する +store.multiPut(paramMap); + +System.out.println("MultiPut"); +``` + +ひとつのコンテナにロウを登録する時と同様に、コンテナオブジェクトから空のロウを作成して登録するロウを作ります。 +コンテナとロウのリストの組合せをMapに格納し、まとめてmultiPutで登録を行います。 + +[メモ] + +- 指定するコンテナは、既に存在している必要があります。 +- ひとつのコンテナへのロウ登録と同様に、コンテナ単位でコミットされます。指定した複数のコンテナがまとめてコミットされるわけではありません。 + + + + +#### 複数コンテナのロウ取得 + +複数のコンテナから、指定した条件に当てはまるロウを取得します。 + +| 分類 | メソッド | +|-------|---------| +| 複数コンテナのロウ取得 | GridStore.multiGet(java.util.Map> containerPredicateMap) | + +ロウキーの条件はコンテナごとに指定できます。条件には、特定の値を指定する個別条件と、値の範囲を指定する範囲条件の2種類があります。条件はRowKeyPredicateクラスのメソッドで指定します。 + +| 条件 | メソッド | +|-----|------| +| ロウキーの個別条件 | RowKeyPredicate.add(K key) | +| ロウキーの範囲条件 | RowKeyPredicate.setStart(K startKey)
RowKeyPredicate.setFinish(K finishKey) | + +[メモ] + +- 個別条件と範囲条件の2つの条件を混在して使用することはできません。 +- 条件をどちらも指定しなかった場合は、すべてのロウが取得されます。 +- RowKeyPredicateクラスは、複数コンテナのロウ取得multiGetメソッドでのみ使用できます。他のロウ取得getメソッドでは使用できません。 + + + +個別条件指定で、コレクションからINTEGER型のロウキーの値が"0"に合致するロウ、 +別のコレクションからINTEGER型のロウキーの値が"2"または"4"に合致するロウをそれぞれ取得するプログラムを以下に示します。 + + +```Java +//=============================================== +// 複数のコンテナから一括でロウを取得する +//=============================================== +// (1)取得条件を構築する +Map> predMap = new HashMap>(); +{ + RowKeyPredicate predicate = RowKeyPredicate.create(Integer.class); + predicate.add(0); + predMap.put("SampleJava_MultiGet1", predicate); +} +{ + RowKeyPredicate predicate = RowKeyPredicate.create(Integer.class); + predicate.add(2); + predicate.add(4); + predMap.put("SampleJava_MultiGet2", predicate); +} + +// (2)複数コンテナからロウを取得する +Map> outMap = store.multiGet(predMap); + +System.out.println("MultiGet"); + +// (3)ロウの値を取得する +for (Map.Entry> entry : outMap.entrySet()) { + System.out.println("containerName="+entry.getKey()); + + for (Row row : entry.getValue()) { + int id = row.getInteger(0); + String name = row.getString(1); + int count = row.getInteger(2); + + System.out.println(" id=" + id + " name=" + name +" count=" + count); + } +} +``` +(1)RowKeyPredicateクラスを使って取得するロウの条件を生成し、コンテナ名とRowKeyPredicateの組合せをMAPに格納します。 +(2)multiGetを用いて検索を実行します。 +(3)コンテナ名とロウのリストの組合せで結果が返ります。 + + + + +#### 複数コンテナのTQL実行 + +複数のコンテナに対して、TQLを実行します。TQLはコンテナごとに指定できます。 + +| 分類 | メソッド | +|-------|---------| +| 複数コンテナのTQL実行 | GridStore.fetchAll(java.util.List> queryList) | + +2つのコレクションに対応するそれぞれのTQLをまとめて実行し、ロウを取得するプログラムを以下に示します。 + + +```Java +//=============================================== +// 複数のコンテナにTQLを実行する +//=============================================== +List> queryList = new ArrayList>(); + +// (1)コレクション"SampleJava_FetchAll1"に対するTQLのクエリを生成する +{ + Container container = store.getContainer("SampleJava_FetchAll1"); + if ( container == null ){ + throw new Exception("Container not found."); + } + queryList.add(container.query("select * where count > 60")); +} +// (2)コレクション"SampleJava_FetchAll2"に対するTQLのクエリを生成する +{ + Container container = store.getContainer("SampleJava_FetchAll2"); + if ( container == null ){ + throw new Exception("Container not found."); + } + queryList.add(container.query("select * where count > 100")); +} + +// (3)複数コンテナを一括検索する +store.fetchAll(queryList); + +// (4)結果を取得する +for (int i = 0; i < queryList.size(); i++) { + System.out.println("SampleJava_FetchAll"+(i+1)); + Query query = queryList.get(i); + RowSet rs = query.getRowSet(); + + while (rs.hasNext()) { + Row row = rs.next(); + int id = row.getInteger(0); + String name = row.getString(1); + int count = row.getInteger(2); + System.out.println(" row id=" + id + ", name=" + name + ", count=" + count); + } +} +``` + +(1)(2)コンテナオブジェクトからTQLのクエリを生成して、リストに格納します。 +(3)クエリのリストを指定して、TQL一括実行fetchAllを実行します。 +(4)検索結果は、(3)で指定したクエリのリストに格納されます。クエリから結果を取得する処理は、通常のTQL検索の場合と同様です。 + + + +### バイナリデータを扱う + +バイナリデータを登録、取得します。バイナリのデータ型はBlob型です。他のデータ型と同様に操作することができます。 + +**バイナリデータの登録** + +バイナリデータをファイルから読み込み、ロウを登録するプログラムを以下に示します。 + + +```Java +import java.sql.Blob; + +// 省略 + +// (1)バイナリデータをファイルから読み込み、Blobを作成する +FileInputStream blobFile = new FileInputStream(new File("BlobData.java")); +Blob blob = container.createBlob(); +OutputStream blobBuffer = blob.setBinaryStream(1); +int len = -1; +while ((len = blobFile.read()) > -1) { + blobBuffer.write(len); +} +blobBuffer.flush(); + +// (2)ロウにバイナリをセットする +Row row = container.createRow(); +row.setInteger(0, 0); +row.setBlob(1, blob); + +// (3)ロウを登録する +container.put(row); + +System.out.println("Put Row (Binary)"); + +blobFile.close(); +``` + +(1)バイナリデータをファイルから読み込みます。バイナリデータを格納するBlobは、ContainerクラスのcreateBlobメソッドで作成できます。 +SerialBlobなど、Blobを実装した他のクラスのインスタンスを使用することも可能です。 +(2)ロウにsetBlobでバイナリデータをセットして、(3)ロウを登録します。 + + +**バイナリデータの取得** + +getBlobでバイナリデータを取得します。 + + +```Java +// (1)ロウを取得 +Row row = container.get(0); + +// (2)ロウからバイナリを取得 +Blob blob = row.getBlob(1); +``` + +  + + +### データを更新する + +ロウを更新します。ロウの更新には、ロウキーを指定して更新する方法と、TQLの実行結果から更新する方法の2種類があります。 + +| 分類 | メソッド | +|-------|---------| +| ロウキーを指定してロウ更新 | put(R row)
put(K key, R row)
put(java.util.Collection rowCollection) | +| TQLの実行結果からロウ更新 | RowSet.update(R rowObj) | + + +ロウキーを指定してロウ更新する方法では、putで指定したロウのロウキーと合致するデータが既に存在していたら、そのデータを更新します。 +ロウキーのデータが存在しなかった場合、または、ロウキーが設定されていないコレクションの場合は、putは常にロウの新規登録になります。 + + +TQLの実行結果からロウを更新するプログラムを示します。 + + +```Java +//=============================================== +// TQLの検索結果からロウを更新する +//=============================================== +// Containerオブジェクトの取得 +Container container = store.getContainer(containerName); +if ( container == null ){ + throw new Exception("Container not found."); +} + +// (1)手動コミットモードを指定する +container.setAutoCommit(false); + +// (2)TQLで検索実行 +Query query = container.query("SELECT * WHERE id = 3"); +RowSet rs = query.fetch(true); // 削除するのでtrueを指定 + +// (3)検索でヒットしたロウを更新する +while( rs.hasNext() ){ + Row row = rs.next(); + + // ロウの値をセットする + row.setInteger(2, 77); + + // ロウを更新する + rs.update(row); +} + +// (4)コミットする +container.commit(); + +System.out.println("Update Row"); +``` + +[メモ] + +- TQLの検索結果RowSetからロウの更新を行う場合は、手動コミットモードに設定して、fetchメソッドの引数にtrueを指定してロックする必要があります。 + + +### データを削除する + +ロウを削除します。ロウの削除には、ロウキーを指定して削除する方法と、TQLの検索結果から削除する方法の2種類があります。 + +| 分類 | メソッド | +|-------|---------| +| ロウキーを指定してロウ削除 | Container.remove(K key)
TimeSeries.remove(java.util.Date key) | +| TQLの検索結果からロウ削除 | RowSet.remove() | + + +ロウキーを指定してロウ削除の方法を用いて、ロウキーの値"3"のロウを削除するプログラムを示します。 + + +```Java +// (1) ロウキーを指定してロウを削除する +container.remove(3); +``` + + +TQLの検索結果からロウ削除する方法を用いて、ロウを削除するプログラムを示します。 + + +```Java +//=============================================== +// TQLの検索結果からロウを削除する +//=============================================== +// Containerオブジェクトの取得 +Container container = store.getContainer(containerName); +if ( container == null ){ + throw new Exception("Container not found."); +} + +// (1)手動コミットモードを指定する +container.setAutoCommit(false); + +// (2)TQLで検索実行 +Query query = container.query("SELECT * WHERE count < 50"); +RowSet rs = query.fetch(true); // 削除するのでtrueを指定 + +// (3)検索でヒットしたロウを削除する +while( rs.hasNext() ){ + rs.next(); + rs.remove(); +} + +// (4)コミットする +container.commit(); + +System.out.println("Remove Row"); +``` + +[メモ] + +- TQLの検索結果RowSetからロウの削除を行う場合は、手動コミットモードに設定して、fetchメソッドの引数にtrueを指定してロックする必要があります。 + + + +### コンテナを削除する + +コンテナ名を指定してコンテナを削除します。以下のメソッドで削除できます。 + +| 分類 | メソッド | +|-------|---------| +| コレクション削除 | GridStore.dropCollection(java.lang.String name) | +| 時系列コンテナ削除 | GridStore.dropTimeSeries(java.lang.String name) | +| コンテナ削除 | GridStore.dropContainer(java.lang.String name) | + +[メモ] + +- コレクション削除dropCollectionと時系列コンテナ削除dropTimeSeriesの場合は、 + 引数で指定したコンテナの種別とメソッドの種別が異なっているとエラーになります。 + - 例) コレクション"collection1"を、dropTimeSeriesで削除しようとするとエラーになる +- コンテナ削除dropContainerは、コレクションと時系列コンテナのどちらの種別でも削除できます。 + + +コレクション"collection1"を削除するプログラムを以下に示します。 + +```Java +// コレクション"collection1"を削除する +store.dropCollection("collection1"); +``` + + + +### 索引を作成する + +コンテナのカラムに索引を作成します。 + + +索引種別には次の2種類があります。コンテナ種別やカラムのデータ型によって、指定できる索引種別が異なります。 + +| 索引種別 | 内容 | +|-------|---------| +| ツリー索引 | - Bツリーを用いた索引です。
- 等価条件(=)の検索や範囲検索(>や<=など)に適しています。
- カラムのデータ型が空間型、BLOB型、配列型の場合には使用できません。また、時系列コンテナのロウキーには使用できません。
- 複合索引を作成することができます。| +| 空間索引 | - 空間型用の索引です。
- 空間検索を高速に行う場合に適しています。
- コレクションでカラムのデータ型が空間型の場合のみ使用できます。| + +索引作成は、索引種別やカラムを指定する方法の違いで以下の3種類のメソッドがあります。 + +| 分類 | メソッド | +|---------|------| +| 索引作成(カラム名、番号、索引種別、索引名を指定)| Container.createIndex(IndexInfo info) | +| 索引作成(カラム名を指定) | Container.createIndex(java.lang.String columnName) | +| 索引作成(カラム名と索引種別を指定) | Container.createIndex(java.lang.String columnName, IndexType type) | + +[メモ] + +- 索引種別を指定しない場合は、カラムのデータ型で定義されているデフォルトの索引種別が作成されます。 +デフォルトの索引種別は、『[GridDB Java APIリファレンス](../md_reference_java_api/md_reference_java_api.html)』の「createIndex(IndexInfo info)」をご参照ください。 +- 索引名の指定は任意です。指定しても指定しなくてもどちらでも作成できます。 +- 複合索引を作成する場合には、「createIndex(IndexInfo info)」のみ利用可能です。 + + +索引作成createIndex(IndexInfo info)を使用して、コレクションのカラムcountにツリー索引を作成するプログラムを以下に示します。 + + +```Java +// (コンテナオブジェクトの取得は省略) + +// (1)索引情報を設定する +IndexInfo indexInfo = new IndexInfo(); +indexInfo.setColumnName("count"); +indexInfo.setType(IndexType.TREE); +indexInfo.setName("tree_index"); + +// (2)索引を作成する +container.createIndex(indexInfo); + +// (3)複合索引の索引情報を設定する +IndexInfo compositeInfo = new IndexInfo(); +compositeInfo.setColumnNameList(Arrays.asList("count","productName")); +compositeInfo.setType(IndexType.TREE); +compositeInfo.setName("composite_index"); + +// (4)複合索引を作成する +container.createIndex(compositeInfo); +``` + +(1)索引情報IndexInfoには、索引種別、作成対象のカラム(カラム番号またはカラム名)、索引名を指定します。 +(2)IndexInfoを引数として、createIndexを実行します。 +(3)複合索引の場合、索引情報IndexInfoに指定する作成対象のカラム(カラム番号またはカラム名)はList形式で指定します。 +(4)IndexInfoを引数として、createIndexを実行します。 + +### その他 + + +#### データ型の対応付け + +Java APIにおいて、GridDBのデータ型とJavaのデータ型の対応付けは以下の通りです。ロウからの値取得や設定の際には、以下のデータ型を指定してください。 + +| GridDBのデータ型 | Javaのデータ型| +|-------------------|------| +| BOOL型 | boolean | +| STRING型 | java.lang.String | +| BYTE型 | byte | +| SHORT型 | short | +| INTEGER型 | int | +| LONG型 | long | +| FLOAT型 | float | +| DOUBLE型 | double | +| TIMESTAMP型 | java.util.Date | +| GEOMETRY型 | Geometry | +| BLOB型 | java.sql.Blob | + + + +#### エラー処理 + +Java APIのメソッドでエラーが発生すると、GSExceptionがスローされます。 + +エラーコード取得getErrorCode()、スタックトレース表示printStackTrace()などを用いてエラー処理を行います。 + + + +#### TIMESTAMP型のユーティリティ機能 + +TIMESTAMP型のデータは、Java APIではjava.util.Date型として扱います。 +TIMESTAMP型に対するユーティリティ機能として以下のメソッドがあります。 + +| 分類 | メソッド | +|-------------------------------|-----------------| +| 現在時刻の取得 | TimestampUtils.current()
TimestampUtils.currentCalendar() | +| 時刻の加算 | TimestampUtils.add(java.util.Date timestamp, int amount, TimeUnit timeUnit)
TimestampUtils.add(java.util.Date timestamp, int amount, TimeUnit timeUnit, java.util.TimeZone zone) | +| GSTimestamp型を文字列表記に変換 | TimestampUtils.format(java.util.Date timestamp)
TimestampUtils.format(java.util.Date timestamp, java.util.TimeZone zone) | +| 文字列表記をGSTimestamp型に変換 | TimestampUtils.parse(java.lang.String source) | +| TIMESTAMP値表記のフォーマットの取得 | TimestampUtils.getFormat()
TimestampUtils.getFormat(java.util.TimeZone zone) | + + +ロウから取得したTIMESTAMP型の値を文字列表記に変換する例を示します。 + +``` +// ロウからTIMESTAMP型の値を取得する +Date date = row.getTimestamp(0); + +// GSTimestampを文字列に変換する +String dateStr = TimestampUtils.format(date) +``` + + + +## プログラミングの応用 + + + +### 時系列データを扱う + +時系列コンテナに対して、時系列データ特有の演算を実行することができます。 +この節では、これらの時系列データ特有の演算について説明します。 + +演算は、TQLまたはメソッドで実行することができます。 + +| 種類 | 名称 | TQL演算 | メソッド | +|---------|---------------|----------------|------------------| +| 集計演算 | 重み付き平均値 | TIME_AVG | TimeSeries.aggregate
(Aggregation.WEIGHTED_AVERAGEを指定) | +| 選択演算 | 直後の時刻 | TIME_NEXT | TimeSeries.get
(TimeOperator.NEXTを指定) | +| | 直後の時刻 | TIME_NEXT_ONLY | TimeSeries.get
(TimeOperator.NEXT_ONLYを指定) | +| | 直前の時刻 | TIME_PREV | TimeSeries.get
(TimeOperator.PREVIOUSを指定) | +| | 直前の時刻 | TIME_PREV_ONLY | TimeSeries.get
(TimeOperator.PREVIOUS_ONLYを指定) | +| 補間演算 | 線形補間 | TIME_INTERPOLATED | TimeSeries.interpolate | +| | サンプリング | TIME_SAMPLING | TimeSeries.query
(InterpolationModeを指定) | + + +- 単純な検索/集約演算をする場合であれば、メソッドを用いた方が少し性能が良くなる場合があります。大量のヒット件数の場合や、検索後の集約などの複雑な操作が必要であれば、TQL演算を用いて実行してください。 + +以下では、TQL演算を用いたプログラミングの例で説明します。 + +#### 集計演算 + + +##### TIME_AVG 時刻の重み付き平均値 + +ロウの時間間隔で重みをつけて平均を計算します。時間間隔が長いほど重みが大きくなります。 +つまり、値が登録されていない期間の値は、その期間の前後の値が続いていたとみなして計算します。 + +| TQL演算 | 内容 | 演算の引数 | 演算結果の型 | +|------------------|-------------------------------------------------|-----------------------------|----------| +| TIME_AVG(column) | 指定カラムについての、ロウの時刻に基づく重み付き平均 | 時系列コンテナの数値型のカラム | DOUBLE型 | + +- 例) TQLの集計演算TIME_AVGを使用する例 + +
+ TIME_AVGの例 +
TIME_AVGの例
+
+ + + + ```Java + // TQLで演算の実行 + Query query = container.query("SELECT TIME_AVG(value1)", AggregationResult.class); + RowSet rs = query.fetch(); + + // 結果を取得 + if ( rs.hasNext() ){ + AggregationResult result = rs.next(); + double value = result.getDouble(); + System.out.println("TIME_AVG = "+ value); + } + ``` + +[メモ] + +- コレクションに対して、TQLでTIME_AVG演算を実行するとエラーになります。 +- Java APIのメソッドTimeSeries.aggregate(java.util.Date start, java.util.Date end, java.lang.String column, Aggregation aggregation)を用いて、TQLのTIME_AVG演算と同等の処理を行うこともできます。 + + + +#### 選択演算 + +指定された時刻と直前/直後の選択条件に基づいて、時系列コンテナのロウキーの時刻が合致するロウを返します。 + +| TQL選択演算 | 内容 | +|------------------------------|---------------------------------------------------| +| TIME_NEXT(*, timestamp) | 指定の時刻timestampの直後の時刻を持つロウを返す。
同一時刻のロウが存在した場合は、そのロウを返す。 | +| TIME_NEXT_ONLY(*, timestamp) | 指定の時刻timestampの直後の時刻を持つロウを返す。 | +| TIME_PREV(*, timestamp) | 指定の時刻timestampの直前の時刻を持つロウを返す。
同一時刻のロウが存在した場合は、そのロウを返す。 | +| TIME_PREV_ONLY(*, timestamp) | 指定の時刻timestampの直前の時刻を持つロウを返す。 | + +- 例) TQLの選択演算の使用例 + +
+ TIME_NEXTとTIME_PREVの例 +
TIME_NEXTとTIME_PREVの例
+
+ + + ```Java + // TQLで演算の実行 + Query query = container.query("SELECT TIME_NEXT(*, TIMESTAMP('2018-12-01T10:10:00.000Z'))"); + RowSet rs = query.fetch(); + + // 結果を取得(ロウはひとつしか返らない) + if ( rs.hasNext() ){ + Row row = rs.next(); + Date date = row.getTimestamp(0); + int value1 = row.getInteger(1); + double value2 = row.getDouble(2); + System.out.println("TIME_NEXT row date=" + TimestampUtils.format(date) + ", value1=" + value1 + ", value2=" + value2); + } + ``` + +[メモ] + +- コレクションに対して、TQLでこれらの選択演算を実行するとエラーになります。 +- Java APIのメソッドTimeSeries.get(java.util.Date base, TimeOperator timeOp)を用いて、TQLの選択演算と同等の処理を行うこともできます。 + + +#### 補間演算 + +時系列データを補間します。 + +| TQL補間演算 | 内容 | 演算の引数 | +|------------------|-----------------------|-------------| +| TIME_INTERPOLATED(column, timestamp) | 指定の時刻timestampのロウが存在しない場合、補間した値を返す | column : 数値型のカラム
timestamp : 時刻 | +| TIME_SAMPLING(*|column, timestamp_start, timestamp_end, interval, time_unit) | 指定の期間において、ロウをサンプリングした結果を返す | timestamp_start : 開始時刻
timestamp_end : 終了時刻
interval : サンプリング間隔
time_unit : サンプリング間隔の単位(DAY|HOUR|MINUTE|SECOND|MILLISECOND) | + + +**TIME_INTERPOLATED(column, timestamp) :値の補間** +- 指定の時刻timestampのロウが存在する場合、そのロウをそのまま返します。 +- 指定の時刻timestampのロウが存在しない場合、補間した値を格納したロウを返します。カラムcolumnの値は、その前後のロウの値を線形補間した値になります。ロウキーの値はtimestampの値になります。それ以外のカラムの値は、指定の時刻timestampより前のロウの値になります。 +- 前後のロウの値を線形補間するとき、どちらかの値がNULLの場合は、補間値はNULLになります。 + +- 例) TIME_INTERPOLATED演算の実行例 + +
+ TIME_INTERPOLATED演算の実行例 +
TIME_INTERPOLATED演算の実行例
+
+ + + ```Java + // TQLで演算の実行 + Query query = container.query("SELECT TIME_INTERPOLATED(value1, TIMESTAMP('2018-12-01T10:30:00.000Z'))"); + RowSet rs = query.fetch(); + + // 結果を取得(ロウはひとつしか返らない) + if ( rs.hasNext() ){ + Row row = rs.next(); + Date date = row.getTimestamp(0); + int value1 = row.getInteger(1); + double value2 = row.getDouble(2); + System.out.println("TIME_INTERPOLATED row date=" + date + ", value1=" + value1 + ", value2=" + value2); + } + ``` + + + +**TIME_SAMPLING(\*|column, timestamp_start, timestamp_end, interval, time_unit) :値のサンプリング** +- 開始時刻timestamp_startから終了時刻timestamp_endまでの期間で、サンプリング間隔intervalの時間でサンプリングします。 +- サンプリング時刻のロウが存在する場合、そのロウをそのまま返します。 +- サンプリング時刻のロウが存在しない場合、補間した値を格納したロウを返します。カラムcolumnの値、または\*の場合全てのカラムの値は、その前後のロウの値を線形補間した値になります。ロウキーの値はtimestampの値になります。それ以外のカラムの値はサンプリング時刻より前のロウの値になります。 +- 前後のロウの値を線形補間するとき、どちらかの値がNULLの場合は、補間値はNULLになります。 + +- 例) TIME_SAMPLING演算の実行例 + +
+ TIME_SAMPLING演算の実行例 +
TIME_SAMPLING演算の実行例
+
+ + + ```Java + // TQLで演算の実行 + Query query = container.query("SELECT TIME_SAMPLING(value1, TIMESTAMP('2018-12-01T10:00:00.000Z'),TIMESTAMP('2018-12-01T11:00:00.000Z'), 15, MINUTE)"); + RowSet rs = query.fetch(); + + // 結果を取得 + while ( rs.hasNext() ){ + Row row = rs.next(); + Date date = row.getTimestamp(0); + int value1 = row.getInteger(1); + double value2 = row.getDouble(2); + System.out.println("TIME_SAMPLING row date=" + date + ", value1=" + value1 + ", value2=" + value2); + } + ``` + +[メモ] + +- コレクションに対して、TIME_INTERPOLATED、TIME_SAMPLINGを実行するとエラーになります。 +- 集計演算(MAX, MIN, COUNTなど)とTIME_INTERPOLATED、TIME_SAMPLINGを同時に指定することはできません。 +- Java APIのメソッドTimeSeries.interpolate(java.util.Date base, java.lang.String column)を用いて、TQLのTIME_INTERPOLATED演算と同等の処理を行うこともできます。 +- Java APIのメソッドTimeSeries.query(java.util.Date start, java.util.Date end, java.util.Set columnSet, InterpolationMode mode, int interval, TimeUnit intervalUnit) を用いて、TQLのTIME_SAMPLING演算と同等の処理を行うこともできます。 + + + +### 配列型のデータを扱う + +配列型のデータはJavaの配列にマッピングします。 +Rowクラスには、配列型のデータのセットや取得を行うための配列型用のsetter/getterがあります。 +配列型のデータ型に合わせたsetter/getterを使用してロウを操作し、データの登録や取得を行います。 + +| 分類 | メソッド | +|-------|---------| +| ブール型の配列 | void Row.setBoolArray(int column, boolean[] fieldValue)
boolean[] Row.getBoolArray(int column) | +| STRING型の配列 | void Row.setStringArray(int column, java.lang.String[] fieldValue)
java.lang.String[] Row.getStringArray(int column) | +| BYTE型の配列 | void Row.setByteArray(int column, byte[] fieldValue)
byte[] Row.getByteArray(int column) | +| SHORT型の配列 | void Row.setShortArray(int column, short[] fieldValue)
short[] Row.getShortArray(int column) | +| INTEGER型の配列 | void Row.setIntegerArray(int column, int[] fieldValue)
int[] Row.getIntegerArray(int column) | +| LONG型の配列 | void Row.setLongArray(int column, long[] fieldValue)
long[] Row.getLongArray(int column) | +| FLOAT型の配列 | void Row.setFloatArray(int column, float[] fieldValue)
float[] Row.getFloatArray(int column) | +| DOUBLE型の配列 | void Row.setDoubleArray(int column, double[] fieldValue)
double[] Row.getDoubleArray(int column) | +| TIMESTAMP型の配列 | void Row.setTimestampArray(int column, java.util.Date[] fieldValue)
java.util.Date[] Row.getTimestampArray(int column) | + + + +配列型データを登録するプログラムを示します。 + + +```Java +// (1)配列型のデータ +String[] stringArray = {"Sales", "Development", "Marketing", "Research"}; +int[] integerArray = {39, 92, 18, 51 }; + +// (2)ロウに配列型のデータをセットする +Row row = container.createRow(); +row.setInteger(0, 0); +row.setStringArray(1, stringArray); +row.setIntegerArray(2, integerArray); + +// (3)ロウを登録する +container.put(row); +``` + + +配列型データを取得するプログラムを示します。 + + +```Java +// (1)ロウを取得 +Row row = container.get(0); + +// (2)ロウから配列型データを取得 +String[] stringArray = row.getStringArray(1); +int[] integerArray = row.getIntegerArray(2); +``` + +[メモ] + +- 配列型のカラムはロウキーには設定できません。 + + + +### 空間型のデータを扱う + +空間型のデータを登録、取得します。 + +空間型のデータを表すWKT(Well-Known Text)形式の値から、Geometryオブジェクトを生成して操作します。 +WKT形式は、ISOで定められている標準的な書式で、空間型のデータをテキスト形式で表現できます。 + +- 例) 空間型データのWKT形式 + - 2次元空間上の点(2, 3) → POINT(2 3) + +Rowクラスには、空間型のデータのセットや取得を行うための空間型用のsetter/getterがあります。 +これらを用いて、空間型データの登録や取得を行います。 + +| 分類 | メソッド | +|-------|---------| +| 空間型データのセット | void Row.setGeometry(int column, Geometry fieldValue) | +| 空間型データの取り出し | Geometry getGeometry(int column) | + + +空間型データを登録するプログラムを示します。 + + +```Java +import com.toshiba.mwcloud.gs.Geometry; +// (省略) + +// (1)空間型のデータ +Geometry geometry = Geometry.valueOf("POINT(2 3)"); + +// (2)ロウに空間型のデータをセットする +Row row = container.createRow(); +row.setInteger(0, 0); +row.setGeometry(1, geometry); + +// (3)ロウを登録する +container.put(row); +``` + + + +空間型データを取得するプログラムを示します。 + + +```Java +import com.toshiba.mwcloud.gs.Geometry; +// (省略) + +// (1)ロウを取得 +Row row = container.get(0); + +// (2)ロウから配列型データを取得 +Geometry geometry = row.getGeometry(1); +``` + +[メモ] + +- 空間型のカラムはロウキーには設定できません。 + + + +### コンテナ情報を取得する + +コンテナの情報を取得する操作を説明します。 + +- コンテナ名の一覧を取得する +- コンテナのスキーマ情報を取得する + + + + +#### コンテナ名の一覧を取得する + +作成されているコンテナの名前の一覧を取得します。 + +コンテナ名の一覧取得は、パーティションの情報を取得するためのコントローラPartitionControllerインスタンスを用いて行います。 + +| 分類 | メソッド | +|-------|---------| +| パーティションコントローラの取得 | GridStore.getPartitionController() | +| パーティション数の取得 | PartitionController.getPartitionCount() | +| コンテナ名の一覧取得 | PartitionController.getContainerNames(int partitionIndex, long start, java.lang.Long limit) | + +パーティションコントローラを介して、パーティションごとにコンテナ名の一覧を取得します。 +コンテナ名一覧のプログラムを示します。 + + +```Java +// (1)パーティションコントローラと、パーティション数を取得する +PartitionController partitionController = store.getPartitionController(); +int partitionCount = partitionController.getPartitionCount(); + +// (2)パーティション数でループして、コンテナ名一覧を取得する +for (int i = 0; i < partitionCount; i++) { + List containerNames = partitionController.getContainerNames(i, 0, null); + if ( containerNames.size() > 0 ){ + System.out.println(containerNames); + } +} +``` +(2)getContainerNamesメソッドで第2引数0, 第3引数NULLを指定すると、指定したパーティション上の全コンテナ名を取得します。 +取得するコンテナ名の数を制限する場合は、第3引数に制限する数を指定してください。 + +[メモ] + +- クラスタ接続時に指定したデータベース上のコンテナ名一覧しか取得できません。 + 他のデータベースのコンテナ名の一覧を取得する場合は、そのデータベースに接続する必要があります。 + +- 取得するコンテナ名に正規表現のような条件は指定できません。 + + + + +#### コンテナのスキーマ情報を取得する + +コンテナに関する情報は、コンテナ情報ContainerInfoから取得します。 + +| 分類 | メソッド | +|-------|---------| +| コンテナ情報の取得 | GridStore.getContainerInfo(java.lang.String name) | + +ContainerInfoには、様々な情報を取得するsetterメソッドがあります。必要な情報を取得するメソッドを使用してください。 +メソッドの詳細は、『[GridDB Java APIリファレンス](../md_reference_java_api/md_reference_java_api.html)』をご参照ください。 + + + +コンテナのカラムや索引情報などを取得するプログラムを示します。 + + +```Java +// (1)コンテナ情報の取得 +ContainerInfo containerInfo = store.getContainerInfo(containerName); + +// (2)名前とタイプの取得 +String name = containerInfo.getName(); +ContainerType type = containerInfo.getType(); +System.out.println("name=" + name +", type="+type); + +// (3)カラム情報の取得 +for (int i = 0; i < containerInfo.getColumnCount(); i++){ + ColumnInfo info = containerInfo.getColumnInfo(i); + // カラム名 + String columnName = info.getName(); + + // カラムのデータ型 + GSType columnType = info.getType(); + + // NotNull制約 (true=Not Null制約なし, false=Not Null制約あり) + boolean columnNullable = info.getNullable(); + + // 索引情報 + Set indexTypes = info.getIndexTypes(); + + System.out.println("column name="+columnName+", type="+columnType+", nullable="+columnNullable); + if ( indexTypes.size() > 0 ) System.out.println(" indexTypes="+indexTypes); +} +``` + + +### 複合ロウキーを扱う + +データの登録や検索の処理では、複合ロウキーを指定して操作を行うことができます。 + +複合ロウキーを設定したデータを登録するプログラムを示します。複合ロウキーとして1つ目のINTEGER型と2つ目のSTRING型を指定します。 + + +```Java +// (1)コンテナ情報の作成 +ContainerInfo containerInfo = new ContainerInfo(); +containerInfo.setType(ContainerType.COLLECTION); +List columnList = new ArrayList(); +columnList.add(new ColumnInfo("id", GSType.INTEGER)); +columnList.add(new ColumnInfo("productName", GSType.STRING)); +columnList.add(new ColumnInfo("count", GSType.INTEGER)); +containerInfo.setColumnInfoList(columnList); + +// (2)複合ロウキーを指定 +containerInfo.setRowKeyColumnList(Arrays.asList(0, 1)); + +// (3)コンテナを作成 +Container container = store.putContainer("SampleJava_CompositeKeyMultiGet1", containerInfo, false); + +// (4)ロウを登録する +String[] nameList = {"notebook PC", "desktop PC", "keyboard", "mouse", "printer"}; +int[] numberList = {108, 72, 25, 45, 62}; +List rowList = new ArrayList(); +for ( int i = 0; i < nameList.length; i++ ){ + Row row = container.createRow(); + row.setInteger(0, i); + row.setString(1, nameList[i]); + row.setInteger(2, numberList[i]); + rowList.add(row); +} +container.put(rowList); +``` + +複数のコンテナから、複合ロウキーで指定した条件に当てはまるデータを取得するプログラムを示します。指定する条件は、個別条件指定を用い、1つ目のコンテナからはINTEGER型のロウキーの値が"0"、STRING型のロウキー値が"notebook PC"に合致するロウを、2つ目のコンテナからはINTEGER型のロウキーの値が"2"、STRING型のロウキー値が"keyboard"に合致するロウと、INTEGER型のロウキーの値が"4"、STRING型のロウキー値が"printer"に合致するロウを取得します。 + + + +```Java +// (1)取得条件を構築する +Map> predMap = new HashMap>(); +{ + RowKeyPredicate predicate = RowKeyPredicate.create(containerInfo); + Key rowKey = store.createRowKey(containerInfo); + rowKey.setInteger(0, 0); + rowKey.setString(1, "notebook PC"); + predicate.add(rowKey); + predMap.put("SampleJava_CompositeKeyMultiGet1", predicate); +} +{ + RowKeyPredicate predicate = RowKeyPredicate.create(containerInfo); + + Key rowKey = store.createRowKey(containerInfo); + rowKey.setInteger(0, 2); + rowKey.setString(1, "keyboard"); + predicate.add(rowKey); + rowKey.setInteger(0, 4); + rowKey.setString(1, "printer"); + predicate.add(rowKey); + + predMap.put("SampleJava_CompositeKeyMultiGet2", predicate); +} + +// (2)複数コンテナからロウを取得する +Map> outMap = store.multiGet(predMap); +System.out.println("CompositeKeyMultiGet"); + +// (3)ロウの値を取得する +for (Map.Entry> entry : outMap.entrySet()) { + System.out.println("containerName="+entry.getKey()); + + for (Row row : entry.getValue()) { + int id = row.getInteger(0); + String name = row.getString(1); + int count = row.getInteger(2); + + System.out.println(" id=" + id + " name=" + name +" count=" + count); + } +} +``` + +[メモ] + +- 個別条件と範囲条件の2つの条件を混在して使用することはできません。 +- 条件をどちらも指定しなかった場合は、すべてのロウが取得されます。 +- RowKeyPredicateクラスは、複数コンテナのロウ取得multiGetメソッドでのみ使用できます。他のロウ取得getメソッドでは使用できません。 + + + +# C API (NoSQLインタフェース) + +## C APIを利用したアプリケーションの開発(Linux) + +### 開発実行環境の構築 + +C APIのアプリケーションを開発するには、C APIのパッケージをインストールする必要があります。 + +[メモ] +- RHEL, CentOSのヘッダとライブラリパスは以下です。 + - /usr/include/gridstore.h + - /usr/lib64/libgridstore.so +- Ubuntu Serverのヘッダとライブラリパスは以下です。 + - /usr/include/gridstore.h + - /usr/lib/x86_64-linux-gnu/libgridstore.so + + +アプリケーションの開発や実行を行う際には、LD_LIBRARY_PATHに指定してください。 + +RHEL, CentOS設定例) +``` +$ export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/lib64 +``` + +Ubuntu Server設定例) +``` +$ export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/lib/x86_64-linux-gnu +``` + + +### プログラムのビルド方法 + +サンプルプログラムのコンパイルと実行方法を説明します。 + +コンパイル時にはライブラリ"gridstore"を-lオプションに指定してください。生成された実行ファイルを実行してください。 + +- 例) Sample1.cのコンパイルと実行の例 + + ``` + $ gcc sapmle1.c -lgridstore -o sample1 + $ ./sample1 + ``` + + +## C APIを利用したアプリケーションの開発(Windows) + +### 開発実行環境の構築 + +C APIのWindows用ライブラリは、C:/Program Files/GridDB/GridDB C Client/X.X.Xに含まれています。(gridstore_c.lib、gridstore.h、gridstore_c.dll、msvcp140.dll、vcruntime140.dll) + +ライブラリは64ビット用dllです。 +Visual Studio 2017のランタイムライブラリがインストール済みでない場合は、msvcp140.dllとvcruntime140.dllをコピーしてください。 +(Visual Studio 2017のランタイムライブラリ「Visual Studio 2017 の Microsoft Visual C++ 再頒布可能パッケージ」は、マイクロソフトの公式ページからもダウンロード可能です) + + +### プログラムのビルド方法 + +以下は、VS2017の場合の手順です。 +* x64のプロジェクトを作成。[構成マネージャ] - [アクティブソリューションプラットフォーム] - [新規作成]で "x64"を選択します。 +* プロジェクトのソース ファイルにサンプルファイルを追加します。 +* Includeディレクトリの設定。[構成プロパティ] - [C/C++] - [全般] - [追加のインクルードディレクトリ]に gridstore.h が存在するディレクトリを指定します。 +* インポートライブラリ(gridstore_c.lib)の設定。[リンカー] - [入力] - [追加の依存ファイル] に追加します。 +* プロジェクトをビルドします。 + +  + +サンプルプログラム一覧 + +| 分類 | プログラム名 | 内容 | 作成するコンテナ名 | +|------|------------|------|-------------------| +| [クラスタに接続する](#c_connect) | Connect.c | マルチキャスト方式でクラスタに接続して切断します。 | - | +| [コレクションを作成する(メソッド)](#c_create_collection_by_method) | CreateCollectionByMethod.c | メソッドでスキーマを指定する方法を用いて、コレクションを作成します。 | SampleC_collection1 | +| [コレクションを作成する(クラス定義)](#c_create_collection_by_class) | CreateCollectionByClass.c | クラス定義でスキーマを指定する方法を用いて、コレクションを作成します。 | SampleC_collection2 | +| [時系列コンテナを作成する(メソッド)](#c_create_container_by_method) | CreateTimeSeriesByMethod.c | メソッドでスキーマを指定する方法を用いて、時系列コンテナを作成します。 | SampleC_timeseries1 | +| [ロウを登録する](#c_put_row) | PutRow.c | ひとつのコンテナにひとつのロウを登録します。 | SampleC_PutRow | +| [複数のロウを登録する](#c_put_rows) | PutRows.c | ひとつのコンテナに複数のロウを登録します。 | SampleC_PutRows | +| [ロウを取得する](#c_get_row) | GetRow.c | ロウキーを指定してコンテナからロウを取得します。 | SampleC_GetRow | +| [TQLでロウを検索する](#c_tql_select) | TQLSelect.c | TQLのSELECT文でロウを取得します。 | SampleC_TQLSelect | +| [TQLの集計関数を実行する](#c_tql_aggregation) | TQLAggregation.c | TQLのSELECT文で集計演算を実行します。 | SampleC_TQLAggregation | +| [複数コンテナにロウを登録する](#c_multiput) | MultiPut.c | 複数のコンテナにロウを一括で登録します。 | SampleC_MultiPut1, SampleC_MultiPut2 | +| [複数コンテナからロウを取得する](#c_multiget) | MultiGet.c | 複数のコンテナからロウを一括で取得します。 | SampleC_MultiGet1, SampleC_MultiGet2 | +| [複数コンテナにTQLを実行する](#c_fetchall) | FetchAll.c | 複数のコンテナにTQLを一括で実行します。 | SampleC_FetchAll1, SampleC_FetchAll2 | +| [バイナリデータを登録・検索する](#c_binary) | BlobData.c | バイナリデータをコンテナに登録して、コンテナから取得します。 | SampleC_BlobData | +| [ロウを更新する](#c_update) | UpdateRowByTQL.c | TQLで取得したRowSetを用いて、ロウを更新します。 | SampleC_UpdateRowByTQL | +| [ロウを削除する(ロウキー)](#c_remove_row) | RemoveRowByRowkey.c | ロウキーを指定してロウを削除します。 | SampleC_RemoveRowByRowkey | +| [ロウを削除する(TQL)](#c_remove_rowset) | RemoveRowByTQL.c | TQLで検索したロウを削除します。 | SampleC_RemoveRowByTQL | +| [索引を作成する](#c_create_index) | CreateIndex.c | 索引を作成します。 | SampleC_Index | +| [時系列の演算を行う](#c_timeseries_function) | TQLTimeseries.c | 時系列データに対して様々な演算を行います。 | SampleC_TQLTimeseries | +| [配列型のデータを扱う](#c_array_data) | ArrayData.c | 配列型のデータの登録と検索を行います。 | SampleC_ArrayData | +| [空間型のデータを扱う](#c_geometry_data) | GeometryData.c | 空間型のデータの登録と検索を行います。 | SampleC_GeometryData | +| [コンテナ名一覧を取得する](#c_containernames) | ContainerNames.c | コンテナ名の一覧を取得します。 | - | +| [コンテナのスキーマ情報を取得する](#c_containerinfo) | ContainerInformation.c | コンテナのスキーマ情報を取得します。 | SampleC_Info | +| [複合ロウキーを使って複数コンテナからロウを取得する](#c_compositekey) | CompositeKeyMultiGet.c | 複合ロウキーを使って複数のコンテナからロウを一括で取得します。 | SampleC_CompositeKeyMultiGet1, SampleC_CompositeKeyMultiGet2 | + + +## プログラミングの基礎 + +C APIを用いた基礎的なプログラミングを説明します。 + + +### クラスタに接続する + +データの登録や検索などの操作を行うためには、クラスタに接続する必要があります。 +接続処理では以下のメソッドを用います。 + +| 分類 | メソッド | +|-----|------------| +| GridStoreFactoryインスタンス取得 | gsGetDefaultFactory() | +| GridStoreインスタンス取得 | gsGetGridStore(GSGridStoreFactory *factory, const GSPropertyEntry *properties, size_t propertyCount, GSGridStore **store) | +| リソース解放 | gsCloseGridStore(GSGridStore **store, GSBool allRelated) | + +クラスタへの接続を行うプログラムの例を以下に示します。 + + +```C +#include "gridstore.h" +#include +#include + +void main(int argc, char *argv[]){ + + GSGridStore *store; + GSContainer *container; + GSResult ret; + size_t stackSize; + GSResult errorCode; + GSChar errMsgBuf1[1024], errMsgBuf2[1024]; // エラーメッセージを格納するバッファ + int i; + + //=============================================== + // クラスタに接続する + //=============================================== + // (1)接続情報を指定する (マルチキャスト方式) + const GSPropertyEntry props[] = { + { "notificationAddress", "239.0.0.1" }, + { "notificationPort", "31999" }, + { "clusterName", "myCluster" }, + { "database", "public" }, + { "user", "admin" }, + { "password", "admin" }, + { "applicationName", "SampleC" } + }; + + const size_t propCount = sizeof(props) / sizeof(*props); + + + // (2)GridStoreインスタンスを取得する + ret = gsGetGridStore(gsGetDefaultFactory(), props, propCount, &store); + if ( !GS_SUCCEEDED(ret) ){ + fprintf(stderr, "gsGetGridStore error\n"); + goto LABEL_ERROR; + } + + // (3)コンテナ作成や取得などの操作を行うと、クラスタに接続される + ret = gsGetContainerGeneral(store, "containerName", &container); + if ( !GS_SUCCEEDED(ret) ){ + fprintf(stderr, "gsGetContainerGeneral error\n"); + goto LABEL_ERROR; + } + gsCloseContainer(&container, GS_TRUE); + printf("Connect to Cluster\n"); + + + //=============================================== + // 終了処理 + //=============================================== + // (4)リソースを解放する + gsCloseGridStore(&store, GS_TRUE); + + printf("success!\n"); + + return; + + +LABEL_ERROR: + //=============================================== + // エラー処理 + //=============================================== + // エラーコードとエラーメッセージを出力する + stackSize = gsGetErrorStackSize(store); + for ( i = 0; i < stackSize; i++ ){ + errorCode = gsGetErrorCode(store, i); + gsFormatErrorMessage(store, i, errMsgBuf1, sizeof(errMsgBuf1)); + gsFormatErrorLocation(store, i, errMsgBuf2, sizeof(errMsgBuf2)); + fprintf(stderr, "[%d] %s (%s)\n", errorCode, errMsgBuf1, errMsgBuf2); + } + + // リソースを解放する + gsCloseGridStore(&store, GS_TRUE); + return; +} +``` + +接続処理の部分を説明します。 + +(1)クラスタのアドレスやユーザ、パスワードなどの接続情報をGSPropertyEntryに指定します。 +GSPropertyEntryは、プロパティのキーと値の組合せの配列です。 +指定したプロパティの数は、次のインスタンス取得処理で必要になるのでsizeofを用いて計算しておきます。 + +(2)接続情報のプロパティを基に、GridStoreインスタンスを取得します。 + +(3)GridStoreオブジェクトを用いてコンテナ作成や取得などの操作を行うと、GridDBクラスタへの接続処理が行われます。 + +(4)切断しリソースを解放します。第二引数は、GSGridStoreインスタンスで取得したすべてのリソースを解放するかどうかを指定します。GS_TRUEを指定するとすべてのリソースが解放されます。GS_FALSEを指定した場合は、別途個別にリソースを解放する必要があります。 + + +エラー処理については、[エラー処理](#c_error_handling)を参照ください。 + + +#### 接続方式 + +クラスタには、マルチキャスト方式、固定リスト方式、プロバイダ方式【EE限定】の3種類の接続方式があります。 + +| 接続方式 | 内容 | +| --------|------| +| マルチキャスト方式 | マルチキャスト通信を用いた方式 | +| 固定リスト方式 | クラスタを構成する全ノードのアドレスを直接指定する方式 | +| プロバイダ方式 | クラスタを構成する全ノードのアドレスをプロバイダを用いて提供する方式 | + +アプリケーションからクラスタに接続する際には、クラスタ定義ファイルgs_cluster.jsonで定義されている接続方式に合わせて、アプリケーション側の設定を行う必要があります。 + +まずはクラスタ定義ファイルgs_cluster.jsonを参照し、使用されている接続方式を確認してください。次に接続方式に基づいて、対応する値をPropertiesオブジェクトに設定してください。 + + +| 接続方式 | アプリケーションで指定するプロパティのキー | 内容 | 指定する値 | +| --------|----------------------------------------|------|-----------| +| マルチキャスト方式 | notificationAddress

notificationPort | マルチキャストのアドレス

マルチキャストのポート番号 | /transaction/notificationAddressの値

/transaction/notificationPortの値 | +| 固定リスト方式 | notificationMember | クラスタを構成するノードのアドレスとポート番号のリスト | /cluster/notificationMemberの/transaction/addressと/transaction/portをリスト形式にした値 | +| プロバイダ方式 | notificationProvider | プロバイダのURL | /cluster/notificationProvider/urlの値 | + +[メモ] +- コネクションプーリングがデフォルトで有効です。最大接続数はGridStoreFactoryのmaxConnectionPoolSizeプロパティで指定できます。デフォルトは16です。詳細は、『[GridDB C APIリファレンス](../md_reference_c_api/md_reference_c_api.html)』をご参照ください。 + +3つの接続方式について、クラスタ定義ファイルgs_cluster.jsonの記述内容と対応する接続プログラムの例を示します。 + +**マルチキャスト方式の例** + +- gs_cluster.jsonの記述が以下の場合(一部抜粋) + + ```json + { + "transaction":{ + "notificationAddress":"239.0.0.1", + "notificationInterval":"1s", + "notificationPort":31999, + } + } + ``` + +- 接続プログラムのプロパティキーnotificationAddressとnotificationPortには、マルチキャストアドレスとポート番号を記述します。 + + ```C + const GSPropertyEntry props[] = { + { "notificationAddress", "239.0.0.1" }, + { "notificationPort", "31999" }, + { "clusterName", "myCluster" }, + { "user", "admin" }, + { "password", "admin" } + { "applicationName", "SampleC" } + }; + ``` + +**固定リスト方式の例** + +- gs_cluster.jsonに記述されている値(一部抜粋) + + ```json + { + "cluster":{ + "clusterName":"myCluster", + "replicationNum":2, + "notificationMember":[ + { + "cluster": {"address":"192.168.1.10", "port":10010}, + "sync": {"address":"192.168.1.10", "port":10020}, + "system": {"address":"192.168.1.10", "port":10040}, + "transaction": {"address":"192.168.1.10", "port":10001} + }, + { + "cluster": {"address":"192.168.1.11", "port":10010}, + "sync": {"address":"192.168.1.11", "port":10020}, + "system": {"address":"192.168.1.11", "port":10040}, + "transaction": {"address":"192.168.1.11", "port":10001} + }, + { + "cluster": {"address":"192.168.1.12", "port":10010}, + "sync": {"address":"192.168.1.12", "port":10020}, + "system": {"address":"192.168.1.12", "port":10040}, + "transaction": {"address":"192.168.1.12", "port":10001} + } + ] + } + } + ``` + +- 接続プログラムのプロパティキーnotificationMemberには、アドレスとポート番号を:で連結してカンマで区切った値を記述します。 + + ```C + const GSPropertyEntry props[] = { + { "notificationMember", "192.168.1.10:10001,192.168.1.11:10001,192.168.1.12:10001" }, + { "clusterName", "myCluster" }, + { "user", "admin" }, + { "password", "admin" } + { "applicationName", "SampleC" } + }; + ``` + + + +**プロバイダ方式の例** + +- 例) gs_cluster.jsonの記述が以下の場合(一部抜粋) + + ```json + { + "cluster":{ + "clusterName":"myCluster", + "replicationNum":2, + "notificationProvider":{ + "url":"http://example.com/notification/provider", + "updateInterval":"30s" + } + } + } + ``` + +- 接続プログラムのプロパティキーnotificationProviderにはurlの値を記述します。 + + ```C + const GSPropertyEntry props[] = { + { "notificationProvider", "http://example.com/notification/provider" }, + { "clusterName", "myCluster" }, + { "user", "admin" }, + { "password", "admin" } + { "applicationName", "SampleC" } + }; + ``` + +#### プロパティ + +接続方式以外の主なプロパティは以下です。 +その他のプロパティの詳細は、『[GridDB C APIリファレンス](../md_reference_c_api/md_reference_c_api.html)』の「gsGetGridStore」をご参照ください。 + + +| 項目 | プロパティのキー | 必須 | 指定する値 | +| -----------------|-----------------|---------|----------------| +| クラスタ名 | clusterName | 必須 | gs_cluster.jsonの/cluster/clusterNameに記載している値 | +| データベース名 | database | publicデータベースに接続する場合は省略可
それ以外は必須 | 接続するデータベース名 | +| ユーザ名 | user | 必須 | 接続するユーザ名(管理ユーザ・一般ユーザどちらも可) | +| パスワード | password | 必須 | 接続するユーザのパスワード | +| アプリケーション名 | applicationName | 省略可 | アプリケーションを識別するための名前
(運用ツールgs_shでコネクション情報や実行中イベントを確認する時に表示されます) | +| タイムゾーン | timeZone | 省略可 | 時分で指定:±hh:mm または ±hhmm
タイムゾーンID:「Z」のみサポート
上位(JavaVM)の環境引継ぎ:auto
※省略時は「Z」相当| +| マルチキャストパケットを受信するインターフェースアドレス | notificationInterfaceAddress | 省略可 | 複数のネットワークインターフェースがあるときにクラスタのネットワーク構成をマルチキャスト方式にする場合は、マルチキャストパケットを受信するインターフェースのIPアドレスを指定| +| フェイルオーバタイムアウト | failoverTimeout | 省略可 | クライアントフェイルオーバのタイムアウト時間(秒)
※省略時はGridStoreFactoryの設定値に従う| +| トランザクションタイムアウト | transactionTimeout | 省略可 | トランザクションのタイムアウト時間(秒)
※省略時は300(秒)| + + +[メモ] + +- 上記以外に、GridStoreFactoryに設定可能な以下のプロパティがあります。詳細は、『[GridDB C APIリファレンス](../md_reference_c_api/md_reference_c_api.html)』をご参照ください。 + + | 項目 | プロパティのキー | 必須 | 指定する値 | + | -----------------|-----------------|---------|----------------| + | フェイルオーバタイムアウト | failoverTimeout | 省略可 | クライアントフェイルオーバのタイムアウト時間(秒)
※省略時は120(秒)| + | 最大接続プールサイズ | maxConnectionPoolSize | 省略可 | 接続プールで保持する最大接続数
※省略時は16| + + +- 接続時にデータベースを指定します。その接続では、指定したデータベース上のデータにしかアクセスできません。別のデータベースに対して操作を行う場合には改めて接続処理を行ってください。 + - 例) データベースpublicの操作と、データベースuserDB1の操作を行う場合のプログラム + + ```C + // データベース以外のプロパティ指定は省略 + + // データベースpublicに接続 + const GSPropertyEntry props[] = { + { "database", "public" }, + ・・・ + } + ret = gsGetGridStore(gsGetDefaultFactory(), props, propCount, &store1); + gsGetContainerGeneral(store1, "container1", &container); // データベースpublic上のコンテナcontainer1を取得 + gsCloseGridStore(&store1, GS_TRUE); + + // データベースuserDB1に接続 + const GSPropertyEntry props[] = { + { "database", "userDB1" }, + ・・・ + } + ret = gsGetGridStore(gsGetDefaultFactory(), props, propCount, &store2); + gsGetContainerGeneral(store1, "container2", &container); // データベースuserDB1上のコンテナcontainer1を取得 + gsCloseGridStore(&store2, GS_TRUE); + ``` + + + +- コンテナの取得getContainerを高速化するために、コンテナ情報をキャッシュする機能があります。 +アクセスするコンテナ数が多い場合にはキャッシュのサイズを増やすことを推奨します。 +キャッシュのサイズは、接続時のプロパティキーで指定します。 + - デフォルトではキャッシュ機能は無効です + - プロパティキーcontainerCacheSizeに指定する値は、キャッシュに情報を格納するContainerオブジェクトの数です + + ```C + const GSPropertyEntry props[] = { + { "containerCacheSize", "10000" }, + ・・・ + } + ``` + + +- クラスタに実際に接続するのは、GridStoreオブジェクトを生成してから、最初にコンテナ作成や検索などのデータ操作を実施した時です。 +接続先の誤りなどで接続が失敗する場合、GridStoreオブジェクトの生成ではエラーは発生せず、 +次のデータ操作のメソッドで接続エラーが発生します。 + +- タイムゾーンでサポートされている範囲は以下になります。 + - オフセット範囲: -23:59~+23:59 + - 夏時間: 非サポート + - タイムゾーンID (JSTなど): 「Z」を除き非サポート + +- 日付時刻機能の中でタイムゾーンを扱う場合には付録の[日付時刻機能を利用する上でのアプリ向けの推奨事項](#date_function)をご参照ください。 + +### コンテナを作成する + +コンテナを作成します。コンテナには、コレクションと時系列コンテナの2つの種類があります。 +コンテナ作成では、カラム名やデータ型などのスキーマを指定する必要があります。 +スキーマを指定する方法として、次の2つの方法があります。 + +- メソッドでスキーマを指定する方法 + - C APIのメソッドを使用して、スキーマを指定します。 + + +- 構造体でスキーマを指定する方法 + - Cの構造体を使用して、スキーマを指定します。 + + +それぞれの方法について説明します。 + + + + +#### メソッドでスキーマを指定する方法 + +コンテナのスキーマはメソッドを使用して動的に指定します。 +スキーマを表すコンテナ情報クラスGSContainerInfoやカラム情報クラスGSColumnInfoを用います。 +これらを用いてコンテナを作成するメソッドは以下の通りです。 + +| 分類 | メソッド | +|-------|---------| +| コレクション作成 | gsPutCollectionGeneral(GSGridStore *store, const GSChar *name, const GSContainerInfo *info, GSBool modifiable, GSCollection **collection) | +| 時系列コンテナ作成 | gsPutTimeSeriesGeneral (GSGridStore *store, const GSChar *name, const GSContainerInfo *info, GSBool modifiable, GSTimeSeries **timeSeries) | +| コンテナ(コレクション、または時系列コンテナ)作成 | gsPutContainerGeneral(GSGridStore *store, const GSChar *name, const GSContainerInfo *info, GSBool modifiable, GSContainer **container) | + +コンテナ作成のメソッドgsPutContainerGeneralは、コレクションと時系列コンテナのどちらの種類も作成できます。 + + + +##### コレクションの作成 gsPutCollectionGeneral + +コレクション作成gsPutCollectionGeneralを用いて、コレクションを作成するプログラムの全体を以下に示します。 + + +```C +#include "gridstore.h" +#include +#include + +void main(int argc, char *argv[]){ + + GSGridStore *store; + GSContainer *container; + GSCollection *collection; + GSContainerInfo info = GS_CONTAINER_INFO_INITIALIZER; + GSColumnInfo columnInfo = GS_COLUMN_INFO_INITIALIZER; + GSColumnInfo columnInfoList[3]; + GSResult ret; + size_t stackSize; + GSResult errorCode; + GSChar errMsgBuf1[1024], errMsgBuf2[1024]; // エラーメッセージを格納するバッファ + int i; + + //=============================================== + // クラスタに接続する + //=============================================== + // 接続情報を指定する (マルチキャスト方式) + const GSPropertyEntry props[] = { + { "notificationAddress", "239.0.0.1" }, + { "notificationPort", "31999" }, + { "clusterName", "myCluster" }, + { "database", "public" }, + { "user", "admin" }, + { "password", "admin" }, + { "applicationName", "SampleC" } + }; + + const size_t propCount = sizeof(props) / sizeof(*props); + + + // GridStoreインスタンスを取得する + ret = gsGetGridStore(gsGetDefaultFactory(), props, propCount, &store); + if ( !GS_SUCCEEDED(ret) ){ + fprintf(stderr, "ERROR gsGetGridStore\n"); + goto LABEL_ERROR; + } + // コンテナ作成や取得などの操作を行うと、クラスタに接続される + ret = gsGetContainerGeneral(store, "containerName", &container); + if ( !GS_SUCCEEDED(ret) ){ + fprintf(stderr, "ERROR gsGetContainerGeneral\n"); + goto LABEL_ERROR; + } + gsCloseContainer(&container, GS_TRUE); + printf("Connect to Cluster\n"); + + + //=============================================== + // コレクションを作成する + //=============================================== + // (1)コンテナ種別を設定する + info.type = GS_CONTAINER_COLLECTION; + + // (2)ロウキーありの場合は設定する + info.rowKeyAssigned = GS_TRUE; + + // (3)カラム情報を定義する + columnInfo.name = "id"; + columnInfo.type = GS_TYPE_INTEGER; + columnInfoList[0] = columnInfo; + + columnInfo.name = "productName"; + columnInfo.type = GS_TYPE_STRING; + columnInfoList[1] = columnInfo; + + columnInfo.name = "count"; + columnInfo.type = GS_TYPE_INTEGER; + columnInfoList[2] = columnInfo; + + // (4)カラム情報をコンテナ情報オブジェクトに設定する + info.columnCount = sizeof(columnInfoList) / sizeof(*columnInfoList); + info.columnInfoList = columnInfoList; + + // (5)コレクションを作成する + ret = gsPutCollectionGeneral(store, "SampleC_collection1", &info, GS_FALSE, &collection); + if ( !GS_SUCCEEDED(ret) ){ + fprintf(stderr, "ERROR gsPutCollectionGeneral\n"); + goto LABEL_ERROR; + } + + printf("Create Collection name=SampleC_collection1\n"); + + //=============================================== + // 終了処理 + //=============================================== + // リソースを解放する + gsCloseGridStore(&store, GS_TRUE); + + printf("success!\n"); + + return; + + +LABEL_ERROR: + //=============================================== + // エラー処理 + //=============================================== + // エラーコードとエラーメッセージを出力する + stackSize = gsGetErrorStackSize(store); + for ( i = 0; i < stackSize; i++ ){ + errorCode = gsGetErrorCode(store, i); + gsFormatErrorMessage(store, i, errMsgBuf1, sizeof(errMsgBuf1)); + gsFormatErrorLocation(store, i, errMsgBuf2, sizeof(errMsgBuf2)); + fprintf(stderr, "[%d] %s (%s)\n", errorCode, errMsgBuf1, errMsgBuf2); + } + + // リソースを解放する + gsCloseGridStore(&store, GS_TRUE); + return; + +} +``` + +コレクションを作成する箇所を説明します。 +(3)カラム名やデータ型は、カラム情報GSColumnInfoに指定します。 +複数のカラムがある場合は、GSColumnInfoを複数生成します。 +(4)GSColumnInfoはコンテナ情報GSContainerInfoにセットします。 +(5)この情報を用いて、putCollectionでコレクションを作成します。 + +[メモ] + +- 既に存在するコンテナと同じ名前を指定した場合、指定したスキーマ定義と既存コンテナのスキーマ定義が +同じであればエラーにはなりません。コンテナの取得(GSGetContainerGeneralなど)を実行した時と同じ動作になります。 + + スキーマ定義が異なる場合、引数modifiableにtrueが指定されていると既存のスキーマ定義を変更します。 +引数modifiableにfalseが指定されているとエラーになります。modifiableは、既存コンテナのスキーマ変更を許可するかどうかを指定する変数です。 +コンテナの新規作成の場合はfalseを指定してください。 +- ロウキーを設定すると、一番目のカラムがロウキーになります。 + + + +##### 時系列コンテナを作成する gsPutTimeSeriesGeneral + +時系列コンテナ作成gsPutTimeSeriesGeneralを用いて、時系列コンテナを作成します。 +プログラム全体の流れはコレクションの作成と同様ですので、異なる部分のプログラムのみを示します。 + + +```C +//=============================================== +// 時系列コンテナを作成する +//=============================================== +// (1)コンテナ種別を設定する +info.type = GS_CONTAINER_TIME_SERIES; + +// (2)ロウキーを設定する (時系列コンテナはロウキーの設定が必須) +info.rowKeyAssigned = GS_TRUE; + +// (3)カラム情報を定義する +columnInfo.name = "date"; +columnInfo.type = GS_TYPE_TIMESTAMP; +columnInfoList[0] = columnInfo; + +columnInfo.name = "value"; +columnInfo.type = GS_TYPE_DOUBLE; +columnInfoList[1] = columnInfo; + +// (4)カラム情報をコンテナ情報オブジェクトに設定する +info.columnCount = sizeof(columnInfoList) / sizeof(*columnInfoList); +info.columnInfoList = columnInfoList; + +// (5)時系列コンテナを作成する +ret = gsPutTimeSeriesGeneral(store, "SampleC_timeseries1", &info, GS_FALSE, ×eries); +if ( !GS_SUCCEEDED(ret) ){ + fprintf(stderr, "ERROR gsPutTimeSeriesGeneral\n"); + goto LABEL_ERROR; +} + +printf("Create TimeSeries name=SampleC_timeseries1\n"); +``` + +[メモ] + +- 時系列コンテナの場合は、第一カラムはTIMESTAMP型のデータ型で、かつ、ロウキーの設定が必要です。 +- 時系列コンテナ特有の設定は、GSTimeSeriesPropertiesオブジェクトを用います。 + + + +##### コンテナを作成する gsPutContainerGeneral + +コンテナ作成gsPutContainerGeneralメソッドは、コレクションと時系列コンテナのどちらでも作成することができます。 +コレクションと時系列コンテナの種別は、GSContainerInfo.typeで指定します。 + +- コレクションの作成方法 + + ```C + // カラム情報の指定は省略 + + // コンテナ種別を指定 + info.type = GS_CONTAINER_COLLECTION; + + // コレクション作成 + ret = gsPutContainerGeneral(store, "collection3", &info, GS_FALSE, &collection); + ``` + +- 時系列コンテナの作成方法 + + ```C + // カラム情報の指定は省略 + + // コンテナ種別を指定 + info.type = GS_CONTAINER_TIME_SERIES; + + // 時系列コンテナ作成 + ret = gsPutContainerGeneral(store, "timeseries3", &info, GS_FALSE, ×eries); + ``` + + + + + +#### 構造体でスキーマを指定する方法 +Cの構造体を用いて、コンテナのスキーマを定義します。メンバ変数が、GridDBのコンテナのカラムに対応付けされます。 +構造体を用いた方法では以下のメソッドを使用します。 + +| 分類 | メソッド | +|-------|---------| +| コレクション作成 | gsPutCollection(GSGridStore *store, const GSChar *name, const GSBinding *binding, const GSCollectionProperties *properties, GSBool modifiable, GSCollection **collection) | +| 時系列コンテナ作成 | gsPutTimeSeries(GSGridStore *store, const GSChar *name, const GSBinding *binding, const GSTimeSeriesProperties *properties, GSBool modifiable, GSTimeSeries **timeSeries) | +| コンテナ(コレクション、または時系列コンテナ)作成 | gsPutContainer(GSGridStore *store, const GSChar *name, const GSBinding *binding, const GSContainerInfo *info, GSBool modifiable, GSContainer **container) | + +コンテナ作成のメソッドgsPutContainerは、コレクションと時系列コンテナのどちらの種類も作成できます。 + + +コレクション作成gsPutCollectionを用いて、ロウキーありのコレクションを作成するプログラムを以下に示します。 + +時系列コンテナの作成gsPutTimeseriesとコンテナ作成gsPutContainerの場合も、プログラムの流れは同様です。 + + + +```C +// (1)コレクションの構造体を定義する +typedef struct { + int id; + const GSChar *productName; + uint64_t count; +} Product; + +// (2)構造体とスキーマの対応関係を定義する +GS_STRUCT_BINDING(Product, + GS_STRUCT_BINDING_KEY(id, GS_TYPE_INTEGER) + GS_STRUCT_BINDING_ELEMENT(productName, GS_TYPE_STRING) + GS_STRUCT_BINDING_ELEMENT(count, GS_TYPE_INTEGER) +); + +void main(int argc, char *argv[]){ + // 省略 + + //=============================================== + // コレクションを作成する + //=============================================== + ret = gsPutCollection(store, "SampleC_collection2", GS_GET_STRUCT_BINDING(Product), NULL, GS_FALSE, &collection); + if ( !GS_SUCCEEDED(ret) ){ + fprintf(stderr, "ERROR gsPutCollection\n"); + goto LABEL_ERROR; + } + + fprintf(stdout, "Create Collection name=SampleC_collection2\n"); +``` + +(1)コレクションをCの構造体で定義します。 + +(2)GS_STRUCT_BINDINGを用いて、構造体とコレクションのスキーマの対応関係を定義します。 + +| 分類 | マクロ | +|------------------------|-------------------------------| +| 構造体とスキーマの対応を取得 | GS_GET_STRUCT_BINDING(type) | +| 構造体とスキーマの対応を定義 | GS_STRUCT_BINDING(type, entries) | +| 構造体メンバとロウキーの対応を定義 | GS_STRUCT_BINDING_KEY(member, memberType) | +| 構造体メンバとカラム(基本型)の対応を定義 | GS_STRUCT_BINDING_ELEMENT(member, memberType) | +| 構造体メンバとカラム(配列型)の対応を定義 | GS_STRUCT_BINDING_ARRAY(member, sizeMember, elementType) | +| 構造体メンバとロウキーの対応を定義 (カラム名指定) | GS_STRUCT_BINDING_NAMED_KEY(name, member, memberType) | +| 構造体メンバとカラム(基本型)の対応を定義 (カラム名指定) | GS_STRUCT_BINDING_NAMED_ELEMENT(name, member, memberType) | +| 構造体メンバとカラム(配列型)の対応を定義 (カラム名指定) | GS_STRUCT_BINDING_NAMED_ARRAY(name, member, sizeMember, elementType) | + +- カラムの順番は、GS_STRUCT_BINDINGのentriesに指定した順番になります。 +- 配列型の場合、構造体は配列のサイズを格納する変数を持つ必要があります。 + +例) +```C +// 構造体を定義する +typedef struct { + int id; + const int8_t *lob; + size_t lobSize; // lobのサイズ +} Product; + +// 構造体とコンテナスキーマの対応関係を定義する +GS_STRUCT_BINDING(Product, + GS_STRUCT_BINDING_KEY(id, GS_TYPE_INTEGER) + GS_STRUCT_BINDING_ARRAY(lob, lobSize, GS_TYPE_BYTE) +); +``` + +[メモ] +- 既に存在するコンテナと同じ名前を指定した場合、指定したスキーマ定義と既存コンテナのスキーマ定義が +同じであればエラーにはなりません。コンテナの取得(GSGetContainerGeneralなど)を実行した時と同じ動作になります。 + + +### コンテナを取得する + +コンテナの名前を指定して、コンテナを取得します。 +データの登録やTQLなどのロウ操作を行うためには、まずコンテナを取得する必要があります。 + +コンテナ取得には以下のメソッドがあります。ロウ操作する際のロウのタイプの違い(GSRowとユーザ定義の構造体)によって2種類に分けられます。 + +**GSRow** + +- コンテナオブジェクトを取得します。取得したコンテナオブジェクトに対しては、GSRowを使ってロウ操作できます。 + + | 分類 | メソッド | + |-------|---------| + | コレクション取得 | gsGetCollectionGeneral(GSGridStore *store, const GSChar *name, GSCollection **collection) | + | 時系列コンテナ取得 | gsGetTimeSeriesGeneral(GSGridStore *store, const GSChar *name, GSTimeSeries **timeSeries) | + | コンテナ取得 | gsGetContainerGeneral(GSGridStore *store, const GSChar *name, GSContainer **container) | + + +**ユーザ定義の構造体** + +- コンテナオブジェクトを取得します。取得したコンテナオブジェクトに対しては、ユーザがスキーマとして定義した構造体を使ってロウ操作できます。 + + | 分類 | メソッド | + |-------|---------| + | コレクション取得 | gsGetCollection(GSGridStore *store, const GSChar *name, const GSBinding *binding, GSCollection **collection) | + | 時系列コンテナ取得 | gsGetTimeSeries(GSGridStore *store, const GSChar *name, const GSBinding *binding, GSTimeSeries **timeSeries) | + + +例) コンテナ取得(GSRowでロウ操作を行う) +```C +Row * row; + +// (1)コレクション取得 +gsGetCollectionGeneral(store, "collection1", &collection); + +// (2)空のロウオブジェクトの作成 +gsCreateRowByContainer(collection, &row); + +// (3)ロウキーを指定してロウ(GSRow)取得 +gsGetRowByInteger(container, 0, row, GS_FALSE, NULL); + +// (4)ロウから値を取得 +gsGetRowFieldAsInteger(row, 0, &id); +gsGetRowFieldAsString(row, 1, &productName); +``` + +例) コンテナ取得(ユーザ定義のクラスでロウ操作を行う) +```C +typedef struct { + int id; + const GSChar *productName; + uint64_t count; +} Product; +GS_STRUCT_BINDING(Product, + GS_STRUCT_BINDING_KEY(id, GS_TYPE_INTEGER) + GS_STRUCT_BINDING_ELEMENT(productName, GS_TYPE_STRING) + GS_STRUCT_BINDING_ELEMENT(count, GS_TYPE_INTEGER) +); + +void main(int argc, char *argv[]){ + Product product; + // 省略 + + // (1)コレクション取得 + gsGetCollection(store, "collection1", GS_GET_STRUCT_BINDING(Product), &collection); + + // (2)ロウキーを指定してロウ(Product)取得 + gsGetRowByInteger(collection, 0, &product, GS_FALSE, NULL); + + // (3)ロウから値を取得 + int id = product.id; + + // 省略 +``` + + + + +### データを登録する + +コンテナにロウを登録する場合は、以下のメソッドを使用します。 + +| 分類 | メソッド | +|-------|---------| +| ロウオブジェクトの作成(コンテナ指定) | gsCreateRowByContainer(GSContainer *container, GSRow **row) | +| ロウオブジェクトの作成(コンテナ情報指定) | gsCreateRowByStore(GSGridStore *store, const GSContainerInfo *info, GSRow **row) | +| ロウオブジェクトに値を格納 | gsSetRowFieldByXXXXX (※XXXXXはデータ型) | +| ロウ登録 | gsPutRow(GSContainer *container, const void *key, const void *rowObj, GSBool *exists) | + +コンテナに対してロウをひとつ登録するプログラムを以下に示します。 + + +```C +//=============================================== +// ロウを登録する +//=============================================== +// (1)コンテナを取得する +ret = gsGetContainerGeneral(store, "SampleC_PutRow", &container); +if ( !GS_SUCCEEDED(ret) ){ + fprintf(stderr, "ERROR gsGetContainerGeneral\n"); + goto LABEL_ERROR; +} +if ( container == NULL ){ + fprintf(stderr, "ERROR Container not found. name=SampleC_PutRow\n"); + goto LABEL_ERROR; +} + +// (2)空のロウオブジェクトの作成 +ret = gsCreateRowByContainer(container, &row); +if ( !GS_SUCCEEDED(ret) ){ + fprintf(stderr, "ERROR gsCreateRowByContainer\n"); + goto LABEL_ERROR; +} + +// (3)カラム値をセット +gsSetRowFieldByInteger(row, 0, 0); +gsSetRowFieldByString(row, 1, "display"); +gsSetRowFieldByInteger(row, 2, 150); + +// (4)ロウを登録する +ret = gsPutRow(container, NULL, row, NULL); +if ( !GS_SUCCEEDED(ret) ){ + fprintf(stderr, "ERROR gsPutRow\n"); + goto LABEL_ERROR; +} +``` + +ロウを登録する部分を説明します。 +(1)ロウを登録するコンテナを取得します。 +(2)コンテナオブジェクトから、空のロウオブジェクトを生成します。 +(3)空のロウオブジェクトに、登録するデータをセットします。 +(4)コンテナにロウを登録します。 + +GridDBのデータ型とCのデータ型の対応付けは[データ型の対応付け](#c_data_type)を参照ください。 + +[メモ] + +- コミットには、自動コミットモードと手動コミットモードの2つの動作モードがあります。 + - 自動コミットモードの場合、gsPutRowを実行すると自動的にロウがコミットされます。 + - 手動コミットモードの場合には、明示的にコミットの実行が必要です。コミットはコンテナ単位です。コンテナをまたがったトランザクション処理はできません。 + - デフォルトは自動コミットモードです。 + + | 分類 | メソッド | + |-------|---------| + | コミットモードの設定 | gsSetAutoCommit(GSContainer *container, GSBool enabled) | + | コミット | gsCommit(GSContainer *container) | + | アボート | gsAbort(GSContainer *container) | + + + - 例) 手動コミットモードの場合 + + ```C + // (ロウオブジェクトの作成は省略) + + // 手動コミットモードを指定 + gsSetAutoCommit(container, GS_FALSE); + + // ロウ登録 + gsPutRow(container, NULL, row, NULL); + + // コミット + gsCommit(container); + ``` + +- ロウオブジェクトにカラム値をセットしなかった場合、カラムの初期値が登録されます。 +初期値は、カラムのデータ型によって定義されています。 +詳細は『[GridDB C APIリファレンス](../md_reference_c_api/md_reference_c_api.html)』の「gsCreateRowByStore」をご参照ください。 + + + +**ひとつのコンテナに複数のロウを登録** + +複数のロウを一度に登録することもできます。以下のメソッドを使用します。 + +| 分類 | メソッド | +|-------|---------| +| ロウ登録 | gsPutMultipleRows(GSContainer *container, const void *const *rowObjs, size_t rowCount, GSBool *exists) | + +gsPutMultipleRowsを用いて、ひとつのコンテナに複数のロウを登録するプログラムを示します。 + + +```C +GSRow *row; +const void * const * rowObj; +GSRow * rowList[5]; +// 省略 + +//=============================================== +// ロウを登録する +//=============================================== +// (1)コンテナを取得する +ret = gsGetContainerGeneral(store, "SampleC_PutRows", &container); +if ( !GS_SUCCEEDED(ret) ){ + fprintf(stderr, "ERROR gsGetContainerGeneral\n"); + goto LABEL_ERROR; +} +if ( container == NULL ){ + fprintf(stderr, "ERROR Container not found. name=SampleC_PutRows\n"); + goto LABEL_ERROR; +} + +// (2)複数のロウオブジェクトを作成 +for ( i = 0; i < 5; i++ ){ + // 空のロウオブジェクトを生成 + gsCreateRowByContainer(container, &row); + + // ロウオブジェクトに値をセット + gsSetRowFieldByInteger(row, 0, i); + gsSetRowFieldByString(row, 1, "dvd"); + gsSetRowFieldByInteger(row, 2, 10*i); + + rowList[i] = row; +} + rowObj = (void *)rowList; + +// (3)複数のロウを登録する +ret = gsPutMultipleRows(container, rowObj, 5, NULL); +if ( !GS_SUCCEEDED(ret) ){ + fprintf(stderr, "ERROR gsPutMultipleRows\n"); + goto LABEL_ERROR; +} +``` + +複数のロウオブジェクトを作成してgsPutMultipleRowsを実行します。 + + +[メモ] +- ロウキーありのコンテナに対してputする場合、既に存在するロウキーと同じ値のロウを指定すると、既存のロウを更新します。 + +- 自動コミットモード(デフォルト)の場合、putを実行すると自動的にロウがコミットされます。 + + + + +### データを取得する + +コンテナからロウを取得します。 + +ロウキーが設定されているコンテナの場合、ロウキーの値を指定してロウを取得できます。 +ロウキーが設定されていない場合は、後述のTQLを利用してロウを取得します。 + +| 分類 | メソッド | +|-------|---------| +| ロウ取得 | gsGetRow(GSContainer *container, const void *key, void *rowObj, GSBool *exists) | +| ロウ取得 | gsGetRowByXXXXX (※XXXXXはロウキーのデータ型) | +| ロウオブジェクトからカラム値の取得 | gsGetRowFieldByXXXXX (※XXXXXはカラムのデータ型) | + +ロウキーありのコレクションから、ロウキーの値が"0"のロウを取得するプログラムを以下に示します。 + + +```C +//=============================================== +// ロウを取得する +//=============================================== +// (1)コンテナを取得する +ret = gsGetContainerGeneral(store, containerName, &container); +if ( !GS_SUCCEEDED(ret) ){ + fprintf(stderr, "ERROR gsGetContainerGeneral\n"); + goto LABEL_ERROR; +} +if ( container == NULL ){ + fprintf(stderr, "ERROR Container not found. name=%s\n", containerName); + goto LABEL_ERROR; +} + +// (2)空のロウオブジェクトの作成 +gsCreateRowByContainer(container, &row); + +// (3)ロウキーを指定してロウ取得 +ret = gsGetRowByInteger(container, 0, row, GS_FALSE, NULL); +if ( !GS_SUCCEEDED(ret) ){ + fprintf(stderr, "ERROR gsGetRowByInteger\n"); + goto LABEL_ERROR; +} + +// (4)ロウから値を取得 +gsGetRowFieldAsInteger(row, 0, &id); +gsGetRowFieldAsString(row, 1, &productName); +gsGetRowFieldAsInteger(row, 2, &count); + +printf("Get Row (id=%d, productName=%s, count=%d)\n", id, productName, count); +``` + +ロウを取得する処理の部分を説明します。 +(2)空のロウオブジェクトを作成します。 +(3)コンテナに対してロウキーを指定して、ロウを取得します。 +(4)取得したロウは、カラムのデータ型に合わせてgetメソッドで値を取り出します。 + + + +### TQLを実行する + +TQLを実行します。 + +TQLの実行では、SELECTの選択式の種類によって、実行結果のクラスや処理方法が異なります。 + +| SELECTの選択式の種類 | 内容 | 実行結果のクラス型 | +|---------------------|-----------------------|--------------------| +| ロウ(\*) | コンテナに格納されているロウを取得します
例) SELECT * FROM container1 | コンテナのロウオブジェクトの型
(Container\のRの型) | +| 集計演算(MAX, MIN, COUNTなど) | 集計演算の結果を取得します
例) SELECT COUNT(\*) FROM container1 | AggregationResult型 | + + +[メモ] +- TQLでコンテナやカラムを指定する場合、名前に記号を含む名前はダブルクォーテーションで囲む必要があります。 + + ``` + select * from "test.container"; + ``` + + + + +#### ロウを検索する + +ロウの値を検索するTQLを実行する場合は、以下のメソッドを使用します。 + +| 分類 | メソッド | +|-------|---------| +| クエリ生成 | gsQuery(GSContainer *container, const GSChar *queryString, GSQuery **query) | +| クエリ実行 | gsFetch(GSQuery *query, GSBool forUpdate, GSRowSet **rowSet) | +| 結果セットにロウが存在するか | gsHasNextRow (GSRowSet *rowSet) | +| 結果セットからロウオブジェクト取得 | gsGetNextRow(GSRowSet *rowSet, void *rowObj) | + +コレクションに対してカラムcountが50以上のロウを検索し、結果をidの昇順でソートして返すTQLのプログラムを示します。 + + +```C +//=============================================== +// TQLで検索する +//=============================================== +// (1)コンテナを取得する +ret = gsGetContainerGeneral(store, containerName, &container); +if ( !GS_SUCCEEDED(ret) ){ + fprintf(stderr, "ERROR gsGetContainerGeneral\n"); + goto LABEL_ERROR; +} +if ( container == NULL ){ + fprintf(stderr, "ERROR Container not found. name=%s\n", containerName); + goto LABEL_ERROR; +} + +// (2)TQLで検索実行 +const GSChar * queryStr = "SELECT * WHERE count >= 50 ORDER BY id"; +printf("TQL query : %s\n", queryStr); +ret = gsQuery(container, queryStr, &query); +if ( !GS_SUCCEEDED(ret) ){ + fprintf(stderr, "ERROR gsQuery\n"); + goto LABEL_ERROR; +} +ret = gsFetch(query, GS_FALSE, &rs); +if ( !GS_SUCCEEDED(ret) ){ + fprintf(stderr, "ERROR gsFetch\n"); + goto LABEL_ERROR; +} + +// (3)空のロウを作成 +gsCreateRowByContainer(container, &row); + +// (4)結果を取得する +while (gsHasNextRow(rs)) { + int id; + const GSChar *productName; + int count; + + + // (5)ロウを取得する + ret = gsGetNextRow(rs, row); + if ( !GS_SUCCEEDED(ret) ){ + fprintf(stderr, "ERROR gsGetNextRow\n"); + goto LABEL_ERROR; + } + + gsGetRowFieldAsInteger(row, 0, &id); + gsGetRowFieldAsString(row, 1, &productName); + gsGetRowFieldAsInteger(row, 2, &count); + + printf("TQL result: id=%d, productName=%s, count=%d\n", id, productName, count); +} +``` + +検索処理の部分を説明します。(2)実行するTQLでクエリオブジェクトを生成し、gsFetchで検索を実行します。 +(3)結果を取得するための空のロウオブジェクトを作成します。 +(4)検索結果を取得します。コンテナのカラムのデータ型に合わせて、getメソッドでロウの値を取得します。 + + + +#### 集計演算を行う + +集計演算のTQLを実行する場合は、以下のメソッドを使用します。 + +| 分類 | メソッド | +|-------|---------| +| クエリ生成 | gsQuery(GSContainer *container, const GSChar *queryString, GSQuery **query) | +| クエリ実行 | gsFetch(GSQuery *query, GSBool forUpdate, GSRowSet **rowSet) | +| 結果セットにロウが存在するか | gsHasNextRow (GSRowSet *rowSet) | +| 結果セットからGSAggregationResultを取得 | gsGetNextAggregation (GSRowSet *rowSet, GSAggregationResult **aggregationResult) | +| GSAggregationResultから値を取得 | gsGetAggregationValueAsXXXXX (※XXXXXはデータ型) | + +コレクションに対して、カラムcountの最大値を取得するプログラムを示します。 + + +```C +// (1)TQLで集計演算の実行 +ret = gsQuery(container, "SELECT MAX(count)", &query); +if ( !GS_SUCCEEDED(ret) ){ + fprintf(stderr, "ERROR gsQuery\n"); + goto LABEL_ERROR; +} +ret = gsFetch(query, GS_FALSE, &rs); +if ( !GS_SUCCEEDED(ret) ){ + fprintf(stderr, "ERROR gsFetch\n"); + goto LABEL_ERROR; +} + +// (2)結果を取得する +while (gsHasNextRow(rs)) { + int64_t max; + + // (3)集計演算の結果を取得する + ret = gsGetNextAggregation(rs, &aggregationResult); + if ( !GS_SUCCEEDED(ret) ){ + fprintf(stderr, "ERROR gsGetNextRow\n"); + goto LABEL_ERROR; + } + + // (4)値を取得する + gsGetAggregationValueAsLong(aggregationResult, &max, NULL); + + printf("TQL result: max=%d\n", max); +} +``` +(3)GSRowSetから値を取り出す時に、集計演算用のgsGetNextAggregationを使用します。 +(4)実行した集計演算の種類によってGSAggregationResultオブジェクトの値のデータ型は異なります。データ型に合わせて値を取得します。 + + +TQLの集計演算の一覧は、[集計演算を行う](#c_tql_aggregation)を参照ください。 + +[メモ] + +- 集計演算は、ひとつのクエリでひとつしか指定できません。 + - 例) 次のTQLはエラーになります。 SELECT MAX(value), MIN(value) + + + +### 複数のコンテナに対して一括で操作を行う + +データの登録や検索の処理では、複数のコンテナに対して一度に操作を行うことができます。複数コンテナ用のメソッドは以下の通りです。 + +| 分類 | メソッド | +|-------|---------| +| 複数コンテナのロウ登録 | gsPutMultipleContainerRows(GSGridStore *store, const GSContainerRowEntry *entryList, size_t entryCount) | +| 複数コンテナのロウ取得 | gsGetMultipleContainerRows(GSGridStore *store, const GSRowKeyPredicateEntry *const *predicateList, size_t predicateCount, const GSContainerRowEntry **entryList, size_t *entryCount) | +| 複数コンテナのTQL実行 | gsFetchAll(GSGridStore *store, GSQuery *const *queryList, size_t queryCount) | + + + +ひとつのコンテナに対する操作と複数のコンテナに対する操作では、メソッドや取得条件などが異なりますので、 +用途に合わせて適切な方法をご利用ください。相違点を以下の表に示します。 + +それぞれの方法の説明は、「本書での参照先」の部分をご参照ください。 + +| 分類 | 処理対象のコンテナ | メソッド | 取得条件の指定 | 本書での参照先 | +|------|--------------|----------|---------------|----------------------| +| ロウ登録 | ひとつ | gsPutRow
gsPutMultipleRows | ー | [データを登録する](#c_put_row) | +| | 複数 | gsPutMultipleContainerRows | ー | [複数コンテナのロウ登録](#c_put_rows) | +| ロウ取得
(ロウキー指定) | ひとつ | gsGetRow | ロウキー指定 | [データを取得する](#c_get_row) | +| | 複数 | gsGetMultipleContainerRows | GSRowKeyPredicateEntryクラスによるロウキー指定、または、ロウキー範囲指定 | [複数コンテナのロウ取得](#c_multiget) | +| ロウ取得
(TQL実行) | ひとつ | gsQuery
gsFetch | TQLのクエリ | [TQLを実行する](#c_tql_select) | +| | 複数 | gsFetchAll | TQLのクエリ | [複数コンテナのTQL実行](#c_fetchall) | + + + +#### 複数コンテナのロウ登録 + +複数のコンテナに対して、複数のロウを登録します。 +コンテナ名と登録するロウのリストの組合せを作り、multiPutでロウを登録できます。 + +| 分類 | メソッド | +|-------|---------| +| 複数コンテナのロウ登録 | gsPutMultipleContainerRows(GSGridStore *store, const GSContainerRowEntry *entryList, size_t entryCount) | + +2つのコレクションにそれぞれロウを2個ずつ登録するプログラムを以下に示します。 + + +```C +// コンテナ名 +const GSChar *const containerNameList[2] = { "SampleC_MultiPut1", "SampleC_MultiPut2" }; +const size_t containerCount = 2; + +// 登録するロウデータ(各コンテナに5つのロウ) +const size_t rowCount = 5; +const GSChar * nameList[5] = { "notebook PC", "desktop PC", "keyboard", "mouse", "printer" }; +const int numberList[2][5] = { { 108, 72, 25, 45, 62 }, { 50, 11, 208, 23, 153 } }; + +// 省略 + +//=============================================== +// 複数コンテナにロウを一括登録する +//=============================================== +for ( i = 0; i < containerCount; i++ ){ + // (1)コンテナ取得 + ret = gsGetContainerGeneral(store, containerNameList[i], &container); + if ( !GS_SUCCEEDED(ret) ){ + fprintf(stderr, "ERROR gsGetContainerGeneral\n"); + return; + } + if ( container == NULL ){ + fprintf(stderr, "ERROR Container not found. name=%s\n", containerNameList[i]); + goto LABEL_ERROR; + } + + // (2)複数のロウを生成 + for ( j = 0; j < rowCount; j++ ){ + // 空のロウオブジェクト生成 + gsCreateRowByContainer(container, &row); + + // ロウオブジェクトに値をセット + gsSetRowFieldByInteger(row, 0, j); + gsSetRowFieldByString(row, 1, nameList[j]); + gsSetRowFieldByInteger(row, 2, numberList[i][j]); + allRowList[i][j] = row; + } + + // (3)GSContainerRowEntryにコンテナ情報とロウをセット + inEntry.containerName = containerNameList[i]; + inEntry.rowList = allRowList[i]; + inEntry.rowCount = rowCount; + inEntryList[i] = inEntry; +} + +// (4)複数コンテナにロウを一括登録 +ret = gsPutMultipleContainerRows(store, inEntryList, containerCount); +if ( !GS_SUCCEEDED(ret) ){ + fprintf(stderr, "ERROR gsPutMultipleContainerRows\n"); + return; +} +``` + +ひとつのコンテナにロウを登録する時と同様に、コンテナオブジェクトから空のロウを作成して登録するロウを作ります。 +GSContainerRowEntryにコンテナ情報とロウをセットし、まとめてgsPutMultipleContainerRowsで登録を行います。 + +[メモ] + +- 指定するコンテナは、既に存在している必要があります。 +- ひとつのコンテナへのロウ登録と同様に、コンテナ単位でコミットされます。指定した複数のコンテナがまとめてコミットされるわけではありません。 + + + + +#### 複数コンテナのロウ取得 + +複数のコンテナから、指定した条件に当てはまるロウを取得します。 + +| 分類 | メソッド | +|-------|---------| +| 複数コンテナのロウ取得 | gsGetMultipleContainerRows(GSGridStore *store, const GSRowKeyPredicateEntry *const *predicateList, size_t predicateCount, const GSContainerRowEntry **entryList, size_t *entryCount) | + +ロウキーの条件はコンテナごとに指定できます。条件には、特定の値を指定する個別条件と、値の範囲を指定する範囲条件の2種類があります。条件はGSRowKeyPredicateで指定します。 + +| 分類 | メソッド | +|-----|------| +| 条件の生成 | gsCreateRowKeyPredicate(GSGridStore *store, GSType keyType, GSRowKeyPredicate **predicate) | +| ロウキーの個別条件を設定 | gsAddPredicateKeyXXXXX (※ XXXXXはデータ型) | +| ロウキーの範囲条件を設定 | gsSetPredicateStartKeyXXXXX
gsSetPredicateFinishKeyXXXXX
(※ XXXXXはデータ型) | + +[メモ] + +- 個別条件と範囲条件の2つの条件を混在して使用することはできません。 +- 条件をどちらも指定しなかった場合は、すべてのロウが取得されます。 +- GSRowKeyPredicateは、複数コンテナのロウ取得gsGetMultipleContainerRowsメソッドでのみ使用できます。他のロウ取得getメソッドでは使用できません。 + + + +個別条件指定で、コレクションからロウを一括で取得するプログラムを以下に示します。 + + +```C +// コンテナ名 +const GSChar *const containerNameList[2] = { "SampleC_MultiGet1", "SampleC_MultiGet2" }; +const size_t containerCount = 2; + +// 入力用の変数 +GSRowKeyPredicate *predicate; +GSRowKeyPredicateEntry predEntryValueList[2]; +const GSRowKeyPredicateEntry *predEntryList[2]; + +// 出力用の変数 +const GSContainerRowEntry *outEntryList; +size_t outEntryCount; +GSContainerRowEntry outEntry = GS_CONTAINER_ROW_ENTRY_INITIALIZER; +int id; +GSChar const *productName; +int count; + +// 省略 + +//=============================================== +// 複数のコンテナから一括でロウを取得する +//=============================================== +// (1)ロウ取得条件を構築する +for (i = 0; i < containerCount; i++) { + + // GSRowKeyPredicateを生成 + gsCreateRowKeyPredicate(store, GS_TYPE_INTEGER, &predicate); + + // 個別条件を設定 (ロウキーの値が0または2) + gsAddPredicateKeyByInteger(predicate, 0); + gsAddPredicateKeyByInteger(predicate, 2); + + // GSRowKeyPredicateEntryに条件を格納する + predEntryValueList[i].containerName = containerNameList[i]; + predEntryValueList[i].predicate = predicate; + + predEntryList[i] = &predEntryValueList[i]; +} + +// (2)複数コンテナからロウを一括取得する +ret = gsGetMultipleContainerRows(store, predEntryList, containerCount, &outEntryList, &outEntryCount); +if ( !GS_SUCCEEDED(ret) ){ + fprintf(stderr, "ERROR gsGetMultipleContainerRows\n"); + goto LABEL_ERROR; +} + +// (3)取得結果を出力する +for (i = 0; i < outEntryCount; i++) { + outEntry = outEntryList[i]; + + for (j = 0; j < outEntry.rowCount; j++) { + row = (GSRow *)outEntry.rowList[j]; + + gsGetRowFieldAsInteger(row, 0, &id); + gsGetRowFieldAsString(row, 1, &productName); + gsGetRowFieldAsInteger(row, 2, &count); + + printf("MultiGet: container=%s, id=%d, productName=%s, count=%d\n", outEntry.containerName, id, productName, count); + } +} +``` +(1)GSRowKeyPredicateを使って取得するロウの条件を生成し、コンテナ名とGSRowKeyPredicateの組合せをGSRowKeyPredicateEntryに格納します。 +(2)gsGetMultipleContainerRowsを用いて検索を実行します。 +(3)コンテナ名とロウのリストの組合せで結果が返ります。 + + + +#### 複数コンテナのTQL実行 + +複数のコンテナに対して、TQLを実行します。TQLはコンテナごとに指定できます。 + +| 分類 | メソッド | +|-------|---------| +| 複数コンテナのTQL実行 | gsFetchAll(GSGridStore *store, GSQuery *const *queryList, size_t queryCount) | + +2つのコレクションに対応するそれぞれのTQLをまとめて実行し、ロウを取得するプログラムを以下に示します。 + + + +```C +// コンテナ名 +const GSChar *const containerNameList[2] = { "SampleC_FetchAll1", "SampleC_FetchAll2" }; +const size_t containerCount = 2; + +// 各コンテナに対するTQL +const GSChar *const tqlList[2] = { "select * where count > 60", + "select * where count > 100" }; + +GSContainer * containerList[2]; +GSQuery *queryList[2]; +GSRowSet *rs; +int id; +GSChar const *productName; +int count; + +// 省略 + +//=============================================== +// 複数のコンテナにTQLを実行する +//=============================================== +// (1)各コンテナのTQLクエリを生成する +for ( i = 0; i < containerCount; i++ ){ + ret = gsGetContainerGeneral(store, containerNameList[i], &containerList[i]); + if ( !GS_SUCCEEDED(ret) ){ + fprintf(stderr, "ERROR gsGetContainerGeneral\n"); + goto LABEL_ERROR; + } + if ( containerList[i] == NULL ){ + fprintf(stderr, "ERROR Container not found. name=%s\n", containerNameList[i]); + goto LABEL_ERROR; + } + + printf("FetchAll query : container=%s, tql=%s\n", containerNameList[i], tqlList[i]); + ret = gsQuery(containerList[i], tqlList[i], &queryList[i]); + if ( !GS_SUCCEEDED(ret) ){ + fprintf(stderr, "ERROR gsQuery\n"); + goto LABEL_ERROR; + } +} + + +// (2)複数コンテナにTQLを一括実行する +ret = gsFetchAll(store, queryList, containerCount); +if ( !GS_SUCCEEDED(ret) ){ + fprintf(stderr, "ERROR gsFetchAll\n"); + goto LABEL_ERROR; +} + +// (3)結果を取得する +for (i = 0; i < containerCount; i++) { + + // 空のロウオブジェクトを生成 + gsCreateRowByContainer(containerList[i], &row); + + // RowSetを取得 + ret = gsGetRowSet(queryList[i], &rs); + if ( !GS_SUCCEEDED(ret) ){ + fprintf(stderr, "ERROR gsGetRowSet\n"); + goto LABEL_ERROR; + } + + // ロウを取得 + while (gsHasNextRow(rs)) { + ret = gsGetNextRow(rs, row); + if ( !GS_SUCCEEDED(ret) ){ + fprintf(stderr, "ERROR gsGetNextRow\n"); + goto LABEL_ERROR; + } + + // 値を取得 + gsGetRowFieldAsInteger(row, 0, &id); + gsGetRowFieldAsString(row, 1, &productName); + gsGetRowFieldAsInteger(row, 2, &count); + + printf("FetchAll result: container=%s, row=(%d, \"%s\", %d)\n", containerNameList[i], id, productName, count); + } + + gsCloseRow(&row); + gsCloseRowSet(&rs); + gsCloseQuery(&queryList[i]); +} +``` + +(1)コンテナオブジェクトからTQLのクエリを生成して、リストに格納します。 +(2)TQL一括実行gsFetchAllを実行します。 +(3)検索結果は、(2)で指定したクエリのリストに格納されます。 + + + +### バイナリデータを扱う + +バイナリデータを登録、取得します。バイナリのデータ型はBlob型です。他のデータ型と同様に操作することができます。 + +**バイナリデータの登録** + +バイナリデータをファイルから読み込み、ロウを登録するプログラムを以下に示します。 + + +```c +// (1)バイナリファイルを読み込む +file = fopen("BlobData.c", "rb"); +// (省略) + +// (2)空のロウオブジェクトの作成 +ret = gsCreateRowByContainer(collection, &row); +if ( !GS_SUCCEEDED(ret) ){ + fprintf(stderr, "ERROR gsCreateRowByContainer\n"); + goto LABEL_ERROR; +} + +// (3)カラム値をセット +gsSetRowFieldByInteger(row, 0, 0); + +blob.size = size; // バイナリサイズ +blob.data = data; // バイナリデータ +ret = gsSetRowFieldByBlob(row, 1, &blob); +if ( !GS_SUCCEEDED(ret) ){ + fprintf(stderr, "ERROR gsSetRowFieldByBlob\n"); + goto LABEL_ERROR; +} + +// (4)ロウを登録する +ret = gsPutRow(collection, NULL, row, NULL); +if ( !GS_SUCCEEDED(ret) ){ + fprintf(stderr, "ERROR gsPutRow\n"); + goto LABEL_ERROR; +} +``` + +(1)バイナリデータをファイルから読み込みます。(2)(3)ロウオブジェクトにバイナリデータをセットして、(4)ロウを登録します。 + + + +**バイナリデータの取得** + +getBlobでバイナリデータを取得します。 + + +```c +// (1)空のロウオブジェクトの作成 +gsCreateRowByContainer(collection, &row); + +// (2)ロウキーを指定してロウ取得 +ret = gsGetRowByInteger(collection, 0, row, GS_FALSE, NULL); +if ( !GS_SUCCEEDED(ret) ){ + fprintf(stderr, "ERROR gsGetRowByInteger\n"); + goto LABEL_ERROR; +} + +// (3)ロウからバイナリ型データを取得 +GSBlob blob; +gsGetRowFieldAsBlob(row, 1, &blob); +``` + + +### データを更新する + +ロウを更新します。ロウの更新には、ロウキーを指定して更新する方法と、TQLの実行結果から更新する方法の2種類があります。 + +| 分類 | メソッド | +|-------|---------| +| ロウキーを指定してロウ更新 | gsPutRow(GSContainer *container, const void *key, const void *rowObj, GSBool *exists)
gsPutMultipleRows(GSContainer *container, const void *const *rowObjs, size_t rowCount, GSBool *exists) | +| TQLの実行結果からロウ更新 | gsUpdateCurrentRow (GSRowSet *rowSet, const void *rowObj) | + +ロウキーを指定してロウ更新する方法では、putで指定したロウのロウキーと合致するデータが既に存在していたら、そのデータを更新します。 +ロウキーのデータが存在しなかった場合、または、ロウキーが設定されていないコレクションの場合は、putは常にロウの新規登録になります。 + + +TQLの実行結果からロウを更新するプログラムを示します。 + + +```C +//=============================================== +// ロウを更新する +//=============================================== +// (1)コンテナを取得する +ret = gsGetContainerGeneral(store, containerName, &container); +if ( !GS_SUCCEEDED(ret) ){ + fprintf(stderr, "ERROR gsGetContainerGeneral\n"); + goto LABEL_ERROR; +} +if ( container == NULL ){ + fprintf(stderr, "ERROR Container not found. name=%s\n", containerName); + goto LABEL_ERROR; +} + +// (2)手動コミットモードに設定する +gsSetAutoCommit(container, GS_FALSE); + +// (3)TQLで検索実行 +ret = gsQuery(container, "SELECT * WHERE id = 4", &query); +if ( !GS_SUCCEEDED(ret) ){ + fprintf(stderr, "ERROR gsQuery\n"); + goto LABEL_ERROR; +} +ret = gsFetch(query, GS_TRUE, &rs); // 更新するのでforUpdateにはtrueを指定する +if ( !GS_SUCCEEDED(ret) ){ + fprintf(stderr, "ERROR gsFetch\n"); + goto LABEL_ERROR; +} + +// (4)結果を取得する +while (gsHasNextRow(rs)) { + int id; + const GSChar *productName; + int count; + + // 空のロウオブジェクトを生成 + gsCreateRowByContainer(container, &row); + + // ロウを取得する + ret = gsGetNextRow(rs, row); + if ( !GS_SUCCEEDED(ret) ){ + fprintf(stderr, "ERROR gsGetNextRow\n"); + goto LABEL_ERROR; + } + + // 値を変更する + gsSetRowFieldByInteger(row, 2, 325); + + // ロウを更新する + ret = gsUpdateCurrentRow(rs, row); + if ( !GS_SUCCEEDED(ret) ){ + fprintf(stderr, "ERROR gsUpdateCurrentRow\n"); + goto LABEL_ERROR; + } +} + +// (5)コミットする +ret = gsCommit(container); +if ( !GS_SUCCEEDED(ret) ){ + fprintf(stderr, "ERROR gsCommit\n"); + goto LABEL_ERROR; +} + +printf("Update row id=4\n"); +``` + +[メモ] + +- TQLの検索結果RowSetからロウの更新を行う場合は、手動コミットモードに設定して、gsFetchメソッドの引数にtrueを指定してロックする必要があります。 + + + +### データを削除する + +ロウを削除します。ロウの削除には、ロウキーを指定して削除する方法と、TQLの検索結果から削除する方法の2種類があります。 + +| 分類 | メソッド | +|-------|---------| +| ロウキーを指定してロウ削除 | gsDeleteRow(GSContainer *container, const void *key, GSBool *exists)
gsDeleteRowByXXXXX (※XXXXXはロウキーのデータ型) | +| TQLの検索結果からロウ削除 | gsDeleteCurrentRow(GSRowSet *rowSet) | + + +ロウキーを指定してロウを削除する方法を用いて、ロウキーの値"3"のロウを削除するプログラムを示します。 + + +```C +// (1) ロウキーを指定してロウを削除する +gsDeleteRowByInteger(container, 3, NULL); +``` + + +TQLの検索結果からロウを削除する方法を用いて、カラムcountの値が50未満のロウを削除するプログラムを示します。 + + +```C +// コンテナを取得する +ret = gsGetContainerGeneral(store, containerName, &container); +if ( !GS_SUCCEEDED(ret) ){ + fprintf(stderr, "ERROR gsGetContainerGeneral\n"); + goto LABEL_ERROR; +} +if ( container == NULL ){ + fprintf(stderr, "ERROR Container not found. name=%s\n", containerName); + goto LABEL_ERROR; +} + +// (1)手動コミットモードに設定する +gsSetAutoCommit(container, GS_FALSE); + +// (2)TQLで検索実行 +printf("Delete query : %s\n", "SELECT * WHERE count < 50"); +ret = gsQuery(container, "SELECT * WHERE count < 50", &query); +if ( !GS_SUCCEEDED(ret) ){ + fprintf(stderr, "ERROR gsQuery\n"); + goto LABEL_ERROR; +} +ret = gsFetch(query, GS_TRUE, &rs); // 更新するのでforUpdateにはtrueを指定する +if ( !GS_SUCCEEDED(ret) ){ + fprintf(stderr, "ERROR gsFetch\n"); + goto LABEL_ERROR; +} + +// (3)検索でヒットしたロウを削除する +while (gsHasNextRow(rs)) { + // 空のロウオブジェクトを生成 + gsCreateRowByContainer(container, &row); + + // カーソルを移動する + ret = gsGetNextRow(rs, row); + if ( !GS_SUCCEEDED(ret) ){ + fprintf(stderr, "ERROR gsGetNextRow\n"); + goto LABEL_ERROR; + } + + // ロウを削除する + ret = gsDeleteCurrentRow(rs); + if ( !GS_SUCCEEDED(ret) ){ + fprintf(stderr, "ERROR gsDeleteCurrentRow\n"); + goto LABEL_ERROR; + } +} + +// (4)コミットする +ret = gsCommit(container); +if ( !GS_SUCCEEDED(ret) ){ + fprintf(stderr, "ERROR gsCommit\n"); + goto LABEL_ERROR; +} + +printf("Delete Row\n"); +``` + +[メモ] + +- TQLの検索結果GSRowSetからロウの削除を行う場合は、手動コミットモードに設定して、gsFetchメソッドの引数にtrueを指定してロックする必要があります。 + + +### コンテナを削除する + +コンテナ名を指定してコンテナを削除します。以下のメソッドで削除できます。 + +| 分類 | メソッド | +|-------|---------| +| コレクション削除 | gsDropCollection(GSGridStore *store, const GSChar *name) | +| 時系列コンテナ削除 | gsDropTimeSeries(GSGridStore *store, const GSChar *name) | +| コンテナ削除 | gsDropContainer(GSGridStore *store, const GSChar *name) | + +[メモ] + +- コレクション削除gsDropCollectionと時系列コンテナ削除gsDropTimeSeriesの場合は、 + 引数で指定したコンテナの種別とメソッドの種別が異なっているとエラーになります。 + - 例) コレクション"collection1"を、gsDropTimeSeriesで削除しようとするとエラーになる +- コンテナ削除gsDropContainerは、コレクションと時系列コンテナのどちらの種別でも削除できます。 + + +コレクション"collection1"を削除するプログラムを以下に示します。 + +```C +// コレクション"collection1"を削除する +gsDropCollection(store, "collection1"); +``` + + + +### 索引を作成する + +コンテナのカラムに索引を作成します。 + + +索引種別には、ツリー索引、空間索引の2種類があります。 +コンテナ種別やカラムのデータ型によって、指定できる索引種別が異なります。 +索引種別の詳細についてはJava APIの[索引を作成する](#java_create_index)を参照ください。 + + +索引作成は、索引種別やカラムを指定する方法の違いで以下の2種類のメソッドがあります。 + +| 分類 | メソッド | +|---------|----------| +| 索引作成(カラム名、番号、索引種別、索引名を指定) | gsCreateIndexDetail(GSContainer *container, const GSIndexInfo *info) | +| 索引作成(カラム名と索引種別を指定) | gsCreateIndex(GSContainer *container, const GSChar *columnName, GSIndexTypeFlags flags) | + + +[メモ] + +- 索引名の指定は任意です。指定しても指定しなくてもどちらでも作成できます。 + + +索引作成gsCreateIndexDetailを使用して、コレクションのカラムcountにツリー索引を作成するプログラムを以下に示します。 + + +```C +// (コンテナオブジェクトの取得は省略) + +// (1)索引情報を設定する +GSIndexInfo info; +info.name = "tree_index"; +info.type = GS_INDEX_FLAG_TREE; +info.columnName = "count"; +info.column = 2; + +// (2)索引を作成する +ret = gsCreateIndexDetail(container, &info); +if ( !GS_SUCCEEDED(ret) ){ + fprintf(stderr, "ERROR gsCreateIndexDetail\n"); + goto LABEL_ERROR; +} + +// (3)複合索引の索引情報を設定する +compositeInfo.name = "composite_index"; +compositeInfo.type = GS_INDEX_FLAG_TREE; +compositeInfo.columnNameList = indexColumnNameList; +compositeInfo.columnNameCount = indexColumnNameCount; + +// (4)複合索引を作成する +ret = gsCreateIndexDetail(container, &compositeInfo); +if (!GS_SUCCEEDED(ret)) { + fprintf(stderr, "ERROR gsCreateIndexDetail\n"); + goto LABEL_ERROR; +} +``` + +(1)索引情報GSIndexInfoには、索引種別、索引名、作成対象のカラムを指定します。 +(2)GSIndexInfoを引数として、gsCreateIndexDetailを実行します。 +(3)複合索引の場合、索引情報GSIndexInfoに指定する作成対象のカラム(カラム番号またはカラム名)は配列形式で指定します。 +(4)GSIndexInfoを引数として、gsCreateIndexDetailを実行します。 + +### その他 + + +#### データ型の対応付け + +C APIにおいて、GridDBのデータ型とCのデータ型の対応付けは以下の通りです。ロウからの値取得や設定の際には、以下のデータ型を指定してください。 + +| GridDBのデータ型 | Cのデータ型| 補足 | +|-------------------|-------------|-----| +| BOOL型 | GSBool | 値はGS_TRUEまたはGS_FALSE | +| STRING型 | GSChar | GSCharはchar型 | +| BYTE型 | int8_t | ー | +| SHORT型 | int16_t | ー | +| INTEGER型 | int32_t | ー | +| LONG型 | int64_t | ー | +| FLOAT型 | float | ー | +| DOUBLE型 | double | ー | +| TIMESTAMP型 | GSTimestamp | GSTimestampはint64_t型。値はミリ秒単位のUNIX時刻を表す。 | +| GEOMETRY型 | GSChar | 値はWKT表記の文字列を表す | +| BLOB型 | GSBlob | GSBlobは、データサイズsizeとデータへのポインタdataをメンバに持つ構造体 | + + +#### エラー処理 + +C APIの多くのメソッドは、戻り値としてメソッドの成否を表す実行結果コードGSResultを返します。 +メソッドの成否は、マクロGS_SUCCEEDEDを用いて以下のようにチェックすることができます。 + +```c +GSResult ret = gsGetContainerGeneral(store, "containerName", &container); +if ( !GS_SUCCEEDED(ret) ){ + // gsGetContainerGeneralでエラーが発生 +} +``` + + +エラーが発生した場合には以下のメソッドを用いてエラー情報を取得することができます。 + +| 分類 | メソッド | +|---------|----------| +| エラー情報のスタックサイズの取得 | gsGetErrorStackSize(void *gsResource) | +| エラーコードの取得 | gsGetErrorCode(void *gsResource, size_t stackIndex) | +| エラーメッセージの取得 | gsFormatErrorMessage(void *gsResource, size_t stackIndex, GSChar *strBuf, size_t bufSize) | +| 内部のエラー発生位置情報の取得 | gsFormatErrorLocation(void *gsResource, size_t stackIndex, GSChar *strBuf, size_t bufSize) | +| タイムアウトのエラーコードの判定 | gsIsTimeoutError(GSResult result) | + + + +エラーが発生した時に、エラーコードやエラーメッセージを表示するプログラムの例を以下に示します。 + +```c +size_t stackSize; +size_t s; +GSResult errorCode; +GSChar errMsgBuf1[1024], errMsgBuf2[1024]; // エラーメッセージを格納するバッファ + +// エラーコードとエラーメッセージを出力する +stackSize = gsGetErrorStackSize(store); +for ( s = 0; s < stackSize; s++ ){ + errorCode = gsGetErrorCode(store, s); + gsFormatErrorMessage(store, s, errMsgBuf1, sizeof(errMsgBuf1)); + gsFormatErrorLocation(store, s, errMsgBuf2, sizeof(errMsgBuf2)); + printf("[%d] %s (%s)\n", errorCode, errMsgBuf1, errMsgBuf2); +} +``` + +引数gsResourceには、エラーが発生した時の操作対象のオブジェクト、または、そのオブジェクトを生成した上位のオブジェクトを指定します。 + +例えば、コンテナへのロウ登録処理でエラーが発生した場合には、コンテナオブジェクト、または、コンテナオブジェクトを取得する際に使用したGSGridStoreのどちらでも、エラー情報は取得できます。 + +プログラムのエラー処理の方法に合わせて、メソッド単位でエラー処理をする場合には処理対象のオブジェクトを指定、複数の処理をまとめて大きな単位でエラー処理をする場合にはGSGridStoreオブジェクトを指定することもできます。 + +例) メソッド単位でエラー処理をする場合 +```c +// ロウを登録する +ret = gsPutRow(container, NULL, row, NULL); +if ( !GS_SUCCEEDED(ret) ){ + fprintf(stderr, "ERROR gsPutRow\n"); + // エラーコードとエラーメッセージを出力する(containerオブジェクトを指定) + stackSize = gsGetErrorStackSize(container); + for ( s = 0; s < stackSize; s++ ){ + errorCode = gsGetErrorCode(container, s); + gsFormatErrorMessage(container, s, errMsgBuf1, sizeof(errMsgBuf1)); + gsFormatErrorLocation(container, s, errMsgBuf2, sizeof(errMsgBuf2)); + printf("[%d] %s (%s)\n", errorCode, errMsgBuf1, errMsgBuf2); + } + return; +} +``` + + + +#### TIMESTAMP型のユーティリティ機能 + +TIMESTAMP型のデータは、C APIではGSTimestamp型として扱います。 +GSTimestamp型に対するユーティリティ機能として以下のメソッドがあります。 + +| 分類 | メソッド | +|-------------------------------|-----------------| +| 現在時刻の取得 | gsCurrentTime() | +| 時刻の加算 | gsAddTime(GSTimestamp timestamp, int32_t amount, GSTimeUnit timeUnit) | +| GSTimestamp型を文字列表記に変換 | gsFormatTime(GSTimestamp timestamp, GSChar *strBuf, size_t bufSize) | +| 文字列表記をGSTimestamp型に変換 | gsParseTime(const GSChar *str, GSTimestamp *timestamp) | + + +ロウから取得したGSTimestamp型の値を文字列表記に変換する例を示します。 + +``` +GSTimestamp date; +GSChar buf[GS_TIME_STRING_SIZE_MAX]; + +// ロウからGSTimestampの値を取得する +gsGetRowFieldAsTimestamp(row, 0, &date); + +// GSTimestampを文字列に変換する +gsFormatTime(date, buf, GS_TIME_STRING_SIZE_MAX); +``` + + + +## プログラミングの応用 + + + +### 時系列データを扱う + +時系列コンテナに対して、時系列データ特有の演算を実行することができます。 +この節では、これらの時系列データ特有の演算について説明します。 + +演算は、TQLまたはメソッドで実行することができます。 + +| 種類 | 名称 | TQL演算 | メソッド | +|---------|---------------|----------------|------------------| +| 集計演算 | 重み付き平均値 | TIME_AVG | gsAggregateTimeSeries
(GS_AGGREGATION_WEIGHTED_AVERAGEを指定) | +| 選択演算 | 直後の時刻 | TIME_NEXT | gsGetRowByBaseTime
(GS_TIME_OPERATOR_NEXTを指定) | +| | 直後の時刻 | TIME_NEXT_ONLY | gsGetRowByBaseTime
(GS_TIME_OPERATOR_NEXT_ONLYを指定) | +| | 直前の時刻 | TIME_PREV | gsGetRowByBaseTime
(GS_TIME_OPERATOR_PREVIOUSを指定) | +| | 直前の時刻 | TIME_PREV_ONLY | gsGetRowByBaseTime
(GS_TIME_OPERATOR_PREVIOUS_ONLYを指定) | +| 補間演算 | 線形補間 | TIME_INTERPOLATED | gsInterpolateTimeSeriesRow | +| | サンプリング | TIME_SAMPLING | gsQueryByTimeSeriesSampling | + + +- 単純な検索/集約演算をする場合であれば、メソッドを用いた方が少し性能が良くなる場合があります。大量のヒット件数の場合や、検索後の集約などの複雑な操作が必要であれば、TQL演算を用いて実行してください。 + +以下では、TQL演算を用いたプログラミングの例で説明します。 + +#### 集計演算 + +##### TIME_AVG 時刻の重み付き平均値 + +演算の詳細については、Java APIの[TIME_AVG 時刻の重み付き平均値](#java_timeseries_time_avg)を参照ください。 + +- 例) TQLの集計演算TIME_AVGを使用する例 + + + ```C + // (1)TQLで集計演算の実行 + printf("TQL query : %s\n", "SELECT TIME_AVG(value1)"); + ret = gsQuery(container, "SELECT TIME_AVG(value1)", &query); + if ( !GS_SUCCEEDED(ret) ){ + fprintf(stderr, "ERROR gsQuery\n"); + goto LABEL_ERROR; + } + ret = gsFetch(query, GS_FALSE, &rs); + if ( !GS_SUCCEEDED(ret) ){ + fprintf(stderr, "ERROR gsFetch\n"); + goto LABEL_ERROR; + } + + // (2)結果を取得する + while (gsHasNextRow(rs)) { + double value; + + // (3)集計演算の結果を取得する + ret = gsGetNextAggregation(rs, &aggregationResult); + if ( !GS_SUCCEEDED(ret) ){ + fprintf(stderr, "ERROR gsGetNextRow\n"); + goto LABEL_ERROR; + } + + gsGetAggregationValueAsDouble(aggregationResult, &value, NULL); + + printf("TQL result: %lf\n", value); + } + ``` + +[メモ] + +- コレクションに対して、TQLでTIME_AVG演算を実行するとエラーになります。 +- メソッドgsAggregateTimeSeries(GSTimeSeries *timeSeries, GSTimestamp start, GSTimestamp end, const GSChar *column, GSAggregation aggregation, GSAggregationResult **aggregationResult)を用いて、TQLのTIME_AVG演算と同等の処理を行うこともできます。 + + +#### 選択演算 + +指定された時刻と直前/直後の選択条件に基づいて、時系列コンテナのロウキーの時刻が合致するロウを返します。 + +演算の詳細については、Java APIの[選択演算](#java_timeseries_next_prev)を参照ください。 + +- 例) TQLの選択演算の使用例 + + + ```C + ret = gsQuery(container, "SELECT TIME_NEXT(*, TIMESTAMP('2018-12-01T10:10:00.000Z'))", &query); + if ( !GS_SUCCEEDED(ret) ){ + fprintf(stderr, "ERROR gsQuery\n"); + goto LABEL_ERROR; + } + ret = gsFetch(query, GS_FALSE, &rs); + if ( !GS_SUCCEEDED(ret) ){ + fprintf(stderr, "ERROR gsFetch\n"); + goto LABEL_ERROR; + } + + // (2)結果を取得する + while (gsHasNextRow(rs)) { + + // 空のロウを作成 + gsCreateRowByContainer(container, &row); + + // ロウを取得する + ret = gsGetNextRow(rs, row); + if ( !GS_SUCCEEDED(ret) ){ + fprintf(stderr, "ERROR gsGetNextRow\n"); + goto LABEL_ERROR; + } + + // 値を取得する + gsGetRowFieldAsTimestamp(row, 0, &date); + gsGetRowFieldAsInteger(row, 1, &value1); + gsGetRowFieldAsDouble(row, 2, &value2); + + // GSTimestampを文字列に変換する + gsFormatTime(date, buf, GS_TIME_STRING_SIZE_MAX); + + printf("TQL result: row=(%s, %d, %lf)\n", buf, value1, value2); + } + ``` + +[メモ] + +- コレクションに対して、TQLで時系列コンテナ用の選択演算を実行するとエラーになります。 +- メソッドgsGetRowByBaseTime(GSTimeSeries *timeSeries, GSTimestamp base, GSTimeOperator timeOp, void *rowObj, GSBool *exists)を用いて、TQLの選択演算と同等の処理を行うこともできます。 + + +#### 補間演算 + +時系列データを補間します。 + +演算の詳細については、Java APIの[補間演算](#java_timeseries_sampling)を参照ください。 + +- 例) TIME_INTERPOLATED演算の実行例 + + + ```C + ret = gsQuery(container, "SELECT TIME_INTERPOLATED(value1, TIMESTAMP('2018-12-01T10:30:00.000Z'))", &query); + if ( !GS_SUCCEEDED(ret) ){ + fprintf(stderr, "ERROR gsQuery\n"); + goto LABEL_ERROR; + } + ret = gsFetch(query, GS_FALSE, &rs); + if ( !GS_SUCCEEDED(ret) ){ + fprintf(stderr, "ERROR gsFetch\n"); + goto LABEL_ERROR; + } + + // (2)結果を取得する + while (gsHasNextRow(rs)) { + + // 空のロウを作成 + gsCreateRowByContainer(container, &row); + + // ロウを取得する + ret = gsGetNextRow(rs, row); + if ( !GS_SUCCEEDED(ret) ){ + fprintf(stderr, "ERROR gsGetNextRow\n"); + goto LABEL_ERROR; + } + + // 値を取得する + gsGetRowFieldAsTimestamp(row, 0, &date); + gsGetRowFieldAsInteger(row, 1, &value1); + gsGetRowFieldAsDouble(row, 2, &value2); + + // GSTimestampを文字列に変換する + gsFormatTime(date, buf, GS_TIME_STRING_SIZE_MAX); + + printf("TQL result: row=(%s, %d, %lf)\n", buf, value1, value2); + } + ``` + +[メモ] + +- コレクションに対して、TIME_INTERPOLATED、TIME_SAMPLINGを実行するとエラーになります。 +- 集計演算(MAX, MIN, COUNTなど)とTIME_INTERPOLATED、TIME_SAMPLINGを同時に指定することはできません。 +- メソッドgsInterpolateTimeSeriesRow(GSTimeSeries *timeSeries, GSTimestamp base, const GSChar *column, void *rowObj, GSBool *exists)を用いて、TQLのTIME_INTERPOLATED演算と同等の処理を行うこともできます。 +- メソッドgsQueryByTimeSeriesSampling(GSTimeSeries *timeSeries, GSTimestamp start, GSTimestamp end, const GSChar *const *columnSet, size_t columnCount, GSInterpolationMode mode, int32_t interval, GSTimeUnit intervalUnit, GSQuery **query)を用いて、TQLのTIME_SAMPLING演算と同等の処理を行うこともできます。 + + + +### 配列型のデータを扱う + +配列型のデータのセットや取得を行うための配列型用のsetter/getterがあります。 +配列型のデータ型に合わせたsetter/getterを使用してロウを操作し、データの登録や取得を行います。 + +| 分類 | メソッド | +|-------|---------| +| ブール型の配列 | gsSetRowFieldByBoolArray(GSRow *row, int32_t column, const GSBool *fieldValue, size_t size)
gsGetRowFieldAsBoolArray(GSRow *row, int32_t column, const GSBool **fieldValue, size_t *size) | +| STRING型の配列 | gsSetRowFieldByStringArray(GSRow *row, int32_t column, const GSChar *const *fieldValue, size_t size)
gsGetRowFieldAsStringArray(GSRow *row, int32_t column, const GSChar *const **fieldValue, size_t *size) | +| BYTE型の配列 | gsSetRowFieldByByteArray(GSRow *row, int32_t column, const int8_t *fieldValue, size_t size)
gsGetRowFieldAsByteArray(GSRow *row, int32_t column, const int8_t **fieldValue, size_t *size) | +| SHORT型の配列 | gsSetRowFieldByShortArray(GSRow *row, int32_t column, const int16_t *fieldValue, size_t size)
gsGetRowFieldAsShortArray(GSRow *row, int32_t column, const int16_t **fieldValue, size_t *size) | +| INTEGER型の配列 | gsSetRowFieldByIntegerArray(GSRow *row, int32_t column, const int32_t *fieldValue, size_t size)
gsGetRowFieldAsIntegerArray(GSRow *row, int32_t column, const int32_t **fieldValue, size_t *size) | +| LONG型の配列 | gsSetRowFieldByLongArray(GSRow *row, int32_t column, const int64_t *fieldValue, size_t size)
gsGetRowFieldAsLongArray(GSRow *row, int32_t column, const int64_t **fieldValue, size_t *size) | +| FLOAT型の配列 | gsSetRowFieldByFloatArray(GSRow *row, int32_t column, const float *fieldValue, size_t size)
gsGetRowFieldAsFloatArray(GSRow *row, int32_t column, const float **fieldValue, size_t *size) | +| DOUBLE型の配列 | gsSetRowFieldByDoubleArray(GSRow *row, int32_t column, const double *fieldValue, size_t size)
gsGetRowFieldAsDoubleArray(GSRow *row, int32_t column, const double **fieldValue, size_t *size) | +| TIMESTAMP型の配列 | gsSetRowFieldByTimestampArray(GSRow *row, int32_t column, const GSTimestamp *fieldValue, size_t size)
gsGetRowFieldAsTimestampArray(GSRow *row, int32_t column, const GSTimestamp **fieldValue, size_t *size) | + + + +配列型データを登録するプログラムを示します。 + + +```C +// (1)配列型のデータ +const GSChar *stringArray[4] = { "Sales", "Development", "Marketing", "Research" }; +const int32_t integerArray[4] = { 39, 92, 18, 51 }; + + +// (2)空のロウオブジェクトの作成 +ret = gsCreateRowByContainer(collection, &row); +if ( !GS_SUCCEEDED(ret) ){ + fprintf(stderr, "ERROR gsCreateRowByContainer\n"); + goto LABEL_ERROR; +} + +// (3)カラム値をセット +gsSetRowFieldByInteger(row, 0, 0); +gsSetRowFieldByStringArray(row, 1, stringArray, 4); +gsSetRowFieldByIntegerArray(row, 2, integerArray, 4); + +// (4)ロウを登録する +ret = gsPutRow(collection, NULL, row, NULL); +if ( !GS_SUCCEEDED(ret) ){ + fprintf(stderr, "ERROR gsPutRow\n"); + goto LABEL_ERROR; +} + +gsCloseRow(&row) +``` + + +配列型データを取得するプログラムを示します。 + + +```c +int32_t id; +const GSChar * const * stringArray; +const int32_t * integerArray; +size_t stringCount; +size_t integerCount; + +// (1)空のロウオブジェクトの作成 +gsCreateRowByContainer(collection, &row); + +// (2)ロウキーを指定してロウ取得 +ret = gsGetRowByInteger(collection, 0, row, GS_FALSE, NULL); +if ( !GS_SUCCEEDED(ret) ){ + fprintf(stderr, "ERROR gsGetRowByInteger\n"); + goto LABEL_ERROR; +} + +// (3)ロウから配列型データを取得 +gsGetRowFieldAsInteger(row, 0, &id); +gsGetRowFieldAsStringArray(row, 1, &stringArray, &stringCount); +gsGetRowFieldAsIntegerArray(row, 2, &integerArray, &integerCount); + +printf("Get Row (id=%d,", id); + +printf("["); +for( i = 0; i < stringCount; i++ ){ + if ( i != 0 ) printf(", "); + printf("%s", *stringArray); + stringArray++; +} +printf("],["); + +for( i = 0; i < integerCount; i++ ){ + if ( i != 0 ) printf(", "); + printf("%d", *integerArray); + integerArray++; +} +printf("])\n"); + +gsCloseRow(&row); +``` + +[メモ] + +- 配列型のカラムはロウキーには設定できません。 + + + +### 空間型のデータを扱う + +空間型のデータを登録、取得します。 + +空間型のデータを表すWKT(Well-Known Text)形式の値で操作します。 +WKT形式は、ISOで定められている標準的な書式で、空間型のデータをテキスト形式で表現できます。 + +- 例) 空間型データのWKT形式 + - 2次元空間上の点(2, 3) → POINT(2 3) + +空間型のデータのセットや取得を行うための空間型用のsetter/getterがあります。 +これらを用いて、空間型データの登録や取得を行います。 + +| 分類 | メソッド | +|-------|---------| +| 空間型データのセット | gsSetRowFieldByGeometry(GSRow *row, int32_t column, const GSChar *fieldValue) | +| 空間型データの取り出し | gsGetRowFieldAsGeometry(GSRow *row, int32_t column, const GSChar **fieldValue) | + + +空間型データを登録するプログラムを示します。 + + +```c +// (1)空のロウオブジェクトの作成 +ret = gsCreateRowByContainer(collection, &row); +if ( !GS_SUCCEEDED(ret) ){ + fprintf(stderr, "ERROR gsCreateRowByContainer\n"); + goto LABEL_ERROR; +} + +// (2)カラム値をセット +gsSetRowFieldByInteger(row, 0, 0); +gsSetRowFieldByGeometry(row, 1, "POINT(2 3)"); + +// (3)ロウを登録する +ret = gsPutRow(collection, NULL, row, NULL); +if ( !GS_SUCCEEDED(ret) ){ + fprintf(stderr, "ERROR gsPutRow\n"); + goto LABEL_ERROR; +} + +printf("Put Row (Geometry)\n"); + +gsCloseRow(&row); +``` + + + +空間型データを取得するプログラムを示します。 + + +```c +int32_t id; +const GSChar * geometry; + +// (1)空のロウオブジェクトの作成 +gsCreateRowByContainer(collection, &row); + +// (2)ロウキーを指定してロウ取得 +ret = gsGetRowByInteger(collection, 0, row, GS_FALSE, NULL); +if ( !GS_SUCCEEDED(ret) ){ + fprintf(stderr, "ERROR gsGetRowByInteger\n"); + goto LABEL_ERROR; +} + +// (3)ロウから配列型データを取得 +gsGetRowFieldAsInteger(row, 0, &id); +gsGetRowFieldAsGeometry(row, 1, &geometry); + +printf("Get Row (id=%d, geometry=%s)\n", id, geometry); + +gsCloseRow(&row); +``` + +[メモ] + +- 空間型のカラムはロウキーには設定できません。 + + + +### コンテナ情報を取得する + +コンテナの情報を取得する操作を説明します。 + +- コンテナ名の一覧を取得する +- コンテナのスキーマ情報を取得する + + + +#### コンテナ名の一覧を取得する + +作成されているコンテナの名前の一覧を取得します。 + +コンテナ名の一覧取得は、パーティションの情報を取得するためのコントローラGSPartitionControllerインスタンスを用いて行います。 + +| 分類 | メソッド | +|-------|---------| +| パーティションコントローラの取得 | gsGetPartitionController(GSGridStore *store, GSPartitionController **partitionController) | +| パーティション数の取得 | gsGetPartitionCount(GSPartitionController *controller, int32_t *partitionCount) | +| コンテナ名の一覧取得 | gsGetPartitionContainerNames(GSPartitionController *controller, int32_t partitionIndex, int64_t start, const int64_t *limit, const GSChar *const **nameList, size_t *size) | + +パーティションコントローラを介して、パーティションごとにコンテナ名の一覧を取得します。 +コンテナ名一覧を取得するプログラムを示します。 + + +```c +GSPartitionController * pc; +int32_t pcCount; +const GSChar *const * nameList; +size_t nameCount; + +// (1)パーティションコントローラと、パーティション数を取得する +ret = gsGetPartitionController(store, &pc); +if ( !GS_SUCCEEDED(ret) ){ + fprintf(stderr, "ERROR gsGetPartitionController\n"); + goto LABEL_ERROR; +} +gsGetPartitionCount(pc, &pcCount); + + +// (2)パーティション数でループして、コンテナ名一覧を取得する +for( i = 0; i < pcCount; i++) { + ret = gsGetPartitionContainerNames(pc, i, 0, NULL, &nameList, &nameCount); + if ( !GS_SUCCEEDED(ret) ){ + fprintf(stderr, "ERROR gsGetPartitionContainerNames\n"); + goto LABEL_ERROR; + } + + for( j = 0; j < nameCount; j++ ){ + printf("%s\n", *nameList); + nameList++; + } +} +``` +(2)gsGetPartitionContainerNamesメソッドで、第3引数startに0, 第4引数limitにNULLを指定すると、指定したパーティション上の全コンテナ名を取得します。 +取得するコンテナ名の数を制限する場合は、第4引数limitに制限する数を指定してください。 + +[メモ] + +- クラスタ接続時に指定したデータベース上のコンテナ名一覧しか取得できません。 + 他のデータベースのコンテナ名の一覧を取得する場合は、そのデータベースに接続する必要があります。 + +- 取得するコンテナ名に正規表現のような条件は指定できません。 + + + + +#### コンテナのスキーマ情報を取得する + +コンテナに関する情報は、コンテナ情報ContainerInfoから取得します。 + +| 分類 | メソッド | +|-------|---------| +| コンテナ情報の取得 | gsGetContainerInfo(GSGridStore *store, const GSChar *name, GSContainerInfo *info, GSBool *exists) | + +ContainerInfoには、様々な情報を取得するsetterメソッドがあります。必要な情報を取得するメソッドを使用してください。 +メソッドの詳細は、『[GridDB Java APIリファレンス](../md_reference_java_api/md_reference_java_api.html)』をご参照ください。 + + + +コンテナのカラム情報を取得するプログラムを示します。 + + +```c +GSContainerInfo info = GS_CONTAINER_INFO_INITIALIZER; +GSBool exist; + +// (1)コンテナ情報を取得する +ret = gsGetContainerInfo(store, "SampleC_Info", &info, &exist); +if ( !GS_SUCCEEDED(ret) ){ + fprintf(stderr, "ERROR gsGetContainerInfo\n"); + goto LABEL_ERROR; +} +if ( !exist ){ + printf("Container not found\n"); + goto LABEL_ERROR; +} + +// (2)コンテナ情報を表示する +printf("Get ContainerInfo: \n name=%s\n", info.name); +if ( info.type == GS_CONTAINER_COLLECTION ){ + printf(" type=Collection\n"); +} else { + printf(" type=TimeSeries\n"); +} +printf(" rowKeyAssigned=%d\n", info.rowKeyAssigned); + +printf(" columnCount=%d\n", info.columnCount); +for ( i = 0; i < info.columnCount; i++ ){ + printf(" column (%s, %d)\n", info.columnInfoList[i].name, info.columnInfoList[i].type); +} +``` + + +### 複合ロウキーを扱う + +データの登録や検索の処理では、複合ロウキーを指定して操作を行うことができます。 + +複合ロウキーを設定したデータを登録するプログラムを示します。複合ロウキーとして1つ目のINTEGER型と2つ目のSTRING型を指定します。 + + +```c + //=============================================== + // クラスタに接続する + //=============================================== + // 接続情報を指定する (マルチキャスト方式) + const GSPropertyEntry props[] = { + { "notificationAddress", "239.0.0.1" }, + { "notificationPort", "31999" }, + { "clusterName", "myCluster" }, + { "database", "public" }, + { "user", "admin" }, + { "password", "admin" }, + { "applicationName", "SampleC" } + }; + + const size_t propCount = sizeof(props) / sizeof(*props); + + // 複合ロウキー設定 + const int32_t rowKeyColumnList[] = { 0, 1 }; + const size_t rowKeyColumnCount = sizeof(rowKeyColumnList) / sizeof(*rowKeyColumnList); + + GSBool exists; + + // GridStoreインスタンスを取得する + ret = gsGetGridStore(gsGetDefaultFactory(), props, propCount, &store); + if ( !GS_SUCCEEDED(ret) ){ + fprintf(stderr, "ERROR gsGetGridStore\n"); + goto LABEL_ERROR; + } + // コンテナ作成や取得などの操作を行うと、クラスタに接続される + ret = gsGetContainerGeneral(store, "SampleC_CompositKey", &collection); + if ( !GS_SUCCEEDED(ret) ){ + fprintf(stderr, "ERROR gsGetContainerGeneral\n"); + goto LABEL_ERROR; + } + gsCloseContainer(&container, GS_TRUE); + printf("Connect to Cluster\n"); + + //=============================================== + // データ準備 (コンテナ作成&ロウ登録) + //=============================================== + // コンテナ情報を設定する + info0.type = GS_CONTAINER_COLLECTION; + info0.rowKeyColumnList = rowKeyColumnList; + info0.rowKeyColumnCount = rowKeyColumnCount; + + // カラム情報を定義する + columnInfo.name = "id"; + columnInfo.type = GS_TYPE_INTEGER; + columnInfoList[0] = columnInfo; + + columnInfo.name = "productName"; + columnInfo.type = GS_TYPE_STRING; + columnInfoList[1] = columnInfo; + + columnInfo.name = "count"; + columnInfo.type = GS_TYPE_INTEGER; + columnInfoList[2] = columnInfo; + + // カラム情報をコンテナ情報オブジェクトに設定する + info.columnCount = sizeof(columnInfoList) / sizeof(*columnInfoList); + info.columnInfoList = columnInfoList; + + for ( i = 0; i < containerCount; i++ ){ + // コレクションを作成する + ret = gsPutContainerGeneral(store, containerNameList[i], &info0, GS_FALSE, &container); + if ( !GS_SUCCEEDED(ret) ){ + fprintf(stderr, "ERROR gsPutCollectionGeneral\n"); + goto LABEL_ERROR; + } + printf("Sample data generation: Create Collection name=%s\n", containerNameList[i]); + + // 複数のロウを登録する + for ( j = 0; j < rowCount; j++ ){ + gsCreateRowByContainer(container, &row); + gsSetRowFieldByInteger(row, 0, j); + gsSetRowFieldByString(row, 1, nameList[j]); + gsSetRowFieldByInteger(row, 2, numberList[i][j]); + + rowList[j] = row; + } + rowObj = (void *)rowList; + ret = gsPutMultipleRows(container, rowObj, rowCount, NULL); + if ( !GS_SUCCEEDED(ret) ){ + fprintf(stderr, "ERROR gsPutMultipleRows\n"); + goto LABEL_ERROR; + } + printf("Sample data generation: Put Rows count=%d\n", rowCount); + + gsCloseContainer(&container, GS_TRUE); + } +``` + +複数のコンテナから、複合ロウキーで指定した条件に当てはまるデータを取得するプログラムを示します。指定する条件は、個別条件指定を用い、1つ目のコンテナからはINTEGER型のロウキーの値が"0"、STRING型のロウキー値が"notebook PC"に合致するロウを、2つ目のコンテナからも1つ目と同様にINTEGER型のロウキーの値が"0"、STRING型のロウキー値が"notebook PC"に合致するロウを取得します。 + + + +```c +//=============================================== +// 複数のコンテナから一括でロウを取得する +//=============================================== + +// (1)ロウ取得条件を構築する +for (i = 0; i < containerCount; i++) { + ret = gsCreateRowKeyByStore(store, &info0, &rowKey); + if (!GS_SUCCEEDED(ret)) { + fprintf(stderr, "ERROR gsCreateRowKeyByStore\n"); + goto LABEL_ERROR; + } + + ret = gsSetRowFieldByInteger(rowKey, 0, 0); + if (!GS_SUCCEEDED(ret)) { + fprintf(stderr, "ERROR gsSetRowFieldByInteger\n"); + goto LABEL_ERROR; + } + + ret = gsSetRowFieldByString(rowKey, 1, "notebook PC"); + if (!GS_SUCCEEDED(ret)) { + fprintf(stderr, "ERROR gsSetRowFieldByInteger\n"); + goto LABEL_ERROR; + } + + ret = gsCreateRowKeyPredicateGeneral(store, &info0, &predicate); + if (!GS_SUCCEEDED(ret)) { + fprintf(stderr, "ERROR gsCreateRowKeyPredicateGeneral\n"); + goto LABEL_ERROR; + } + + ret = gsAddPredicateGeneralKey(predicate, rowKey); + if (!GS_SUCCEEDED(ret)) { + fprintf(stderr, "ERROR gsAddPredicateGeneralKey\n"); + goto LABEL_ERROR; + } + + // GSRowKeyPredicateEntryに条件を格納する + predEntryValueList[i].containerName = containerNameList[i]; + predEntryValueList[i].predicate = predicate; + + predEntryList[i] = &predEntryValueList[i]; +} + +// (2)複数コンテナからロウを一括取得する +ret = gsGetMultipleContainerRows(store, predEntryList, containerCount, &outEntryList, &outEntryCount); +if ( !GS_SUCCEEDED(ret) ){ + fprintf(stderr, "ERROR gsGetMultipleContainerRows\n"); + goto LABEL_ERROR; +} + +// (3)取得結果をコピーする +// ※gsGetRowFieldAsStringなど、結果を取得する関数は、 +// 値の書き換えが行われうる仕様 +// 関数呼び出し前に結果はコピーしておく +for (i = 0; i < outEntryCount; i++) { + outEntry = outEntryList[i]; + for (j = 0; j < outEntry.rowCount; j++) { + allRowList[i][j] = (GSRow*)outEntry.rowList[j]; + } +} + +// (4)取得結果を出力する +for (i = 0; i < outEntryCount; i++) { + for (j = 0; j < outEntryList[i].rowCount; j++) { + row = allRowList[i][j]; + + gsGetRowFieldAsInteger(row, 0, &id); + gsGetRowFieldAsString(row, 1, &productName); + gsGetRowFieldAsInteger(row, 2, &count); + + printf("MultiGet: container=%s, id=%d, productName=%s, count=%d\n", outEntryList[i].containerName, id, productName, count); + } +} +``` + +[メモ] + +- 個別条件と範囲条件の2つの条件を混在して使用することはできません。 +- 条件をどちらも指定しなかった場合は、すべてのロウが取得されます。 +- GSRowKeyPredicateクラスは、複数コンテナのロウ取得gsGetMultipleContainerRowsメソッドでのみ使用できます。他のロウ取得gsGetRowメソッドでは使用できません。 +- gsGetRowFieldAsStringのようなgsGetRowFieldAsXXXという結果を取得する関数やgsGetPredicateDistinctKeysAsStringのようなgsGetPredicateXXXという条件に関する値を取得する関数では、指定しているGSRowやGSRowKeyPredicateの値を格納している一時的なメモリ領域を書き換えることがあります。詳細は、『[GridDB C APIリファレンス](../md_reference_c_api/md_reference_c_api.html)』の各関数の「一時的なメモリ領域」に関する説明をご参照ください。 + +# JDBC (NewSQLインタフェース) + +## JDBCを利用したアプリケーションの開発 + +### ログ機能 + +GridDBのJDBCはメソッドの呼び出しごとにログ出力を行う機能があります。このログにJDBCにてどのような操作が行われたのかが出力されるため、アプリケーションに問題が発生した際に、原因解析の情報として用いることができます。 +ログ機能を有効とすることを推奨します。 + +JDBCのログ機能を有効にするためには、以下のライブラリをクラスパスに指定してください。 + +- gridstore-jdbc-call-logging.jar + +ログ機能はSLF4Jを使うため、SLF4Jのライブラリをクラスパスに指定してください。 + +- slf4j-api-1.7.7.jar + +また、ロギングライブラリをクラスパスに指定してください。 +ここではロギングライブラリにLogbackを使用するものとして例を示します。 + +- 例) + - logback-core-1.0.13.jar + - logback-classic-1.0.13.jar + +さらに、Logbackの設定ファイル(logback.xml)をクラスパスに含まれるディレクトリに配置してください。 + +Logbackの設定ファイルに定義する内容については後述します。 + +#### ログ出力内容 + +JDBCのログ出力内容は以下です。 + +- ログレベル: TRACE + - メソッドの開始ログ + - メソッドの引数を示すログ + - メソッドの戻り値を示すログ + - メソッドの終了ログ + +ログ出力を行う対象は以下です。 + +- Connectionインターフェース +- DatabaseMetaDataインターフェース +- ParameterMetaDataインターフェース +- PreparedStatementインターフェース +- ResultSetMetaDataインターフェース +- Statementインターフェース + +#### Logbackの設定ファイル + +JDBCのログはロガー名「com.toshiba.mwcloud.gs.sql.Logger」で始まります。 +Logbackの設定ファイルには、このロガーの出力方法を定義します。設定ファイルのサンプルを以下に示します。 +``` xml + + + + + + + ${logPath}/gridstore-jdbc-%d{yyyyMMdd}-%i.log + + 100MB + + 30 + + + + %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] [%-5p] %m%n + + + + + + + + + + +``` +このサンプルはJDBCのログを下記ファイル名のログファイルに出力するものです。 + +- /var/lib/gridstore/log/griddb-jdbc.yyyymmdd.n.log + - yyyymmdd: 日付 n: 0, 1, 2 ... + +ログ出力内容の例を以下に示します。 +``` example +2019-03-08 11:32:13.008 [main] [TRACE] [Trace Start] pid=16112 SQLConnection::prepareStatement() +2019-03-08 11:32:13.011 [main] [TRACE] [argument] pid=16112 String=select * from Collection_NoPart_0001 where id = ? and integercol = ? +2019-03-08 11:32:13.049 [main] [TRACE] [return] pid=16112 $Proxy3=com.toshiba.mwcloud.gs.sql.internal.SQLPreparedStatement@37b79249 +2019-03-08 11:32:13.049 [main] [TRACE] [Trace End] pid=16112 SQLConnection::prepareStatement() +2019-03-08 11:32:13.049 [main] [TRACE] [Trace Start] pid=16112 SQLPreparedStatement::setString() +2019-03-08 11:32:13.049 [main] [TRACE] [argument] pid=16112 Integer=1 +2019-03-08 11:32:13.049 [main] [TRACE] [argument] pid=16112 String=ID0005 +2019-03-08 11:32:13.049 [main] [TRACE] [Trace End] pid=16112 SQLPreparedStatement::setString() +2019-03-08 11:32:13.050 [main] [TRACE] [Trace Start] pid=16112 SQLPreparedStatement::setInt() +2019-03-08 11:32:13.050 [main] [TRACE] [argument] pid=16112 Integer=2 +2019-03-08 11:32:13.050 [main] [TRACE] [argument] pid=16112 Integer=10006 +2019-03-08 11:32:13.050 [main] [TRACE] [Trace End] pid=16112 SQLPreparedStatement::setInt() +2019-03-08 11:32:13.050 [main] [TRACE] [Trace Start] pid=16112 SQLPreparedStatement::executeQuery() +2019-03-08 11:32:13.060 [main] [TRACE] [return] pid=16112 SQLResultSet=com.toshiba.mwcloud.gs.sql.internal.SQLResultSet@52e53663 +2019-03-08 11:32:13.060 [main] [TRACE] [Trace End] pid=16112 SQLPreparedStatement::executeQuery() +2019-03-08 11:32:13.061 [main] [TRACE] [Trace Start] pid=16112 SQLConnection::close() +2019-03-08 11:32:13.062 [main] [TRACE] [Trace End] pid=16112 SQLConnection::close() +``` + +### サンプルプログラムの実行 + +サンプルプログラムのコンパイルと実行方法を説明します。 + +コンパイルと実行の際には、クラスパスにライブラリgridstore-jdbc.jarを設定します。 + +- 例) Sample.javaのコンパイルと実行の例 + + ``` + $ javac -classpath "/usr/share/java/gridstore-jdbc.jar:." Sample.java + $ java -classpath "/usr/share/java/gridstore-jdbc.jar:." Sample + ``` + + + +サンプルプログラム一覧 + +| 分類 | プログラム名 | 内容 | 作成するコンテナ名 | +|------|------------|------|-------------------| +| [クラスタに接続する](#jdbc_connect) | JDBCConnect.java | マルチキャスト方式でクラスタに接続して切断します。 | - | +| [SQLを実行する(コンテナ作成とロウ登録)](#jdbc_sql_create_insert) | JDBCCreateTableInsert.java | SQLでコンテナを作成してロウを登録します。 | SampleJDBC_Create | +| [SQLを実行する(検索)](#jdbc_sql_select) | JDBCSelect.java | SQLでロウを検索します。 | SampleJDBC_Select | +| [プリペアードステートメントを実行する](#jdbc_prepared) | JDBCPreparedStatement.java | メソッドでスキーマを指定する方法を用いて、時系列コンテナを作成します。 | SampleJDBC_Prepared | +| [バイナリデータを扱う](#jdbc_blob) | JDBCBlobData.java | バイナリデータを扱います。 | SampleJDBC_BlobData | +| [メタデータを取得する](#jdbc_meta) | JDBCMetaData.java | メタデータを取得します。 | - | + + +## プログラミングの基礎 + +GridDBで提供しているJDBCは、JDBC標準に準拠していますが、一部未サポートのものや相違点があります。 +詳細は『[GridDB JDBCドライバ説明書](../md_reference_jdbc/md_reference_jdbc.md)』をご参照ください。 + + +### クラスタに接続する + +JDBCのDriverManagerインタフェースを用いて、クラスタに接続します。 + +接続する際には以下のいずれかのメソッドを使用します。 + +|分類 | メソッド | ユーザとパスワードの指定 | +|------------------|-----------------------|----------------| +| 接続 | DriverManager.getConnection(String url) | ユーザとパスワードはURLで指定します
URL書式: http://・・・&user=(ユーザ名)&password=(パスワード) | +| 接続 | DriverManager.getConnection(String url, String user, String password) | ユーザとパスワードは引数で指定します | +| 接続 | DriverManager.getConnection(String url, Properties info)
または
Connection Driver.connect(String url, Properties info) | ユーザとパスワード、アプリケーション名などはPropertiesで指定します。
プロパティキー
user:ユーザ名(必須)
password:パスワード(必須)
applicationName:アプリケーション名(省略可)
loginTimeout:ログインタイムアウト(省略可) | + + +ユーザとパスワードをPropertiesで指定するDriverManager.getConnectionを用いた接続のプログラムを以下に示します。 + +```java +import java.net.URLEncoder; +import java.sql.Connection; +import java.sql.DriverManager; +import java.util.Properties; + +public class JDBCConnect { + + public static void main(String[] args){ + try { + //=============================================== + // クラスタに接続する + //=============================================== + // JDBCの接続情報 + String jdbcAddress = "239.0.0.1"; + String jdbcPort = "41999"; + String clusterName = "myCluster"; + String databaseName = "public"; + String username = "admin"; + String password = "admin"; + String applicationName = "SampleJDBC"; + + // (1)クラスタ名とデータベース名はエンコードする + String encodeClusterName = URLEncoder.encode(clusterName, "UTF-8"); + String encodeDatabaseName = URLEncoder.encode(databaseName, "UTF-8"); + + // (2)URLを組み立てる (マルチキャスト方式) + String jdbcUrl = "jdbc:gs://"+jdbcAddress+":"+jdbcPort+"/"+encodeClusterName+"/"+encodeDatabaseName; + + Properties prop = new Properties(); + prop.setProperty("user", username); + prop.setProperty("password", password); + prop.setProperty("applicationName", applicationName); + + // (3)接続する + Connection con = DriverManager.getConnection(jdbcUrl, prop); + + System.out.println("Connect to cluster"); + + //=============================================== + // 終了処理 + //=============================================== + // (4)接続をクローズする + con.close(); + System.out.println("success!"); + + } catch ( Exception e ){ + e.printStackTrace(); + } + } +} +``` + +#### 接続のURL形式 + +接続時に指定するURL形式を説明します。URL形式は、クラスタの接続方式によって異なります。 +クラスタの接続先アドレスやクラスタ名、データベース名などをURLに指定します。 +クラスタ名とデータベース名はURLエンコードが必要です。 + + +**マルチキャスト方式** + +- マルチキャスト方式の場合の接続URLは以下の形式になります。 + + | 接続方式 | URL形式 | + |----------|---------| + | マルチキャスト方式 | jdbc:gs://(multicastAddress):(multicastPort)/(clusterName)/(databaseName) | + + + | URL形式の変数 | 内容 | 指定する値 | + |-----------|-------------|----------------| + | multicastAddress | マルチキャストのアドレス | gs_cluster.jsonの/sql/notificationAddressに記載している値 | + | multicastPort | マルチキャストのポート番号 | gs_cluster.jsonの/sql/notificationPortに記載している値 | + | clusterName | クラスタ名 | gs_cluster.jsonの/cluster/clusterNameに記載している値 | + | databaseName | データベース名 | 任意(publicデータベースの場合は省略可) | + | notificationInterfaceAddress | マルチキャストパケットを受信するインターフェースアドレス | 任意(マルチキャストパケットを受信するインターフェースアドレス)) | + +- 例) + - gs_cluster.jsonの表記が以下の場合 + + ``` + : + "cluster":{ + "clusterName":"myCluster", + : + }, + : + "sql":{ + "notificationAddress":"239.0.0.1", + "notificationPort":41999, + : + } + : + ``` + + - 接続URLの表記 + + ``` + jdbc:gs://239.0.0.1:41999/myCluster/public + ``` + + - プログラム + + ``` java + String jdbcAddress = "239.0.0.1"; + String jdbcPort = "41999"; + String clusterName = "myCluster"; + String databaseName = "public"; + + // (1)クラスタ名とデータベース名はエンコードする + String encodeClusterName = URLEncoder.encode(clusterName, "UTF-8"); + String encodeDatabaseName = URLEncoder.encode(databaseName, "UTF-8"); + + // (2)URLを組み立てる (マルチキャスト方式) + String jdbcUrl = "jdbc:gs://"+jdbcAddress+":"+jdbcPort+"/"+encodeClusterName+"/"+encodeDatabaseName; + ``` + + +**固定リスト方式** + +- 固定リスト方式の場合の接続URLは以下の形式になります。 + + | 接続方式 | URL形式 | + |----------|---------| + | 固定リスト方式 | jdbc:gs:///(clusterName)/(databaseName)?notificationMember=(notificationMember) | + + + | URL形式の変数 | 内容 | 指定する値 | + |-----------|-------------|----------------| + | notificationMember | クラスタを構成するノードのアドレスとポート番号のリスト | gs_cluster.jsonの/cluster/notificationMemberの/sql/addressと/sql/portをリスト形式にした値 (URLエンコードが必要) | + | clusterName | クラスタ名 | gs_cluster.jsonの/cluster/clusterNameに記載している値 | + | databaseName | データベース名 | 任意(publicデータベースの場合は省略可) | + + [メモ] + + - URLのクラスタ名の前は、"/"が3個であることにご注意ください。 + +- 例) + - gs_cluster.jsonの表記が以下の場合 + ``` + "cluster":{ + "clusterName":"myCluster", + "replicationNum":2, + "notificationMember":[ + { + "cluster": {"address":"192.168.1.10", "port":10010}, + "sync": {"address":"192.168.1.10", "port":10020}, + "system": {"address":"192.168.1.10", "port":10040}, + "transaction": {"address":"192.168.1.10", "port":10001}, + "sql": {"address":"192.168.1.10", "port":20001} + }, + { + "cluster": {"address":"192.168.1.11", "port":10010}, + "sync": {"address":"192.168.1.11", "port":10020}, + "system": {"address":"192.168.1.11", "port":10040}, + "transaction": {"address":"192.168.1.11", "port":10001}, + "sql": {"address":"192.168.1.11", "port":20001} + }, + { + "cluster": {"address":"192.168.1.12", "port":10010}, + "sync": {"address":"192.168.1.12", "port":10020}, + "system": {"address":"192.168.1.12", "port":10040}, + "transaction": {"address":"192.168.1.12", "port":10001}, + "sql": {"address":"192.168.1.12", "port":20001} + } + }, + ..... + ``` + + - 接続URLの表記 + + - プロパティキーnotificationMemberには、アドレスとポート番号を:で連結してカンマで区切った値を記述します。 + + ``` + jdbc:gs:///myCluster/public/?notificationMember=192.168.1.10:20001,192.168.1.11:20001,192.168.1.12:20001 + ``` + + - プログラム + + ```java + String fixedList = "192.168.1.10:20001,192.168.1.11:20001,192.168.1.12:20001"; + String encodeFixedList = URLEncoder.encode(fixedList, "UTF-8"); + // (省略) + String jdbcUrl = "jdbc:gs:///" + encodeClusterName + "/" + encodeDatabaseName + + "?notificationMember="+encodeFixedList; + ``` + + + +**プロバイダ方式【EE限定】** + +- プロバイダ方式の場合の接続URLは以下の形式になります。 + + | 接続方式 | URL形式 | + |----------|---------| + | プロバイダ方式 | jdbc:gs:///(clusterName)/(databaseName)?notificationProvider=(notificationProvider) | + + | URL形式の変数 | 内容 | 指定する値 | + |-----------|-------------|----------------| + | notificationProvider | プロバイダのURL | gs_cluster.jsonの/cluster/notificationProvider/urlに記載している値 | + | clusterName | クラスタ名 | gs_cluster.jsonの/cluster/clusterNameに記載している値 | + | databaseName | データベース名 | 任意(publicデータベースの場合は省略可) | + + [メモ] + + - URLのクラスタ名の前は、"/"が3個であることにご注意ください。 + +- 例) + - gs_cluster.jsonの表記が以下の場合 + ``` + "cluster":{ + "clusterName":"myCluster", + "replicationNum":2, + "notificationProvider":{ + "url":"http://example.com/notification/provider", + "updateInterval":"30s" + } + ..... + ``` + + - 接続URLの表記 + + - プロパティキーnotificationProviderにはurlの値を記述します。 + + ``` + jdbc:gs:///myCluster/public/?notificationProvider=http://example.com/notification/provider + ``` + + - プログラム + ```Java + String providerUrl = "http://example.com/notification/provider"; + String encodeProviderUrl = URLEncoder.encode(providerUrl, "UTF-8"); + // (省略) + String jdbcUrl = "jdbc:gs:///" + encodeClusterName + "/" + encodeDatabaseName + + "?notificationProvider="+encodeProviderUrl; + ``` + + + +#### ログインタイムアウトの設定 + +接続時のタイムアウトを設定します。設定方法は、ドライバ全体に設定を行う方法と、コネクション取得時に設定を行う方法の2つがあります。 +コネクション取得時に設定を行う方法の場合は、その時に取得したコネクションにしかログインタイムアウトの情報は反映されません。 + +| 分類 | メソッド | +|--------------------|-------------------------------------------------| +| ドライバ全体への設定 | void DriverManager.setLoginTimeout(int seconds) | +| コネクションへの設定 | Connection DriverManager.getConnection(String url, Properties info)
Connection Driver.connect(String url, Properties info) | + +- プロパティで指定する場合のプロパティキーは、"loginTimeout"です。 +- 値の単位は秒で、値の範囲は1からInteger.MAX_VALUEです。それ以外の値を指定した場合は、値は無視されます。 +- ドライバ全体とコネクションへの設定の両方を行った場合は、コネクションへの設定の方が優先されます。 + + +### トランザクション制御 + +JDBCでは、トランザクション制御をサポートしていません。 +データの登録INSERTなどの操作は、SQL文を実行した時点で自動的にロウがコミットされます。 + +- INSERTやUPDATEなどのトランザクション操作は、SQL文を実行した時点で自動的にロウがコミットされます。 +- コミットcommit()やロールバックrollback()は、実行しても要求は無視されます。エラーにはなりません。 +- INSERTやUPDATEなどで複数のロウを指定した場合は、ロウ単位で自動的に変更内容がコミットされます。 + + +例) +```java +Statement stmt = con.createStatement(); +stmt.executeUpdate("CREATE TABLE sqlCollection ( id integer, value string )"); +// →実行時点でコミットされる + +int ret0 = stmt.executeUpdate("INSERT INTO sqlCollection values (0, 'test0')"); +// →実行時点でコミットされる + +int ret1 = stmt.executeUpdate("INSERT INTO sqlCollection values "+ + "(1, 'test1'),(2, 'test2'),(3, 'test3'),(4, 'test4')"); +// →実行時点でコミットされる(ロウ単位でコミット) + +con.commit(); +// →コミット要求は無視される(エラーにはならない) +``` + +[メモ] + +- SQLで検索実行時に、トランザクションの隔離レベルがREAD COMMITTEDにならない場合があります。 + 検索時のデータ一貫性の詳細は、『[GridDB JDBCドライバ説明書](../md_reference_jdbc/md_reference_jdbc.md)』をご参照ください。 + + + +### SQLを実行する(コンテナ作成とロウ登録) + +コンテナ作成とロウ登録を行うSQLを実行するプログラムを示します。 + +```java +import java.net.URLEncoder; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.Statement; +import java.util.Properties; + +public class JDBCCreateTableInsert { + + public static void main(String[] args){ + try { + //=============================================== + // クラスタに接続する + //=============================================== + // JDBCの接続情報 + String jdbcAddress = "239.0.0.1"; + String jdbcPort = "41999"; + String clusterName = "myCluster"; + String databaseName = "public"; + String username = "admin"; + String password = "admin"; + String applicationName = "SampleJDBC"; + + // クラスタ名とデータベース名はエンコードする + String encodeClusterName = URLEncoder.encode(clusterName, "UTF-8"); + String encodeDatabaseName = URLEncoder.encode(databaseName, "UTF-8"); + + // URLを組み立てる (マルチキャスト方式) + String jdbcUrl = "jdbc:gs://"+jdbcAddress+":"+jdbcPort+"/"+encodeClusterName+"/"+encodeDatabaseName; + + Properties prop = new Properties(); + prop.setProperty("user", username); + prop.setProperty("password", password); + prop.setProperty("applicationName", applicationName); + + // 接続する + Connection con = DriverManager.getConnection(jdbcUrl, prop); + + + //=============================================== + // コンテナ作成とデータ登録 + //=============================================== + // (1)ステートメント作成 + Statement stmt = con.createStatement(); + + // (存在した場合は削除する) + stmt.executeUpdate("DROP TABLE IF EXISTS SampleJDBC_Create"); + + // (2)コンテナ作成のSQL実行 + stmt.executeUpdate("CREATE TABLE SampleJDBC_Create ( id integer PRIMARY KEY, value string )"); + System.out.println("SQL Create Table name=SampleJDBC_Create"); + + // (3)ロウ登録のSQL実行 + int ret0 = stmt.executeUpdate("INSERT INTO SampleJDBC_Create values (0, 'test0')"); + System.out.println("SQL Insert count=" + ret0); + + int ret1 = stmt.executeUpdate("INSERT INTO SampleJDBC_Create values "+ + "(1, 'test1'),(2, 'test2'),(3, 'test3'),(4, 'test4')"); + System.out.println("SQL Insert count=" + ret1); + + + //=============================================== + // 終了処理 + //=============================================== + stmt.close(); + con.close(); + System.out.println("success!"); + + } catch ( Exception e ){ + e.printStackTrace(); + } + } +} +``` + +(1)ステートメントを作成し、(2)(3)executeUpdateでコンテナを作成するSQL、ロウを登録するSQLを実行します。 +戻り値は、コンテナ作成のSQLの場合は成功したら0、ロウ登録のSQLの場合は、登録したロウ数になります。 + + + + +### SQLを実行する(検索) + +SQLで検索を行います。Statement.executeQueryメソッドを使用します。 + + +```java +// (1)ステートメント作成 +Statement stmt = con.createStatement(); + +// (2)SQL実行 +ResultSet rs = stmt.executeQuery("SELECT * from SampleJDBC_Select where ID > 2"); + +// (3)結果の取得 +while( rs.next() ){ + int id = rs.getInt(1); + String value = rs.getString(2); + System.out.println("SQL row(id=" + id + ", value=" + value + ")"); +} +``` + +executeQueryで検索を実行し、検索結果のロウをResultSet.nextで取り出します。 +ロウの値は、データ型に対応するgetterを用いて取得します。 + +取得するロウ数のヒントをJDBCドライバに与える場合は、Statement.setFetchSizeまたはResultSet.setFetchSizeを使用します。 + +```java +// (2)SQL実行 +ResultSet rs = stmt.executeQuery("SELECT * from SampleJDBC_Select where ID > 2"); +stmt.setFetchSize(1000); +``` + +[メモ] + +- 検索結果のResultSetからロウの値を取り出す時、カラムの番号は1からの連番になります。 + +- SQLでコンテナやカラムを指定する場合、名前に記号を含む名前はダブルクォーテーションで囲む必要があります。 + + ``` + select * from "test.container"; + ``` + + + + +### プリペアードステートメントを実行する + +プリペアードステートメントを用いて検索を行うプログラムを示します。 + + +```java +// (1)プリペアードステートメント作成 +PreparedStatement pstmt = con.prepareStatement("SELECT * from SampleJDBC_Prepared where ID > ?"); + +// (2)値を設定する +pstmt.setInt(1, 3); + +// (3)SQL実行 +ResultSet rs = pstmt.executeQuery(); + +// (4)結果の取得 +while( rs.next() ){ + int id = rs.getInt(1); + String value = rs.getString(2); + System.out.println("SQL row(id=" + id + ", value=" + value + ")"); +} +``` + + + +### バイナリデータを扱う + +#### バイナリデータを登録する + +バイナリデータの登録では、PreparedStatementインタフェースを使用します。 + +ロウを登録するINSERT文でPreparedStatementを作成し、setBlob(int parameterIndex, Blob x)でバイナリデータをセットして登録します。 +PreparedStatementインタフェースにはバイナリデータをセットするメソッドが様々ありますが、GridDBのJDBCではsetBlob(int parameterIndex, Blob x)のみをサポートしています。 + +Blobオブジェクトは、SerialBlobなどのBlobを実装したクラスを使用します。Blobオブジェクトを生成するConnectionインタフェースのcreateBlob()は未サポートです。 + +```java +// バイナリデータを格納するコンテナを作成する +stmt.executeUpdate("CREATE TABLE SampleJDBC_BlobData ( id integer PRIMARY KEY, data blob )"); +stmt.close(); + +// ファイルからバイナリデータを読み込み登録する +// (1)プリペアードステートメントを作成する +PreparedStatement pstmt = con.prepareStatement("INSERT INTO SampleJDBC_BlobData(id, data) VALUES(?, ?)"); + +// (2)ファイルからバイナリファイルを読み込む +File file = new File("JDBCBlobData.class"); +FileInputStream fis = new FileInputStream(file); + byte[] b = new byte[1]; + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + while (fis.read(b) > 0) { + baos.write(b); + } + baos.close(); + fis.close(); + b = baos.toByteArray(); + + // (3)BLOBをセットする +SerialBlob serialBlob = new SerialBlob(b); +pstmt.setBlob(2, serialBlob); +pstmt.setInt(1, 0); + +// (4)ロウを登録する +pstmt.executeUpdate(); +pstmt.close(); +``` + +[メモ] + +- PreparedStatementインターフェースでは、バイナリデータをストリームでセットするsetBinaryStreamや、setBytes(int parameterIndex, byte[] x)などはサポートしていません。 + setBlob(int parameterIndex, Blob x)を使用してください。 + + + +#### バイナリデータを取得する + +バイナリデータはResultSetのgetBinaryStreamやgetBlobなどを用いて取得します。 + +```java +// (1)検索を実行する +Statement stmt = con.createStatement(); +ResultSet rs = stmt.executeQuery("SELECT * FROM SampleJDBC_BlobData WHERE id = 0"); + +while( rs.next() ){ + // (2)バイナリデータを取得してファイルに保存する + InputStream input = rs.getBinaryStream(2); + FileOutputStream output = new FileOutputStream("jdbc_output"); + int c; + while((c=input.read())!=-1){ + output.write(c); + } + input.close(); + output.close(); +} +``` + + + + +### メタデータを取得する + +メタデータを取得するDatabaseMetaDataインタフェースやResultSetMetaDataインタフェースを用いて、 +コンテナ名一覧、コンテナのスキーマ情報や索引情報、検索結果のカラム情報などを取得できます。 +メソッドの詳細は『[GridDB JDBCドライバ説明書](../md_reference_jdbc/md_reference_jdbc.md)』をご参照ください。 + +#### コンテナ名一覧を取得する + +DatabaseMetaData.getTablesで、コンテナ名一覧を取得します。 +コンテナ名に対してワイルドカードを使った絞込み条件を指定することができます。 + + +```java +DatabaseMetaData meta = con.getMetaData(); + +// コンテナ一覧を取得する +System.out.println("DatabaseMetadata.getTables null"); + +ResultSet rs = meta.getTables(null, null, null, null); +while( rs.next() ){ + String name = rs.getString("TABLE_NAME"); + String type = rs.getString("TABLE_TYPE"); + System.out.println(" (name=" + name + ", type=" + type +")"); +} +rs.close(); + +// コンテナ名が「SampleJDBC_」で始まるコンテナ一覧を取得する +System.out.println("DatabaseMetadata.getTables SampleJDBC\\_%"); + +rs = meta.getTables(null, null, "SampleJDBC\\_%", null); +while( rs.next() ){ + String name = rs.getString("TABLE_NAME"); + String type = rs.getString("TABLE_TYPE"); + System.out.println(" (name=" + name + ", type=" + type +")"); +} +rs.close(); +``` + +#### コンテナのスキーマ情報を取得する + +DatabaseMetadata.getColumnsで、コンテナのスキーマ情報を取得します。 +カラム名やデータ型、NOT NULL制約などの情報が取得できます。 + + +```java +DatabaseMetaData meta = con.getMetaData(); + +// コンテナ"SampleJDBC_Meta1"のカラム情報を取得する +System.out.println("DatabaseMetadata.getColumns SampleJDBC_Meta1"); + +rs = meta.getColumns(null, null, "SampleJDBC_Meta1", null); +while( rs.next() ){ + String name = rs.getString("TABLE_NAME"); + String columnName = rs.getString("COLUMN_NAME"); + int columnDataType = rs.getInt("DATA_TYPE"); + String columnTypeName = rs.getString("TYPE_NAME"); + int nullable = rs.getInt("NULLABLE"); + String isNullable = rs.getString("IS_NULLABLE"); + System.out.println(" (name=" + name + ", columnName=" + columnName + + ", dataType=" + columnDataType + ", typeName=" + columnTypeName + + ", nullable="+nullable+", isNullable="+isNullable+")"); +} +rs.close(); +``` + + +#### 検索結果のメタデータを取得する + +SQLの検索結果ResultSetのメタデータを、ResultSetMetaDataインタフェースを用いて取得します。 +カラムの名前やデータ型などを取得できます。 + +```java +// (1)SQL実行 +Statement stmt = con.createStatement(); +ResultSet rs = stmt.executeQuery("SELECT * from sqlCollection where ID > 2"); + +// (2)メタデータ取得 +ResultSetMetaData rsMeta = rs.getMetaData(); + +// (3)メタデータの値を取得 +for ( int i = 1; i <= rsMeta.getColumnCount(); i++ ){ + String columnName = rsMeta.getColumnName(i); + String columnLabelName = rsMeta.getColumnLabel(i); + String columnTypeClassName = rsMeta.getColumnClassName(i); + int columnType = rsMeta.getColumnType(i); + String columnTypeName = rsMeta.getColumnTypeName(i); + System.out.println("columnName="+columnName+", columnLabelName="+columnLabelName + + ", columnTypeClassName="+columnTypeClassName+", columnType="+columnType + + ", columnTypeName="+columnTypeName); +} +``` + + + +### JDBCではサポートしていないデータ型を持つコンテナを扱う + +JDBCでは、GridDBのデータ型の中で空間型(Geometry型)と配列型をサポートしていません。 +これらのデータ型のカラムを持つコンテナに対して、JDBCでアクセスした時のアプリケーションの動作を説明します。 + +[メモ] + +- 空間型や配列型のカラムを持つコンテナは、NoSQLインタフェースのAPIで作成できます。 + + +#### SQLを実行する(ロウ登録) + +空間型と配列型のカラムを持つコンテナに対しては、ロウを登録することはできません。 +ロウ登録のINSERT文において、サポート範囲のデータ型のカラムの値だけ指定しても、ロウを登録することはできません。 + +次のカラムを持つコンテナに対して、カラムidとdoubleだけを指定したINSERT文を実行する +プログラムを示します。このプログラムはエラーになります。 + +- カラム名:id、データ型:Integer型 +- カラム名:double, データ型:Double型 +- カラム名:geometry、データ型:Geometry型 +- カラム名:string_array、データ型:String型の配列型 + +```java +Statement stmt = con.createStatement(); +stmt.executeUpdate("INSERT INTO collection_type (id, double) VALUES (1, 192.3)"); +// →SQLExceptionが発生します。 +``` + + +#### SQLを実行する(検索) + +空間型と配列型のカラムを持つコンテナを検索した場合、それらのカラムの値を取得した結果は常にNULLです。 +ResultSetインタフェースではこれらのデータ型専用のgetterがないため、getObjectで値を取得できます。 + +次のカラムを持つコンテナに対して、検索を行うプログラムを示します。 + +- カラム名:id、データ型:Integer型 +- カラム名:double, データ型:Double型 +- カラム名:geometry、データ型:Geometry型 +- カラム名:string_array、データ型:String型の配列型 + +```java +Statement stmt = con.createStatement(); +ResultSet rs = stmt.executeQuery("SELECT * FROM collection_type"); + +while( rs.next() ){ + int id = rs.getInt(1); + Object geometry = rs.getObject(2); // NULLが返る + Object string_array = rs.getObject(3); // NULLが返る +} +``` + +Geometry型と、String型の配列型のカラムの値は、NULLが返ります。 + + +#### メタデータを取得する + +DatabaseMetadataインタフェースでカラム情報を取得した時、サポートしていない空間型、配列型の +カラムについては、データ型の名前はUNKNOWN、データ型の値はTypes.OTHERが返ります。 + + + + +# 付録 + +## APIのサポート範囲の機能詳細 + +### 接続機能 + +| GridDBの機能 | Java API | C API | JDBC | +|-----------------------------------------------------|----|-----|-------| +| マルチキャスト方式の接続 | ○ | ○ | ○ | +| 固定リスト方式の接続 | ○ | ○ | ○ | +| プロバイダ方式の接続【EE限定】 | × | × | × | +| 接続時のオプション設定(データベース) | ○ | ○ | ○ | +| 接続時のオプション設定(ログインタイムアウト) | × | × | ○ | +| 接続時のオプション設定(トランザクションタイムアウト) | ○ | ○ | × | +| 接続時のオプション設定(フェイルオーバタイムアウト) | ○ | ○ | × | +| 接続時のオプション設定(クエリタイムアウト) | × | × | ○ | +| 接続時のオプション設定(データ一貫性) | ○ | ○ | × | +| 接続時のオプション設定(コンテナキャッシュ) | ○ | ○ | × | +| 接続時のオプション設定(データアフィニティのパターン定義) | ○ | × | × | +| 接続時のオプション設定(マルチキャストパケットを受信するインターフェースアドレス) | ○ | ○ | ○ | +| クライアント設定ファイル読み込み | ○ | × | × | +| 最大接続プールサイズの設定 | ○ | ○ | × | + + + +### コンテナの機能 + +コンテナ(パーティショニングコンテナではないコンテナ)の機能について、サポート範囲を以下に示します。 + + +| GridDBの機能 | Java API | C API | JDBC | +|---------------------------------------|----------|-------|------| +| コンテナ作成(メソッドによるスキーマ定義) | ○ GridStore.putContainer | ○ gsPutContainerGeneral | ○(SQL) CREATE TABLE | +| コンテナ作成(クラスによるスキーマ定義) | ○ GridStore.putContainer | ○ gsPutContainer | × | +| コンテナ削除 | ○ GridStore.dropContainer | ○ gsDropContainer | ○(SQL) DROP TABLE | +| カラム追加 | ○ GridStore.putContainer | ○ gsPutContainer
gsPutContainerGeneral | ○(SQL) ALTER TABLE | +| カラム削除 | ○ GridStore.putContainer | ○ gsPutContainer
gsPutContainerGeneral | × | +| 索引(名前なし)作成 | ○ Container.createIndex | ○ gsCreateIndex | × | +| 索引(名前あり)作成 | ○ Container.createIndex | ○ gsCreateIndexDetail | ○(SQL) CREATE INDEX | +| 索引削除 | ○ Container.dropIndex | ○ gsDropIndex
gsDropIndexDetail | ○(SQL) DROP INDEX | +|---------------------------|----------------------------|-----------------------------|----------------| +| コンテナ作成のオプション設定(データアフィニティ) | ○ ContainerInfo.setDataAffinity | ○
GSContainerInfo.dataAffinity | ○(SQL) CREATE TABLE | +| コンテナ作成のオプション設定(ノードアフィニティ) | ○ コンテナ名で指定 | ○ コンテナ名で指定 | ○(SQL) コンテナ名で指定 | +| コンテナ作成のオプション設定(NOT NULL制約) | ○ ColumnInfo | ○ GSColumnInfo.options | ○(SQL) | +|---------------------------|----------------------------|-----------------------------|----------------| +| コンテナオブジェクト取得 | ○ GridStore.getContainer | ○ gsGetContainerGeneral | × | +| コンテナのカラム情報取得 | ○ Container.getContainerInfo | ○ gsGetContainerInfo | ○ | +| コンテナの索引情報取得 | ○ Container.getIndexInfo | ○ gsGetContainerInfo | ○ | +|---------------------------|----------------------------|-----------------------------|----------------| +| ロウ取得(ロウキー指定) | ○ Container.get(K key) | ○ gsGetRow | ○(SQL) | +| ロウ取得(参照ロック) | ○ Container.get(K key, boolean forUpdate) | ○ gsGetRowForUpdate | × | +| ロウ登録 | ○ Container.put(R row) | ○ gsPutRow | ○(SQL) | +| ロウ登録(ロウキー指定) | ○ Container.put(K key, R row) | ○ gsPutRowGeneral | ○(SQL) | +| 複数ロウ登録 | ○ Container.put(Collection rowCollection) | ○ gsPutMultipleRows | ○(SQL) | +| ロウ削除 | ○ Container.remove | ○ gsDeleteRow | ○(SQL) | +|---------------------------|----------------------------|-----------------------------|----------------| +| ロウオブジェクト生成 | ○ Container.createRow | ○ gsCreateRowByContainer
gsCreateRowByStore | × | +| ロウオブジェクトの初期値(NULL使用有無)設定 | ○ ColumnInfo(..,boolean defaultValueNull,..) | ○ | × | +| ロウオブジェクトのNULL参照・設定 | ○ Row.setNull
Row.isNull | ○ | × | +|---------------------------|----------------------------|-----------------------------|----------------| +| TQLクエリ生成 | ○ Container.query | ○ gsQuery | × | +| TQLフェッチ(ロックなし) | ○ Query.fetch | ○ gsFetch | × | +| TQLフェッチ(ロックあり) | ○ Query.fetch | ○ gsFetch | × | +| TQL結果件数取得 | ○ RowSet.size | ○ gsGetRowSetSize | × | +| TQLカーソル確認 | ○ RowSet.hasNext | ○ gsHasNextRow | × | +| TQLカーソル移動 | ○ RowSet.next | ○ gsGetNextRow | × | +| TQLカーソル位置のロウ更新 | ○ RowSet.update | ○ gsUpdateCurrentRow | × | +| TQLカーソル位置のロウ削除 | ○ RowSet.remove | ○ gsDeleteCurrentRow | × | +|---------------------------|----------------------------|-----------------------------|----------------| +| SQL実行 | × | × | ○ | +|---------------------------|----------------------------|-----------------------------|----------------| +| コミットモード設定 | ○ Container.setAutoCommit | ○ gsSetAutoCommit | × | +| コミット | ○ Container.commit | ○ gsCommit | × | +| アボート | ○ Container.abort | ○ gsAbort | × | +| データフラッシュ | ○ Container.flush | ○ gsFlush | × | +|---------------------------|----------------------------|-----------------------------|----------------| +| 複数コンテナのロウ登録 | ○ GridStore.multiPut | ○ gsPutMultipleContainerRows | × | +| 複数コンテナのロウ取得 | ○ GridStore.multiGet | ○ gsGetMultipleContainerRows | × | +| 複数コンテナのTQL実行 | ○ GridStore.fetchAll | ○ gsFetchAll | × | + + + +**時系列コンテナ特有の機能** + +| GridDBの機能 | Java API | C API | JDBC | +|-----------------------------|---------|--------|------| +| ロウ取得(時刻の隣接指定) | ○ TimeSeries.get | ○ gsGetRowByBaseTime | × | +| ロウ取得(集計演算) | ○ TimeSeries.aggregate | ○ gsAggregateTimeSeries | × | +| ロウ取得(補間演算) | ○ TimeSeries.interpolate | ○ gsInterpolateTimeSeriesRow | × | +| サンプリングクエリ生成 | ○ TimeSeries.query | ○ gsQueryByTimeSeriesSampling | × | +| ロウ登録(現時刻をもつ新規ロウ追加) | ○ TimeSeries.append | ○ gsAppendTimeSeriesRow | × | + + + +**コレクション特有の機能** + +| GridDBの機能 | Java API | C API | JDBC | +|------------------------------|----------|-------|------| +| 空間型の検索条件のクエリ生成 | ○ Collection.query(java.lang.String column, Geometry geometry, GeometryOperator geometryOp) | ○ gsQueryByGeometry | × | +| 空間型の検索条件のクエリ生成(除外範囲付き) | ○ Collection.query(java.lang.String column, Geometry geometryIntersection, Geometry geometryDisjoint) | ○ gsQueryByGeometryWithDisjointCondition | × | + + + + + + +### パーティショニングコンテナの機能 + +パーティショニングコンテナの機能について、サポート範囲を以下に示します。 + +| GridDBの機能 | Java API | C API | JDBC | +|---------------------------------------------------|----------|---------|---------| +| コンテナ作成(ハッシュパーティショニング) | × | × | ○(SQL) | +| コンテナ作成(インターバルパーティショニング) | × | × | ○(SQL) | +| コンテナ作成(インターバルハッシュパーティショニング) | × | × | ○(SQL) | +| コンテナ削除 | × | × | ○(SQL) | +| カラム追加 | × | × | ○(SQL) | +| カラム削除 | × | × | × | +| 索引(名前なし)作成・削除 | × | × | × | +| 索引(名前あり)作成・削除 | × | × | ○(SQL) | +|--------------------------------------|----------------------|------------|-----------| +| コンテナ作成のオプション設定(データアフィニティ) | × | × | ○(SQL) | +| コンテナ作成のオプション設定(ノードアフィニティ) | × | × | × | +| コンテナ作成のオプション設定(NOT NULL制約) | × | × | ○(SQL) | +| コンテナ作成のオプション設定(パーティション期限解放) | × | × | ○(SQL) | +|--------------------------------------|----------------------|------------|-----------| +| コンテナオブジェクト取得 | ○ GridStore.getContainer | × | × | +| コンテナのカラム情報取得 | ○ Container.getContainerInfo | × | ○ | +| コンテナの索引情報取得 | ○ Container.getIndexInfo | × | ○ | +|--------------------------------------|----------------------|------------|-----------| +| ロウ取得(ロウキー指定) | ○ Container.get(K key) | × | ○(SQL) | +| ロウ取得(参照ロック) | × | × | × | +| ロウ登録 | ○ Container.put(R row) | × | ○(SQL) | +| ロウ登録(ロウキー指定) | × | × | × | +| 複数ロウ登録 | ○ Container.put(Collection rowCollection) | × | ○(SQL) | +| ロウ削除 | ○ Container.remove(K key) | × | ○(SQL) | +|--------------------------------------|----------------------|------------|-----------| +| ロウオブジェクト生成 | ○ Container.createRow | × | × | +| ロウオブジェクトの初期値(NULL使用有無)設定 | ○ ColumnInfo(..,boolean defaultValueNull,..) | × | × | +| ロウオブジェクトのNULL参照・設定 | ○ Row.setNull
Row.isNull | × | × | +|--------------------------------------|----------------------|------------|-----------| +| TQLクエリ生成 | ○ Container.query | × | × | +| TQLフェッチ(ロックなし) | ○ Query.fetch | × | × | +| TQLフェッチ(ロックあり) | × | × | × | +| TQL結果件数取得 | ○ RowSet.size | × | × | +| TQLカーソル確認 | ○ RowSet.hasNext | × | × | +| TQLカーソル移動 | ○ RowSet.next | × | × | +| TQLカーソル位置のロウ更新 | × | × | × | +| TQLカーソル位置のロウ削除 | × | × | × | +|--------------------------------------|----------------------|------------|-----------| +| SQL実行 | × | × | ○ | +|--------------------------------------|----------------------|------------|-----------| +| コミットモード設定 | × | × | × | +| コミット | × | × | × | +| アボート | × | × | × | +| データフラッシュ | ○ Container.flush | × | × | +|--------------------------------------|----------------------|------------|-----------| +| 複数コンテナのロウ登録 | ○ GridStore.multiPut | × | × | +| 複数コンテナのロウ取得 | ○ GridStore.multiGet | × | × | +| 複数コンテナのTQL実行 | ○ GridStore.fetchAll | × | × | + + + +**時系列コンテナ特有の機能** + +| GridDBの機能 | Java API | C API | JDBC | +|-----------------------------|-----|----|----| +| ロウ取得(時刻の隣接指定) | × | × | × | +| ロウ取得(集計演算) | × | × | × | +| ロウ取得(補間演算) | × | × | × | +| サンプリングクエリ生成 | × | × | × | +| ロウ登録(現時刻をもつ新規ロウ追加) | × | × | × | + + + +**コレクション特有の機能** + +| GridDBの機能 | Java API | C API | JDBC | +|-----------------------------|----|----|----| +| 空間型の検索条件のクエリ生成 | × | × | × | +| 空間型の検索条件のクエリ生成(除外範囲付き) | × | × | × | + + + +### その他の機能 + +| GridDBの機能 | Java API | C API | JDBC | +|--------------------------------|---------|--------|--------| +| パーティションコントローラ取得 | ○ GridStore.getPartitionController | ○ gsGetPartitionController | × | +| パーティション数取得 | ○ PartitionController. getPartitionCount | ○ gsGetPartitionCount | × | +| パーティション単位のコンテナ数取得 | ○ PartitionController. getContainerCount | ○ gsGetPartitionContainerCount | × | +| パーティション単位のコンテナ名取得 | ○ PartitionController. getContainerNames | ○ gsGetPartitionContainerNames | × | +| ノードアドレス一覧取得 | ○ PartitionController. getHosts | ○ gsGetPartitionHosts | × | +| オーナアドレス取得 | ○ PartitionController. getOwnerHost | ○ gsGetPartitionOwnerHost | × | +|--------------------------------|--------------------------|---------------------------|--------| +| 現在時刻取得 | ○ TimestampUtils.current | ○ gsCurrentTime | × | +| 時刻加算 | ○ TimestampUtils.add | ○ gsAddTime | × | +| 文字列からTimestamp型への変換 | ○ TimestampUtils.parse | ○ gsParseTime | × | +| Timestamp型から文字列への変換 | ○ TimestampUtils.format | ○ gsFormatTime | × | +|--------------------------------|--------------------------|---------------------------|--------| +| 複数コンテナのロウ取得の個別条件設定 | ○ RowKeyPredicate.add | ○ gsAddPredicateKeyXXXXX | × | +| 複数コンテナのロウ取得の範囲条件設定 | ○ RowKeyPredicate.setStart
RowKeyPredicate.setFinish | ○ gsSetPredicateStartKeyXXXXX
gsSetPredicateFinishKeyXXXXX | × | + + + +## Java APIのプロパティの外部ファイル指定方法 + +Java APIで、クラスタ接続のプロパティを外部ファイルで指定する方法は、次の2種類があります。 + +- JavaのPropertiesのファイル読み込みを使用する +- Java APIの「クライアント設定ファイル読み込み機能」を使用する + +外部ファイルで指定すると、アプリケーションのソースを修正せずに接続先などのプロパティを変更することができます。 + +### JavaのPropertiesのファイル読み込みを使用する + +Propertiesオブジェクトで、プロパティファイルを読み込みます。 + +```java +Properties prop = new Properties(); +prop.load(new FileInputStream("connect.properties")); +GridStore store = GridStoreFactory.getInstance().getGridStore(prop); +``` + +プロパティファイルには、プロパティを記載します。 + +``` +notificationAddress=239.0.0.1 +notificationPort=31999 +clusterName=myCluster +database=public +user=admin +password=admin +``` + +### Java APIの「クライアント設定ファイル読み込み機能」を使用する + +Java APIには、接続のプロパティを記載したファイル「クライアント設定ファイル」を自動的に読み込む機能があります。 + +この機能を用いて接続する場合には、以下のライブラリを使用します。 + +- gridstore-conf.jar + +- 手順 + - a)クライアント設定ファイルを作成し、プロパティを記述する + - ファイル名は`gs_client.properties`を指定する + - プロパティキーの前に”store."を付ける + + ``` + store.notificationAddress=239.0.0.1 + store.notificationPort=31999 + store.clusterName=myCluster + store.user=admin + store.password=admin + ``` + + - b) クラスパスに`gridstore-conf.jar`と`gs_client.properties`を指定する + + ``` + 例: + export CLASSPATH=${CLASSPATH}:/usr/share/java/gridstore.jar:/usr/share/java/gridstore-conf.jar:gs_client.properties + ``` + + - c) ソースにはプロパティを指定しない。getGridStoreメソッドに空のPropertiesオブジェクトを渡す。ファイル名`gs_client.properties`を指定する必要はありません。自動的に読み込まれます。 + + ```java + Properties prop = new Properties(); + GridStore store = GridStoreFactory.getInstance().getGridStore(prop); + ``` + +- Propertiesオブジェクトとクライアント設定ファイルの両方でプロパティを指定した場合は、クライアント設定ファイルの情報が優先されます + +[メモ] + +- JDBCにはクライアント設定ファイル読み込み機能はありません。 + +## NoSQLインタフェースを利用する際のヒント + +### 既に存在するコンテナと同じ名前でコンテナを作成した場合はどうなるのか? + +同じ名前でコンテナ作成(putContainer)すると、カラムやロウキーなどのスキーマ情報が、既に存在するコンテナと作成するコンテナで同じ内容だった場合にはコンテナ取得(getContainer)と同じ動作になります。 +スキーマ情報が異なる場合には、コンテナ作成エラーになります。 + +  + +### 既に存在するロウのロウキーと同じ値でロウ登録した場合はどうなるのか? + +ロウキーありのコンテナに対して、既に存在するロウキーと同じ値のロウキーを持つロウを登録(put)すると、既存のロウを更新します。 + +ロウキーなしのコンテナに対するロウ登録(put)は、常にロウの新規登録になります。 + +  + +### 登録先のコンテナの定義と異なるロウを登録した場合はどうなるのか? + +ロウ登録(put)がエラーになります。 + +  + +### 複数ロウの登録中に異常が発生した場合はどうなるのか? + +自動コミットモードの場合、複数ロウの登録(put(Collection rowCollection), multiPut)の途中で異常が発生すると、一部のロウのみが登録された状態になる場合があります。 + +  + +### 時系列コンテナ作成時の注意点 + +時系列コンテナには、TIMESTAMP型のロウキーを設定する必要があります。 + +そのため、第一カラムのデータ型をTIMESTAMP型にして、かつ、ロウキーの設定を有効にしてください。 + +これらに反する場合は、コンテナ作成時にエラーが発生します。 + +  + +### 時系列データの最新または最古のロウ1件を取得する方法 + +時系列コンテナで最新または最古のロウ1件を取得する場合は、選択演算を用いてください。 + +- 時系列コンテナ内の最古のロウを1件取得する + + - TIMESTAMP型の仕様上の最小の時刻を指定して、選択演算のTIME_NEXTを実行する + + ``` + SELECT TIME_NEXT(*, TIMESTAMP('1970-01-01T00:00:00.000Z')) + ``` + +- 時系列コンテナ内の最新のロウを1件取得する + + - TIMESTAMP型の仕様上の最大の時刻を指定して、選択演算のTIME_PREVを実行する + + ``` + SELECT TIME_PREV(*, TIMESTAMP('9999-12-31T23:59:59.999Z')) + ``` + +この方法を用いると、時系列コンテナのロウキー索引を使用してロウの絞込を行うため、アクセスするロウが最小限になり高速に取得できます。 + +TQLのORDER BYを用いた方法「SELECT * ORDER BY 時系列カラム DESC LIMIT 1」では、 +絞込がないため全ロウデータの読出しが発生して、性能が低下します。 + + +## 日付時刻機能を利用する上でのアプリ向けの推奨事項 + +- 極力、GridDBに対する日時データ入出力には、タイプセーフかつタイムゾーン非依存の型(TIMESTAMP)を用いることを推奨します。 + + - 例) JDBCアプリでのPreparedStatement・INSERT文を用いたデータ登録には、SQL文内で日時のString値を解釈させるのでなく、アプリ側でjava.util.Date値に変換しておきます。 + +- 極力、タイムゾーン・日時ロケール依存の処理はGridDBの外で行うことを推奨します。 + + - 例) JDBCアプリでの日時表示加工は、SQL文内に記述せずアプリ側で既存のJavaライブラリを用います。 + ※その方が機能も豊富でGridDBからの取得コストも低くなります。 + +- やむを得ない状況に限り、GridDBの日付時刻機能・タイムゾーン依存機能を使用することを推奨します。 + + - 例) 年月日単位でのグルーピング演算 + - 例) BIツールに向けた日時表示加工 diff --git a/manuals/GridDB_C_API_Reference.html b/manuals/md_reference_c_api/md_reference_c_api.html similarity index 61% rename from manuals/GridDB_C_API_Reference.html rename to manuals/md_reference_c_api/md_reference_c_api.html index 763bd2b..6f20320 100644 --- a/manuals/GridDB_C_API_Reference.html +++ b/manuals/md_reference_c_api/md_reference_c_api.html @@ -1,17848 +1,19501 @@ - - - - -GridDB C APIリファレンス - - - - - - - - -
- -

GridDB C APIリファレンス

- - - - - - -
-

1 API

-
- -
※【注意点】 C APIの空間データは現バージョンではサポートしていません。Java APIを用いてください。 -
- -
- -
-

1.1 API一覧

-
-
-
C API
-
-
-

GridDBの公開C言語インタフェースを定義します

- - - -
-
-
-
gridstore.h File Reference
-
-
- -

GridDBのC言語向け公開API. -More...

-
#include <stdlib.h>
-#include <stdint.h>
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Classes

struct  GSBlobTag
 ロウオブジェクトにおけるBLOB構造を表します。More...
 
struct  GSPropertyEntryTag
 プロパティの構成エントリです。More...
 
struct  GSColumnCompressionTag
 特定のカラムの圧縮設定を表します。More...
 
struct  GSCollectionPropertiesTag
 コレクションの構成オプションを表します。More...
 
struct  GSTimeSeriesPropertiesTag
 時系列を新規作成または変更する際に使用される、オプションの構成情報を表します。More...
 
struct  GSColumnInfoTag
 カラムのスキーマに関する情報を表します。More...
 
struct  GSTriggerInfoTag
 トリガに関する情報を表します。More...
 
struct  GSIndexInfoTag
 索引の設定内容を表します。More...
 
struct  GSContainerInfoTag
 特定のコンテナに関する情報を表します。More...
 
struct  GSBindingTag
 ロウオブジェクトとロウデータとの対応関係を表すバインディング情報です。More...
 
struct  GSQueryAnalysisEntryTag
 クエリプランならびにクエリ処理解析結果を構成する一連の情報の一つを示します。More...
 
struct  GSContainerRowEntryTag
 複数のコンテナの複数のロウを一括して操作する場合に用いる、コンテナ別のロウ内容エントリです。More...
 
struct  GSRowKeyPredicateEntryTag
 複数のコンテナに対する取得条件を表すための、コンテナ別の合致条件エントリです。More...
 
union  GSValueTag
 ロウフィールドに格納できるいずれかの型の値です。More...
 
struct  GSTimeZoneTag
 タイムゾーン情報を表します。More...
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Macros

-#define GS_CLIENT_VERSION_MAJOR   4
 GridDBクライアントのメジャーバージョンを表す数値です。
 
-#define GS_CLIENT_VERSION_MINOR   3
 GridDBクライアントのマイナーバージョンを表す数値です。
 
-#define GS_TRUE   1
 真であることを示すブール型値です。
 
-#define GS_FALSE   0
 偽であることを示すブール型値です。
 
#define GS_RESULT_OK   0
 GridDBに対する命令の実行に成功したことを示す、実行結果コードの値です。More...
 
#define GS_SUCCEEDED(result)   ((result) == GS_RESULT_OK)
 実行結果コードに基づきGridDBに対する命令の実行に成功したかどうかのブール値を求めるマクロです。More...
 
-#define GS_COLUMN_COMPRESSION_INITIALIZER   { NULL, GS_FALSE, 0, 0, 0 }
 GSColumnCompressionの初期化子です。
 
-#define GS_COLLECTION_PROPERTIES_INITIALIZER   { 0 }
 GSCollectionPropertiesの初期化子です。
 
#define GS_TIME_SERIES_PROPERTIES_INITIALIZER
 GSTimeSeriesPropertiesの初期化子です。More...
 
-#define GS_COLUMN_INFO_INITIALIZER   { NULL, GS_TYPE_STRING, GS_INDEX_FLAG_DEFAULT, 0 }
 GSColumnInfoの初期化子です。
 
-#define GS_TRIGGER_INFO_INITIALIZER
 GSTriggerInfoの初期化子です。
 
#define GS_INDEX_INFO_INITIALIZER   { NULL, GS_INDEX_FLAG_DEFAULT, -1, NULL, 0, NULL, 0, NULL }
 GSIndexInfoの初期化子です。More...
 
-#define GS_CONTAINER_INFO_INITIALIZER
 GSContainerInfoの初期化子です。
 
-#define GS_QUERY_ANALYSIS_ENTRY_INITIALIZER   { 0, 0, NULL, NULL, NULL, NULL }
 GSQueryAnalysisEntryの初期化子です。
 
#define GS_CONTAINER_ROW_ENTRY_INITIALIZER   { NULL, NULL, 0 }
 GSContainerRowEntryの初期化子です。More...
 
#define GS_ROW_KEY_PREDICATE_ENTRY_INITIALIZER   { NULL, NULL }
 GSRowKeyPredicateEntryの初期化子です。More...
 
#define GS_TIME_ZONE_INITIALIZER   { { 0 } }
 GSTimeZoneの初期化子です。More...
 
#define GS_TIMESTAMP_DEFAULT   0
 時刻1970-01-01T00:00:00Zに相当するGSTimestamp値です。More...
 
#define GS_TIME_STRING_SIZE_MAX   32
 TIMESTAMP型値の文字列表現を格納するための文字列バッファにおける、終端文字を含むバイト単位での最大サイズです。More...
 
#define GS_TIME_ZONE_STRING_SIZE_MAX   8
 GSTimeZone値の文字列表現を格納するための文字列バッファにおける、終端文字を含むバイト単位での最大サイズです。More...
 
#define GS_GET_STRUCT_BINDING(type)   GS_STRUCT_BINDING_GETTER_NAME(type) ()
 ユーザ定義構造体とコンテナスキーマとの対応関係の定義を取得します。More...
 
#define GS_STRUCT_BINDING(type, entries)
 ユーザ定義構造体とコンテナスキーマとの対応関係を定義します。More...
 
#define GS_STRUCT_BINDING_NAMED_ELEMENT(name, member, memberType)
 カラム名を指定して、ユーザ定義構造体メンバと基本型カラムスキーマとの対応関係を定義します。More...
 
#define GS_STRUCT_BINDING_NAMED_KEY(name, member, memberType)
 カラム名を指定して、ユーザ定義構造体メンバとロウキー付き基本型カラムスキーマとの対応関係を定義します。More...
 
#define GS_STRUCT_BINDING_NAMED_ARRAY(name, member, sizeMember, elementType)
 カラム名を指定して、ユーザ定義構造体メンバと配列型カラムスキーマとの対応関係を定義します。More...
 
#define GS_STRUCT_BINDING_ELEMENT(member, memberType)
 ユーザ定義構造体メンバと基本型カラムスキーマとの対応関係を定義します。More...
 
#define GS_STRUCT_BINDING_KEY(member, memberType)
 ユーザ定義構造体メンバとロウキー付き基本型カラムスキーマとの対応関係を定義します。More...
 
#define GS_STRUCT_BINDING_ARRAY(member, sizeMember, elementType)
 ユーザ定義構造体メンバと配列型カラムスキーマとの対応関係を定義します。More...
 
#define GS_STRUCT_BINDING_COMPOSITE_KEY(member, bindingType)
 ユーザ定義構造体メンバと複合ロウキー付きカラムスキーマとの対応関係を定義します。More...
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Typedefs

typedef char GSChar
 GridDB APIで使用される標準の文字の型です。More...
 
typedef char GSBool
 GridDB APIで使用されるブール型です。More...
 
-typedef int32_t GSEnum
 列挙型
 
-typedef int64_t GSTimestamp
 GridDB上のTIMESTAMP型と対応する時刻型です。ミリ秒単位のUNIX時刻を保持します。
 
typedef struct
-GSGridStoreFactoryTag 
GSGridStoreFactory
 GSGridStoreインスタンスを管理します。More...
 
typedef struct GSGridStoreTag GSGridStore
 1つのGridDBシステムが管理するデータ全体を操作するための機能を提供します。More...
 
typedef struct GSContainerTag GSContainer
 同一タイプのロウ集合からなるGridDBの構成要素に対しての、管理機能を提供します。More...
 
-typedef struct GSQueryTag GSQuery
 特定のGSContainerに対応付けられたクエリを保持し、結果取得方法の設定ならびに実行・結果取得を行う機能を持ちます。
 
typedef struct GSRowSetTag GSRowSet
 クエリ実行より求めたロウの集合を管理します。More...
 
typedef struct
-GSAggregationResultTag 
GSAggregationResult
 集計演算の結果を保持します。More...
 
typedef GSContainer GSCollection
 ロウ集合を汎用的に管理するためのコンテナです。More...
 
typedef GSContainer GSTimeSeries
 時刻をロウキーとする、時系列処理に特化したコンテナです。More...
 
typedef struct GSRowTag GSRow
 任意のスキーマについて汎用的にフィールド操作できるロウです。More...
 
typedef GSRow GSRowKey
 ロウキーに関するカラムのみから構成されるGSRowの一種です。More...
 
typedef struct GSRowKeyPredicateTag GSRowKeyPredicate
 ロウキーの合致条件を表します。More...
 
typedef struct
-GSPartitionControllerTag 
GSPartitionController
 パーティション状態の取得や操作のためのコントローラです。More...
 
-typedef int32_t GSResult
 GridDBに対する命令の実行結果コードの型です。
 
-typedef struct GSBlobTag GSBlob
 ロウオブジェクトにおけるBLOB構造を表します。
 
-typedef struct GSPropertyEntryTag GSPropertyEntry
 プロパティの構成エントリです。
 
typedef GSEnum GSFetchOption
 
typedef GSEnum GSQueryOrder
 
typedef int32_t GSIndexTypeFlags
 
typedef GSEnum GSAggregation
 
typedef GSEnum GSInterpolationMode
 
typedef GSEnum GSTimeOperator
 
typedef GSEnum GSGeometryOperator
 
typedef GSEnum GSCompressionMethod
 
typedef GSEnum GSTimeUnit
 
typedef GSEnum GSContainerType
 
typedef GSEnum GSType
 
typedef int32_t GSTypeOption
 カラムに関するオプション設定を示すフラグ値のビット和です。More...
 
typedef GSEnum GSRowSetType
 
typedef struct
-GSColumnCompressionTag 
GSColumnCompression
 特定のカラムの圧縮設定を表します。More...
 
typedef struct
-GSCollectionPropertiesTag 
GSCollectionProperties
 コレクションの構成オプションを表します。More...
 
typedef struct
-GSTimeSeriesPropertiesTag 
GSTimeSeriesProperties
 時系列を新規作成または変更する際に使用される、オプションの構成情報を表します。More...
 
-typedef struct GSColumnInfoTag GSColumnInfo
 カラムのスキーマに関する情報を表します。
 
typedef GSEnum GSTriggerType
 
typedef int32_t GSTriggerEventTypeFlags
 
typedef struct GSTriggerInfoTag GSTriggerInfo
 トリガに関する情報を表します。More...
 
typedef struct GSIndexInfoTag GSIndexInfo
 索引の設定内容を表します。More...
 
-typedef struct GSContainerInfoTag GSContainerInfo
 特定のコンテナに関する情報を表します。
 
-typedef struct GSBindingTag GSBinding
 ロウオブジェクトとロウデータとの対応関係を表すバインディング情報です。
 
typedef struct
-GSQueryAnalysisEntryTag 
GSQueryAnalysisEntry
 クエリプランならびにクエリ処理解析結果を構成する一連の情報の一つを示します。More...
 
typedef struct
-GSContainerRowEntryTag 
GSContainerRowEntry
 複数のコンテナの複数のロウを一括して操作する場合に用いる、コンテナ別のロウ内容エントリです。More...
 
typedef struct
-GSRowKeyPredicateEntryTag 
GSRowKeyPredicateEntry
 複数のコンテナに対する取得条件を表すための、コンテナ別の合致条件エントリです。More...
 
typedef union GSValueTag GSValue
 ロウフィールドに格納できるいずれかの型の値です。More...
 
typedef struct GSTimeZoneTag GSTimeZone
 タイムゾーン情報を表します。More...
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Enumerations

enum  GSFetchOptionTag { GS_FETCH_LIMIT, -GS_FETCH_PARTIAL_EXECUTION = (GS_FETCH_LIMIT + 2) - }
 クエリ実行結果を取得する際のオプション項目です。More...
 
enum  GSQueryOrderTag { GS_ORDER_ASCENDING, -GS_ORDER_DESCENDING - }
 クエリにおける要求ロウ順序を表します。More...
 
enum  GSIndexTypeFlagTag { GS_INDEX_FLAG_DEFAULT = -1, -GS_INDEX_FLAG_TREE = 1 << 0, -GS_INDEX_FLAG_HASH = 1 << 1, -GS_INDEX_FLAG_SPATIAL = 1 << 2 - }
 GSContainerに設定する索引の種別を示します。More...
 
enum  GSAggregationTag {
-  GS_AGGREGATION_MINIMUM, -GS_AGGREGATION_MAXIMUM, -GS_AGGREGATION_TOTAL, -GS_AGGREGATION_AVERAGE, -
-  GS_AGGREGATION_VARIANCE, -GS_AGGREGATION_STANDARD_DEVIATION, -GS_AGGREGATION_COUNT, -GS_AGGREGATION_WEIGHTED_AVERAGE -
- }
 ロウ集合またはその特定のカラムに対する、集計演算の方法を示します。More...
 
enum  GSInterpolationModeTag { GS_INTERPOLATION_LINEAR_OR_PREVIOUS, -GS_INTERPOLATION_EMPTY - }
 ロウの補間方法の種別を表します。More...
 
enum  GSTimeOperatorTag { GS_TIME_OPERATOR_PREVIOUS, -GS_TIME_OPERATOR_PREVIOUS_ONLY, -GS_TIME_OPERATOR_NEXT, -GS_TIME_OPERATOR_NEXT_ONLY - }
 GSTimeSeriesのキー時刻に基づく、ロウの特定方法を表します。More...
 
enum  GSGeometryOperatorTag { GS_GEOMETRY_OPERATOR_INTERSECT - }
 空間範囲同士の関係性についての制約を定義します。More...
 
enum  GSCompressionMethodTag { GS_COMPRESSION_NO, -GS_COMPRESSION_SS, -GS_COMPRESSION_HI - }
 圧縮方式の種別を表します。More...
 
enum  GSTimeUnitTag {
-  GS_TIME_UNIT_YEAR, -GS_TIME_UNIT_MONTH, -GS_TIME_UNIT_DAY, -GS_TIME_UNIT_HOUR, -
-  GS_TIME_UNIT_MINUTE, -GS_TIME_UNIT_SECOND, -GS_TIME_UNIT_MILLISECOND -
- }
 時系列処理で用いる時間の単位を示します。More...
 
enum  GSContainerTypeTag { GS_CONTAINER_COLLECTION, -GS_CONTAINER_TIME_SERIES - }
 コンテナの種別を表します。More...
 
enum  GSTypeTag {
-  GS_TYPE_STRING, -GS_TYPE_BOOL, -GS_TYPE_BYTE, -GS_TYPE_SHORT, -
-  GS_TYPE_INTEGER, -GS_TYPE_LONG, -GS_TYPE_FLOAT, -GS_TYPE_DOUBLE, -
-  GS_TYPE_TIMESTAMP, -GS_TYPE_GEOMETRY, -GS_TYPE_BLOB, -GS_TYPE_STRING_ARRAY, -
-  GS_TYPE_BOOL_ARRAY, -GS_TYPE_BYTE_ARRAY, -GS_TYPE_SHORT_ARRAY, -GS_TYPE_INTEGER_ARRAY, -
-  GS_TYPE_LONG_ARRAY, -GS_TYPE_FLOAT_ARRAY, -GS_TYPE_DOUBLE_ARRAY, -GS_TYPE_TIMESTAMP_ARRAY, -
-  GS_TYPE_NULL = -1 -
- }
 GridDB上のフィールド値の型を表します。More...
 
enum  GSTypeOptionTag { GS_TYPE_OPTION_NULLABLE = 1 << 1, -GS_TYPE_OPTION_NOT_NULL = 1 << 2, -GS_TYPE_OPTION_DEFAULT_VALUE_NULL = 1 << 3, -GS_TYPE_OPTION_DEFAULT_VALUE_NOT_NULL = 1 << 4 - }
 カラムに関するオプション設定を示します。More...
 
enum  GSRowSetTypeTag { GS_ROW_SET_CONTAINER_ROWS, -GS_ROW_SET_AGGREGATION_RESULT, -GS_ROW_SET_QUERY_ANALYSIS - }
 GSRowSetから取り出すことのできる内容の種別です。More...
 
enum  GSTriggerTypeTag { GS_TRIGGER_REST, -GS_TRIGGER_JMS - }
 トリガの種別を表します。More...
 
enum  GSTriggerEventTypeFlagTag { GS_TRIGGER_EVENT_PUT = 1 << 0, -GS_TRIGGER_EVENT_DELETE = 1 << 1 - }
 トリガで監視対象とする更新操作種別を表します。More...
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

GS_DLL_PUBLIC void GS_API_CALL gsCloseFactory (GSGridStoreFactory **factory, GSBool allRelated)
 必要に応じ、指定のGSGridStoreFactoryに関連するリソースをクローズします。More...
 
GS_DLL_PUBLIC
-GSGridStoreFactory
-*GS_API_CALL 
gsGetDefaultFactory ()
 デフォルトのGSGridStoreFactoryインスタンスを取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetGridStore (GSGridStoreFactory *factory, const GSPropertyEntry *properties, size_t propertyCount, GSGridStore **store)
 指定のプロパティを持つGSGridStoreを取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetFactoryProperties (GSGridStoreFactory *factory, const GSPropertyEntry *properties, size_t propertyCount)
 指定のファクトリの設定を変更します。More...
 
GS_DLL_PUBLIC void GS_API_CALL gsCloseGridStore (GSGridStore **store, GSBool allRelated)
 指定のGSGridStoreインスタンスについて、対応するGridDBクラスタとの接続状態を解除し、必要に応じて指定のインスタンスならびに関連するリソースを解放します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsDropCollection (GSGridStore *store, const GSChar *name)
 指定の名前を持つコレクションを削除します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsDropTimeSeries (GSGridStore *store, const GSChar *name)
 指定の名前を持つ時系列を削除します。More...
 
GS_STATIC_HEADER_FUNC_SPECIFIER
-GSResult 
gsGetCollection (GSGridStore *store, const GSChar *name, const GSBinding *binding, GSCollection **collection)
 指定の名前のコレクションを操作するためのGSCollectionインスタンスを取得します。More...
 
GS_STATIC_HEADER_FUNC_SPECIFIER
-GSResult 
gsGetContainerInfo (GSGridStore *store, const GSChar *name, GSContainerInfo *info, GSBool *exists)
 指定の名前のコンテナに関する情報を取得します。More...
 
GS_STATIC_HEADER_FUNC_SPECIFIER
-GSResult 
gsGetTimeSeries (GSGridStore *store, const GSChar *name, const GSBinding *binding, GSTimeSeries **timeSeries)
 指定の名前の時系列を操作するためのGSTimeSeriesインスタンスを取得します。More...
 
GS_STATIC_HEADER_FUNC_SPECIFIER
-GSResult 
gsPutContainer (GSGridStore *store, const GSChar *name, const GSBinding *binding, const GSContainerInfo *info, GSBool modifiable, GSContainer **container)
 バインディング情報とGSContainerInfoを指定して、コンテナを新規作成または変更します。More...
 
GS_STATIC_HEADER_FUNC_SPECIFIER
-GSResult 
gsPutCollection (GSGridStore *store, const GSChar *name, const GSBinding *binding, const GSCollectionProperties *properties, GSBool modifiable, GSCollection **collection)
 コレクションを新規作成または変更します。More...
 
GS_STATIC_HEADER_FUNC_SPECIFIER
-GSResult 
gsPutTimeSeries (GSGridStore *store, const GSChar *name, const GSBinding *binding, const GSTimeSeriesProperties *properties, GSBool modifiable, GSTimeSeries **timeSeries)
 時系列を新規作成または変更します。More...
 
GS_STATIC_HEADER_FUNC_SPECIFIER
-GSResult 
gsPutContainerGeneral (GSGridStore *store, const GSChar *name, const GSContainerInfo *info, GSBool modifiable, GSContainer **container)
 GSContainerInfoを指定して、コンテナを新規作成または変更します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetContainerGeneral (GSGridStore *store, const GSChar *name, GSContainer **container)
 GSRowによりロウ操作できるGSContainerインスタンスを取得します。More...
 
GS_STATIC_HEADER_FUNC_SPECIFIER
-GSResult 
gsPutCollectionGeneral (GSGridStore *store, const GSChar *name, const GSContainerInfo *info, GSBool modifiable, GSCollection **collection)
 GSContainerInfoを指定して、コレクションを新規作成または変更します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetCollectionGeneral (GSGridStore *store, const GSChar *name, GSCollection **collection)
 GSRowによりロウ操作できるGSCollectionインスタンスを取得します。More...
 
GS_STATIC_HEADER_FUNC_SPECIFIER
-GSResult 
gsPutTimeSeriesGeneral (GSGridStore *store, const GSChar *name, const GSContainerInfo *info, GSBool modifiable, GSTimeSeries **timeSeries)
 GSContainerInfoを指定して、時系列を新規作成または変更します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetTimeSeriesGeneral (GSGridStore *store, const GSChar *name, GSTimeSeries **timeSeries)
 GSRowによりロウ操作できるGSTimeSeriesインスタンスを取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsDropContainer (GSGridStore *store, const GSChar *name)
 指定の名前を持つコンテナを削除します。More...
 
GS_STATIC_HEADER_FUNC_SPECIFIER
-GSResult 
gsCreateRowByStore (GSGridStore *store, const GSContainerInfo *info, GSRow **row)
 GSContainerInfoを指定して、GSRowを新規作成します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsCreateRowKeyByStore (GSGridStore *store, const GSContainerInfo *info, GSRowKey **key)
 GSContainerInfoを指定して、GSRowKeyを新規作成します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsFetchAll (GSGridStore *store, GSQuery *const *queryList, size_t queryCount)
 指定された任意個数のGSQueryについて、可能な限りリクエスト単位を大きくしてクエリ実行とフェッチを行います。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsPutMultipleContainerRows (GSGridStore *store, const GSContainerRowEntry *entryList, size_t entryCount)
 任意のコンテナの任意個数のロウについて、可能な限りリクエスト単位を大きくして新規作成または更新操作を行います。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetMultipleContainerRows (GSGridStore *store, const GSRowKeyPredicateEntry *const *predicateList, size_t predicateCount, const GSContainerRowEntry **entryList, size_t *entryCount)
 指定の条件に基づき、任意のコンテナの任意個数・範囲のロウについて、可能な限りリクエスト単位を大きくして取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPartitionController (GSGridStore *store, GSPartitionController **partitionController)
 対応するGridDBクラスタについてのGSPartitionControllerを取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsCreateRowKeyPredicate (GSGridStore *store, GSType keyType, GSRowKeyPredicate **predicate)
 指定のGSTypeをロウキーの型とする合致条件を作成します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsCreateRowKeyPredicateGeneral (GSGridStore *store, const GSContainerInfo *info, GSRowKeyPredicate **predicate)
 指定のGSContainerInfoのロウキーに関するカラム定義に基づく、合致条件を作成します。More...
 
GS_DLL_PUBLIC void GS_API_CALL gsCloseContainer (GSContainer **container, GSBool allRelated)
 指定のGSContainerインスタンスについて、必要に応じこのインスタンスならびに関連するリソースを解放します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsCreateTrigger (GSContainer *container, const GSTriggerInfo *info)
 トリガを設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsCreateIndex (GSContainer *container, const GSChar *columnName, GSIndexTypeFlags flags)
 指定された名前のカラムに対し、指定された種別で名前のない索引を作成します。More...
 
GS_STATIC_HEADER_FUNC_SPECIFIER
-GSResult 
gsCreateIndexDetail (GSContainer *container, const GSIndexInfo *info)
 GSIndexInfoで設定されている内容に従い、索引を作成します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsDropTrigger (GSContainer *container, const GSChar *name)
 トリガを削除します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsDropIndex (GSContainer *container, const GSChar *columnName, GSIndexTypeFlags flags)
 指定された名前のカラムのうち、指定された種別の索引のみを削除します。More...
 
GS_STATIC_HEADER_FUNC_SPECIFIER
-GSResult 
gsDropIndexDetail (GSContainer *container, const GSIndexInfo *info)
 GSIndexInfoで設定されている内容に一致する、すべての索引を削除します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsFlush (GSContainer *container)
 これまでの更新結果をSSDなどの不揮発性記憶媒体に書き出し、すべてのクラスタノードが突然停止したとしても内容が失われないようにします。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRow (GSContainer *container, const void *key, void *rowObj, GSBool *exists)
 ロウキーに対応するロウの内容を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsPutRow (GSContainer *container, const void *key, const void *rowObj, GSBool *exists)
 必要に応じ別途ロウキーを指定して、ロウを新規作成または更新します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsPutMultipleRows (GSContainer *container, const void *const *rowObjs, size_t rowCount, GSBool *exists)
 指定のロウオブジェクト集合に基づき、任意個数のロウをまとめて新規作成または更新します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsQuery (GSContainer *container, const GSChar *queryString, GSQuery **query)
 指定のTQL文を実行するためのクエリを作成します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsDeleteRow (GSContainer *container, const void *key, GSBool *exists)
 指定のロウキーに対応するロウを削除します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetContainerType (GSContainer *container, GSContainerType *type)
 指定のコンテナの種別を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsCreateRowByContainer (GSContainer *container, GSRow **row)
 指定のコンテナのカラムレイアウトに基づき、ロウオブジェクトを新規作成します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsAbort (GSContainer *container)
 手動コミットモードにおいて、現在のトランザクションの操作結果を元に戻し、新たなトランザクションを開始します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsCommit (GSContainer *container)
 手動コミットモードにおいて、現在のトランザクションにおける操作結果を確定させ、新たなトランザクションを開始します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowForUpdate (GSContainer *container, const void *key, void *rowObj, GSBool *exists)
 ロウキーに対応するロウについて、更新用ロックを獲得し内容を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetAutoCommit (GSContainer *container, GSBool enabled)
 コミットモードの設定を変更します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowByInteger (GSContainer *container, int32_t key, void *rowObj, GSBool forUpdate, GSBool *exists)
 INTEGER型のロウキーに対応するロウの内容を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowByLong (GSContainer *container, int64_t key, void *rowObj, GSBool forUpdate, GSBool *exists)
 LONG型のロウキーに対応するロウの内容を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowByTimestamp (GSContainer *container, GSTimestamp key, void *rowObj, GSBool forUpdate, GSBool *exists)
 TIMESTAMP型のロウキーに対応するロウの内容を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowByString (GSContainer *container, const GSChar *key, void *rowObj, GSBool forUpdate, GSBool *exists)
 STRING型のロウキーに対応するロウの内容を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsPutRowByInteger (GSContainer *container, int32_t key, const void *rowObj, GSBool *exists)
 INTEGER型のロウキーを指定して、ロウを新規作成または更新します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsPutRowByLong (GSContainer *container, int64_t key, const void *rowObj, GSBool *exists)
 LONG型のロウキーを指定して、ロウを新規作成または更新します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsPutRowByTimestamp (GSContainer *container, GSTimestamp key, const void *rowObj, GSBool *exists)
 TIMESTAMP型のロウキーを指定して、ロウを新規作成または更新します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsPutRowByString (GSContainer *container, const GSChar *key, const void *rowObj, GSBool *exists)
 STRING型のロウキーを指定して、ロウを新規作成または更新します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsDeleteRowByInteger (GSContainer *container, int32_t key, GSBool *exists)
 INTEGER型のロウキーに対応するロウを削除します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsDeleteRowByLong (GSContainer *container, int64_t key, GSBool *exists)
 LONG型のロウキーに対応するロウを削除します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsDeleteRowByTimestamp (GSContainer *container, GSTimestamp key, GSBool *exists)
 TIMESTAMP型のロウキーに対応するロウを削除します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsDeleteRowByString (GSContainer *container, const GSChar *key, GSBool *exists)
 STRING型のロウキーに対応するロウを削除します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowGeneral (GSContainer *container, GSRowKey *keyObj, GSRow *rowObj, GSBool forUpdate, GSBool *exists)
 指定のGSRowKeyに対応するロウの内容をGSRowとして取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsPutRowGeneral (GSContainer *container, GSRowKey *keyObj, GSRow *rowObj, GSBool *exists)
 必要に応じ別途ロウキーを指定して、ロウを新規作成または更新します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsDeleteRowGeneral (GSContainer *container, GSRowKey *keyObj, GSBool *exists)
 指定のロウキーに対応するロウを削除します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsQueryByGeometry (GSCollection *collection, const GSChar *column, const GSChar *geometry, GSGeometryOperator geometryOp, GSQuery **query)
 指定した空間範囲条件に合致するロウ集合を求めるための、クエリを作成します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsQueryByGeometryWithDisjointCondition (GSCollection *collection, const GSChar *column, const GSChar *geometryIntersection, const GSChar *geometryDisjoint, GSQuery **query)
 除外範囲付きの空間範囲条件に合致するロウ集合を求めるための、クエリを作成します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsAggregateTimeSeries (GSTimeSeries *timeSeries, GSTimestamp start, GSTimestamp end, const GSChar *column, GSAggregation aggregation, GSAggregationResult **aggregationResult)
 開始・終了時刻を指定して、ロウ集合またはその特定のカラムに対し集計演算を行います。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsAppendTimeSeriesRow (GSTimeSeries *timeSeries, const void *rowObj, GSBool *exists)
 GridDB上の現在時刻をロウキーとして、ロウを新規作成または更新します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowByBaseTime (GSTimeSeries *timeSeries, GSTimestamp base, GSTimeOperator timeOp, void *rowObj, GSBool *exists)
 指定の時刻を基準として、関係する1つのロウを取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsInterpolateTimeSeriesRow (GSTimeSeries *timeSeries, GSTimestamp base, const GSChar *column, void *rowObj, GSBool *exists)
 指定時刻に相当するロウオブジェクトについて、線形補間などを行い生成します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsQueryByTimeSeriesRange (GSTimeSeries *timeSeries, GSTimestamp start, GSTimestamp end, GSQuery **query)
 開始時刻・終了時刻を指定して、特定範囲のロウ集合を求めるクエリを作成します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsQueryByTimeSeriesOrderedRange (GSTimeSeries *timeSeries, const GSTimestamp *start, const GSTimestamp *end, GSQueryOrder order, GSQuery **query)
 開始時刻・終了時刻・順序を指定して、特定範囲のロウ集合を求めるクエリを作成します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsQueryByTimeSeriesSampling (GSTimeSeries *timeSeries, GSTimestamp start, GSTimestamp end, const GSChar *const *columnSet, size_t columnCount, GSInterpolationMode mode, int32_t interval, GSTimeUnit intervalUnit, GSQuery **query)
 特定範囲のロウ集合をサンプリングするクエリを作成します。More...
 
GS_DLL_PUBLIC void GS_API_CALL gsCloseRow (GSRow **row)
 指定のGSRowインスタンスを解放します。More...
 
GS_STATIC_HEADER_FUNC_SPECIFIER
-GSResult 
gsGetRowSchema (GSRow *row, GSContainerInfo *schemaInfo)
 指定のロウに対応するスキーマを取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldGeneral (GSRow *row, int32_t column, const GSValue *fieldValue, GSType type)
 指定のフィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldGeneral (GSRow *row, int32_t column, GSValue *fieldValue, GSType *type)
 指定のフィールドの値とその型を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldNull (GSRow *row, int32_t column)
 指定のフィールドにNULLを設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldNull (GSRow *row, int32_t column, GSBool *nullValue)
 指定のフィールドにNULLが設定されているかどうかを返します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByString (GSRow *row, int32_t column, const GSChar *fieldValue)
 指定のSTRING型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsString (GSRow *row, int32_t column, const GSChar **fieldValue)
 指定のSTRING型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByBool (GSRow *row, int32_t column, GSBool fieldValue)
 指定のBOOL型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsBool (GSRow *row, int32_t column, GSBool *fieldValue)
 指定のBOOL型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByByte (GSRow *row, int32_t column, int8_t fieldValue)
 指定のBYTE型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsByte (GSRow *row, int32_t column, int8_t *fieldValue)
 指定のBYTE型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByShort (GSRow *row, int32_t column, int16_t fieldValue)
 指定のSHORT型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsShort (GSRow *row, int32_t column, int16_t *fieldValue)
 指定のSHORT型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByInteger (GSRow *row, int32_t column, int32_t fieldValue)
 指定のINTEGER型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsInteger (GSRow *row, int32_t column, int32_t *fieldValue)
 指定のINTEGER型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByLong (GSRow *row, int32_t column, int64_t fieldValue)
 指定のLONG型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsLong (GSRow *row, int32_t column, int64_t *fieldValue)
 指定のLONG型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByFloat (GSRow *row, int32_t column, float fieldValue)
 指定のFLOAT型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsFloat (GSRow *row, int32_t column, float *fieldValue)
 指定のFLOAT型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByDouble (GSRow *row, int32_t column, double fieldValue)
 指定のDOUBLE型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsDouble (GSRow *row, int32_t column, double *fieldValue)
 指定のDOUBLE型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByTimestamp (GSRow *row, int32_t column, GSTimestamp fieldValue)
 指定のTIMESTAMP型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsTimestamp (GSRow *row, int32_t column, GSTimestamp *fieldValue)
 指定のTIMESTAMP型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByGeometry (GSRow *row, int32_t column, const GSChar *fieldValue)
 指定のGEOMETRY型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsGeometry (GSRow *row, int32_t column, const GSChar **fieldValue)
 指定のGEOMETRY型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByBlob (GSRow *row, int32_t column, const GSBlob *fieldValue)
 指定のBLOB型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsBlob (GSRow *row, int32_t column, GSBlob *fieldValue)
 指定のBLOB型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByStringArray (GSRow *row, int32_t column, const GSChar *const *fieldValue, size_t size)
 指定のSTRING配列型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsStringArray (GSRow *row, int32_t column, const GSChar *const **fieldValue, size_t *size)
 指定のSTRING配列型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByBoolArray (GSRow *row, int32_t column, const GSBool *fieldValue, size_t size)
 指定のBOOL配列型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsBoolArray (GSRow *row, int32_t column, const GSBool **fieldValue, size_t *size)
 指定のBOOL配列型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByByteArray (GSRow *row, int32_t column, const int8_t *fieldValue, size_t size)
 指定のBYTE配列型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsByteArray (GSRow *row, int32_t column, const int8_t **fieldValue, size_t *size)
 指定のBYTE配列型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByShortArray (GSRow *row, int32_t column, const int16_t *fieldValue, size_t size)
 指定のSHORT配列型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsShortArray (GSRow *row, int32_t column, const int16_t **fieldValue, size_t *size)
 指定のSHORT配列型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByIntegerArray (GSRow *row, int32_t column, const int32_t *fieldValue, size_t size)
 指定のINTEGER配列型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsIntegerArray (GSRow *row, int32_t column, const int32_t **fieldValue, size_t *size)
 指定のINTEGER配列型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByLongArray (GSRow *row, int32_t column, const int64_t *fieldValue, size_t size)
 指定のLONG配列型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsLongArray (GSRow *row, int32_t column, const int64_t **fieldValue, size_t *size)
 指定のLONG配列型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByFloatArray (GSRow *row, int32_t column, const float *fieldValue, size_t size)
 指定のFLOAT配列型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsFloatArray (GSRow *row, int32_t column, const float **fieldValue, size_t *size)
 指定のFLOAT配列型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByDoubleArray (GSRow *row, int32_t column, const double *fieldValue, size_t size)
 指定のDOUBLE配列型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsDoubleArray (GSRow *row, int32_t column, const double **fieldValue, size_t *size)
 指定のDOUBLE配列型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByTimestampArray (GSRow *row, int32_t column, const GSTimestamp *fieldValue, size_t size)
 指定のTIMESTAMP配列型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsTimestampArray (GSRow *row, int32_t column, const GSTimestamp **fieldValue, size_t *size)
 指定のTIMESTAMP配列型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsCreateRowByRow (GSRow *row, GSRow **destRow)
 同一のフィールド値からなる新たなGSRowインスタンスを作成します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsCreateRowKeyByRow (GSRow *row, GSRowKey **key)
 ロウキーを構成するカラムのみを持ち、それらのカラムについて同一のフィールド値からなる新たなGSRowKeyインスタンスを作成します。More...
 
GS_DLL_PUBLIC void GS_API_CALL gsCloseQuery (GSQuery **query)
 指定のGSQueryインスタンスを解放します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsFetch (GSQuery *query, GSBool forUpdate, GSRowSet **rowSet)
 オプションを指定して指定のクエリを実行し、実行結果に対応するロウ集合を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetFetchOption (GSQuery *query, GSFetchOption fetchOption, const void *value, GSType valueType)
 結果取得に関するオプションを設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowSet (GSQuery *query, GSRowSet **rowSet)
 直近に実行した結果のGSRowSetを取得します。More...
 
GS_DLL_PUBLIC void GS_API_CALL gsCloseRowSet (GSRowSet **rowSet)
 指定のGSRowSetインスタンスを解放します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsDeleteCurrentRow (GSRowSet *rowSet)
 現在のカーソル位置のロウを削除します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetNextRow (GSRowSet *rowSet, void *rowObj)
 ロウ集合内の後続のロウにカーソル移動し、移動後の位置にあるロウオブジェクトを取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetNextAggregation (GSRowSet *rowSet, GSAggregationResult **aggregationResult)
 ロウ集合内の後続のロウにカーソル移動し、移動後の位置にある集計結果を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetNextQueryAnalysis (GSRowSet *rowSet, GSQueryAnalysisEntry *queryAnalysis)
 ロウ集合内の後続のロウにカーソル移動し、移動後の位置にあるクエリ解析結果エントリを取得します。More...
 
GS_DLL_PUBLIC GSRowSetType
-GS_API_CALL 
gsGetRowSetType (GSRowSet *rowSet)
 ロウ集合の種別を取得します。More...
 
GS_DLL_PUBLIC int32_t GS_API_CALL gsGetRowSetSize (GSRowSet *rowSet)
 ロウ集合のサイズ、すなわちロウ集合作成時点におけるロウの数を返します。More...
 
GS_DLL_PUBLIC GSBool GS_API_CALL gsHasNextRow (GSRowSet *rowSet)
 現在のカーソル位置を基準として、ロウ集合内に後続のロウが存在するかどうかを返します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsUpdateCurrentRow (GSRowSet *rowSet, const void *rowObj)
 現在のカーソル位置のロウについて、指定のロウオブジェクトを使用してロウキー以外の値を更新します。More...
 
GS_DLL_PUBLIC void GS_API_CALL gsCloseAggregationResult (GSAggregationResult **aggregationResult)
 指定のGSAggregationResultインスタンスを解放します。More...
 
GS_DLL_PUBLIC GSBool GS_API_CALL gsGetAggregationValue (GSAggregationResult *aggregationResult, void *value, GSType valueType)
 集計結果を指定の型の値として取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetAggregationValueAsLong (GSAggregationResult *aggregationResult, int64_t *value, GSBool *assigned)
 数値型の集計値をLONG型(int64_t)として取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetAggregationValueAsDouble (GSAggregationResult *aggregationResult, double *value, GSBool *assigned)
 数値型の集計値をDOUBLE型(double)として取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetAggregationValueAsTimestamp (GSAggregationResult *aggregationResult, GSTimestamp *value, GSBool *assigned)
 時刻型の集計値をTIMESTAMP型(GSTimestamp)で取得します。More...
 
GS_DLL_PUBLIC void GS_API_CALL gsCloseRowKeyPredicate (GSRowKeyPredicate **predicate)
 指定のGSRowKeyPredicateインスタンスを解放します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateKeyType (GSRowKeyPredicate *predicate, GSType *keyType)
 合致条件の評価対象とするロウキーの型を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateKeySchema (GSRowKeyPredicate *predicate, GSContainerInfo *info)
 合致条件の評価対象とするロウキーのスキーマを取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateStartGeneralKey (GSRowKeyPredicate *predicate, GSRowKey **keyObj)
 範囲条件の開始位置とするロウキーを取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateStartKeyGeneral (GSRowKeyPredicate *predicate, const GSValue **startKey)
 範囲条件の開始位置とする、単一カラムのロウキーの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateStartKeyAsString (GSRowKeyPredicate *predicate, const GSChar **startKey)
 範囲条件の開始位置とするSTRING型ロウキーの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateStartKeyAsInteger (GSRowKeyPredicate *predicate, const int32_t **startKey)
 範囲条件の開始位置とするINTEGER型ロウキーの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateStartKeyAsLong (GSRowKeyPredicate *predicate, const int64_t **startKey)
 範囲条件の開始位置とするLONG型ロウキーの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateStartKeyAsTimestamp (GSRowKeyPredicate *predicate, const GSTimestamp **startKey)
 範囲条件の開始位置とするTIMESTAMP型ロウキーの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateFinishGeneralKey (GSRowKeyPredicate *predicate, GSRowKey **keyObj)
 範囲条件の終了位置とするロウキーの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateFinishKeyGeneral (GSRowKeyPredicate *predicate, const GSValue **finishKey)
 範囲条件の終了位置とする、単一カラムのロウキーの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateFinishKeyAsString (GSRowKeyPredicate *predicate, const GSChar **finishKey)
 範囲条件の終了位置とするSTRING型ロウキーの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateFinishKeyAsInteger (GSRowKeyPredicate *predicate, const int32_t **finishKey)
 範囲条件の終了位置とするINTEGER型ロウキーの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateFinishKeyAsLong (GSRowKeyPredicate *predicate, const int64_t **finishKey)
 範囲条件の終了位置とするLONG型ロウキーの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateFinishKeyAsTimestamp (GSRowKeyPredicate *predicate, const GSTimestamp **finishKey)
 範囲条件の終了位置とするTIMESTAMP型ロウキーの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateDistinctGeneralKeys (GSRowKeyPredicate *predicate, GSRowKey *const **keyObjList, size_t *size)
 個別条件を構成するロウキーの集合を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateDistinctKeysGeneral (GSRowKeyPredicate *predicate, const GSValue **keyList, size_t *size)
 個別条件を構成する、単一カラムのロウキーの値の集合を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateDistinctKeysAsString (GSRowKeyPredicate *predicate, const GSChar *const **keyList, size_t *size)
 個別条件を構成するSTRING型ロウキーの値の集合を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateDistinctKeysAsInteger (GSRowKeyPredicate *predicate, const int32_t **keyList, size_t *size)
 個別条件を構成するINTEGER型ロウキーの値の集合を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateDistinctKeysAsLong (GSRowKeyPredicate *predicate, const int64_t **keyList, size_t *size)
 個別条件を構成するLONG型ロウキーの値の集合を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateDistinctKeysAsTimestamp (GSRowKeyPredicate *predicate, const GSTimestamp **keyList, size_t *size)
 個別条件を構成するTIMESTAMP型ロウキーの値の集合を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetPredicateStartGeneralKey (GSRowKeyPredicate *predicate, GSRowKey *keyObj)
 範囲条件の開始位置とするロウキーの値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetPredicateStartKeyGeneral (GSRowKeyPredicate *predicate, const GSValue *startKey, GSType keyType)
 範囲条件の開始位置とする、単一カラムのロウキーの値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetPredicateStartKeyByString (GSRowKeyPredicate *predicate, const GSChar *startKey)
 範囲条件の開始位置とするSTRING型ロウキーの値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetPredicateStartKeyByInteger (GSRowKeyPredicate *predicate, const int32_t *startKey)
 範囲条件の開始位置とするINTEGER型ロウキーの値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetPredicateStartKeyByLong (GSRowKeyPredicate *predicate, const int64_t *startKey)
 範囲条件の開始位置とするLONG型ロウキーの値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetPredicateStartKeyByTimestamp (GSRowKeyPredicate *predicate, const GSTimestamp *startKey)
 範囲条件の開始位置とするTIMESTAMP型ロウキーの値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetPredicateFinishGeneralKey (GSRowKeyPredicate *predicate, GSRowKey *keyObj)
 範囲条件の終了位置とするロウキーの値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetPredicateFinishKeyGeneral (GSRowKeyPredicate *predicate, const GSValue *finishKey, GSType keyType)
 範囲条件の終了位置とする、単一カラムのロウキーの値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetPredicateFinishKeyByString (GSRowKeyPredicate *predicate, const GSChar *finishKey)
 範囲条件の終了位置とするSTRING型ロウキーの値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetPredicateFinishKeyByInteger (GSRowKeyPredicate *predicate, const int32_t *finishKey)
 範囲条件の終了位置とするINTEGER型ロウキーの値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetPredicateFinishKeyByLong (GSRowKeyPredicate *predicate, const int64_t *finishKey)
 範囲条件の終了位置とするLONG型ロウキーの値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetPredicateFinishKeyByTimestamp (GSRowKeyPredicate *predicate, const GSTimestamp *finishKey)
 範囲条件の終了位置とするTIMESTAMP型ロウキーの値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsAddPredicateGeneralKey (GSRowKeyPredicate *predicate, GSRowKey *keyObj)
 個別条件の要素の一つとするロウキーの値を追加します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsAddPredicateKeyGeneral (GSRowKeyPredicate *predicate, const GSValue *key, GSType keyType)
 個別条件の要素の一つとする、単一カラムのロウキーの値を追加します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsAddPredicateKeyByString (GSRowKeyPredicate *predicate, const GSChar *key)
 個別条件の要素の一つとするSTRING型ロウキーの値を追加します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsAddPredicateKeyByInteger (GSRowKeyPredicate *predicate, int32_t key)
 個別条件の要素の一つとするINTEGER型ロウキーの値を追加します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsAddPredicateKeyByLong (GSRowKeyPredicate *predicate, int64_t key)
 個別条件の要素の一つとするLONG型ロウキーの値を追加します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsAddPredicateKeyByTimestamp (GSRowKeyPredicate *predicate, GSTimestamp key)
 個別条件の要素の一つとするTIMESTAMP型ロウキーの値を追加します。More...
 
GS_DLL_PUBLIC void GS_API_CALL gsClosePartitionController (GSPartitionController **controller)
 指定のGSPartitionControllerインスタンスを解放します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPartitionCount (GSPartitionController *controller, int32_t *partitionCount)
 対象とするGridDBクラスタのパーティション数を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPartitionContainerCount (GSPartitionController *controller, int32_t partitionIndex, int64_t *containerCount)
 指定のパーティションに属するコンテナの総数を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPartitionContainerNames (GSPartitionController *controller, int32_t partitionIndex, int64_t start, const int64_t *limit, const GSChar *const **nameList, size_t *size)
 指定のパーティションに所属するコンテナの名前の一覧を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPartitionHosts (GSPartitionController *controller, int32_t partitionIndex, const GSChar *const **addressList, size_t *size)
 指定のパーティションに対応するノードのアドレス一覧を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPartitionOwnerHost (GSPartitionController *controller, int32_t partitionIndex, const GSChar **address)
 指定のパーティションに対応するオーナノードのアドレスを取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPartitionBackupHosts (GSPartitionController *controller, int32_t partitionIndex, const GSChar *const **addressList, size_t *size)
 指定のパーティションに対応するバックアップノードのアドレス一覧を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsAssignPartitionPreferableHost (GSPartitionController *controller, int32_t partitionIndex, const GSChar *host)
 優先的に選択されるホストのアドレスを設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPartitionIndexOfContainer (GSPartitionController *controller, const GSChar *containerName, int32_t *partitionIndex)
 指定のコンテナ名に対応するパーティションインデックスを取得します。More...
 
GS_DLL_PUBLIC GSTimestamp
-GS_API_CALL 
gsCurrentTime ()
 現在時刻を求めます。More...
 
GS_DLL_PUBLIC int64_t GS_API_CALL gsGetTimeField (GSTimestamp timestamp, GSTimeUnit timeUnit)
 GSTimestampを構成するフィールド値の一つを取得します。More...
 
GS_DLL_PUBLIC int64_t GS_API_CALL gsGetZonedTimeField (GSTimestamp timestamp, GSTimeUnit timeUnit, const GSTimeZone *zone)
 指定のタイムゾーン設定を用い、GSTimestampを構成するフィールド値の一つを取得します。More...
 
GS_DLL_PUBLIC GSBool GS_API_CALL gsSetTimeField (GSTimestamp *timestamp, int64_t field, GSTimeUnit timeUnit)
 GSTimestampを構成するフィールド値の一つを設定します。More...
 
GS_DLL_PUBLIC GSBool GS_API_CALL gsSetZonedTimeField (GSTimestamp *timestamp, int64_t field, GSTimeUnit timeUnit, const GSTimeZone *zone)
 指定のタイムゾーン設定を用い、GSTimestampを構成するフィールド値の一つを設定します。More...
 
GS_STATIC_HEADER_FUNC_SPECIFIER
-GSTimestamp 
gsAddTime (GSTimestamp timestamp, int64_t amount, GSTimeUnit timeUnit)
 時刻に一定の値を加算します。More...
 
GS_DLL_PUBLIC GSTimestamp
-GS_API_CALL 
gsAddZonedTime (GSTimestamp timestamp, int64_t amount, GSTimeUnit timeUnit, const GSTimeZone *zone)
 指定のタイムゾーン設定を用い、時刻に一定の値を加算します。More...
 
GS_DLL_PUBLIC int64_t GS_API_CALL gsGetTimeDiff (GSTimestamp timestamp1, GSTimestamp timestamp2, GSTimeUnit timeUnit)
 二つの時刻間の差分値を求めます。More...
 
GS_DLL_PUBLIC int64_t GS_API_CALL gsGetZonedTimeDiff (GSTimestamp timestamp1, GSTimestamp timestamp2, GSTimeUnit timeUnit, const GSTimeZone *zone)
 指定のタイムゾーン設定を用い、二つの時刻間の差分値を求めます。More...
 
GS_DLL_PUBLIC size_t GS_API_CALL gsFormatTime (GSTimestamp timestamp, GSChar *strBuf, size_t bufSize)
 TQLのTIMESTAMP値表記に従い、時刻の文字列表現を求めます。More...
 
GS_DLL_PUBLIC size_t GS_API_CALL gsFormatZonedTime (GSTimestamp timestamp, GSChar *strBuf, size_t bufSize, const GSTimeZone *zone)
 指定のタイムゾーン設定を用い、TQLのTIMESTAMP値表記に従って時刻の文字列表現を求めます。More...
 
GS_DLL_PUBLIC GSBool GS_API_CALL gsParseTime (const GSChar *str, GSTimestamp *timestamp)
 TQLのTIMESTAMP値表記に従い、指定の文字列に対応するGSTimestamp値を求めます。More...
 
GS_DLL_PUBLIC int64_t GS_API_CALL gsGetTimeZoneOffset (const GSTimeZone *zone, GSTimeUnit timeUnit)
 指定のタイムゾーンのオフセット値を取得します。More...
 
GS_DLL_PUBLIC GSBool GS_API_CALL gsSetTimeZoneOffset (GSTimeZone *zone, int64_t offset, GSTimeUnit timeUnit)
 指定のタイムゾーンのオフセット値を設定します。More...
 
GS_DLL_PUBLIC size_t gsFormatTimeZone (const GSTimeZone *zone, GSChar *strBuf, size_t bufSize)
 TQLのTIMESTAMP値表記に従い、タイムゾーン情報の文字列表現を求めます。More...
 
GS_DLL_PUBLIC GSBool GS_API_CALL gsParseTimeZone (const GSChar *str, GSTimeZone *zone)
 TQLのTIMESTAMP値表記に従い、指定のタイムゾーン文字列に対応するGSTimeZone値を求めます。More...
 
GS_DLL_PUBLIC size_t GS_API_CALL gsGetErrorStackSize (void *gsResource)
 指定のリソースに関する直前のエラー情報のスタックサイズを取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetErrorCode (void *gsResource, size_t stackIndex)
 指定のリソースに関する直前のエラーのエラーコードを取得します。More...
 
GS_DLL_PUBLIC size_t GS_API_CALL gsFormatErrorMessage (void *gsResource, size_t stackIndex, GSChar *strBuf, size_t bufSize)
 指定のリソースに関する直前のエラーのメッセージを取得します。More...
 
GS_DLL_PUBLIC size_t GS_API_CALL gsFormatErrorLocation (void *gsResource, size_t stackIndex, GSChar *strBuf, size_t bufSize)
 指定のリソースに関する直前のエラーのメッセージの内部モジュールのエラー位置情報を取得します。More...
 
GS_DLL_PUBLIC GSBool GS_API_CALL gsIsTimeoutError (GSResult result)
 要求した処理が既定の時間内に終了しなかった場合に発生したエラーに該当するエラーコードかどうかを判定します。More...
 
GS_DLL_PUBLIC size_t GS_API_CALL gsFormatErrorName (void *gsResource, size_t stackIndex, GSChar *strBuf, size_t bufSize)
 指定のリソースに関する直前のエラーのエラー名を取得します。More...
 
GS_DLL_PUBLIC size_t GS_API_CALL gsFormatErrorDescription (void *gsResource, size_t stackIndex, GSChar *strBuf, size_t bufSize)
 指定のリソースに関する直前のエラーの説明内容を取得します。More...
 
GS_DLL_PUBLIC size_t GS_API_CALL gsGetErrorParameterCount (void *gsResource, size_t stackIndex)
 指定のリソースに関する直前のエラーに関するパラメータの個数を取得します。More...
 
GS_DLL_PUBLIC size_t GS_API_CALL gsFormatErrorParameterName (void *gsResource, size_t stackIndex, size_t parameterIndex, GSChar *strBuf, size_t bufSize)
 指定のリソースに関する直前のエラーに関するパラメータの名前を取得します。More...
 
GS_DLL_PUBLIC size_t GS_API_CALL gsFormatErrorParameterValue (void *gsResource, size_t stackIndex, size_t parameterIndex, GSChar *strBuf, size_t bufSize)
 指定のリソースに関する直前のエラーに関するパラメータの値を取得します。More...
 
-

Detailed Description

-

GridDBのC言語向け公開API.

-

Macro Definition Documentation

- -
-
- - - - -
#define GS_CONTAINER_ROW_ENTRY_INITIALIZER   { NULL, NULL, 0 }
-
- -

GSContainerRowEntryの初期化子です。

-
Since
1.5
- -
-
- -
-
- - - - - - - - -
#define GS_GET_STRUCT_BINDING( type)   GS_STRUCT_BINDING_GETTER_NAME(type) ()
-
- -

ユーザ定義構造体とコンテナスキーマとの対応関係の定義を取得します。

-
指定の定義名のGS_STRUCT_BINDINGの定義を参照できるようにする必要があります。
-
Parameters
- - -
type対応関係の定義名。
-
-
-
Returns
対応関係を示すGSBinding*型の値
-
See Also
GS_STRUCT_BINDING
- -
-
- -
-
- - - - -
#define GS_INDEX_INFO_INITIALIZER   { NULL, GS_INDEX_FLAG_DEFAULT, -1, NULL, 0, NULL, 0, NULL }
-
- -

GSIndexInfoの初期化子です。

-
Since
3.5
- -
-
- -
-
- - - - -
#define GS_RESULT_OK   0
-
- -

GridDBに対する命令の実行に成功したことを示す、実行結果コードの値です。

-
See Also
GSResult
- -
-
- -
-
- - - - -
#define GS_ROW_KEY_PREDICATE_ENTRY_INITIALIZER   { NULL, NULL }
-
- -

GSRowKeyPredicateEntryの初期化子です。

-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
#define GS_STRUCT_BINDING( type,
 entries 
)
-
- -

ユーザ定義構造体とコンテナスキーマとの対応関係を定義します。

-
現バージョンでは、静的関数の定義に展開されます。
-
複合ロウキーの構成情報の定義にも使用できます。
-
Parameters
- - - -
type対応関係の定義名。関数名の一部として使用されます。
entries構造体メンバとカラム定義との対応関係を示す以下の定義の列を、「,」で区切らず順に並べます。 -
-
-
-
See Also
GS_GET_STRUCT_BINDING
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
#define GS_STRUCT_BINDING_ARRAY( member,
 sizeMember,
 elementType 
)
-
- -

ユーザ定義構造体メンバと配列型カラムスキーマとの対応関係を定義します。

-
構造体メンバの名前がそのままカラム名として使用されます。
-
Parameters
- - - - -
member配列ポインタ変数に対応する構造体メンバの名前
sizeMember配列サイズ変数に対応する構造体メンバの名前
elementType配列型の要素型の名前
-
-
-
See Also
GS_STRUCT_BINDING
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
#define GS_STRUCT_BINDING_COMPOSITE_KEY( member,
 bindingType 
)
-
- -

ユーザ定義構造体メンバと複合ロウキー付きカラムスキーマとの対応関係を定義します。

-
Parameters
- - - -
member構造体メンバの名前
bindingType複合ロウキーを構成するユーザ定義構造体の名前。対応する複合ロウキーの構成については、別途GS_STRUCT_BINDINGを通じて定義されていなければならない
-
-
-
See Also
GS_STRUCT_BINDING
-
Since
4.3
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
#define GS_STRUCT_BINDING_ELEMENT( member,
 memberType 
)
-
- -

ユーザ定義構造体メンバと基本型カラムスキーマとの対応関係を定義します。

-
構造体メンバの名前がそのままカラム名として使用されます。
-
Parameters
- - - -
member構造体メンバの名前
memberType基本型の名前
-
-
-
See Also
GS_STRUCT_BINDING
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
#define GS_STRUCT_BINDING_KEY( member,
 memberType 
)
-
- -

ユーザ定義構造体メンバとロウキー付き基本型カラムスキーマとの対応関係を定義します。

-
構造体メンバの名前がそのままカラム名として使用されます。
-
Parameters
- - - -
member構造体メンバの名前
memberType基本型の名前
-
-
-
See Also
GS_STRUCT_BINDING
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#define GS_STRUCT_BINDING_NAMED_ARRAY( name,
 member,
 sizeMember,
 elementType 
)
-
- -

カラム名を指定して、ユーザ定義構造体メンバと配列型カラムスキーマとの対応関係を定義します。

-
Parameters
- - - - - -
nameカラム名
member配列ポインタ変数に対応する構造体メンバの名前
sizeMember配列サイズ変数に対応する構造体メンバの名前
elementType配列型の要素型の名前
-
-
-
See Also
GS_STRUCT_BINDING
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
#define GS_STRUCT_BINDING_NAMED_ELEMENT( name,
 member,
 memberType 
)
-
- -

カラム名を指定して、ユーザ定義構造体メンバと基本型カラムスキーマとの対応関係を定義します。

-
Parameters
- - - - -
nameカラム名
member構造体メンバの名前
memberType基本型の名前
-
-
-
See Also
GS_STRUCT_BINDING
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
#define GS_STRUCT_BINDING_NAMED_KEY( name,
 member,
 memberType 
)
-
- -

カラム名を指定して、ユーザ定義構造体メンバとロウキー付き基本型カラムスキーマとの対応関係を定義します。

-
Parameters
- - - - -
nameカラム名
member構造体メンバの名前
memberType基本型の名前
-
-
-
See Also
GS_STRUCT_BINDING
- -
-
- -
-
- - - - - - - - -
#define GS_SUCCEEDED( result)   ((result) == GS_RESULT_OK)
-
- -

実行結果コードに基づきGridDBに対する命令の実行に成功したかどうかのブール値を求めるマクロです。

-
See Also
GS_RESULT_OK
-
-GSResult
- -
-
- -
-
- - - - -
#define GS_TIME_SERIES_PROPERTIES_INITIALIZER
-
- -

GSTimeSeriesPropertiesの初期化子です。

-
ロウの有効期限ならびに圧縮ロウの間引き連続制限は無効、時系列圧縮方式は無圧縮に設定されます。
- -
-
-

Typedef Documentation

- -
-
- - - - -
typedef GSEnum GSAggregation
-
-
See Also
GSAggregationTag
- -
-
- -
-
- - - - -
typedef char GSBool
-
- -

GridDB APIで使用されるブール型です。

-
GridDB上のBOOL型と対応します。
- -
-
- -
-
- - - - -
typedef char GSChar
-
- -

GridDB APIで使用される標準の文字の型です。

-
この型の文字列エンコーディングは常にUTF-8です。
- -
-
- -
-
- -

コレクションの構成オプションを表します。

-
Note
現バージョンでは使用されておりません。
- -
-
- -
-
- - - - -
typedef struct GSColumnCompressionTag GSColumnCompression
-
- -

特定のカラムの圧縮設定を表します。

-
時系列を対象とした誤差あり間引き圧縮のカラム別設定に使用します。
- -
-
- -
-
- - - - -
typedef GSEnum GSCompressionMethod
-
-
- -
-
- - - - -
typedef struct GSContainerRowEntryTag GSContainerRowEntry
-
- -

複数のコンテナの複数のロウを一括して操作する場合に用いる、コンテナ別のロウ内容エントリです。

-
Since
1.5
- -
-
- -
-
- - - - -
typedef GSEnum GSContainerType
-
-
See Also
GSContainerTypeTag
- -
-
- -
-
- - - - -
typedef GSEnum GSFetchOption
-
-
See Also
GSFetchOptionTag
- -
-
- -
-
- - - - -
typedef GSEnum GSGeometryOperator
-
-
See Also
GSGeometryOperatorTag
- -
-
- -
-
- - - - -
typedef struct GSIndexInfoTag GSIndexInfo
-
- -

索引の設定内容を表します。

-
Since
3.5
- -
-
- -
-
- - - - -
typedef int32_t GSIndexTypeFlags
-
-
See Also
GSIndexTypeFlagTag
- -
-
- -
-
- - - - -
typedef GSEnum GSInterpolationMode
-
-
- -
-
- - - - -
typedef struct GSQueryAnalysisEntryTag GSQueryAnalysisEntry
-
- -

クエリプランならびにクエリ処理解析結果を構成する一連の情報の一つを示します。

-
TQLのEXPLAIN文ならびEXPLAIN ANALYZE文の実行結果を保持するために使用します。1つの実行結果は、このエントリの列により表現されます。
- -
-
- -
-
- - - - -
typedef GSEnum GSQueryOrder
-
-
See Also
GSQueryOrderTag
- -
-
- -
-
- -

複数のコンテナに対する取得条件を表すための、コンテナ別の合致条件エントリです。

-
Since
1.5
- -
-
- -
-
- - - - -
typedef GSEnum GSRowSetType
-
-
See Also
GSRowSetTypeTag
- -
-
- -
-
- - - - -
typedef GSEnum GSTimeOperator
-
-
See Also
GSTimeOperatorTag
- -
-
- -
-
- -

時系列を新規作成または変更する際に使用される、オプションの構成情報を表します。

-
カラム名の表記、もしくは、個別に圧縮設定できるカラム数の上限などの内容の妥当性について、必ずしも検査するとは限りません。
- -
-
- -
-
- - - - -
typedef GSEnum GSTimeUnit
-
-
See Also
GSTimeUnitTag
- -
-
- -
-
- - - - -
typedef int32_t GSTriggerEventTypeFlags
-
-
- -
-
- - - - -
typedef struct GSTriggerInfoTag GSTriggerInfo
-
- -

トリガに関する情報を表します。

-
Since
1.5
- -
-
- -
-
- - - - -
typedef GSEnum GSTriggerType
-
-
See Also
GSTriggerTypeTag
- -
-
- -
-
- - - - -
typedef GSEnum GSType
-
-
See Also
GSTypeTag
- -
-
- -
-
- - - - -
typedef int32_t GSTypeOption
-
- -

カラムに関するオプション設定を示すフラグ値のビット和です。

-
ある設定項目について、対応するフラグ値が複数含まれていた場合に、オプション設定が矛盾しているとみなされるものが存在します。それらの設定項目のうち、対応するフラグ値が一つも含まれていないものは、未設定状態であるとみなされます。この制約に該当する設定項目とフラグ値との対応は次の通りです。 - - - - - - -
設定項目フラグ値
NOT NULL制約 -
初期値でのNULL使用有無 -
-
-
See Also
GSTypeOptionTag
- -
-
- -
-
- - - - -
typedef union GSValueTag GSValue
-
- -

ロウフィールドに格納できるいずれかの型の値です。

-
Since
1.5
- -
-
-

Enumeration Type Documentation

- -
-
- - - - -
enum GSAggregationTag
-
- -

ロウ集合またはその特定のカラムに対する、集計演算の方法を示します。

-
現バージョンでは、GSTimeSeriesに対してのみ使用できます。
-
重み付きの演算の場合、キーの値に基づき重み付け値を決定します。GSTimeSeriesに対する重み付きの演算の場合、前後それぞれの時刻のロウとの中間時刻間の期間を特定の単位で換算したものを、重み付け値として使用します。ただし、前後いずれかの時刻のロウのみが存在しない場合は、存在しないロウの代わりに重み付け対象のロウを用いて求めた重み付け値を使用します。前後いずれの時刻のロウも存在しない場合は、重み付け値として1 (単位は前後いずれかのロウが存在する場合と同一)を使用します。
-
演算の内部処理にてオーバーフローが発生した場合、浮動小数点数型では負または正の無限大、整数型では未定義の値が求まります。また、浮動小数点数型にて演算対象に非数(NaN)が含まれていた場合、非数が求まります。
- - - - - - - - - -
Enumerator
GS_AGGREGATION_MINIMUM  -

最小値を求める演算です。

-
大小比較できる型、すなわち数値型や時刻型のカラムに対してのみ使用できます。演算結果の型は、対象のカラムと同一の型となります。対象となるロウが1つも存在しない場合、演算結果は設定されません。
-
GS_AGGREGATION_MAXIMUM  -

最大値を求める演算です。

-
大小比較できる型、すなわち数値型や時刻型のカラムに対してのみ使用できます。演算結果の型は、対象のカラムと同一の型となります。対象となるロウが1つも存在しない場合、演算結果は設定されません。
-
GS_AGGREGATION_TOTAL  -

合計を求める演算です。

-
数値型のカラムに対してのみ使用できます。演算結果の型は、対象のカラムが整数型の場合LONG、浮動小数点型の場合DOUBLEとなります。対象となるロウが1つも存在しない場合、演算結果は設定されません。
-
GS_AGGREGATION_AVERAGE  -

平均を求める演算です。

-
数値型のカラムに対してのみ使用できます。演算結果の型は常にDOUBLEとなります。対象となるロウが1つも存在しない場合、演算結果は設定されません。
-
GS_AGGREGATION_VARIANCE  -

分散を求める演算です。

-
数値型のカラムに対してのみ使用できます。演算結果の型は常にDOUBLEとなります。対象となるロウが1つも存在しない場合、演算結果は設定されません。
-
GS_AGGREGATION_STANDARD_DEVIATION  -

標準偏差を求める演算です。

-
数値型のカラムに対してのみ使用できます。演算結果の型は常にDOUBLEとなります。対象となるロウが1つも存在しない場合、演算結果は設定されません。
-
GS_AGGREGATION_COUNT  -

標本数、すなわちロウ数を求める演算です。

-
任意のカラムに対して使用できます。演算結果の型は常にLONGとなります。対象となるロウが1つも存在しない場合、演算結果の値は0となります。
-
GS_AGGREGATION_WEIGHTED_AVERAGE  -

重み付きで平均を求める演算です。

-
各標本値と重み付け値との積の合計を、各重み付け値の合計で割ることにより求めます。重み付け値の計算方法は、GSAggregationTagの説明を参照してください。
-
この演算は、数値型のカラムに対してのみ使用できます。演算結果の型は常にDOUBLEとなります。対象となるロウが1つも存在しない場合、演算結果は設定されません。
-
- -
-
- -
-
- - - - -
enum GSCompressionMethodTag
-
- -

圧縮方式の種別を表します。

-
時系列圧縮設定を行う際に使用します。
- - - - -
Enumerator
GS_COMPRESSION_NO  -

無圧縮であることを示します。

-
GS_COMPRESSION_SS  -

誤差なし間引き圧縮方式であることを示します。

-
誤差なし間引き圧縮では、直前及び直後に登録したロウと同じデータを持つロウは省かれます。省かれたデータはinterpolateやsample処理の際に、誤差を発生することなく復元されます。
-
GS_COMPRESSION_HI  -

誤差あり間引き圧縮方式であることを示します。

-
誤差あり間引き圧縮では、前回まで及び直後に登録したデータと同じ傾斜を表すロウは省かれます。同じ傾斜かを判定する条件はユーザが指定できます。指定されたカラムが条件を満たし、それ以外のカラムの値が前回のデータと同じ場合のみ省かれます。省かれたデータはinterpolateやsample処理の際に、指定された誤差の範囲内で復元されます。
-
- -
-
- -
-
- - - - -
enum GSContainerTypeTag
-
- -

コンテナの種別を表します。

- - - -
Enumerator
GS_CONTAINER_COLLECTION  -

対象のコンテナがコレクションであることを示します。

-
GS_CONTAINER_TIME_SERIES  -

対象のコンテナが時系列であることを示します。

-
- -
-
- -
-
- - - - -
enum GSFetchOptionTag
-
- -

クエリ実行結果を取得する際のオプション項目です。

- - - -
Enumerator
GS_FETCH_LIMIT  -

取得するロウの数の最大値を設定するために使用します。

-
実行結果のロウ数が最大値を超えた場合、GSRowSetで得られる順番で先頭から最大値の分だけが取得できます。それ以降のロウは取得できません。
-
サポートされる設定値の型は、INTEGERまたはLONGです。負の値は指定できません。設定が省略された場合、上限は設定されません。
-
GS_FETCH_PARTIAL_EXECUTION  -

部分実行モードを設定するために使用します。

-
部分実行モードでは、クエリの中間処理や結果送受信に用いるバッファのサイズなどがなるべく一定の範囲に収まるよう、必要に応じて実行対象のデータ範囲を分割し、この部分範囲ごとに実行とフェッチをリクエストすることがあります。そのため、GSRowSetを取得した時点で一部の範囲の結果が求まっていないことや、結果ロウを順に参照していく段階で、残りの範囲を部分的に実行していくことがあります。
-
部分実行モードは、現バージョンでは次の条件すべてを満たすクエリに使用できます。また、GS_FETCH_LIMITオプションと併用することができます。条件を満たさない場合でも、各種フェッチオプションの設定時点ではエラーを検知しない場合があります。
    -
  • TQL文からなるクエリであること
  • -
  • TQL文において、選択式が「*」のみからなり、ORDER BY節を含まないこと
  • -
  • 対応するGSContainerが個々の部分的なクエリ実行時点において常に自動コミットモードに設定されていること
  • -
-
-
部分実行モードでは、対応するGSContainerのトランザクション分離レベルや状態に基づき、個々の部分的なクエリ実行時点において参照可能なロウが使用されます。ただし、クエリ全体の実行開始時点で存在しないロウは、実行対象から外れる場合があります。
-
部分実行モードを有効にした場合にGSRowSetに対して使用できない操作や特有の挙動については、個別の定義を参照してください。
-
サポートされる設定値の型は、BOOLのみです。部分実行モードを有効にするには、GS_TRUEと一致する値を指定します。現バージョンでは、未設定の場合には部分実行モードを有効にしません。
-
Since
4.0
-
- -
-
- -
-
- - - - -
enum GSGeometryOperatorTag
-
- -

空間範囲同士の関係性についての制約を定義します。

-
空間範囲検索の条件指定のために使用します。
- - -
Enumerator
GS_GEOMETRY_OPERATOR_INTERSECT  -

双方の空間範囲またはその外接構造が交差する関係にあることを示します。

-
双方の外接直方体(Minimum Bounding Box)、もしくは外接直方体と2次曲面が交差する関係にあることを示します。交差判定の条件は、TQLのST_MBRIntersects関数、もしくはST_QSFMBRIntersects関数と同一です。
-
- -
-
- -
-
- - - - -
enum GSIndexTypeFlagTag
-
- -

GSContainerに設定する索引の種別を示します。

- - - - - -
Enumerator
GS_INDEX_FLAG_DEFAULT  -

デフォルトの索引を示します。

-
この索引種別は、特定の種別を明示せずに索引の操作を行う必要がある場合に用いられるものであり、実在する索引はこの種別以外の種別に分類されます。
-
GS_INDEX_FLAG_TREE  -

ツリー索引を示します。

-
この索引種別は、時系列におけるロウキーと対応するカラムを除く任意の種別のコンテナにおける、次の型のカラムに対して使用できます。
    -
  • STRING
  • -
  • BOOL
  • -
  • BYTE
  • -
  • SHORT
  • -
  • INTEGER
  • -
  • LONG
  • -
  • FLOAT
  • -
  • DOUBLE
  • -
  • TIMESTAMP
  • -
-
-
GS_INDEX_FLAG_HASH  -

ハッシュ索引を示します。

-
この索引は、GSCollectionにおける次の型のカラムに対して設定できます。
    -
  • STRING
  • -
  • BOOL
  • -
  • BYTE
  • -
  • SHORT
  • -
  • INTEGER
  • -
  • LONG
  • -
  • FLOAT
  • -
  • DOUBLE
  • -
  • TIMESTAMP
  • -
-
-
GSTimeSeriesに対して設定することはできません。
-
GS_INDEX_FLAG_SPATIAL  -

空間索引を示します。

-
この索引種別は、GSCollectionにおけるGEOMETRY型のカラムに対してのみ使用できます。GSTimeSeriesに対して設定することはできません。
-
- -
-
- -
-
- - - - -
enum GSInterpolationModeTag
-
- -

ロウの補間方法の種別を表します。

-
時系列ロウの補間機能で使用されます。
- - - -
Enumerator
GS_INTERPOLATION_LINEAR_OR_PREVIOUS  -

カラムに応じて線形補間または直前ロウの値による補間を行うことを示します。

-
補間機能にて指定されたカラムについては、補間対象時刻の前後時刻のロウの値により線形補間を行います。対象とするカラムの型は数値型でなければなりません。
-
補間機能にて特に指定されていないカラムについては、補間対象時刻と隣接する直前の時刻のロウの値を補間値として使用します。対象とするカラムの型に制限はありません。
-
GS_INTERPOLATION_EMPTY  -

空の値を補間値として用いることを示します。

-
ロウキーを除くすべてのロウフィールドについて、GSContainerにて定義されている空の値を補間値として用いることを示します。
-
- -
-
- -
-
- - - - -
enum GSQueryOrderTag
-
- -

クエリにおける要求ロウ順序を表します。

-
各種クエリ機能別に定義される判定対象を基準として、順序指定を行うために使用します。具体的な判定対象は、個別の機能によって異なります。
- - - -
Enumerator
GS_ORDER_ASCENDING  -

要求ロウ順序が昇順であることを表します。

-
GS_ORDER_DESCENDING  -

要求ロウ順序が降順であることを表します。

-
- -
-
- -
-
- - - - -
enum GSRowSetTypeTag
-
- -

GSRowSetから取り出すことのできる内容の種別です。

- - - - -
Enumerator
GS_ROW_SET_CONTAINER_ROWS  -

クエリ実行対象のコンテナと対応する型のロウデータからなるGSRowSetであることを示します。

-
GS_ROW_SET_AGGREGATION_RESULT  -

集計演算からなるGSRowSetであることを示します。

-
See Also
GSAggregationResult
-
GS_ROW_SET_QUERY_ANALYSIS  -

EXPLAIN文ならびEXPLAIN ANALYZE文の実行結果エントリからなるGSRowSetであることを示します。

-
See Also
GSQueryAnalysisEntry
-
- -
-
- -
-
- - - - -
enum GSTimeOperatorTag
-
- -

GSTimeSeriesのキー時刻に基づく、ロウの特定方法を表します。

-
別途指定する時刻と組み合わせることで、最も近い時刻のキーを持つロウなどを特定できます。該当するロウが存在しない場合の扱いは、この列挙型を使用するそれぞれの機能により異なります。
- - - - - -
Enumerator
GS_TIME_OPERATOR_PREVIOUS  -

指定時刻と同一またはより前の時刻のロウのうち、最も新しいものを求めます。

-
GS_TIME_OPERATOR_PREVIOUS_ONLY  -

指定より前の時刻のロウのうち、最も新しいものを求めます。

-
GS_TIME_OPERATOR_NEXT  -

指定時刻同一またはより後の時刻のロウのうち、最も古いものを求めます。

-
GS_TIME_OPERATOR_NEXT_ONLY  -

指定時刻より後の時刻のロウのうち、最も古いものを求めます。

-
- -
-
- -
-
- - - - -
enum GSTimeUnitTag
-
- -

時系列処理で用いる時間の単位を示します。

- - - - - - - - -
Enumerator
GS_TIME_UNIT_YEAR  -

年の単位です。

-
GS_TIME_UNIT_MONTH  -

月の単位です。

-
GS_TIME_UNIT_DAY  -

日の単位です。

-
GS_TIME_UNIT_HOUR  -

時の単位です。

-
GS_TIME_UNIT_MINUTE  -

分の単位です。

-
GS_TIME_UNIT_SECOND  -

秒の単位です。

-
GS_TIME_UNIT_MILLISECOND  -

ミリ秒の単位です。

-
- -
-
- -
-
- - - - -
enum GSTriggerEventTypeFlagTag
-
- -

トリガで監視対象とする更新操作種別を表します。

- - - -
Enumerator
GS_TRIGGER_EVENT_PUT  -

コンテナに対するロウ新規作成または更新を示します。

-
GS_TRIGGER_EVENT_DELETE  -

コンテナに対するロウ削除を示します。

-
- -
-
- -
-
- - - - -
enum GSTriggerTypeTag
-
- -

トリガの種別を表します。

- - - -
Enumerator
GS_TRIGGER_REST  -

コンテナの更新時にRESTで通知するトリガ種別を示します。

-
GS_TRIGGER_JMS  -

コンテナの更新時にJava Message Service(JMS)で通知するトリガ種別を示します。

-
- -
-
- -
-
- - - - -
enum GSTypeOptionTag
-
- -

カラムに関するオプション設定を示します。

-
See Also
GSTypeOption
- - - - - -
Enumerator
GS_TYPE_OPTION_NULLABLE  -

NOT NULL制約を持たないカラムであることを示します。

-
Since
3.5
-
GS_TYPE_OPTION_NOT_NULL  -

NOT NULL制約を持つカラムであることを示します。

-
Since
3.5
-
GS_TYPE_OPTION_DEFAULT_VALUE_NULL  -

初期値としてNULLを使用するカラムであることを示します。

-
Since
4.1
-
GS_TYPE_OPTION_DEFAULT_VALUE_NOT_NULL  -

初期値としてNULLを使用しないカラムであることを示します。

-
Since
4.1
-
- -
-
- -
-
- - - - -
enum GSTypeTag
-
- -

GridDB上のフィールド値の型を表します。

- - - - - - - - - - - - - - - - - - - - - - -
Enumerator
GS_TYPE_STRING  -

STRING型です。

-
GS_TYPE_BOOL  -

BOOL型です。

-
GS_TYPE_BYTE  -

BYTE型です。

-
GS_TYPE_SHORT  -

SHORT型です。

-
GS_TYPE_INTEGER  -

INTEGER型です。

-
GS_TYPE_LONG  -

LONG型です。

-
GS_TYPE_FLOAT  -

FLOAT型です。

-
GS_TYPE_DOUBLE  -

DOUBLE型です。

-
GS_TYPE_TIMESTAMP  -

TIMESTAMP型です。

-
GS_TYPE_GEOMETRY  -

GEOMETRY型です。

-
GS_TYPE_BLOB  -

BLOB型です。

-
GS_TYPE_STRING_ARRAY  -

STRING型配列です。

-
GS_TYPE_BOOL_ARRAY  -

BOOL型配列です。

-
GS_TYPE_BYTE_ARRAY  -

BYTE型配列です。

-
GS_TYPE_SHORT_ARRAY  -

SHORT型配列です。

-
GS_TYPE_INTEGER_ARRAY  -

INTEGER型配列です。

-
GS_TYPE_LONG_ARRAY  -

LONG型配列です。

-
GS_TYPE_FLOAT_ARRAY  -

FLOAT型配列です。

-
GS_TYPE_DOUBLE_ARRAY  -

DOUBLE型配列です。

-
GS_TYPE_TIMESTAMP_ARRAY  -

TIMESTAMP型配列です。

-
GS_TYPE_NULL  -

ロウフィールドにNULLが設定されていることを示します。

-
カラムの型として用いることはできません。
-
Since
3.5
-
- -
-
-

Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
GS_STATIC_HEADER_FUNC_SPECIFIER GSResult gsCreateIndexDetail (GSContainercontainer,
const GSIndexInfoinfo 
)
-
- -

GSIndexInfoで設定されている内容に従い、索引を作成します。

-
作成対象の索引のカラムについては、カラム名列またはカラム番号列の少なくとも一方が設定されており、かつ、対応するコンテナにおいて実在するものが設定されている必要があります。カラム名列とカラム番号列が共に設定されている場合、対応するカラム列が順序を含め一致している必要があります。
-
索引種別が一つも設定されていないかGS_INDEX_FLAG_DEFAULTが設定されていた場合、後述の基準に従い、デフォルト種別の索引が選択されます。それ以外の場合、対象のカラムにおいて許されている索引種別である限り、一つ以上の種別を指定できます。複数個の種別が設定されていた場合、作成途中に一部の索引のみが作成された状態のコンテナ情報を参照できることや、エラーが生じるとその状態まま作成操作が終了することがあります。
-
1つのコンテナの索引間で、ASCIIの大文字・小文字表記だけが異なる名前のものを複数定義することはできません。その他、索引の定義において使用できる索引名の文字種や長さには制限があります。具体的には、GridDBテクニカルリファレンスを参照してください。特に記載のない限り、索引名を指定する操作では、ASCIIの大文字・小文字表記の違いは区別されません。
-
既存の同名の索引が存在した場合、後述の条件を満たす同一設定のGSIndexInfoを指定しなければならず、その場合新たな索引は作成されません。一方、既存の異なる名前の索引または名前のない索引と同一設定のGSIndexInfoを指定することはできません。
-
索引名が設定されていない場合は、名前のない索引の作成が要求されたものとみなされます。名前を除いて同一設定の索引がすでに存在していた場合、名前のない索引でなければならず、その場合新たな索引は作成されません。
-
現バージョンでは、少なくともGSContainerを通じて作成された索引において、次の条件を満たす場合に索引名を除いて同一設定の索引であるとみなされます。
    -
  • 索引対象のカラム列が順序を含め一致すること。カラム名列、カラム番号列、単一カラム指定、といった、カラム列の指定方法の違いは無視される
  • -
  • 索引種別が一致すること。デフォルト指定の有無といった索引種別の指定方法の違いは無視される
  • -
-
-
現バージョンにおける、gsGetDefaultFactoryを基に生成されたGSContainerインスタンスでは、コンテナの種別、対応するカラムの型などに基づき、次の索引種別がデフォルトとして選択されます。 - - - - - - - - - - - - - - - - -
カラムの型コレクション時系列
STRING GS_INDEX_FLAG_TREE GS_INDEX_FLAG_TREE
BOOL GS_INDEX_FLAG_TREE GS_INDEX_FLAG_TREE
数値型GS_INDEX_FLAG_TREE GS_INDEX_FLAG_TREE
TIMESTAMP GS_INDEX_FLAG_TREE GS_INDEX_FLAG_TREE※制限あり
GEOMETRY GS_INDEX_FLAG_SPATIAL (なし)
BLOB (なし) (なし)
配列型(なし) (なし)
-
-
時系列のロウキー(TIMESTAMP型)には索引を設定できません。また、カラム列を構成するカラム型によってデフォルト種別が異なる場合には、選択できません。
-
このGSContainerインスタンスが未コミットのトランザクションを保持していた場合、コミットしてから作成を行います。処理対象のコンテナにおいて実行中の他のトランザクションが存在する場合、それらの終了を待機してから作成を行います。すでに索引が存在しており新たな索引が作成されなかった場合、他のトランザクションによって待機するかどうかは未定義です。またこの場合、このGSContainerインスタンスが保持している未コミットのトランザクションが常にコミットされるかどうかは未定義です。
-
現バージョンでは、コンテナの規模など諸条件を満たした場合、索引の作成開始から終了までの間に、処理対象のコンテナに対してコンテナ情報の参照、一部の索引操作、トリガ操作、ロウ操作(更新含む)を行える場合があります。それ以外の操作は、GSContainerでの説明通り待機させる場合があります。索引の作成途中に別の操作が行われる場合は、作成途中の索引に関する情報はコンテナ情報には含まれません。
-
Parameters
- - - -
[in]container処理対象のGSContainer
[in]info処理対象の索引の情報
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • 作成対象のカラム、索引名が上記の規則に合致しない場合
  • -
  • この処理のタイムアウト、指定のコンテナの削除もしくはスキーマ変更、接続障害が発生した場合
  • -
  • 指定のカラムにおいてサポートされていない索引種別が指定された場合
  • -
  • 引数にNULLが指定された場合
  • -
-
-
Since
3.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GS_STATIC_HEADER_FUNC_SPECIFIER GSResult gsDropIndexDetail (GSContainercontainer,
const GSIndexInfoinfo 
)
-
- -

GSIndexInfoで設定されている内容に一致する、すべての索引を削除します。

-
GSIndexInfoの設定内容は、削除対象の索引を絞り込む条件として使用されます。絞り込み条件は、カラム列、索引種別、索引名の3つに分類されます。それぞれ設定するかどうかは任意です。いずれも設定されていない場合は、作成済みのすべての索引が削除されます。
-
カラム名列またはカラム番号列が設定されている場合、対応するコンテナにおいて実在するものである必要があります。カラム名列とカラム番号列が共に設定されている場合、対応するカラムが互いに一致している必要があります。カラム名列ならびにカラム番号列が共に設定されていない場合、他の絞り込み条件(索引種別、索引名)を満たす任意のカラム列に対する索引が削除対象となります。
-
索引種別が設定されている場合、指定の種別の索引のみが削除対象となります。GS_INDEX_FLAG_DEFAULTが設定されている場合、gsCreateIndexDetailの基準に従い、デフォルト種別の索引が選択されます。それ以外の場合、対象のカラムにおいて許されている索引種別である限り、任意個数の種別を指定できます。複数個の種別が設定されていた場合、削除途中に一部の索引のみが削除された状態のコンテナ情報を参照できることや、エラーが生じるとその状態まま削除操作が終了することがあります。索引をサポートしていないカラムや指定の種別の索引をサポートしていないカラムについては、削除対象にはなりません。索引種別が設定されていない場合、他の絞り込み条件(カラム列、索引名)を満たす任意の種別の索引が削除対象となります。
-
索引名が設定されている場合、指定の名前の索引のみが削除対象となります。索引名の同一性は、gsCreateIndexDetailの基準に従います。索引名が設定されていない場合、他の絞り込み条件(カラム列、索引種別)を満たす、任意の名前の索引ならびに名前のない索引が削除対象となります。
-
削除対象となる索引が一つも存在しない場合、索引の削除は行われません。
-
トランザクションの扱いは、gsCreateIndexDetailと同様です。また、索引種別としてデフォルト種別または単一の種別が設定されており、かつ、複数の索引が削除対象となった場合に、一部の索引のみが削除された状態で他のトランザクションが実行されることがありうるかどうかは未定義です。
-
索引の削除要求の完了直後の状態に関しては、gsDropContainerと同様です。
-
Parameters
- - - -
[in]container処理対象のGSContainer
[in]info処理対象の索引の情報
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • 削除対象のカラム、索引名が上記の規則に合致しない場合
  • -
  • この処理のタイムアウト、指定のコンテナの削除もしくはスキーマ変更、接続障害が発生した場合
  • -
  • 引数にNULLが指定された場合
  • -
-
-
Since
3.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetAggregationValueAsDouble (GSAggregationResultaggregationResult,
double * value,
GSBoolassigned 
)
-
- -

数値型の集計値をDOUBLE型(double)として取得します。

-
数値型以外の値を保持している場合、assigned引数にはGS_FALSEが格納されます。DOUBLE型以外の数値を保持している場合、DOUBLE型に変換したものが格納されます。
-
Parameters
- - - - -
[in]aggregationResult取得対象のGSAggregationResult
[out]value集計値を格納するための変数へのポインタ値
[out]assigned期待の型の値を取得できたかどうかを格納するための変数へのポインタ値。NULLが指定された場合、取得できたかどうかの情報は格納されません
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • assigned以外の引数にNULLが指定された場合
  • -
-
-
Since
3.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetAggregationValueAsLong (GSAggregationResultaggregationResult,
int64_t * value,
GSBoolassigned 
)
-
- -

数値型の集計値をLONG型(int64_t)として取得します。

-
数値型以外の値を保持している場合、assigned引数にはGS_FALSEが格納されます。LONG型以外の数値を保持している場合、LONG型に変換したものが格納されます。
-
Parameters
- - - - -
[in]aggregationResult取得対象のGSAggregationResult
[out]value集計値を格納するための変数へのポインタ値
[out]assigned期待の型の値を取得できたかどうかを格納するための変数へのポインタ値。NULLが指定された場合、取得できたかどうかの情報は格納されません
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • assigned以外の引数にNULLが指定された場合
  • -
-
-
Since
3.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetAggregationValueAsTimestamp (GSAggregationResultaggregationResult,
GSTimestampvalue,
GSBoolassigned 
)
-
- -

時刻型の集計値をTIMESTAMP型(GSTimestamp)で取得します。

-
TIMESTAMP型以外の値を保持している場合、assigned引数にはGS_FALSEが格納されます。
-
Parameters
- - - - -
[in]aggregationResult取得対象のGSAggregationResult
[out]value集計値を格納するための変数へのポインタ値
[out]assigned期待の型の値を取得できたかどうかを格納するための変数へのポインタ値。NULLが指定された場合、取得できたかどうかの情報は格納されません
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • assigned以外の引数にNULLが指定された場合
  • -
-
-
Since
3.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldNull (GSRowrow,
int32_t column,
GSBoolnullValue 
)
-
- -

指定のフィールドにNULLが設定されているかどうかを返します。

-
NOT NULL制約の設定されたカラムが指定された場合、常にGS_FALSEを返します。
-
Parameters
- - - - -
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[out]nullValueNULLが設定されているかどうか受け取る変数へのポインタ値
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • ポインタ型引数にNULLが指定された場合
  • -
  • 範囲外のカラム番号が指定された場合
  • -
-
-
Since
3.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldNull (GSRowrow,
int32_t column 
)
-
- -

指定のフィールドにNULLを設定します。

-
Parameters
- - - -
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • ポインタ型引数にNULLが指定された場合
  • -
  • 範囲外のカラム番号が指定された場合
  • -
  • NOT NULL制約の設定されたカラムが指定された場合
  • -
-
-
Since
3.5
- -
-
-
-
-
-
エラー処理
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

GS_DLL_PUBLIC size_t GS_API_CALL gsGetErrorStackSize (void *gsResource)
 指定のリソースに関する直前のエラー情報のスタックサイズを取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetErrorCode (void *gsResource, size_t stackIndex)
 指定のリソースに関する直前のエラーのエラーコードを取得します。More...
 
GS_DLL_PUBLIC size_t GS_API_CALL gsFormatErrorMessage (void *gsResource, size_t stackIndex, GSChar *strBuf, size_t bufSize)
 指定のリソースに関する直前のエラーのメッセージを取得します。More...
 
GS_DLL_PUBLIC size_t GS_API_CALL gsFormatErrorLocation (void *gsResource, size_t stackIndex, GSChar *strBuf, size_t bufSize)
 指定のリソースに関する直前のエラーのメッセージの内部モジュールのエラー位置情報を取得します。More...
 
GS_DLL_PUBLIC GSBool GS_API_CALL gsIsTimeoutError (GSResult result)
 要求した処理が既定の時間内に終了しなかった場合に発生したエラーに該当するエラーコードかどうかを判定します。More...
 
GS_DLL_PUBLIC size_t GS_API_CALL gsFormatErrorName (void *gsResource, size_t stackIndex, GSChar *strBuf, size_t bufSize)
 指定のリソースに関する直前のエラーのエラー名を取得します。More...
 
GS_DLL_PUBLIC size_t GS_API_CALL gsFormatErrorDescription (void *gsResource, size_t stackIndex, GSChar *strBuf, size_t bufSize)
 指定のリソースに関する直前のエラーの説明内容を取得します。More...
 
GS_DLL_PUBLIC size_t GS_API_CALL gsGetErrorParameterCount (void *gsResource, size_t stackIndex)
 指定のリソースに関する直前のエラーに関するパラメータの個数を取得します。More...
 
GS_DLL_PUBLIC size_t GS_API_CALL gsFormatErrorParameterName (void *gsResource, size_t stackIndex, size_t parameterIndex, GSChar *strBuf, size_t bufSize)
 指定のリソースに関する直前のエラーに関するパラメータの名前を取得します。More...
 
GS_DLL_PUBLIC size_t GS_API_CALL gsFormatErrorParameterValue (void *gsResource, size_t stackIndex, size_t parameterIndex, GSChar *strBuf, size_t bufSize)
 指定のリソースに関する直前のエラーに関するパラメータの値を取得します。More...
 
-

Detailed Description

-

Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC size_t GS_API_CALL gsFormatErrorDescription (void * gsResource,
size_t stackIndex,
GSCharstrBuf,
size_t bufSize 
)
-
- -

指定のリソースに関する直前のエラーの説明内容を取得します。

-
説明内容は、エラーメッセージのうち、エラー番号・エラー名を除いた部分に相当します。
-
Parameters
- - - - - -
[in]gsResourceリソースのアドレス。gsGetErrorStackSizeの同名の引数と同様です。
[in]stackIndexエラースタックのインデックス。gsGetErrorCodeの同名の引数と同様です。
[out]strBufエラーの説明内容を格納する文字列バッファ。gsFormatErrorMessageの同名の引数と同様です。
[in]bufSizeエラーの説明内容を格納する文字列バッファの終端文字を含む文字数。gsFormatErrorMessageの同名の引数と同様です。
-
-
-
Returns
終端文字を含んだ、出力に必要とする文字列バッファのバイト単位の最低サイズ。該当する情報を取得できなかった場合、0
-
Since
4.2
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC size_t GS_API_CALL gsFormatErrorLocation (void * gsResource,
size_t stackIndex,
GSCharstrBuf,
size_t bufSize 
)
-
- -

指定のリソースに関する直前のエラーのメッセージの内部モジュールのエラー位置情報を取得します。

-
設定によっては常に空文字列しか求まらない場合があります。
-
Parameters
- - - - - -
[in]gsResourceリソースのアドレス。gsGetErrorStackSizeの同名の引数と同様です。
[in]stackIndexエラースタックのインデックス。gsGetErrorCodeの同名の引数と同様です。
[out]strBufエラー位置情報を格納する文字列バッファ。gsFormatErrorMessageの同名の引数と同様です。
[in]bufSizeエラー位置情報を格納する文字列バッファの終端文字を含む文字数。gsFormatErrorMessageの同名の引数と同様です。
-
-
-
Returns
終端文字を含んだ、出力に必要とする文字列バッファのバイト単位の最低サイズ。該当する情報を取得できなかった場合、0
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC size_t GS_API_CALL gsFormatErrorMessage (void * gsResource,
size_t stackIndex,
GSCharstrBuf,
size_t bufSize 
)
-
- -

指定のリソースに関する直前のエラーのメッセージを取得します。

-
Parameters
- - - - - -
[in]gsResourceリソースのアドレス。gsGetErrorStackSizeの同名の引数と同様です。
[in]stackIndexエラースタックのインデックス。gsGetErrorCodeの同名の引数と同様です。
[out]strBufエラーメッセージを格納する文字列バッファ。NULLの場合、有効な結果を取得できません。NULLではなく、別の原因で有効な結果が取得できなかった場合、bufSizeが正の値であれば空文字列を格納します。
[in]bufSizeエラーメッセージを格納する文字列バッファの終端文字を含む文字数。格納する文字列の終端文字を含む文字数の方が大きい場合、終端文字を除く後方の文字列を切り詰めて格納します。0の場合、文字列バッファにアクセスしません。
-
-
-
Returns
終端文字を含んだ、出力に必要とする文字列バッファのバイト単位の最低サイズ。該当する情報を取得できなかった場合、0
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC size_t GS_API_CALL gsFormatErrorName (void * gsResource,
size_t stackIndex,
GSCharstrBuf,
size_t bufSize 
)
-
- -

指定のリソースに関する直前のエラーのエラー名を取得します。

-
Parameters
- - - - - -
[in]gsResourceリソースのアドレス。gsGetErrorStackSizeの同名の引数と同様です。
[in]stackIndexエラースタックのインデックス。gsGetErrorCodeの同名の引数と同様です。
[out]strBufエラー名を格納する文字列バッファ。gsFormatErrorMessageの同名の引数と同様です。
[in]bufSizeエラー名を格納する文字列バッファの終端文字を含む文字数。gsFormatErrorMessageの同名の引数と同様です。
-
-
-
Returns
終端文字を含んだ、出力に必要とする文字列バッファのバイト単位の最低サイズ。該当する情報を取得できなかった場合、0
-
Since
4.2
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC size_t GS_API_CALL gsFormatErrorParameterName (void * gsResource,
size_t stackIndex,
size_t parameterIndex,
GSCharstrBuf,
size_t bufSize 
)
-
- -

指定のリソースに関する直前のエラーに関するパラメータの名前を取得します。

-
Parameters
- - - - - - -
[in]gsResourceリソースのアドレス。gsGetErrorStackSizeの同名の引数と同様です。
[in]stackIndexエラースタックのインデックス。gsGetErrorCodeの同名の引数と同様です。
[in]parameterIndexエラーに関するパラメータ集合のインデックス。0以上、かつ、パラメータの個数未満の値を指定した場合のみ、有効な結果を取得できます。
[out]strBufパラメータ名を格納する文字列バッファ。gsFormatErrorMessageの同名の引数と同様です。
[in]bufSizeパラメータ名を格納する文字列バッファの終端文字を含む文字数。gsFormatErrorMessageの同名の引数と同様です。
-
-
-
Returns
終端文字を含んだ、出力に必要とする文字列バッファのバイト単位の最低サイズ。該当する情報を取得できなかった場合、0
-
See Also
gsGetErrorParameterCount
-
Since
4.2
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC size_t GS_API_CALL gsFormatErrorParameterValue (void * gsResource,
size_t stackIndex,
size_t parameterIndex,
GSCharstrBuf,
size_t bufSize 
)
-
- -

指定のリソースに関する直前のエラーに関するパラメータの値を取得します。

-
Parameters
- - - - - - -
[in]gsResourceリソースのアドレス。gsGetErrorStackSizeの同名の引数と同様です。
[in]stackIndexエラースタックのインデックス。gsGetErrorCodeの同名の引数と同様です。
[in]parameterIndexエラーに関するパラメータ集合のインデックス。gsFormatErrorParameterNameの同名の引数と同様です。
[out]strBufパラメータ値を格納する文字列バッファ。gsFormatErrorMessageの同名の引数と同様です。
[in]bufSizeパラメータ値を格納する文字列バッファの終端文字を含む文字数。gsFormatErrorMessageの同名の引数と同様です。
-
-
-
Returns
終端文字を含んだ、出力に必要とする文字列バッファのバイト単位の最低サイズ。該当する情報を取得できなかった場合、0
-
See Also
gsGetErrorParameterCount
-
Since
4.2
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetErrorCode (void * gsResource,
size_t stackIndex 
)
-
- -

指定のリソースに関する直前のエラーのエラーコードを取得します。

-
Parameters
- - - -
[in]gsResourceリソースのアドレス。gsGetErrorStackSizeの同名の引数と同様です。
[in]stackIndexエラースタックのインデックス。0以上スタックサイズ未満の値を指定した場合のみ、有効な結果を取得できます。
-
-
-
Returns
エラーコード。該当する情報を取得できなかった場合、GS_RESULT_OK以外の値
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC size_t GS_API_CALL gsGetErrorParameterCount (void * gsResource,
size_t stackIndex 
)
-
- -

指定のリソースに関する直前のエラーに関するパラメータの個数を取得します。

-
エラーに関する内容のうち、特定の情報についてはパラメータとして取り出すことができます。各パラメータは、名前と値を持ちます。パラメータの個数に基づく各インデックス値を通じ、順不同にパラメータを列挙することができます。取得できるパラメータについては、エラーを引き起こした操作に関する、個々のインタフェースまたは関連するインタフェースの定義を参照してください。
-
取得できるパラメータの内容は、gsFormatErrorMessageもしくはgsFormatErrorDescriptionより求まる文字列にも原則として含まれます。一方、この文字列から特定の情報だけを一定の文字列解析規則で取り出せるとは限りません。特定のバージョンのある状況下では取り出せたとしても、別の条件では意図しない情報が求まるなどして取り出せない可能性があります。エラーに関するパラメータを個々に取得することで、インタフェースの定義で明記された一部の情報については、文字列解析を行わずに取り出せます。
-
エラーに関するパラメータだけを記録し、メッセージ文字列などその他のエラー内容を記録しなかった場合、記録された内容からエラーの原因を特定することが困難となる可能性があります。
-
Parameters
- - - -
[in]gsResourceリソースのアドレス。gsGetErrorStackSizeの同名の引数と同様です。
[in]stackIndexエラースタックのインデックス。gsGetErrorCodeの同名の引数と同様です。
-
-
-
Returns
エラーに関するパラメータの個数。該当する情報を取得できなかった場合、0
-
Since
4.2
- -
-
- -
-
- - - - - - - - -
GS_DLL_PUBLIC size_t GS_API_CALL gsGetErrorStackSize (void * gsResource)
-
- -

指定のリソースに関する直前のエラー情報のスタックサイズを取得します。

-
エラー情報はスタック構造になっており、スタック番号の大きいものほどより直接的なエラー原因と対応します。
-
Parameters
- - -
[in]gsResourceリソースのアドレス。ここでのリソースとは、GSGridStoreFactoryインスタンス、または、GSGridStoreFactoryを介して生成された、クローズ関数により破棄可能なリソースのことです。NULLが指定された場合、有効な結果を取得できません。
-
-
-
Returns
スタックサイズ。該当する情報を取得できなかった場合、0
- -
-
- -
-
- - - - - - - - -
GS_DLL_PUBLIC GSBool GS_API_CALL gsIsTimeoutError (GSResult result)
-
- -

要求した処理が既定の時間内に終了しなかった場合に発生したエラーに該当するエラーコードかどうかを判定します。

-
Returns
該当するエラーコードかどうか
-
Since
1.5
- -
-
-
-
-
-
GSAggregationResult
-
-
- - - - - -

-Typedefs

typedef struct
-GSAggregationResultTag 
GSAggregationResult
 集計演算の結果を保持します。More...
 
- - - - - - - -

-Functions

GS_DLL_PUBLIC void GS_API_CALL gsCloseAggregationResult (GSAggregationResult **aggregationResult)
 指定のGSAggregationResultインスタンスを解放します。More...
 
GS_DLL_PUBLIC GSBool GS_API_CALL gsGetAggregationValue (GSAggregationResult *aggregationResult, void *value, GSType valueType)
 集計結果を指定の型の値として取得します。More...
 
-

Detailed Description

-

Typedef Documentation

- -
-
- - - - -
typedef struct GSAggregationResultTag GSAggregationResult
-
- -

集計演算の結果を保持します。

-
gsGetNextAggregationもしくはgsAggregateTimeSeriesにより取得できる、集計演算の結果を保持します。整数型カラムに対する演算結果を浮動小数点型として、また、有効桁数の少ない数値型のカラムに対する演算結果をより桁数の多い数値型として受け取ることができます。
-
保持する型は、集計演算の種別や集計対象のカラムの型によって決定されます。具体的な規則はGSAggregationまたはTQLの仕様を参照してください。
-
取り出しできる型は、保持する型によって決まります。保持する型が数値型の場合はDOUBLE型またはLONG型、TIMESTAMP型の場合はTIMESTAMP型の値としてのみ取り出しできます。
- -
-
-

Function Documentation

- -
-
- - - - - - - - -
GS_DLL_PUBLIC void GS_API_CALL gsCloseAggregationResult (GSAggregationResult ** aggregationResult)
-
- -

指定のGSAggregationResultインスタンスを解放します。

-
Parameters
- - -
[in,out]aggregationResultクローズ対象のGSAggregationResultインスタンスを指しているポインタ変数へのポインタ値。クローズすると、ポインタ変数にNULLが設定されます。以後、解放したGSAggregationResultインスタンスにアクセスしてはなりません。ポインタ値またはポインタ変数の値がNULLの場合は、クローズ処理を行いません。
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSBool GS_API_CALL gsGetAggregationValue (GSAggregationResultaggregationResult,
void * value,
GSType valueType 
)
-
- -

集計結果を指定の型の値として取得します。

-
取り出しできる型は、指定のaggregationResultが保持している値の型によって、次のように決まります。 - - - - - - - - -
取り出しできる値の型保持している値の型
LONG型(GS_TYPE_LONG) 数値型
DOUBLE型(GS_TYPE_DOUBLE) 数値型
TIMESTAMP型(GS_TYPE_TIMESTAMP) TIMESTAMP型
-
-
また、valueとして指定できる型は、valueTypeによって次のように決まります。 - - - - - - - - -
valueType valueの型
LONG型(GS_TYPE_LONG) int64_t*
DOUBLE型(GS_TYPE_DOUBLE) double*
TIMESTAMP型(GS_TYPE_TIMESTAMP) GSTimestamp*
-
-
Attention
valueTypevalueの型との対応が正しくない場合、この処理の動作は未定義です。アクセス違反により実行プロセスが異常終了する可能性があります。
-
Parameters
- - - - -
[in]aggregationResult処理対象のGSAggregationResult
[out]value取り出す値を格納するための変数へのポインタ値。aggregationResultNULLの場合、また、valueTypevalueとして指定できる型のいずれとも対応しない場合は、何も格納しません。aggregationResultが保持している値の型と照らし合わせて、valueTypeが取り出しできない型であった場合、初期値として0を格納します。
[in]valueType取り出す値の型
-
-
-
Returns
指定のaggregationResultが保持している値を取り出しできたかどうか。次の場合、GS_FALSEを返します。
    -
  • valueTypeとして取り出しできない型が指定された場合
  • -
  • ポインタ型引数にNULLが指定された場合
  • -
-
- -
-
-
-
-
-
GSCollection
-
-
- - - - - -

-Typedefs

typedef GSContainer GSCollection
 ロウ集合を汎用的に管理するためのコンテナです。More...
 
- - - - - - - -

-Functions

GS_DLL_PUBLIC GSResult GS_API_CALL gsQueryByGeometry (GSCollection *collection, const GSChar *column, const GSChar *geometry, GSGeometryOperator geometryOp, GSQuery **query)
 指定した空間範囲条件に合致するロウ集合を求めるための、クエリを作成します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsQueryByGeometryWithDisjointCondition (GSCollection *collection, const GSChar *column, const GSChar *geometryIntersection, const GSChar *geometryDisjoint, GSQuery **query)
 除外範囲付きの空間範囲条件に合致するロウ集合を求めるための、クエリを作成します。More...
 
-

Detailed Description

-

Typedef Documentation

- -
-
- - - - -
typedef GSContainer GSCollection
-
- -

ロウ集合を汎用的に管理するためのコンテナです。

-
ロウキーには次の型が使用できます。
    -
  • STRING型(GSChar*)
  • -
  • INTEGER型(int32_t)
  • -
  • LONG型(int64_t)
  • -
  • TIMESTAMP型(GSTimestamp)
  • -
-
-
ロウキーの設定は必須ではありません。
-
ロウ操作について、コンテナ固有の制限は設けられていません。
-
gsQueryもしくはgsGetMultipleContainerRowsなどより複数のロウの内容を一度に取得する場合、特に指定がなければ、返却されるロウの順序は不定となります。
-
ロック粒度はロウ単位です。
- -
-
-

Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsQueryByGeometry (GSCollectioncollection,
const GSCharcolumn,
const GSChargeometry,
GSGeometryOperator geometryOp,
GSQuery ** query 
)
-
- -

指定した空間範囲条件に合致するロウ集合を求めるための、クエリを作成します。

-
gsFetchを通じてロウ集合を求める際、更新用ロックのオプションを有効にすることもできます。
-
Parameters
- - - - - - -
[in]collection処理対象のGSCollection
[in]column比較対象の空間型カラムの名前
[in]geometry比較対象として与える空間構造
[in]geometryOp比較方法
[out]queryGSQueryインスタンスを格納するためのポインタ変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、このポインタ値がNULL以外の値であれば、対応するポインタ変数にNULLが格納されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • 指定のコンテナの種別がコレクションではない場合
  • -
  • 対応する名前のカラムが存在しない場合
  • -
  • geometryOp以外の引数にNULLが指定された場合
  • -
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsQueryByGeometryWithDisjointCondition (GSCollectioncollection,
const GSCharcolumn,
const GSChargeometryIntersection,
const GSChargeometryDisjoint,
GSQuery ** query 
)
-
- -

除外範囲付きの空間範囲条件に合致するロウ集合を求めるための、クエリを作成します。

-
geometryIntersectionと交差し、かつ、geometryDisjointと交差しないカラム値を持つロウ集合を取得します。交差判定の条件は、GS_GEOMETRY_OPERATOR_INTERSECTと同一です。
-
gsFetchを通じてロウ集合を求める際、更新用ロックのオプションを有効にすることもできます。
-
Parameters
- - - - - - -
[in]collection処理対象のGSCollection
[in]column比較対象の空間型カラムの名前
[in]geometryIntersectionカラム上の値と交差する範囲を示す空間構造
[in]geometryDisjoint上の値と交差しない範囲を示す空間構造
[out]queryGSQueryインスタンスを格納するためのポインタ変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、このポインタ値がNULL以外の値であれば、対応するポインタ変数にNULLが格納されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • 指定のコンテナの種別がコレクションではない場合
  • -
  • 対応する名前のカラムが存在しない場合
  • -
  • 引数にNULLが指定された場合
  • -
-
- -
-
-
-
-
-
GSContainer
-
-
- - - - - -

-Typedefs

typedef struct GSContainerTag GSContainer
 同一タイプのロウ集合からなるGridDBの構成要素に対しての、管理機能を提供します。More...
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

GS_DLL_PUBLIC void GS_API_CALL gsCloseContainer (GSContainer **container, GSBool allRelated)
 指定のGSContainerインスタンスについて、必要に応じこのインスタンスならびに関連するリソースを解放します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsCreateTrigger (GSContainer *container, const GSTriggerInfo *info)
 トリガを設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsCreateIndex (GSContainer *container, const GSChar *columnName, GSIndexTypeFlags flags)
 指定された名前のカラムに対し、指定された種別で名前のない索引を作成します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsDropTrigger (GSContainer *container, const GSChar *name)
 トリガを削除します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsDropIndex (GSContainer *container, const GSChar *columnName, GSIndexTypeFlags flags)
 指定された名前のカラムのうち、指定された種別の索引のみを削除します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsFlush (GSContainer *container)
 これまでの更新結果をSSDなどの不揮発性記憶媒体に書き出し、すべてのクラスタノードが突然停止したとしても内容が失われないようにします。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRow (GSContainer *container, const void *key, void *rowObj, GSBool *exists)
 ロウキーに対応するロウの内容を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsPutRow (GSContainer *container, const void *key, const void *rowObj, GSBool *exists)
 必要に応じ別途ロウキーを指定して、ロウを新規作成または更新します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsPutMultipleRows (GSContainer *container, const void *const *rowObjs, size_t rowCount, GSBool *exists)
 指定のロウオブジェクト集合に基づき、任意個数のロウをまとめて新規作成または更新します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsQuery (GSContainer *container, const GSChar *queryString, GSQuery **query)
 指定のTQL文を実行するためのクエリを作成します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsDeleteRow (GSContainer *container, const void *key, GSBool *exists)
 指定のロウキーに対応するロウを削除します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetContainerType (GSContainer *container, GSContainerType *type)
 指定のコンテナの種別を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsCreateRowByContainer (GSContainer *container, GSRow **row)
 指定のコンテナのカラムレイアウトに基づき、ロウオブジェクトを新規作成します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsAbort (GSContainer *container)
 手動コミットモードにおいて、現在のトランザクションの操作結果を元に戻し、新たなトランザクションを開始します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsCommit (GSContainer *container)
 手動コミットモードにおいて、現在のトランザクションにおける操作結果を確定させ、新たなトランザクションを開始します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowForUpdate (GSContainer *container, const void *key, void *rowObj, GSBool *exists)
 ロウキーに対応するロウについて、更新用ロックを獲得し内容を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetAutoCommit (GSContainer *container, GSBool enabled)
 コミットモードの設定を変更します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowByInteger (GSContainer *container, int32_t key, void *rowObj, GSBool forUpdate, GSBool *exists)
 INTEGER型のロウキーに対応するロウの内容を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowByLong (GSContainer *container, int64_t key, void *rowObj, GSBool forUpdate, GSBool *exists)
 LONG型のロウキーに対応するロウの内容を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowByTimestamp (GSContainer *container, GSTimestamp key, void *rowObj, GSBool forUpdate, GSBool *exists)
 TIMESTAMP型のロウキーに対応するロウの内容を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowByString (GSContainer *container, const GSChar *key, void *rowObj, GSBool forUpdate, GSBool *exists)
 STRING型のロウキーに対応するロウの内容を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsPutRowByInteger (GSContainer *container, int32_t key, const void *rowObj, GSBool *exists)
 INTEGER型のロウキーを指定して、ロウを新規作成または更新します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsPutRowByLong (GSContainer *container, int64_t key, const void *rowObj, GSBool *exists)
 LONG型のロウキーを指定して、ロウを新規作成または更新します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsPutRowByTimestamp (GSContainer *container, GSTimestamp key, const void *rowObj, GSBool *exists)
 TIMESTAMP型のロウキーを指定して、ロウを新規作成または更新します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsPutRowByString (GSContainer *container, const GSChar *key, const void *rowObj, GSBool *exists)
 STRING型のロウキーを指定して、ロウを新規作成または更新します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsDeleteRowByInteger (GSContainer *container, int32_t key, GSBool *exists)
 INTEGER型のロウキーに対応するロウを削除します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsDeleteRowByLong (GSContainer *container, int64_t key, GSBool *exists)
 LONG型のロウキーに対応するロウを削除します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsDeleteRowByTimestamp (GSContainer *container, GSTimestamp key, GSBool *exists)
 TIMESTAMP型のロウキーに対応するロウを削除します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsDeleteRowByString (GSContainer *container, const GSChar *key, GSBool *exists)
 STRING型のロウキーに対応するロウを削除します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowGeneral (GSContainer *container, GSRowKey *keyObj, GSRow *rowObj, GSBool forUpdate, GSBool *exists)
 指定のGSRowKeyに対応するロウの内容をGSRowとして取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsPutRowGeneral (GSContainer *container, GSRowKey *keyObj, GSRow *rowObj, GSBool *exists)
 必要に応じ別途ロウキーを指定して、ロウを新規作成または更新します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsDeleteRowGeneral (GSContainer *container, GSRowKey *keyObj, GSBool *exists)
 指定のロウキーに対応するロウを削除します。More...
 
-

Detailed Description

-

Typedef Documentation

- -
-
- - - - -
typedef struct GSContainerTag GSContainer
-
- -

同一タイプのロウ集合からなるGridDBの構成要素に対しての、管理機能を提供します。

-
ロウオブジェクトを入出力の基本単位として、各種管理機能を提供します。ロウオブジェクトとGridDB上のロウは、指定のロウオブジェクト型とGridDB上のスキーマとの対応関係に基づいて、相互にマッピングされます。
-
GridDB上のスキーマを構成する各カラムは、対応するGS_STRUCT_BINDINGの内容に基づき決定されます。1つのコンテナは1つ以上のカラムにより構成されます。
-
1つのコンテナのカラム間で、ASCIIの大文字・小文字表記だけが異なる名前のものを複数定義することはできません。その他、コンテナ定義におけるカラム名の文字種や長さ、カラム数には制限があります。具体的には、GridDBテクニカルリファレンスを参照してください。特に記載のない限り、カラム名を指定する操作では、ASCIIの大文字・小文字表記の違いは区別されません。
-
カラムの型と、ロウオブジェクト内の各値の型との対応は、それぞれ次の通りです。 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
カラム型ロウオブジェクト内の各値の型
STRING GSChar*
BOOL GSBool
BYTE int8_t
SHORT int16_t
INTEGER int32_t
LONG int64_t
FLOAT float
DOUBLE double
TIMESTAMP GSTimestamp
GEOMETRY GSChar*
BLOB GSBlob
STRING配列GSChar**
BOOL配列GSBool*
BYTE配列int8_t*
SHORT配列int16_t*
INTEGER配列int32_t*
LONG配列int64_t*
FLOAT配列float*
DOUBLE配列double*
TIMESTAMP配列GSTimestamp*
-
-
フィールドの値の表現範囲やサイズには制限があります。具体的には、付録の章の値の範囲の説明、ならびに、GridDBテクニカルリファレンスを参照してください。制限に反する値をコンテナに格納することはできません。
-
ロウキーとして許可されている型や、ロウキーに対応するカラムの有無、ロウ更新の可否といった制約は、このコンテナ型から派生した個別の型の定義によって異なります。
-
GridDB上のロウにおけるNULLは、NOT NULL制約が設定されていない限り保持することができます。NULLは、GSRowを通じて格納や取り出しを行うことができます。一方、GS_STRUCT_BINDINGと対応付くロウオブジェクトにおいては、常に後述の空の値にマッピングされます。
-
ロウオブジェクト型におけるNOT NULL制約は、GS_TYPE_OPTION_NULLABLEならびにGS_TYPE_OPTION_NOT_NULLにより明示的に指定できます。NOT NULL制約がいずれの指定対象にも指定されていない場合、ロウキー以外のカラムはNOT NULL制約なしであるとみなされます。ロウキーは暗黙的にNOT NULL制約が設定された状態となっており、この制約を外すような指定はできません。また、同一指定対象での矛盾したNOT NULL制約は指定できません。NOT NULL制約は、GSColumnInfoTag::optionsを通じて指定することができます。
-
空の値は、GSRowの作成など各種操作の初期値などとして用いられることのある、フィールド値の一種です。以下のように、カラム型ごとに値が定義されています。 - - - - - - - - - - - - - - - - -
カラム型空の値
STRING "" (長さ0の文字列)
BOOL 偽(GS_FALSE)
数値型0
TIMESTAMP 1970-01-01T00:00:00Z
GEOMETRY POINT(EMPTY)
BLOB 長さ0のBLOBデータ
配列型要素数0の配列
-
-
トランザクション処理では、デフォルトで自動コミットモードが有効になっています。自動コミットモードでは、変更操作は逐次確定し、明示的に取り消すことができません。手動コミットモードにおいて、GSContainerインスタンスを介した操作によりクラスタノード上でエラーが検出された場合、コミット前の更新操作はすべて取り消されます。トランザクション分離レベルはREAD COMMITTEDのみをサポートします。ロック粒度は、コンテナの種別によって異なります。
-
ロウの更新・追加・削除、ならびに更新用ロック獲得を行った場合、内部でトランザクションが生成されます。このトランザクションには、有効期限が存在します。これらの操作をあるGSContainerインスタンスに対してはじめて行った時刻を起点として、GridDB上で定められている期間だけ経過した後に、さらに同様の操作やトランザクション操作を行おうとすると、該当するGSContainerインスタンスを介した以降の操作は常に失敗するようになります。
-
あるコンテナへの操作要求に対するクラスタノード上での処理が開始され、終了するまでの間、同一のコンテナに対する操作が待機させられる場合があります。ここでの操作には、コンテナのスキーマや索引などの定義変更、コンテナ情報の参照、ロウ操作などが含まれます。一貫性レベルがIMMEDIATEGSGridStoreインスタンスを通じてコンテナを操作する場合、同一のコンテナに対するIMMEDIATE設定での他の操作処理の途中、原則としては待機させられます。また、コンテナに対する他の操作処理の途中の状態に基づいて処理が行われることは、原則としてはありません。例外事項については、個別の操作ごとの説明を参照してください。
- -
-
-

Function Documentation

- -
-
- - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsAbort (GSContainercontainer)
-
- -

手動コミットモードにおいて、現在のトランザクションの操作結果を元に戻し、新たなトランザクションを開始します。

-
Parameters
- - -
[in]container処理対象のGSContainer
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • 自動コミットモードでないにもかかわらず呼び出した場合
  • -
  • この処理またはトランザクションのタイムアウト、指定のコンテナの削除、接続障害が発生した場合
  • -
  • 引数にNULLが指定された場合
  • -
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC void GS_API_CALL gsCloseContainer (GSContainer ** container,
GSBool allRelated 
)
-
- -

指定のGSContainerインスタンスについて、必要に応じこのインスタンスならびに関連するリソースを解放します。

-
トランザクションを保持している場合、未コミットの更新内容はすべて元に戻されます。
-
この処理を行うために接続障害が発生したとしても、ローカルリソースの解放処理は適宜実施されます。ただし、GridDB上のトランザクション状態などは状態などは残る可能性があります。
-
Parameters
- - - -
[in,out]containerクローズ対象のGSContainerインスタンスを指しているポインタ変数へのポインタ値。クローズすると、ポインタ変数にNULLが設定されます。以後、解放したGSContainerインスタンスにアクセスしてはなりません。ポインタ値またはポインタ変数の値がNULLの場合は、クローズ処理を行いません。
[in]allRelated指定のGSContainerと関連する下位のリソースのうち、未クローズのものすべてをクローズするかどうか。関連する下位のリソースとは、指定のGSContainerを介して取得したGSQueryGSAggregationResult、ならびに、これらのリソースと関連する下位のリソースのことを指します。GS_FALSEを指定した場合、指定のGSContainerを介して取得したリソースを個別にクローズする必要があり、すべてクローズした時点で指定のGSContainer自体のリソースが解放されます。
-
-
- -
-
- -
-
- - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsCommit (GSContainercontainer)
-
- -

手動コミットモードにおいて、現在のトランザクションにおける操作結果を確定させ、新たなトランザクションを開始します。

-
Parameters
- - -
[in]container処理対象のGSContainer
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • 自動コミットモードでないにもかかわらず呼び出した場合
  • -
  • この処理またはトランザクションのタイムアウト、指定のコンテナの削除、接続障害が発生した場合
  • -
  • 引数にNULLが指定された場合
  • -
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsCreateIndex (GSContainercontainer,
const GSCharcolumnName,
GSIndexTypeFlags flags 
)
-
- -

指定された名前のカラムに対し、指定された種別で名前のない索引を作成します。

-
カラム名と種別のみが設定されたGSIndexInfoを指定してgsCreateIndexDetailを呼び出した場合と同様に振る舞います。ただし、flagsにデフォルト種別を含め一つも種別が指定されていない場合、索引は作成されません。
-
Parameters
- - - - -
[in]container処理対象のGSContainer
[in]columnName処理対象のカラムの名前
[in]flags作成する索引種別のフラグ値のビット和。指定できる値はgsCreateIndexDetailの場合と同様です
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • 指定のカラム名と種別がgsCreateIndexDetailの規則に合致しない場合
  • -
  • この処理のタイムアウト、指定のコンテナの削除もしくはスキーマ変更、接続障害が発生した場合
  • -
  • flags以外の引数にNULLが指定された場合
  • -
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsCreateRowByContainer (GSContainercontainer,
GSRow ** row 
)
-
- -

指定のコンテナのカラムレイアウトに基づき、ロウオブジェクトを新規作成します。

-
作成されるGSRowの各フィールドにはgsCreateRowByStoreにより作成した場合と同様に既定の初期値が設定されます。
-
Parameters
- - - -
[in]container処理対象のGSContainer
[out]rowGSRowインスタンスを格納するためのポインタ変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、このポインタ値がNULL以外の値であれば、対応するポインタ変数にNULLが格納されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • 引数にNULLが指定された場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsCreateTrigger (GSContainercontainer,
const GSTriggerInfoinfo 
)
-
- -

トリガを設定します。

-
指定のコンテナに対して特定の種別の更新操作が行われた場合に、指定のURIに通知が送信されるようになります。指定されたトリガと同名のトリガが存在した場合、設定内容が上書きされます。
-
トリガ設定内容の詳細は、GSTriggerInfoの定義を参照してください。トリガ名、トリガ種別、通知条件、通知先URI、通知内容の詳細は以下の通りです。
-
トリガ名
トリガ種別や通知条件などの違いによらず、1つのコンテナのトリガ間で、ASCIIの大文字・小文字表記を含め同一の名前のものを複数定義することはできません。その他、トリガの定義において使用できるトリガ名の文字種や長さには制限があります。具体的には、GridDBテクニカルリファレンスを参照してください。特に記載のない限り、トリガ名を指定する操作では、ASCIIの大文字・小文字表記の違いが区別されます。
-
トリガ種別
次のトリガ種別をサポートします。 - - - - - - -
名称説明
REST コンテナに指定された種別の更新操作が行われた際に、指定されたURIにREST(HTTP POSTメソッド)で通知するトリガです。
Java Message Service(JMS) コンテナに指定された種別の更新操作が行われた際に、指定されたURIのJMSサーバへJMSメッセージを通知するトリガです。JMSプロバイダとしてApache ActiveMQを使用します。
-
-
通知条件
指定のコンテナに対するロウ新規作成/更新(gsPutRowgsPutMultipleRowsgsPutMultipleContainerRowsgsUpdateCurrentRow)・削除(gsDeleteRowgsDeleteCurrentRow)操作命令の実行直後に通知を行います。監視対象として複数の操作が指定された場合は、そのうちのいずれかが実行された際に通知を行います。
-
通知を行った時点でのレプリケーションの完了は保証されません。自動コミットモード無効で実行されたロウ新規作成/更新・削除命令に対応する通知については、通知を行った時点でトランザクションが未コミットであったり、通知後にトランザクションがアボートされたりした場合、通知を受けた時点で通知に含まれるデータが取得できないことがあります。
-
複数ロウ一括操作の場合、1件のロウ操作ごとに通知を行います。指定されたURIに通知を行っても一定時間以内に応答がない場合、タイムアウトし再送は行いません。GridDBクラスタに障害が発生した場合、ある更新操作に対応する通知が行われないことのほか、複数回通知されることがあります。
-
通知先URI
通知先URIは次の書式で記述します。
(メソッド名)://(ホスト名):(ポート番号)/(パス)
-
ただし、トリガ種別がRESTの場合、メソッド名にはhttpのみ指定できます。
-
通知内容
更新が行われたコンテナ名、更新操作名、更新されたロウデータの指定したカラムの値を通知します。更新操作名は、ロウ新規作成/更新では"put"、削除では"delete"となります。
-
通知する値は、ロウ新規作成では新規作成直後、更新では更新後、削除では削除前のロウデータについての、指定カラムの値となります。カラムの型がTIMESTAMPの場合、1970-01-01T00:00:00Zからの経過ミリ秒を示す整数が値として設定されます。カラムの型が、BLOB型、GEOMETRY型、配列型の場合、空文字列が値として設定されます。
-
通知方法―RESTの場合
以下のようなJSON文字列を、MIMEタイプapplication/jsonで送信します。
{
-
"container" : "(コンテナ名)",
-
"event" : "(更新操作名)",
-
"row" : {
-
"(カラム名)" : (カラムデータ),
-
"(カラム名)" : (カラムデータ),
-
...
-
}
-
}
-
-
通知方法―JMSの場合
javax.jms.TextMessageを、指定されたデスティネーション種別・デスティネーション名で送信します。
-
コンテナ名は、javax.jms.Message::setStringProperty("@container", "(コンテナ名)")で設定されます。更新操作名は、javax.jms.Message::setStringProperty("@event", "(更新操作名)")で設定されます。
-
カラムの値は、カラムの型に応じたjavax.jms.Message::setXXXProperty("(カラム名)", (カラムデータ))で設定されます。
-
トリガが設定されているコンテナに対してgsPutCollectiongsPutTimeSeriesなどによりカラムレイアウトが変更された際に、トリガの通知対象となっているカラムの削除または名称変更があった場合、該当するカラムはトリガの通知対象から削除されます。
-
GridDBからの通知の際に、設定されている通知先URIへのリクエストに対応するサーバが応答しなかった場合、タイムアウト時刻までの待機処理が発生します。この待機処理は、このコンテナならびに他の一部のコンテナの更新に対する通知が遅れる要因となります。したがって、無効となった通知先URIを持つトリガはgsDropTriggerにより削除することが推奨されます。
-
一つのコンテナに対して設定できるトリガの最大数、ならびに、トリガの各種設定値の上限については、GridDBテクニカルリファレンスを参照してください。
-
Parameters
- - - -
[in]container設定対象のGSContainer
[in]info設定対象のトリガ情報
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • トリガ名がNULL空、またはその他の規則に合致しない場合
  • -
  • 監視対象更新操作の指定がない場合
  • -
  • 通知先のURIが規定の構文に合致しない場合
  • -
  • トリガ種別でJMSが指定され、かつJMSデスティネーション種別がNULL、または空、または指定の書式に合致しない場合
  • -
  • トリガ種別でJMSが指定され、かつJMSデスティネーション名がNULL、または空の場合
  • -
  • この処理のタイムアウト、指定のコンテナの削除、接続障害が発生した場合
  • -
  • 引数にNULLが指定された場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsDeleteRow (GSContainercontainer,
const void * key,
GSBoolexists 
)
-
- -

指定のロウキーに対応するロウを削除します。

-
ロウキーに対応するカラムが存在する場合のみ使用できます。対応するロウが存在しない場合は何も変更しません。
-
ただし、コンテナの種別ならびに設定によっては、制限が設けられています。圧縮オプションが設定された状態の時系列に対しては使用できません。
-
手動コミットモードの場合、対象のロウはロックされます。
-
Attention
指定のGSContainerにバインドされたロウオブジェクトのロウキーの型と指定のロウキーの型とが一致しない場合、この処理の動作は未定義です。アクセス違反により実行プロセスが異常終了する可能性があります。
-
Parameters
- - - - -
[in]container処理対象のGSContainer
[in]key処理対象のロウキーが格納された変数へのポインタ値。GSContainerにおいて定義されているコンテナ上のロウキーの型とこの引数の型との関係は、gsGetRowの場合と同様です。
[out]exists処理対象のロウが存在したかどうかを格納するためのブール型変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、GS_FALSEが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • ロウキーに対応するカラムが存在しない場合
  • -
  • 特定コンテナ固有の制限に反する操作を行った場合
  • -
  • この処理またはトランザクションのタイムアウト、指定のコンテナの削除もしくはスキーマ変更、接続障害が発生した場合
  • -
  • サポート範囲外の値がキーとして指定された場合
  • -
  • exists以外の引数にNULLが指定された場合。また、keyに対応する文字列キーのポインタ値がNULLの場合
  • -
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsDeleteRowByInteger (GSContainercontainer,
int32_t key,
GSBoolexists 
)
-
- -

INTEGER型のロウキーに対応するロウを削除します。

-
ロウキーに対応するINTEGER型のカラムが存在する場合のみ使用できます。対応するロウが存在しない場合は何も変更しません。
-
手動コミットモードの場合、対象のロウはロックされます。
-
Parameters
- - - - -
[in]container処理対象のGSContainer
[in]key処理対象のロウキー
[out]exists処理対象のロウが存在したかどうかを格納するためのブール型変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、GS_FALSEが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • ロウキーに対応するINTEGER型のカラムが存在しない場合
  • -
  • この処理またはトランザクションのタイムアウト、指定のコンテナの削除もしくはスキーマ変更、接続障害が発生した場合
  • -
-
-
See Also
gsDeleteRow
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsDeleteRowByLong (GSContainercontainer,
int64_t key,
GSBoolexists 
)
-
- -

LONG型のロウキーに対応するロウを削除します。

-
ロウキーに対応するLONG型のカラムが存在する場合のみ使用できます。対応するロウが存在しない場合は何も変更しません。
-
手動コミットモードの場合、対象のロウはロックされます。
-
Parameters
- - - - -
[in]container処理対象のGSContainer
[in]key処理対象のロウキー
[out]exists処理対象のロウが存在したかどうかを格納するためのブール型変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、GS_FALSEが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • ロウキーに対応するLONG型のカラムが存在しない場合
  • -
  • この処理またはトランザクションのタイムアウト、指定のコンテナの削除もしくはスキーマ変更、接続障害が発生した場合
  • -
-
-
See Also
gsDeleteRow
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsDeleteRowByString (GSContainercontainer,
const GSCharkey,
GSBoolexists 
)
-
- -

STRING型のロウキーに対応するロウを削除します。

-
ロウキーに対応するSTRING型のカラムが存在する場合のみ使用できます。対応するロウが存在しない場合は何も変更しません。
-
手動コミットモードの場合、対象のロウはロックされます。
-
Parameters
- - - - -
[in]container処理対象のGSContainer
[in]key処理対象のロウキー
[out]exists処理対象のロウが存在したかどうかを格納するためのブール型変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、GS_FALSEが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • ロウキーに対応するSTRING型のカラムが存在しない場合
  • -
  • この処理またはトランザクションのタイムアウト、指定のコンテナの削除もしくはスキーマ変更、接続障害が発生した場合
  • -
  • サポート範囲外の値がキーとして指定された場合
  • -
-
-
See Also
gsDeleteRow
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsDeleteRowByTimestamp (GSContainercontainer,
GSTimestamp key,
GSBoolexists 
)
-
- -

TIMESTAMP型のロウキーに対応するロウを削除します。

-
ロウキーに対応するTIMESTAMP型のカラムが存在する場合のみ使用できます。対応するロウが存在しない場合は何も変更しません。
-
ただし、コンテナの種別ならびに設定によっては、制限が設けられています。圧縮オプションが設定された状態の時系列に対しては使用できません。
-
手動コミットモードの場合、対象のロウはロックされます。
-
Parameters
- - - - -
[in]container処理対象のGSContainer
[in]key処理対象のロウキー
[out]exists処理対象のロウが存在したかどうかを格納するためのブール型変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、GS_FALSEが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • ロウキーに対応するTIMESTAMP型のカラムが存在しない場合
  • -
  • 特定コンテナ固有の制限に反する操作を行った場合
  • -
  • この処理またはトランザクションのタイムアウト、指定のコンテナの削除もしくはスキーマ変更、接続障害が発生した場合
  • -
  • サポート範囲外の値がキーとして指定された場合
  • -
-
-
See Also
gsDeleteRow
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsDeleteRowGeneral (GSContainercontainer,
GSRowKeykeyObj,
GSBoolexists 
)
-
- -

指定のロウキーに対応するロウを削除します。

-
ロウキーを持つコンテナであれば、ロウキーを構成するカラム数やカラム型によらず使用できます。対応するロウが存在しない場合は何も変更しません。
-
ただし、コンテナの種別ならびに設定によっては、制限が設けられています。圧縮オプションが設定された状態の時系列に対しては使用できません。
-
手動コミットモードの場合、対象のロウはロックされます。
-
Parameters
- - - - -
[in]container処理対象のGSContainer
[in]keyObj処理対象のロウキー
[out]exists処理対象のロウが存在したかどうかを格納するためのブール型変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、GS_FALSEが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • ロウキーに対応するカラムが存在しない場合
  • -
  • 特定コンテナ固有の制限に反する操作を行った場合
  • -
  • この処理またはトランザクションのタイムアウト、指定のコンテナの削除もしくはスキーマ変更、接続障害が発生した場合
  • -
  • サポート範囲外の値がキーとして指定された場合
  • -
  • exists以外の引数にNULLが指定された場合。また、keyに対応する文字列キーのポインタ値がNULLの場合
  • -
-
-
Since
4.3
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsDropIndex (GSContainercontainer,
const GSCharcolumnName,
GSIndexTypeFlags flags 
)
-
- -

指定された名前のカラムのうち、指定された種別の索引のみを削除します。

-
カラム名と種別のみが設定されたGSIndexInfoを指定してgsDropIndexDetailを呼び出した場合と同様に振る舞います。ただし、flagsにデフォルト種別を含め一つも種別が指定されていない場合、いずれの索引も削除対象にはなりません。
-
Parameters
- - - - -
[in]container処理対象のGSContainer
[in]columnName処理対象のカラムの名前
[in]flags削除する索引種別のフラグ値のビット和。指定できる値はgsDropIndexDetailの場合と同様です
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • 指定のカラム名と種別がgsDropIndexDetailの規則に合致しない場合
  • -
  • この処理のタイムアウト、指定のコンテナの削除もしくはスキーマ変更、接続障害が発生した場合
  • -
  • flags以外の引数にNULLが指定された場合
  • -
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsDropTrigger (GSContainercontainer,
const GSCharname 
)
-
- -

トリガを削除します。

-
指定された名前のトリガが存在しない場合は何も削除しません。
-
Parameters
- - - -
[in]container削除対象のGSContainer
[in]name削除対象のトリガ名
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • この処理のタイムアウト、指定のコンテナの削除、接続障害が発生した場合
  • -
  • 引数にNULLが指定された場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsFlush (GSContainercontainer)
-
- -

これまでの更新結果をSSDなどの不揮発性記憶媒体に書き出し、すべてのクラスタノードが突然停止したとしても内容が失われないようにします。

-
通常より信頼性が要求される処理のために使用します。ただし、頻繁に実行すると性能低下を引き起こす可能性が高まります。
-
書き出し対象のクラスタノードの範囲など、挙動の詳細はGridDB上の設定によって変化します。
-
Parameters
- - -
[in]container処理対象のGSContainer
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • この処理のタイムアウト、指定のコンテナの削除もしくはスキーマ変更、接続障害が発生した場合
  • -
  • 引数にNULLが指定された場合
  • -
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetContainerType (GSContainercontainer,
GSContainerTypetype 
)
-
- -

指定のコンテナの種別を取得します。

-
現バージョンでは、インスタンス生成時点で常に種別が確定するため、この操作によりGridDBクラスタに問い合わせを行うことはありません。
-
Parameters
- - - -
[in]container処理対象のGSContainer
[out]type指定のコンテナの種別を格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、GS_CONTAINER_COLLECTIONが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • 引数にNULLが指定された場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRow (GSContainercontainer,
const void * key,
void * rowObj,
GSBoolexists 
)
-
- -

ロウキーに対応するロウの内容を取得します。

-
ロウキーに対応するカラムが存在する場合のみ使用できます。
-
Attention
指定のGSContainerにバインドされたロウオブジェクトの型と指定のロウオブジェクトの型とが一致しない場合、この処理の動作は未定義です。同様に、ロウキーの型が一致しない場合の動作も未定義です。アクセス違反により実行プロセスが異常終了する可能性があります。
-
-文字列や配列などの可変長のデータを格納するために、指定のGSContainerと対応するGSGridStoreインスタンス上で管理される、一時的なメモリ領域を使用します。この領域は、対応するGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
-
Parameters
- - - - - -
[in]container処理対象のGSContainer
[in]key処理対象のロウキーが格納された変数へのポインタ値。GSContainerにおいて定義されているコンテナ上のロウキーの型とこの引数の型との関係は次のようになります。 - - - - - - - - - - - - -
コンテナ上の型引数の型
STRING GSChar** ※GSChar*との取り違えに注意
INTEGER int32_t*
LONG int64_t*
TIMESTAMP GSTimeStamp*
複合ロウキーGSRowKey*
-
[out]rowObj取得対象のロウの内容を格納するためのロウオブジェクト。取得対象のロウが存在しない場合、ロウオブジェクトの内容は何も変更されません。実行結果としてGS_RESULT_OK以外が返される場合、ロウオブジェクトのフィールドのうち一部またはすべてが変更されることがあります。
[out]exists処理対象のロウが存在したかどうかを格納するためのブール型変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、GS_FALSEが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • ロウキーに対応するカラムが存在しない場合
  • -
  • この処理またはトランザクションのタイムアウト、指定のコンテナの削除もしくはスキーマ変更、接続障害が発生した場合
  • -
  • サポート範囲外の値がキーとして設定されていた場合
  • -
  • exists以外の引数にNULLが指定された場合
  • -
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowByInteger (GSContainercontainer,
int32_t key,
void * rowObj,
GSBool forUpdate,
GSBoolexists 
)
-
- -

INTEGER型のロウキーに対応するロウの内容を取得します。

-
ロウキーに対応するINTEGER型のカラムが存在する場合のみ使用できます。
-
手動コミットモードにおいて更新用ロックを要求した場合、トランザクションが終了するかタイムアウトするまで対象ロウのロックを維持します。ロックされたロウに対する他のトランザクションからの更新・削除操作は、このトランザクションが終了するかタイムアウトするまで待機するようになります。対象ロウが削除されたとしても、ロックは維持されます。
-
自動コミットモードの場合、更新用ロックを要求できません。
-
取得結果のロウオブジェクトに含まれる文字列や配列などの可変長サイズのデータのリソースは、指定のGSContainerを直接介した次回のロウオブジェクト取得処理を実行するまで維持されます。
-
Attention
指定のGSContainerにバインドされたロウオブジェクトの型と指定のロウオブジェクトの型とが一致しない場合、この処理の動作は未定義です。アクセス違反により実行プロセスが異常終了する可能性があります。
-
-文字列や配列などの可変長のデータを格納するために、指定のGSContainerと対応するGSGridStoreインスタンス上で管理される、一時的なメモリ領域を使用します。この領域は、対応するGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
-
Parameters
- - - - - - -
[in]container処理対象のGSContainer
[in]key処理対象のロウキー
[out]rowObj取得対象のロウの内容を格納するためのロウオブジェクト。取得対象のロウが存在しない場合、ロウオブジェクトの内容は何も変更されません。実行結果としてGS_RESULT_OK以外が返される場合、ロウオブジェクトのフィールドのうち一部またはすべてが変更されることがあります。
[in]forUpdate更新用ロックを要求するかどうか
[out]exists処理対象のロウが存在したかどうかを格納するためのブール型変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、GS_FALSEが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • ロウキーに対応するINTEGER型のカラムが存在しない場合
  • -
  • 自動コミットモードでないにもかかわらず、更新用ロックを要求しようとした場合
  • -
  • この処理またはトランザクションのタイムアウト、指定のコンテナの削除もしくはスキーマ変更、接続障害が発生した場合
  • -
  • サポート範囲外の値がキーとして設定されていた場合
  • -
  • exists以外の引数にNULLが指定された場合
  • -
-
-
See Also
gsGetRow
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowByLong (GSContainercontainer,
int64_t key,
void * rowObj,
GSBool forUpdate,
GSBoolexists 
)
-
- -

LONG型のロウキーに対応するロウの内容を取得します。

-
ロウキーに対応するLONG型のカラムが存在する場合のみ使用できます。
-
手動コミットモードにおいて更新用ロックを要求した場合、トランザクションが終了するかタイムアウトするまで対象ロウのロックを維持します。ロックされたロウに対する他のトランザクションからの更新・削除操作は、このトランザクションが終了するかタイムアウトするまで待機するようになります。対象ロウが削除されたとしても、ロックは維持されます。
-
自動コミットモードの場合、更新用ロックを要求できません。
-
取得結果のロウオブジェクトに含まれる文字列や配列などの可変長サイズのデータのリソースは、指定のGSContainerを直接介した次回のロウオブジェクト取得処理を実行するまで維持されます。
-
Attention
指定のGSContainerにバインドされたロウオブジェクトの型と指定のロウオブジェクトの型とが一致しない場合、この処理の動作は未定義です。アクセス違反により実行プロセスが異常終了する可能性があります。
-
-文字列や配列などの可変長のデータを格納するために、指定のGSContainerと対応するGSGridStoreインスタンス上で管理される、一時的なメモリ領域を使用します。この領域は、対応するGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
-
Parameters
- - - - - - -
[in]container処理対象のGSContainer
[in]key処理対象のロウキー
[out]rowObj取得対象のロウの内容を格納するためのロウオブジェクト。取得対象のロウが存在しない場合、ロウオブジェクトの内容は何も変更されません。実行結果としてGS_RESULT_OK以外が返される場合、ロウオブジェクトのフィールドのうち一部またはすべてが変更されることがあります。
[in]forUpdate更新用ロックを要求するかどうか
[out]exists処理対象のロウが存在したかどうかを格納するためのブール型変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、GS_FALSEが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • ロウキーに対応するLONG型のカラムが存在しない場合
  • -
  • 自動コミットモードでないにもかかわらず、更新用ロックを要求しようとした場合
  • -
  • この処理またはトランザクションのタイムアウト、指定のコンテナの削除もしくはスキーマ変更、接続障害が発生した場合
  • -
  • サポート範囲外の値がキーとして設定されていた場合
  • -
  • exists以外の引数にNULLが指定された場合
  • -
-
-
See Also
gsGetRow
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowByString (GSContainercontainer,
const GSCharkey,
void * rowObj,
GSBool forUpdate,
GSBoolexists 
)
-
- -

STRING型のロウキーに対応するロウの内容を取得します。

-
ロウキーに対応するSTRING型のカラムが存在する場合のみ使用できます。
-
手動コミットモードにおいて更新用ロックを要求した場合、トランザクションが終了するかタイムアウトするまで対象ロウのロックを維持します。ロックされたロウに対する他のトランザクションからの更新・削除操作は、このトランザクションが終了するかタイムアウトするまで待機するようになります。対象ロウが削除されたとしても、ロックは維持されます。
-
自動コミットモードの場合、更新用ロックを要求できません。
-
取得結果のロウオブジェクトに含まれる文字列や配列などの可変長サイズのデータのリソースは、指定のGSContainerを直接介した次回のロウオブジェクト取得処理を実行するまで維持されます。
-
Attention
指定のGSContainerにバインドされたロウオブジェクトの型と指定のロウオブジェクトの型とが一致しない場合、この処理の動作は未定義です。アクセス違反により実行プロセスが異常終了する可能性があります。
-
-文字列や配列などの可変長のデータを格納するために、指定のGSContainerと対応するGSGridStoreインスタンス上で管理される、一時的なメモリ領域を使用します。この領域は、対応するGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
-
Parameters
- - - - - - -
[in]container処理対象のGSContainer
[in]key処理対象のロウキー
[out]rowObj取得対象のロウの内容を格納するためのロウオブジェクト。取得対象のロウが存在しない場合、ロウオブジェクトの内容は何も変更されません。実行結果としてGS_RESULT_OK以外が返される場合、ロウオブジェクトのフィールドのうち一部またはすべてが変更されることがあります。
[in]forUpdate更新用ロックを要求するかどうか
[out]exists処理対象のロウが存在したかどうかを格納するためのブール型変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、GS_FALSEが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • ロウキーに対応するSTRING型のカラムが存在しない場合
  • -
  • 自動コミットモードでないにもかかわらず、更新用ロックを要求しようとした場合
  • -
  • この処理またはトランザクションのタイムアウト、指定のコンテナの削除もしくはスキーマ変更、接続障害が発生した場合
  • -
  • サポート範囲外の値がキーとして設定されていた場合
  • -
  • exists以外の引数にNULLが指定された場合
  • -
-
-
See Also
gsGetRow
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowByTimestamp (GSContainercontainer,
GSTimestamp key,
void * rowObj,
GSBool forUpdate,
GSBoolexists 
)
-
- -

TIMESTAMP型のロウキーに対応するロウの内容を取得します。

-
ロウキーに対応するTIMESTAMP型のカラムが存在する場合のみ使用できます。
-
手動コミットモードにおいて更新用ロックを要求した場合、トランザクションが終了するかタイムアウトするまで対象ロウのロックを維持します。ロックされたロウに対する他のトランザクションからの更新・削除操作は、このトランザクションが終了するかタイムアウトするまで待機するようになります。対象ロウが削除されたとしても、ロックは維持されます。
-
自動コミットモードの場合、更新用ロックを要求できません。
-
取得結果のロウオブジェクトに含まれる文字列や配列などの可変長サイズのデータのリソースは、指定のGSContainerを直接介した次回のロウオブジェクト取得処理を実行するまで維持されます。
-
Attention
指定のGSContainerにバインドされたロウオブジェクトの型と指定のロウオブジェクトの型とが一致しない場合、この処理の動作は未定義です。アクセス違反により実行プロセスが異常終了する可能性があります。
-
-文字列や配列などの可変長のデータを格納するために、指定のGSContainerと対応するGSGridStoreインスタンス上で管理される、一時的なメモリ領域を使用します。この領域は、対応するGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
-
Parameters
- - - - - - -
[in]container処理対象のGSContainer
[in]key処理対象のロウキー
[out]rowObj取得対象のロウの内容を格納するためのロウオブジェクト。取得対象のロウが存在しない場合、ロウオブジェクトの内容は何も変更されません。実行結果としてGS_RESULT_OK以外が返される場合、ロウオブジェクトのフィールドのうち一部またはすべてが変更されることがあります。
[in]forUpdate更新用ロックを要求するかどうか
[out]exists処理対象のロウが存在したかどうかを格納するためのブール型変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、GS_FALSEが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • ロウキーに対応するTIMESTAMP型のカラムが存在しない場合
  • -
  • 自動コミットモードでないにもかかわらず、更新用ロックを要求しようとした場合
  • -
  • この処理またはトランザクションのタイムアウト、指定のコンテナの削除もしくはスキーマ変更、接続障害が発生した場合
  • -
  • サポート範囲外の値がキーとして設定されていた場合
  • -
  • exists以外の引数にNULLが指定された場合
  • -
-
-
See Also
gsGetRow
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowForUpdate (GSContainercontainer,
const void * key,
void * rowObj,
GSBoolexists 
)
-
- -

ロウキーに対応するロウについて、更新用ロックを獲得し内容を取得します。

-
ロウキーに対応するカラムが存在する場合、かつ、手動コミットモードの場合のみ使用できます。
-
トランザクションが終了するかタイムアウトするまで対象ロウのロックを維持します。ロックされたロウに対する他のトランザクションからの更新・削除操作は、このトランザクションが終了するかタイムアウトするまで待機するようになります。対象ロウが削除されたとしても、ロックは維持されます。
-
取得結果のロウオブジェクトに含まれる文字列や配列などの可変長サイズのデータのリソースは、指定のGSContainerを直接介した次回のロウオブジェクト取得処理を実行するまで維持されます。
-
Attention
指定のGSContainerにバインドされたロウオブジェクトの型と指定のロウオブジェクトの型とが一致しない場合、この処理の動作は未定義です。同様に、ロウキーの型が一致しない場合の動作も未定義です。アクセス違反により実行プロセスが異常終了する可能性があります。
-
-文字列や配列などの可変長のデータを格納するために、指定のGSContainerと対応するGSGridStoreインスタンス上で管理される、一時的なメモリ領域を使用します。この領域は、対応するGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
-
Parameters
- - - - - -
[in]container処理対象のGSContainer
[in]key処理対象のロウキーが格納された変数へのポインタ値。GSContainerにおいて定義されているコンテナ上のロウキーの型とこの引数の型との関係は、gsGetRowの場合と同様です。
[out]rowObj取得対象のロウの内容を格納するためのロウオブジェクト。取得対象のロウが存在しない場合、ロウオブジェクトの内容は何も変更されません。実行結果としてGS_RESULT_OK以外が返される場合、ロウオブジェクトのフィールドのうち一部またはすべてが変更されることがあります。
[out]exists処理対象のロウが存在したかどうかを格納するためのブール型変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、GS_FALSEが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • ロウキーに対応するカラムが存在しない場合
  • -
  • 自動コミットモードの場合
  • -
  • この処理またはトランザクションのタイムアウト、指定のコンテナの削除もしくはスキーマ変更、接続障害が発生した場合
  • -
  • サポート範囲外の値がキーとして設定されていた場合
  • -
  • exists以外の引数にNULLが指定された場合
  • -
-
-
See Also
gsGetRow
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowGeneral (GSContainercontainer,
GSRowKeykeyObj,
GSRowrowObj,
GSBool forUpdate,
GSBoolexists 
)
-
- -

指定のGSRowKeyに対応するロウの内容をGSRowとして取得します。

-
ロウキーを持つコンテナであれば、ロウキーを構成するカラム数やカラム型によらず使用できます。gsGetRowとは異なり、指定のGSRowがクローズされるまで各フィールド値にアクセスすることができます。
-
手動コミットモードにおいて更新用ロックを要求した場合、トランザクションが終了するかタイムアウトするまで対象ロウのロックを維持します。ロックされたロウに対する他のトランザクションからの更新・削除操作は、このトランザクションが終了するかタイムアウトするまで待機するようになります。対象ロウが削除されたとしても、ロックは維持されます。
-
自動コミットモードの場合、更新用ロックを要求できません。
-
Parameters
- - - - - - -
[in]container処理対象のGSContainer
[in]keyObj処理対象のロウキー
[out]rowObj取得対象のロウの内容を格納するためのロウオブジェクト。取得対象のロウが存在しない場合、ロウオブジェクトの内容は何も変更されません。実行結果としてGS_RESULT_OK以外が返される場合、ロウオブジェクトのフィールドのうち一部またはすべてが変更されることがあります。
[in]forUpdate更新用ロックを要求するかどうか
[out]exists処理対象のロウが存在したかどうかを格納するためのブール型変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、GS_FALSEが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • ロウキーが存在しない場合
  • -
  • 自動コミットモードでないにもかかわらず、更新用ロックを要求しようとした場合
  • -
  • この処理またはトランザクションのタイムアウト、指定のコンテナの削除もしくはスキーマ変更、接続障害が発生した場合
  • -
  • サポート範囲外の値がキーとして設定されていた場合
  • -
  • exists以外の引数にNULLが指定された場合
  • -
-
-
See Also
gsGetRow
-
Since
4.3
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsPutMultipleRows (GSContainercontainer,
const void *const * rowObjs,
size_t rowCount,
GSBoolexists 
)
-
- -

指定のロウオブジェクト集合に基づき、任意個数のロウをまとめて新規作成または更新します。

-
指定のロウオブジェクト集合の各ロウについて、配列要素の順序にしたがってgsPutRowを呼び出した場合と同様に新規作成または更新操作を行います。
-
指定のロウオブジェクト集合内に同一のロウキーを持つ複数のロウが存在する場合、ロウオブジェクト集合を構成する配列要素の順序を基準として、同一のロウキーを持つ最も後方にあるロウオブジェクトの内容が反映されます。
-
コンテナの種別ならびに設定によっては、操作できるロウの内容についてgsPutRowと同様の制限が設けられています。具体的な制限事項は、個別のコンテナ種別の定義を参照してください。
-
手動コミットモードの場合、対象のロウがロックされます。
-
自動コミットモードのときに、コンテナならびにロウに対する処理の途中でエラーが発生した場合、コンテナの一部のロウに対する操作結果のみが反映されたままとなることがあります。
-
Attention
指定のGSContainerにバインドされたロウオブジェクトの型と指定のロウオブジェクトの型とが一致しない場合、この処理の動作は未定義です。同様に、ロウキーの型が一致しない場合の動作も未定義です。アクセス違反により実行プロセスが異常終了する可能性があります。
-
Parameters
- - - - - -
[in]container処理対象のGSContainer
[in]rowObjs新規作成するロウ集合の内容と対応するロウオブジェクト列。このロウオブジェクト列は、個々のロウオブジェクトへのポインタ値の配列により構成されます。rowCount0の場合、この配列を参照することはなく、NULLを指定することもできます。
[in]rowCount新規作成するロウの個数。0の場合、ロウを新規作成せず正常に処理を終えます。
[out]exists現バージョンでは、ポインタ値がNULLではない限り常にGS_FALSEが格納されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • 特定コンテナ種別固有の制限に反する操作を行った場合
  • -
  • この処理またはトランザクションのタイムアウト、指定のコンテナの削除もしくはスキーマ変更、接続障害が発生した場合
  • -
  • サポート範囲外の値がロウオブジェクトに含まれていた場合
  • -
  • containerNULLの場合
  • -
  • exists以外のポインタ型引数にNULLが指定された場合。また、指定のロウオブジェクト内のフィールドについて、文字列など可変長サイズのデータへのポインタ値にNULLが含まれていた場合
  • -
  • rowCountが正の値であるにもかかわらず、rowObjsNULLが指定された場合
  • -
  • ロウオブジェクト列を構成する配列要素にNULLが含まれていた場合
  • -
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsPutRow (GSContainercontainer,
const void * key,
const void * rowObj,
GSBoolexists 
)
-
- -

必要に応じ別途ロウキーを指定して、ロウを新規作成または更新します。

-
ロウキーに対応するカラムが存在する場合、ロウキーとコンテナの状態を基に、ロウを新規作成するか、更新するかを決定します。この際、対応するロウがコンテナ内に存在しない場合は新規作成、存在する場合は更新します。ロウオブジェクトとは別にロウキーを指定した場合、ロウオブジェクト内のロウキーより優先して使用されます。
-
ロウキーに対応するカラムを持たない場合、常に新規のロウを作成します。別途指定するロウキーには、常にNULLを指定します。
-
ただし、コンテナの種別ならびに設定によっては、制限が設けられています。指定のコンテナが時系列であり、圧縮オプションが設定されている場合、以下の操作のみを条件付きで行うことができます。
    -
  • 新規作成
      -
    • 最も新しい時刻を持つ既存ロウより新しい時刻のロウを指定した場合のみ
    • -
    -
  • -
  • 既存ロウの内容の保持
      -
    • 最も新しい時刻を持つ既存ロウの時刻が指定の時刻と一致する場合のみ
    • -
    -
  • -
-
-
手動コミットモードの場合、対象のロウはロックされます。
-
Attention
指定のGSContainerにバインドされたロウオブジェクトの型と指定のロウオブジェクトの型とが一致しない場合、この処理の動作は未定義です。同様に、ロウキーの型が一致しない場合の動作も未定義です。アクセス違反により実行プロセスが異常終了する可能性があります。
-
Parameters
- - - - - -
[in]container処理対象のGSContainer
[in]key処理対象のロウキーが格納された変数へのポインタ値。GSContainerにおいて定義されているコンテナ上のロウキーの型とこの引数の型との関係は、gsGetRowの場合と同様です。ロウキーに対応するカラムが存在しない場合、もしくは指定のロウオブジェクト内のキーを用いる場合はNULLを指定します。
[in]rowObj新規作成または更新するロウの内容と対応するロウオブジェクト
[out]exists処理対象のロウが存在したかどうかを格納するためのブール型変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、GS_FALSEが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • ロウキーに対応するカラムが存在しないにもかかわらず、キーが指定された場合
  • -
  • 特定コンテナ固有の制限に反する操作を行った場合
  • -
  • この処理またはトランザクションのタイムアウト、指定のコンテナの削除もしくはスキーマ変更、接続障害が発生した場合
  • -
  • サポート範囲外の値がキーまたはロウオブジェクトに含まれていた場合
  • -
  • exists以外の引数にNULLが指定された場合。また、指定のロウオブジェクト内のロウキー以外のフィールドについて、文字列など可変長サイズのデータへのポインタ値にNULLが含まれていた場合。もしくは、ロウキーに対応するカラムが存在しkeyNULLであるにもかかわらず、ロウキーのフィールドに同様にNULLが含まれていた場合
  • -
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsPutRowByInteger (GSContainercontainer,
int32_t key,
const void * rowObj,
GSBoolexists 
)
-
- -

INTEGER型のロウキーを指定して、ロウを新規作成または更新します。

-
ロウキーに対応するINTEGER型のカラムが存在する場合のみ使用できます。
-
ロウキーとコンテナの状態を基に、ロウを新規作成するか更新するかを決定します。この際、対応するロウがコンテナ内に存在しない場合は新規作成、存在する場合は更新します。ロウオブジェクト内のロウキーは無視されます。
-
手動コミットモードの場合、対象のロウはロックされます。
-
Attention
指定のGSContainerにバインドされたロウオブジェクトの型と指定のロウオブジェクトの型とが一致しない場合、この処理の動作は未定義です。アクセス違反により実行プロセスが異常終了する可能性があります。
-
Parameters
- - - - - -
[in]container処理対象のGSContainer
[in]key処理対象のロウキー
[in]rowObj新規作成または更新するロウの内容と対応するロウオブジェクト
[out]exists処理対象のロウが存在したかどうかを格納するためのブール型変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、GS_FALSEが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • ロウキーに対応するINTEGER型のカラムが存在しない場合
  • -
  • この処理またはトランザクションのタイムアウト、指定のコンテナの削除もしくはスキーマ変更、接続障害が発生した場合
  • -
  • サポート範囲外の値がロウオブジェクトに含まれていた場合
  • -
  • exists以外の引数にNULLが指定された場合。また、指定のロウオブジェクト内のロウキー以外のフィールドについて、文字列など可変長サイズのデータへのポインタ値にNULLが含まれていた場合。もしくは、ロウキーに対応するカラムが存在しkeyNULLであるにもかかわらず、ロウキーのフィールドに同様にNULLが含まれていた場合
  • -
-
-
See Also
gsPutRow
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsPutRowByLong (GSContainercontainer,
int64_t key,
const void * rowObj,
GSBoolexists 
)
-
- -

LONG型のロウキーを指定して、ロウを新規作成または更新します。

-
ロウキーに対応するLONG型のカラムが存在する場合のみ使用できます。
-
ロウキーとコンテナの状態を基に、ロウを新規作成するか更新するかを決定します。この際、対応するロウがコンテナ内に存在しない場合は新規作成、存在する場合は更新します。ロウオブジェクト内のロウキーは無視されます。
-
手動コミットモードの場合、対象のロウはロックされます。
-
Attention
指定のGSContainerにバインドされたロウオブジェクトの型と指定のロウオブジェクトの型とが一致しない場合、この処理の動作は未定義です。アクセス違反により実行プロセスが異常終了する可能性があります。
-
Parameters
- - - - - -
[in]container処理対象のGSContainer
[in]key処理対象のロウキー
[in]rowObj新規作成または更新するロウの内容と対応するロウオブジェクト
[out]exists処理対象のロウが存在したかどうかを格納するためのブール型変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、GS_FALSEが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • ロウキーに対応するLONG型のカラムが存在しない場合
  • -
  • この処理またはトランザクションのタイムアウト、指定のコンテナの削除もしくはスキーマ変更、接続障害が発生した場合
  • -
  • サポート範囲外の値がロウオブジェクトに含まれていた場合
  • -
  • exists以外の引数にNULLが指定された場合。また、指定のロウオブジェクト内のロウキー以外のフィールドについて、文字列など可変長サイズのデータへのポインタ値にNULLが含まれていた場合。もしくは、ロウキーに対応するカラムが存在しkeyNULLであるにもかかわらず、ロウキーのフィールドに同様にNULLが含まれていた場合
  • -
-
-
See Also
gsPutRow
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsPutRowByString (GSContainercontainer,
const GSCharkey,
const void * rowObj,
GSBoolexists 
)
-
- -

STRING型のロウキーを指定して、ロウを新規作成または更新します。

-
ロウキーに対応するSTRING型のカラムが存在する場合のみ使用できます。
-
ロウキーとコンテナの状態を基に、ロウを新規作成するか更新するかを決定します。この際、対応するロウがコンテナ内に存在しない場合は新規作成、存在する場合は更新します。ロウオブジェクト内のロウキーは無視されます。
-
手動コミットモードの場合、対象のロウはロックされます。
-
Attention
指定のGSContainerにバインドされたロウオブジェクトの型と指定のロウオブジェクトの型とが一致しない場合、この処理の動作は未定義です。アクセス違反により実行プロセスが異常終了する可能性があります。
-
Parameters
- - - - - -
[in]container処理対象のGSContainer
[in]key処理対象のロウキー
[in]rowObj新規作成または更新するロウの内容と対応するロウオブジェクト
[out]exists処理対象のロウが存在したかどうかを格納するためのブール型変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、GS_FALSEが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • ロウキーに対応するSTRING型のカラムが存在しない場合
  • -
  • この処理またはトランザクションのタイムアウト、指定のコンテナの削除もしくはスキーマ変更、接続障害が発生した場合
  • -
  • サポート範囲外の値がキーまたはロウオブジェクトに含まれていた場合
  • -
  • exists以外の引数にNULLが指定された場合。また、指定のロウオブジェクト内のロウキー以外のフィールドについて、文字列など可変長サイズのデータへのポインタ値にNULLが含まれていた場合
  • -
-
-
See Also
gsPutRow
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsPutRowByTimestamp (GSContainercontainer,
GSTimestamp key,
const void * rowObj,
GSBoolexists 
)
-
- -

TIMESTAMP型のロウキーを指定して、ロウを新規作成または更新します。

-
ロウキーに対応するTIMESTAMP型のカラムが存在する場合のみ使用できます。
-
ロウキーとコンテナの状態を基に、ロウを新規作成するか更新するかを決定します。この際、対応するロウがコンテナ内に存在しない場合は新規作成、存在する場合は更新します。ロウオブジェクト内のロウキーは無視されます。
-
ただし、コンテナの種別ならびに設定によっては、制限が設けられています。指定のコンテナが時系列であり、圧縮オプションが設定されている場合、以下の操作のみを条件付きで行うことができます。
    -
  • 新規作成
      -
    • 最も新しい時刻を持つ既存ロウより新しい時刻のロウを指定した場合のみ
    • -
    -
  • -
  • 既存ロウの内容の保持
      -
    • 最も新しい時刻を持つ既存ロウの時刻が指定の時刻と一致する場合のみ
    • -
    -
  • -
-
-
手動コミットモードの場合、対象のロウはロックされます。
-
Attention
指定のGSContainerにバインドされたロウオブジェクトの型と指定のロウオブジェクトの型とが一致しない場合、この処理の動作は未定義です。アクセス違反により実行プロセスが異常終了する可能性があります。
-
Parameters
- - - - - -
[in]container処理対象のGSContainer
[in]key処理対象のロウキー
[in]rowObj新規作成または更新するロウの内容と対応するロウオブジェクト
[out]exists処理対象のロウが存在したかどうかを格納するためのブール型変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、GS_FALSEが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • ロウキーに対応するTIMESTAMP型のカラムが存在しない場合
  • -
  • 特定コンテナ固有の制限に反する操作を行った場合
  • -
  • この処理またはトランザクションのタイムアウト、指定のコンテナの削除もしくはスキーマ変更、接続障害が発生した場合
  • -
  • サポート範囲外の値がキーまたはロウオブジェクトに含まれていた場合
  • -
  • exists以外の引数にNULLが指定された場合。また、指定のロウオブジェクト内のフィールドについて、文字列など可変長サイズのデータへのポインタ値にNULLが含まれていた場合
  • -
-
-
See Also
gsPutRow
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsPutRowGeneral (GSContainercontainer,
GSRowKeykeyObj,
GSRowrowObj,
GSBoolexists 
)
-
- -

必要に応じ別途ロウキーを指定して、ロウを新規作成または更新します。

-
ロウキーを構成するカラム数やカラム型によらず使用できます。
-
ロウキーに対応するカラムが存在する場合、ロウキーとコンテナの状態を基に、ロウを新規作成するか、更新するかを決定します。この際、対応するロウがコンテナ内に存在しない場合は新規作成、存在する場合は更新します。ロウオブジェクトとは別にロウキーを指定した場合、ロウオブジェクト内のロウキーより優先して使用されます。
-
ロウキーに対応するカラムを持たない場合、常に新規のロウを作成します。この場合、別途指定するロウキーには、常にNULLを指定します。
-
ただし、コンテナの種別ならびに設定によっては、gsPutRowと同様の制限が設けられています。
-
手動コミットモードの場合、対象のロウはロックされます。
-
Parameters
- - - - - -
[in]container処理対象のGSContainer
[in]keyObj処理対象のロウキー。ロウキーに対応するカラムが存在しない場合、もしくは指定のロウオブジェクト内のキーを用いる場合はNULLを指定します。
[in]rowObj新規作成または更新するロウの内容と対応するロウオブジェクト
[out]exists処理対象のロウが存在したかどうかを格納するためのブール型変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、GS_FALSEが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • ロウキーに対応するカラムが存在しないにもかかわらず、キーが指定された場合
  • -
  • 特定コンテナ固有の制限に反する操作を行った場合
  • -
  • この処理またはトランザクションのタイムアウト、指定のコンテナの削除もしくはスキーマ変更、接続障害が発生した場合
  • -
  • サポート範囲外の値がキーまたはロウオブジェクトに含まれていた場合
  • -
  • exists以外の引数にNULLが指定された場合。また、指定のロウオブジェクト内のロウキー以外のフィールドについて、文字列など可変長サイズのデータへのポインタ値にNULLが含まれていた場合。もしくは、ロウキーに対応するカラムが存在しkeyNULLであるにもかかわらず、ロウキーのフィールドに同様にNULLが含まれていた場合
  • -
-
-
See Also
gsPutRow
-
Since
4.3
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsQuery (GSContainercontainer,
const GSCharqueryString,
GSQuery ** query 
)
-
- -

指定のTQL文を実行するためのクエリを作成します。

-
gsFetchを通じてロウ集合を求める際に更新用ロックのオプションを有効できるのは、指定のコンテナ上に実在しないロウが選択されることのないクエリのみです。たとえば、補間演算を含むクエリに対しては有効にできません。
-
Parameters
- - - - -
[in]container処理対象のGSContainer
[in]queryStringTQL文
[out]queryGSQueryインスタンスを格納するためのポインタ変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、このポインタ値がNULL以外の値であれば、対応するポインタ変数にNULLが格納されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • 引数にNULLが指定された場合
  • -
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetAutoCommit (GSContainercontainer,
GSBool enabled 
)
-
- -

コミットモードの設定を変更します。

-
自動コミットモードでは、直接トランザクション状態を制御できず、変更操作が逐次コミットされます。自動コミットモードが有効でない場合、すなわち手動コミットモードの場合は、直接gsCommitを呼び出すかトランザクションがタイムアウトしない限り、指定のコンテナ内で同一のトランザクションが使用され続け、変更操作はコミットされません。
-
自動コミットモードが無効から有効に切り替わる際、未コミットの変更内容は暗黙的にコミットされます。コミットモードに変更がない場合、トランザクション状態は変更されません。
-
Parameters
- - - -
[in]container処理対象のGSContainer
[in]enabled自動コミットモードを有効にするかどうか。GS_TRUEの場合は自動コミットモード、GS_FALSEの場合は手動コミットモードが有効になります。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • モード変更に伴いコミット処理を要求した際に、この処理またはトランザクションのタイムアウト、指定のコンテナの削除もしくはスキーマ変更、接続障害が発生した場合
  • -
  • ポインタ型引数にNULLが指定された場合
  • -
-
- -
-
-
-
-
-
GSGridStore
-
-
- - - - - -

-Typedefs

typedef struct GSGridStoreTag GSGridStore
 1つのGridDBシステムが管理するデータ全体を操作するための機能を提供します。More...
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

GS_DLL_PUBLIC void GS_API_CALL gsCloseGridStore (GSGridStore **store, GSBool allRelated)
 指定のGSGridStoreインスタンスについて、対応するGridDBクラスタとの接続状態を解除し、必要に応じて指定のインスタンスならびに関連するリソースを解放します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsDropCollection (GSGridStore *store, const GSChar *name)
 指定の名前を持つコレクションを削除します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsDropTimeSeries (GSGridStore *store, const GSChar *name)
 指定の名前を持つ時系列を削除します。More...
 
GS_STATIC_HEADER_FUNC_SPECIFIER
-GSResult 
gsGetCollection (GSGridStore *store, const GSChar *name, const GSBinding *binding, GSCollection **collection)
 指定の名前のコレクションを操作するためのGSCollectionインスタンスを取得します。More...
 
GS_STATIC_HEADER_FUNC_SPECIFIER
-GSResult 
gsGetContainerInfo (GSGridStore *store, const GSChar *name, GSContainerInfo *info, GSBool *exists)
 指定の名前のコンテナに関する情報を取得します。More...
 
GS_STATIC_HEADER_FUNC_SPECIFIER
-GSResult 
gsGetTimeSeries (GSGridStore *store, const GSChar *name, const GSBinding *binding, GSTimeSeries **timeSeries)
 指定の名前の時系列を操作するためのGSTimeSeriesインスタンスを取得します。More...
 
GS_STATIC_HEADER_FUNC_SPECIFIER
-GSResult 
gsPutContainer (GSGridStore *store, const GSChar *name, const GSBinding *binding, const GSContainerInfo *info, GSBool modifiable, GSContainer **container)
 バインディング情報とGSContainerInfoを指定して、コンテナを新規作成または変更します。More...
 
GS_STATIC_HEADER_FUNC_SPECIFIER
-GSResult 
gsPutCollection (GSGridStore *store, const GSChar *name, const GSBinding *binding, const GSCollectionProperties *properties, GSBool modifiable, GSCollection **collection)
 コレクションを新規作成または変更します。More...
 
GS_STATIC_HEADER_FUNC_SPECIFIER
-GSResult 
gsPutTimeSeries (GSGridStore *store, const GSChar *name, const GSBinding *binding, const GSTimeSeriesProperties *properties, GSBool modifiable, GSTimeSeries **timeSeries)
 時系列を新規作成または変更します。More...
 
GS_STATIC_HEADER_FUNC_SPECIFIER
-GSResult 
gsPutContainerGeneral (GSGridStore *store, const GSChar *name, const GSContainerInfo *info, GSBool modifiable, GSContainer **container)
 GSContainerInfoを指定して、コンテナを新規作成または変更します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetContainerGeneral (GSGridStore *store, const GSChar *name, GSContainer **container)
 GSRowによりロウ操作できるGSContainerインスタンスを取得します。More...
 
GS_STATIC_HEADER_FUNC_SPECIFIER
-GSResult 
gsPutCollectionGeneral (GSGridStore *store, const GSChar *name, const GSContainerInfo *info, GSBool modifiable, GSCollection **collection)
 GSContainerInfoを指定して、コレクションを新規作成または変更します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetCollectionGeneral (GSGridStore *store, const GSChar *name, GSCollection **collection)
 GSRowによりロウ操作できるGSCollectionインスタンスを取得します。More...
 
GS_STATIC_HEADER_FUNC_SPECIFIER
-GSResult 
gsPutTimeSeriesGeneral (GSGridStore *store, const GSChar *name, const GSContainerInfo *info, GSBool modifiable, GSTimeSeries **timeSeries)
 GSContainerInfoを指定して、時系列を新規作成または変更します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetTimeSeriesGeneral (GSGridStore *store, const GSChar *name, GSTimeSeries **timeSeries)
 GSRowによりロウ操作できるGSTimeSeriesインスタンスを取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsDropContainer (GSGridStore *store, const GSChar *name)
 指定の名前を持つコンテナを削除します。More...
 
GS_STATIC_HEADER_FUNC_SPECIFIER
-GSResult 
gsCreateRowByStore (GSGridStore *store, const GSContainerInfo *info, GSRow **row)
 GSContainerInfoを指定して、GSRowを新規作成します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsCreateRowKeyByStore (GSGridStore *store, const GSContainerInfo *info, GSRowKey **key)
 GSContainerInfoを指定して、GSRowKeyを新規作成します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsFetchAll (GSGridStore *store, GSQuery *const *queryList, size_t queryCount)
 指定された任意個数のGSQueryについて、可能な限りリクエスト単位を大きくしてクエリ実行とフェッチを行います。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsPutMultipleContainerRows (GSGridStore *store, const GSContainerRowEntry *entryList, size_t entryCount)
 任意のコンテナの任意個数のロウについて、可能な限りリクエスト単位を大きくして新規作成または更新操作を行います。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetMultipleContainerRows (GSGridStore *store, const GSRowKeyPredicateEntry *const *predicateList, size_t predicateCount, const GSContainerRowEntry **entryList, size_t *entryCount)
 指定の条件に基づき、任意のコンテナの任意個数・範囲のロウについて、可能な限りリクエスト単位を大きくして取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPartitionController (GSGridStore *store, GSPartitionController **partitionController)
 対応するGridDBクラスタについてのGSPartitionControllerを取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsCreateRowKeyPredicate (GSGridStore *store, GSType keyType, GSRowKeyPredicate **predicate)
 指定のGSTypeをロウキーの型とする合致条件を作成します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsCreateRowKeyPredicateGeneral (GSGridStore *store, const GSContainerInfo *info, GSRowKeyPredicate **predicate)
 指定のGSContainerInfoのロウキーに関するカラム定義に基づく、合致条件を作成します。More...
 
-

Detailed Description

-

Typedef Documentation

- -
-
- - - - -
typedef struct GSGridStoreTag GSGridStore
-
- -

1つのGridDBシステムが管理するデータ全体を操作するための機能を提供します。

-
コレクションや時系列といったコンテナの追加・削除・構成変更、ならびに、コンテナを構成するロウの操作機能を提供します。
-
コンテナ種別などの違いによらず、1つのデータベースのコンテナ間で、ASCIIの大文字・小文字表記だけが異なる名前のものを複数定義することはできません。コンテナ名は、ベースコンテナ名単独、もしくは、ベースコンテナ名の後ろにノードアフィニティ名をアットマーク「@」で連結した形式で表記します。その他、コンテナの定義において使用できるコンテナ名の文字種や長さには制限があります。具体的には、GridDBテクニカルリファレンスを参照してください。特に記載のない限り、コンテナ名を指定する操作では、ASCIIの大文字・小文字表記の違いは区別されません。
-
このインタフェースまたはこのインタフェースを通じて得られたインスタンスのインタフェースに対する操作を通じてエラーが発生した場合、エラーに関する次のパラメータを取得できることがあります。 - - - - - - -
パラメータ名説明
address接続先クラスタノードのアドレス・ポート。ホスト名またはIPアドレスとポート番号とをコロン「:」で連結した文字列により構成されます。このインタフェースまたはこのインタフェースを通じて得られたインスタンスのインタフェースにおいて、クラスタへのアクセスを伴う操作を呼び出した際にエラーを検知すると、このパラメータを含むことがあります。このパラメータを含む場合、パラメータが示すクラスタノードにおいてエラーの詳細が記録されていることがあります。
containerエラーに関係しうるコンテナの名前。任意個数のコンテナを一括して扱う操作において、そのうち少なくとも一つのコンテナについての操作を行えないことが判明した場合に、このパラメータを含むことがあります。任意個数のコンテナを扱う具体的な操作については、個々のインタフェースの定義を参照してください。クラスタノードへのリクエスト準備段階でのリソース不足など、どのコンテナの問題か特定し切れないことがあるため、どのようなエラーでもこのパラメータを含むとは限りません。また、複数のコンテナについて操作できない可能性があったとしても、パラメータに含まれるのは高々一つのコンテナの名前のみです。
-
-
この型のポインタを第一引数とする関数のスレッド安全性は保証されません。
-
See Also
GSCollection
-
-GSTimeSeries
-
-GSContainer
-
-gsGetErrorParameterCount
- -
-
-

Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC void GS_API_CALL gsCloseGridStore (GSGridStore ** store,
GSBool allRelated 
)
-
- -

指定のGSGridStoreインスタンスについて、対応するGridDBクラスタとの接続状態を解除し、必要に応じて指定のインスタンスならびに関連するリソースを解放します。

-
Parameters
- - - -
[in,out]storeクローズ対象のGSGridStoreインスタンスを指しているポインタ変数へのポインタ値。クローズすると、ポインタ変数にNULLが設定されます。以後、解放したGSGridStoreインスタンスにアクセスしてはなりません。ポインタ値またはポインタ変数の値がNULLの場合は、クローズ処理を行いません。
[in]allRelated指定のGSGridStoreと関連する下位のリソースのうち、未クローズのものすべてをクローズするかどうか。関連する下位のリソースとは、指定のGSGridStoreを介して取得したGSCollectionGSTimeSeries、ならびに、これらのリソースと関連する下位のリソースのことを指します。GS_FALSEを指定した場合、指定のGSGridStoreを介して取得したリソースを個別にクローズする必要があり、すべてクローズした時点で指定のGSGridStore自体のリソースが解放されます。
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GS_STATIC_HEADER_FUNC_SPECIFIER GSResult gsCreateRowByStore (GSGridStorestore,
const GSContainerInfoinfo,
GSRow ** row 
)
-
- -

GSContainerInfoを指定して、GSRowを新規作成します。

-
GSContainerにて規定された制約に合致するよう、GSColumnInfoのリストならびにロウキーの構成を含むカラムレイアウトをGSContainerInfoに指定します。
-
また、コンテナ種別をGSContainerInfoに含めることで、特定のコンテナ種別固有の制約に合致するかどうかを検証できます。ただし、作成されたGSRowに対してgsGetRowSchemaを呼び出したとしても、常に固定の値であるGS_CONTAINER_COLLECTIONがコンテナ種別として設定されたGSContainerInfoが求まります。
-
作成されたGSRowの各フィールドには、GSContainerInfoに含まれる各カラムのGSColumnInfoに基づいた初期値が設定されます。初期値として、GSColumnInfo::optionsに含まれるオプションに応じた次の値が使用されます。 - - - - - - - - - - -
オプション初期値
GS_TYPE_OPTION_DEFAULT_VALUE_NULL NULL。ただし制約に反するロウは作成できない。
GS_TYPE_OPTION_DEFAULT_VALUE_NOT_NULL 空の値。GSContainerの定義を参照。
(上記いずれも指定なし) 現バージョンでは、GS_TYPE_OPTION_DEFAULT_VALUE_NOT_NULLが指定された場合と同様。
(上記オプションを両方指定) GSTypeOptionの定義に基づき矛盾する設定と見なされ、ロウを作成できない。
-
-
Parameters
- - - - -
[in]store処理対象のGSGridStore
[in]infoカラムレイアウトを含むコンテナ情報。その他の内容は無視される
[out]rowGSRowインスタンスを格納するためのポインタ変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、このポインタ値がNULL以外の値であれば、対応するポインタ変数にNULLが格納されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • コンテナ種別もしくはカラムレイアウトの制約に合致しない場合
  • -
  • 引数にNULLが指定された場合
  • -
-
-
See Also
GSContainer
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsCreateRowKeyByStore (GSGridStorestore,
const GSContainerInfoinfo,
GSRowKey ** key 
)
-
- -

GSContainerInfoを指定して、GSRowKeyを新規作成します。

-
ロウキー以外のカラムに関する情報は無視されます。それ以外はgsCreateRowByStoreと同様に振る舞います。
-
Parameters
- - - - -
[in]store処理対象のGSGridStore
[in]infoカラムレイアウトを含むコンテナ情報。その他の内容は無視される
[out]keyGSRowKeyインスタンスを格納するためのポインタ変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、このポインタ値がNULL以外の値であれば、対応するポインタ変数にNULLが格納されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • ロウキーを持たないコンテナ情報が指定された場合
  • -
  • コンテナ種別もしくはカラムレイアウトの制約に合致しない場合
  • -
  • 引数にNULLが指定された場合
  • -
-
-
Since
4.3
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsCreateRowKeyPredicate (GSGridStorestore,
GSType keyType,
GSRowKeyPredicate ** predicate 
)
-
- -

指定のGSTypeをロウキーの型とする合致条件を作成します。

-
合致条件の評価対象とするコンテナは、単一カラムからなるロウキーを持ち、かつ、そのロウキーの型は指定のGSTypeと同一の型でなければなりません。
-
設定可能なロウキーの型は、GSContainerから派生した個別のコンテナ型にて許容されている型のみです。
-
複合ロウキーなどロウキーを構成するカラムの個数によらずに合致条件を作成するには、gsCreateRowKeyPredicateGeneralを使用します。
-
Parameters
- - - - -
[in]store処理対象のGSGridStore
[in]keyType合致条件の評価対象とするロウキーの型
[out]predicateGSRowKeyPredicateインスタンスを格納するためのポインタ変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、このポインタ値がNULL以外の値であれば、対応するポインタ変数にNULLが格納されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • 指定された型がロウキーとして常にサポート外となる場合
  • -
  • ポインタ型引数にNULLが指定された場合
  • -
-
-
See Also
GSContainer
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsCreateRowKeyPredicateGeneral (GSGridStorestore,
const GSContainerInfoinfo,
GSRowKeyPredicate ** predicate 
)
-
- -

指定のGSContainerInfoのロウキーに関するカラム定義に基づく、合致条件を作成します。

-
合致条件の評価対象とするコンテナは、ロウキーを持ち、かつ、指定のGSContainerInfoのロウキーに関するカラム定義と対応づく必要があります。ロウキー以外のカラム定義については対応関係の判定に用いられません。
-
Parameters
- - - - -
[in]store処理対象のGSGridStore
[in]info合致条件の判定対象とするロウキーのカラムレイアウトを含む、コンテナ情報。その他の内容は無視される
[out]predicateGSRowKeyPredicateインスタンスを格納するためのポインタ変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、このポインタ値がNULL以外の値であれば、対応するポインタ変数にNULLが格納されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • 指定の情報がロウキーを含まないか、ロウキーとして常にサポート外となる場合
  • -
  • ポインタ型引数にNULLが指定された場合
  • -
-
-
Since
4.3
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsDropCollection (GSGridStorestore,
const GSCharname 
)
-
- -

指定の名前を持つコレクションを削除します。

-
削除済みの場合の扱い、トランザクションの扱い、削除要求完了直後の状態に関しては、gsDropContainerと同様です。
-
Parameters
- - - -
[in]store処理対象のGSGridStore
[in]name処理対象のコレクションの名前
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • 種別の異なるコンテナを削除しようとした場合
  • -
  • この処理のタイムアウト、接続障害が発生した場合
  • -
  • 引数にNULLが指定された場合
  • -
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsDropContainer (GSGridStorestore,
const GSCharname 
)
-
- -

指定の名前を持つコンテナを削除します。

-
削除済みの場合は何も変更しません。
-
処理対象のコンテナにおいて実行中のトランザクションが存在する場合、それらの終了を待ってから削除を行います。
-
コンテナの削除要求が完了した直後は、削除したコンテナの索引やロウなどのために使用されていたメモリやストレージ領域を他の用途にただちに再利用できない場合があります。また、削除処理に関連した処理がクラスタ上で動作することにより、削除前と比べて負荷が高まる期間が一定程度継続する場合があります。
-
Parameters
- - - -
[in]store処理対象のGSGridStore
[in]name処理対象のコンテナの名前
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • この処理のタイムアウト、接続障害が発生した場合
  • -
  • 引数にNULLが指定された場合
  • -
-
-
See Also
gsDropCollection
-
-gsTimeSeries
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsDropTimeSeries (GSGridStorestore,
const GSCharname 
)
-
- -

指定の名前を持つ時系列を削除します。

-
削除済みの場合は何も変更しません。
-
削除済みの場合の扱い、トランザクションの扱い、削除要求完了直後の状態に関しては、gsDropContainerと同様です。
-
Parameters
- - - -
[in]store処理対象のGSGridStore
[in]name処理対象の時系列の名前
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • 種別の異なるコンテナを削除しようとした場合
  • -
  • この処理のタイムアウト、接続障害が発生した場合
  • -
  • 引数にNULLが指定された場合
  • -
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsFetchAll (GSGridStorestore,
GSQuery *const * queryList,
size_t queryCount 
)
-
- -

指定された任意個数のGSQueryについて、可能な限りリクエスト単位を大きくしてクエリ実行とフェッチを行います。

-
指定のクエリ列に含まれる各GSQueryについて、個別にgsFetchを行った場合と同様にクエリ実行とフェッチを行い、結果のGSRowSetを設定します。GSQueryの実行結果を取り出すには、gsGetRowSetを使用します。ただし、個別に行う場合と違い、同一の格納先などの可能な限り大きな単位で対象ノードに対しリクエストしようとします。これにより、リストの要素数が多くなるほど、対象ノードとやりとりする回数が削減される可能性が高くなります。リスト内のGSQueryの実行順序は不定です。
-
指定のクエリ列には、指定のGSGridStoreインスタンスを介して得られた、対応するGSContainerがクローズされていないGSQueryのみを含めることができます。gsFetchと同様、各GSQueryが持つ最後に生成されたGSRowSetを介するロウ操作ができなくなります。同一のインスタンスが配列に複数含まれていた場合、それぞれ異なるインスタンスであった場合と同様に振る舞います。
-
他のコンテナ・ロウ操作と同様、異なるコンテナ間での整合性は保証されません。したがって、あるコンテナに対する処理の結果は、その処理の開始前に完了した他の操作命令の影響を受けることがあります。
-
指定のGSQueryに対応する各GSContainerのコミットモードが自動コミットモード、手動コミットモードのいずれであったとしても、使用できます。トランザクション状態はクエリの実行結果に反映されます。正常に操作が完了した場合、トランザクションタイムアウト時間に到達しない限り、対応する各GSContainerのトランザクションをアボートすることはありません。
-
GSQueryに対する処理の途中でエラーが発生した場合、一部のGSQueryについてのみ新たなGSRowSetが設定されることがあります。また、指定のGSQueryに対応する各GSContainerの未コミットのトランザクションについては、アボートされることがあります。
-
一度に大量のロウを取得しようとした場合、GridDBノードが管理する通信バッファのサイズの上限に到達し、失敗することがあります。上限サイズについては、GridDBテクニカルリファレンスを参照してください。
-
この操作によりエラーが発生した場合、エラー情報にはcontainerパラメータが含まれることがあります。エラーに関するパラメータの詳細は、GSGridStoreの定義を参照してください。
-
Parameters
- - - - -
[in]store処理対象のGSGridStore
[in]queryList対象とするクエリ列。GSQueryへのポインタ値の配列により構成されます。queryCount0の場合、この配列を参照することはなく、NULLを指定することもできます。
[in]queryCount対象とするクエリ列の要素数
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • 指定のGSGridStoreインスタンスを介して得られたGSQuery以外のGSQueryが含まれていた場合
  • -
  • 正しくないパラメータ・構文・命令を含むクエリを実行しようとした場合。たとえば、TQLでは、関数の引数に対応しない型のカラムを指定した場合。具体的な制約は、指定のクエリを作成する機能の各種定義を参照してください
  • -
  • この処理または関連するトランザクションのタイムアウト、対応するコンテナの削除もしくはスキーマ変更、接続障害が発生した場合、または対応するコンテナのクローズ後に呼び出された場合
  • -
  • queryCountが正の値であるにもかかわらず、queryListNULLが指定された場合
  • -
  • クエリ列を構成する配列要素にNULLが含まれていた場合
  • -
-
-
See Also
gsFetch
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GS_STATIC_HEADER_FUNC_SPECIFIER GSResult gsGetCollection (GSGridStorestore,
const GSCharname,
const GSBindingbinding,
GSCollection ** collection 
)
-
- -

指定の名前のコレクションを操作するためのGSCollectionインスタンスを取得します。

-
指定の型とカラムレイアウトとの対応関係については、GSContainerの定義を参照してください。
-
Parameters
- - - - - -
[in]store処理対象のコレクションが格納されているGSGridStore
[in]name処理対象のコレクションの名前
[in]bindingユーザ定義構造体とカラムレイアウトとのバインディング情報
[out]collectionGSCollectionインスタンスを格納するためのポインタ変数へのポインタ値。指定の名前のコレクションが存在しない場合、NULLが設定されます。実行結果としてGS_RESULT_OK以外が返される場合、このポインタ値がNULL以外の値であれば、対応するポインタ変数にNULLが格納されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • 同名の時系列が存在する場合
  • -
  • 指定の型と既存のカラムレイアウトが一致しない場合
  • -
  • 指定の型がロウオブジェクトの型として適切でない場合。詳しくはGSContainerの定義を参照してください。
  • -
  • この処理のタイムアウト、接続障害が発生した場合
  • -
  • 引数にNULLが指定された場合
  • -
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetCollectionGeneral (GSGridStorestore,
const GSCharname,
GSCollection ** collection 
)
-
- -

GSRowによりロウ操作できるGSCollectionインスタンスを取得します。

-
期待するコンテナ種別がGS_CONTAINER_COLLECTIONに限定され、常にGSContainerインスタンスが格納される点を除き、gsGetContainerGeneralと同様に振る舞います。
-
Parameters
- - - - -
[in]store処理対象のGSGridStore
[in]name処理対象のコレクションの名前
[out]collectionGSCollectionインスタンスを格納するためのポインタ変数へのポインタ値。指定の名前のコレクションが存在しない場合、NULLが設定されます。実行結果としてGS_RESULT_OK以外が返される場合、このポインタ値がNULL以外の値であれば、対応するポインタ変数にNULLが格納されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • 同名の時系列が存在する場合
  • -
  • この処理のタイムアウト、接続障害が発生した場合
  • -
  • 引数にNULLが指定された場合
  • -
-
-
See Also
gsGetContainerGeneral
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetContainerGeneral (GSGridStorestore,
const GSCharname,
GSContainer ** container 
)
-
- -

GSRowによりロウ操作できるGSContainerインスタンスを取得します。

-
次の点を除き、gsGetCollectionもしくはgsGetTimeSeriesと同様に振る舞います。
    -
  • 既存のコンテナの種別ならびにカラムレイアウトに基づきGSContainerインスタンスを返却する
  • -
  • コンテナの種別ならびにカラムレイアウトを指定しないため、これらの不一致に伴うエラーが発生しない
  • -
  • 返却されるGSContainerのロウオブジェクトの型が常にGSRowとなるそれぞれの同名の引数nameの用法についても同様です。
  • -
-
-
Parameters
- - - - -
[in]store処理対象のGSGridStore
[in]name処理対象のコンテナの名前
[out]containerGSContainerインスタンスを格納するためのポインタ変数へのポインタ値。指定の名前のコンテナが存在しない場合、NULLが設定されます。指定の名前のコンテナが存在し、種別がGS_CONTAINER_COLLECTIONであった場合はGSCollectionGS_CONTAINER_TIME_SERIESであった場合はGSTimeSeries固有の機能が使用できます。実行結果としてGS_RESULT_OK以外が返される場合、このポインタ値がNULL以外の値であれば、対応するポインタ変数にNULLが格納されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • この処理のタイムアウト、接続障害が発生した場合
  • -
  • 引数にNULLが指定された場合
  • -
-
-
See Also
gsGetCollection
-
-gsGetTimeSeries
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GS_STATIC_HEADER_FUNC_SPECIFIER GSResult gsGetContainerInfo (GSGridStorestore,
const GSCharname,
GSContainerInfoinfo,
GSBoolexists 
)
-
- -

指定の名前のコンテナに関する情報を取得します。

-
返却されるGSContainerInfoに含まれるコンテナ名は、GridDB上に格納されているものが設定されます。したがって、指定したコンテナ名と比較すると、ASCIIの大文字・小文字表記が異なる場合があります。
-
カラム順序を無視するかどうかについては、無視しない状態に設定されます。この設定は、GSContainerInfo::columnOrderIgnorableを通じて確認できます。
-
現バージョンでは、初期値でのNULL使用有無は未設定状態で求まります。この設定は、GSColumnInfo::optionsを通じて確認できます。
-
Attention
カラム情報の列などの可変長データを格納するために、指定のGSGridStoreインスタンス上で管理される一時的なメモリ領域を使用します。この領域は、指定のGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
-
Parameters
- - - - - -
[in]store処理対象のコンテナが格納されているGSGridStore
[in]name処理対象のコンテナの名前
[out]info指定の名前のコンテナに関する情報を格納するためのGSContainerInfoへのポインタ値。指定の名前のコンテナが存在しない場合、もしくは、実行結果としてGS_RESULT_OK以外が返される場合、GS_CONTAINER_INFO_INITIALIZERと同一の内容の初期値が格納されます。
[out]exists処理対象のコンテナが存在したかどうかを格納するためのブール型変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、GS_FALSEが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • この処理のタイムアウト、接続障害が発生した場合
  • -
  • exists以外の引数にNULLが指定された場合
  • -
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetMultipleContainerRows (GSGridStorestore,
const GSRowKeyPredicateEntry *const * predicateList,
size_t predicateCount,
const GSContainerRowEntry ** entryList,
size_t * entryCount 
)
-
- -

指定の条件に基づき、任意のコンテナの任意個数・範囲のロウについて、可能な限りリクエスト単位を大きくして取得します。

-
指定のエントリ列に含まれる条件に従い、個別にgsGetRowもしくはgsFetchを呼び出した場合と同様に、ロウの内容を取得します。ただし、個別に行う場合と違い、同一の格納先などの可能な限り大きな単位で対象ノードに対しリクエストしようとします。これにより、対象コンテナの総数や条件に合致するロウの総数が多くなるほど、対象ノードとやりとりする回数が削減される可能性が高くなります。
-
指定の条件エントリ列は、コンテナ名と、GSRowKeyPredicateで表現される取得条件との組からなる任意個数の条件エントリから構成されます。同一のGSRowKeyPredicateインスタンスを複数含めることもできます。また、対象とするコンテナとして、コンテナ種別やカラムレイアウトが異なるものを混在させることができます。ただし、コンテナの構成によっては評価できない取得条件が存在します。具体的な制限については、GSRowKeyPredicateに対する各種設定機能の定義を参照してください。コンテナ名または取得条件としてNULLを設定することはできません。
-
取得するエントリ列は、コンテナ名とロウオブジェクト列との組からなるエントリにより構成されます。また、取得するエントリ列には、取得条件として指定したエントリ列のうち、リクエスト時点で実在するコンテナに関するエントリのみが含まれます。同一のコンテナを指す複数のエントリが指定の条件エントリ列に含まれていた場合、取得するエントリ列にはこれらを1つにまとめたエントリが格納されます。同一のリストに複数のロウオブジェクトが含まれる場合、格納される順序はコンテナ種別と対応するGSContainerから派生した個別のコンテナ型の定義に従います。指定のコンテナに対応するロウが1つも存在しない場合、対応するロウオブジェクト列の要素数は0となります。
-
他のコンテナ・ロウ操作と同様、異なるコンテナ間での整合性は保証されません。したがって、あるコンテナに対する処理の結果は、その処理の開始前に完了した他の操作命令の影響を受けることがあります。
-
gsGetRowForUpdateもしくはgsFetchのように、トランザクションを維持し、更新用ロックを要求することはできません。
-
一度に大量のロウを取得しようとした場合、GridDBノードが管理する通信バッファのサイズの上限に到達し、失敗することがあります。上限サイズについては、GridDBテクニカルリファレンスを参照してください。
-
この操作によりエラーが発生した場合、エラー情報にはcontainerパラメータが含まれることがあります。エラーに関するパラメータの詳細は、GSGridStoreの定義を参照してください。
-
Attention
取得するエントリ列ならびにその中に含まれるコンテナ名やロウオブジェクト列の可変長のデータを格納するために、指定のGSGridStoreインスタンス上で管理される、一時的なメモリ領域を使用します。この領域は、対応するGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
-
Parameters
- - - - - - -
[in]store処理対象のGSGridStore
[in]predicateList対象とするコンテナの名前と取得条件との組からなる条件エントリの列。GSContainerRowEntryの配列により構成されます。predicateCount0の場合、この配列を参照することはなく、NULLを指定することもできます。
[in]predicateCount条件エントリ列の要素数
[out]entryList取得結果エントリ列のアドレスを格納するためのポインタ変数へのポインタ値。取得結果エントリ列はGSContainerRowEntryの配列により構成されます。実行結果としてGS_RESULT_OK以外が返される場合、このポインタ値がNULL以外の値であれば、対応するポインタ変数にNULLが格納されます。
[out]entryCount取得結果エントリ列の要素数を格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、このポインタ値がNULL以外の値であれば、対応するポインタ変数にNULLが格納されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • 指定のコンテナに関して評価できない取得条件が指定された場合
  • -
  • 特定コンテナ種別固有の制限に反する操作を行った場合
  • -
  • この処理または関連するトランザクションのタイムアウト、接続障害が発生した場合
  • -
  • predicateList以外のポインタ型引数にNULLが指定された場合
  • -
  • predicateCountが正の値であるにもかかわらず、predicateListNULLが指定された場合
  • -
  • エントリ列を構成するエントリのコンテナ名もしくは取得条件としてNULLが含まれていた場合
  • -
-
-
See Also
gsGetRow
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPartitionController (GSGridStorestore,
GSPartitionController ** partitionController 
)
-
- -

対応するGridDBクラスタについてのGSPartitionControllerを取得します。

-
指定のGSGridStoreをクローズした時点で使用できなくなります。
-
Parameters
- - - -
[in]store処理対象のGSGridStore
[out]partitionControllerGSPartitionControllerインスタンスを格納するためのポインタ変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、このポインタ値がNULL以外の値であれば、対応するポインタ変数にNULLが格納されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • 引数にNULLが指定された場合
  • -
-
-
See Also
GSPartitionController
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GS_STATIC_HEADER_FUNC_SPECIFIER GSResult gsGetTimeSeries (GSGridStorestore,
const GSCharname,
const GSBindingbinding,
GSTimeSeries ** timeSeries 
)
-
- -

指定の名前の時系列を操作するためのGSTimeSeriesインスタンスを取得します。

-
指定の型とカラムレイアウトとの対応関係については、GSContainerの定義を参照してください。
-
Parameters
- - - - - -
[in]store処理対象の時系列が格納されているGSGridStore
[in]name処理対象の時系列の名前
[in]bindingユーザ定義構造体とカラムレイアウトとのバインディング情報
[out]timeSeriesGSTimeSeriesインスタンスを格納するためのポインタ変数へのポインタ値。指定の名前の時系列が存在しない場合、NULLが設定されます。実行結果としてGS_RESULT_OK以外が返される場合、このポインタ値がNULL以外の値であれば、対応するポインタ変数にNULLが格納されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • 同名のコレクションが存在する場合
  • -
  • 指定の型と既存のカラムレイアウトが一致しない場合
  • -
  • 指定の型がロウオブジェクトの型として適切でない場合。詳しくはGSContainerの定義を参照してください。
  • -
  • この処理のタイムアウト、接続障害が発生した場合
  • -
  • 引数にNULLが指定された場合
  • -
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetTimeSeriesGeneral (GSGridStorestore,
const GSCharname,
GSTimeSeries ** timeSeries 
)
-
- -

GSRowによりロウ操作できるGSTimeSeriesインスタンスを取得します。

-
期待するコンテナ種別がGS_CONTAINER_TIME_SERIESに限定され、常にGSTimeSeriesインスタンスが格納される点を除き、gsGetContainerGeneralと同様に振る舞います。
-
Parameters
- - - - -
[in]store処理対象のGSGridStore
[in]name処理対象の時系列の名前
[out]timeSeriesGSCollectionインスタンスを格納するためのポインタ変数へのポインタ値。指定の名前の時系列が存在しない場合、NULLが設定されます。実行結果としてGS_RESULT_OK以外が返される場合、このポインタ値がNULL以外の値であれば、対応するポインタ変数にNULLが格納されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • 同名のコレクションが存在する場合
  • -
  • この処理のタイムアウト、接続障害が発生した場合
  • -
  • 引数にNULLが指定された場合
  • -
-
-
See Also
gsGetContainerGeneral
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GS_STATIC_HEADER_FUNC_SPECIFIER GSResult gsPutCollection (GSGridStorestore,
const GSCharname,
const GSBindingbinding,
const GSCollectionPropertiesproperties,
GSBool modifiable,
GSCollection ** collection 
)
-
- -

コレクションを新規作成または変更します。

-
同名のコンテナが存在しない場合、指定のバインディング情報により定義されたカラムレイアウトに従い、新規にコレクションを作成します。すでに同名のコレクションが存在し、既存のカラムレイアウトの内容がすべて一致する場合、実行中のトランザクションを待機する点を除きgsGetCollectionと同様に振る舞います。
-
modifiableGS_TRUEであり、すでに同名のコレクションが存在する場合、必要に応じカラムレイアウトを変更します。変更する際、要求したカラムと同一の名前・型の既存のカラムは保持されます。一致しないカラムのうち、既存のコレクションにない名前のカラムは追加し、要求側にないカラムはデータも含め削除します。型が異なる同名のカラムが存在する場合は失敗します。また、ロウキーに対応するカラムの追加と削除はできません。
-
コンテナにトリガが設定されており、カラムレイアウト変更によってトリガが通知対象としているカラムが削除された場合、そのカラムはトリガの通知対象から削除されます。
-
新たに追加されるカラムの値は、GSContainerにて定義されている空の値を初期値として初期化されます。
-
指定の型とカラムレイアウトとの対応関係については、GSContainerの定義を参照してください。
-
すでに同名のコレクションが存在し、かつ、該当するコレクションにおいて実行中のトランザクションが存在する場合、それらの終了を待機してから処理を行います。
-
ロウキーを持つコレクションを新規に作成する場合、ロウキーに対し、gsCreateIndexにて定義されているデフォルト種別の索引が作成されます。この索引は、削除することができます。
-
現バージョンでは、コンテナの規模など諸条件を満たした場合、カラムレイアウトの変更開始から終了までの間に、処理対象のコンテナに対してコンテナ情報の参照、更新ロックなしでのロウの参照操作を行える場合があります。それ以外の操作は、GSContainerでの定義通り待機させる場合があります。カラムレイアウトの変更途中に別の操作が行われる場合は、変更前のカラムレイアウトが使用されます。
-
Parameters
- - - - - - - -
[in]store処理対象のGSGridStore
[in]name処理対象のコレクションの名前
[in]bindingユーザ定義構造体とカラムレイアウトとのバインディング情報
[in]propertiesコレクションの構成オプション。NULLを指定できます。現バージョンでは使用されておらず、内容はチェックされません。
[in]modifiable既存コレクションのカラムレイアウト変更を許可するかどうか
[out]collectionGSCollectionインスタンスを格納するためのポインタ変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、このポインタ値がNULL以外の値であれば、対応するポインタ変数にNULLが格納されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • 同名の時系列が存在する場合。
  • -
  • modifiableGS_FALSEであり、既存の同名のコレクションに関してカラムレイアウトの内容が一致しない場合
  • -
  • modifiableGS_TRUEであり、既存の同名のコレクションに関して変更できない項目を変更しようとした場合
  • -
  • 指定の型がロウオブジェクトの型として適切でない場合。詳しくはGSContainerの定義を参照してください。
  • -
  • この処理のタイムアウト、接続障害が発生した場合
  • -
  • properties以外のポインタ型引数にNULLが指定された場合
  • -
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GS_STATIC_HEADER_FUNC_SPECIFIER GSResult gsPutCollectionGeneral (GSGridStorestore,
const GSCharname,
const GSContainerInfoinfo,
GSBool modifiable,
GSCollection ** collection 
)
-
- -

GSContainerInfoを指定して、コレクションを新規作成または変更します。

-
コンテナ種別がGS_CONTAINER_COLLECTIONに限定され、GSContainerインスタンスが格納される点を除き、gsPutContainerGeneralと同様に振る舞います。
-
Parameters
- - - - - - -
[in]store処理対象のGSGridStore
[in]name処理対象のコレクションの名前
[in]info処理対象のコレクションの情報。コンテナ種別には常にGS_CONTAINER_COLLECTIONを指定
[in]modifiable既存コレクションのカラムレイアウト変更を許可するかどうか
[out]collectionGSCollectionインスタンスを格納するためのポインタ変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、このポインタ値がNULL以外の値であれば、対応するポインタ変数にNULLが格納されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • コンテナ種別以外の指定内容に関して、gsPutContainerGeneralの規則に合致しない場合。また、コンテナ種別に関する制限に合致しない場合
  • -
  • この処理のタイムアウト、接続障害が発生した場合
  • -
  • name以外のポインタ型引数にNULLが指定された場合
  • -
-
-
See Also
gsPutContainerGeneral
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GS_STATIC_HEADER_FUNC_SPECIFIER GSResult gsPutContainer (GSGridStorestore,
const GSCharname,
const GSBindingbinding,
const GSContainerInfoinfo,
GSBool modifiable,
GSContainer ** container 
)
-
- -

バインディング情報とGSContainerInfoを指定して、コンテナを新規作成または変更します。

-
主に、バインディング情報を指定して、追加設定を持つコンテナを新規作成する場合に使用します。
-
カラムレイアウトならびにカラム順序の無視設定をGSContainerInfoに指定できない点を除けば、gsPutContainerGeneralと同様です。
-
Parameters
- - - - - - - -
[in]store処理対象のGSGridStore
[in]name処理対象のコンテナの名前
[in]bindingユーザ定義構造体とカラムレイアウトとのバインディング情報
[in]info処理対象のコンテナの情報。NULLの場合は無視される
[in]modifiable既存コレクションのカラムレイアウト変更を許可するかどうか
[out]containerGSContainerインスタンスを格納するためのポインタ変数へのポインタ値。GS_CONTAINER_COLLECTIONを指定した場合はGSCollectionGS_CONTAINER_TIME_SERIESを指定した場合はGSTimeSeries固有の機能が使用できます。実行結果としてGS_RESULT_OK以外が返される場合、このポインタ値がNULL以外の値であれば、対応するポインタ変数にNULLが格納されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • nameならびにinfo引数の内容が規則に合致しない場合。また、指定のコンテナ種別に対応するコンテナ新規作成・変更関数の規則に合致しない場合
  • -
  • 指定の型がロウオブジェクトの型として適切でない場合。詳しくはGSContainerの定義を参照してください。
  • -
  • この処理のタイムアウト、接続障害が発生した場合
  • -
  • name以外のポインタ型引数にNULLが指定された場合
  • -
-
-
See Also
gsPutCollection
-
-gsPutTimeSeries
-
-gsPutContainerGeneral
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GS_STATIC_HEADER_FUNC_SPECIFIER GSResult gsPutContainerGeneral (GSGridStorestore,
const GSCharname,
const GSContainerInfoinfo,
GSBool modifiable,
GSContainer ** container 
)
-
- -

GSContainerInfoを指定して、コンテナを新規作成または変更します。

-
次の点を除き、gsPutCollectionもしくはgsPutTimeSeriesと同様に振る舞います。
    -
  • GSContainerInfoを用いてコンテナ種別、カラムレイアウト、ならびに、必要に応じ時系列構成オプションを指定する
  • -
  • 返却されるGSContainerのロウオブジェクトの型が常にGSRowとなるそれぞれの同名の引数modifiableの用法についても同様です。
  • -
-
-
コンテナに関する情報の指定方法の一覧は次の通りです。 - - - - - - - - - - - - - - - - - - -
項目引数説明
コンテナ名nameまたはinfo 少なくともいずれかの引数にNULLではない値を指定する。両方に指定する場合、異なる値を指定してはならない。
コンテナ種別info GS_CONTAINER_COLLECTIONを指定した場合、gsPutCollectionと同様の振る舞いとなる。GS_CONTAINER_TIME_SERIESを指定した場合、gsPutTimeSeriesと同様の振る舞いとなる。
カラムレイアウトinfo GSContainerにて規定された制約に合致するようGSColumnInfoのリストならびにロウキーの構成を設定する。ただし現バージョンでは、初期値でのNULL使用有無が設定されたGSColumnInfo::optionsを持つGSColumnInfoを含めることはできない。
カラム順序の無視info 無視する場合、同名の既存のコンテナのカラム順序と一致するかどうかを検証しない。
時系列構成オプションinfo コンテナ種別がGS_CONTAINER_TIME_SERIESの場合のみ、NULLではない値を指定できる。
索引設定info 現バージョンでは無視される。今後のバージョンでは、gsCreateIndexの規則に合致しない設定が含まれていた場合、エラーとなる可能性がある。
トリガ設定info 現バージョンでは無視される。今後のバージョンでは、gsCreateTriggerの規則に合致しない設定が含まれていた場合、エラーとなる可能性がある。
コンテナ類似性info NULL以外を指定し新規作成する場合、指定の内容が反映される。既存コンテナの設定を変更することはできない。NULLを指定した場合は無視される。
-
-
Parameters
- - - - - - -
[in]store処理対象のGSGridStore
[in]name処理対象のコンテナの名前
[in]info処理対象のコンテナの情報
[in]modifiable既存コンテナのカラムレイアウト変更を許可するかどうか
[out]containerGSContainerインスタンスを格納するためのポインタ変数へのポインタ値。GS_CONTAINER_COLLECTIONを指定した場合はGSCollectionGS_CONTAINER_TIME_SERIESを指定した場合はGSTimeSeries固有の機能が使用できます。実行結果としてGS_RESULT_OK以外が返される場合、このポインタ値がNULL以外の値であれば、対応するポインタ変数にNULLが格納されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • nameならびにinfo引数の内容が規則に合致しない場合。また、指定のコンテナ種別に対応するコンテナ新規作成・変更関数の規則に合致しない場合
  • -
  • この処理のタイムアウト、接続障害が発生した場合
  • -
  • name以外のポインタ型引数にNULLが指定された場合
  • -
-
-
See Also
gsPutCollection
-
-gsPutTimeSeries
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsPutMultipleContainerRows (GSGridStorestore,
const GSContainerRowEntryentryList,
size_t entryCount 
)
-
- -

任意のコンテナの任意個数のロウについて、可能な限りリクエスト単位を大きくして新規作成または更新操作を行います。

-
指定のエントリ列に含まれる各ロウオブジェクトについて、個別にgsPutRowを呼び出した場合と同様に新規作成または更新操作を行います。ただし、個別に行う場合と違い、同一の格納先などの可能な限り大きな単位で対象ノードに対しリクエストしようとします。これにより、対象コンテナの総数や指定のロウオブジェクトの総数が多くなるほど、対象ノードとやりとりする回数が削減される可能性が高くなります。
-
指定のエントリ列は、コンテナ名とロウオブジェクト列との組からなる任意個数のエントリから構成されます。対象とするコンテナとして、コンテナ種別やカラムレイアウトが異なるものを混在させることができます。ただし、すでに存在するコンテナでなければなりません。エントリ列のコンテナ名としてNULLを設定することはできません。また、ロウオブジェクト列の要素数が正ならば、ロウオブジェクト列の配列アドレスとしてNULLを設定することはできません。
-
各ロウオブジェクト列には、対象のコンテナと同一のカラムレイアウトのGSRowのみを任意個数含めることができます。現バージョンでは、カラム順序についてもすべて同一でなければなりません。ロウオブジェクト列の要素としてNULLを含めることはできません。
-
コンテナの種別ならびに設定によっては、操作できるロウの内容についてgsPutRowと同様の制限が設けられています。具体的な制限事項は、gsPutRowの定義を参照してください。
-
指定のエントリ列内に同一コンテナを対象とした同一ロウキーを持つ複数のロウオブジェクト列が存在する場合、異なるリスト間であればエントリ列の要素順、同一ロウオブジェクト列内であればその要素順を基準として、同値のロウキーを持つ最も後方にあるロウオブジェクトの内容が反映されます。
-
トランザクションを維持し、ロックを保持し続けることはできません。ただし、既存のトランザクションが対象ロウに影響するロックを確保している場合、すべてのロックが解放されるまで待機し続けます。
-
他のコンテナ・ロウ操作と同様、異なるコンテナ間での整合性は保証されません。したがって、あるコンテナに対する処理の結果は、その処理の開始前に完了した他の操作命令の影響を受けることがあります。
-
各コンテナならびにロウに対する処理の途中でエラーが発生した場合、一部のコンテナの一部のロウに対する操作結果のみが反映されたままとなることがあります。
-
この操作によりエラーが発生した場合、エラー情報にはcontainerパラメータが含まれることがあります。エラーに関するパラメータの詳細は、GSGridStoreの定義を参照してください。
-
Attention
エントリ列に含まれるロウオブジェクトへのアドレスとしてGSRow以外のものが含まれており、異常を検知できなかった場合、この処理の動作は未定義です。アクセス違反により実行プロセスが異常終了する可能性があります。
-
Parameters
- - - - -
[in]store処理対象のGSGridStore
[in]entryList対象とするコンテナの名前とロウオブジェクト列からなるエントリの列。GSContainerRowEntryの配列により構成されます。entryCount0の場合、この配列を参照することはなく、NULLを指定することもできます。
[in]entryCountエントリ列の要素数
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • 対象とするコンテナが存在しない場合、また、対象とするコンテナとロウオブジェクトとのカラムレイアウトが一致しない場合
  • -
  • 特定コンテナ種別固有の制限に反する操作を行った場合
  • -
  • この処理または関連するトランザクションのタイムアウト、接続障害が発生した場合、またはサポート範囲外の値がロウオブジェクトに含まれていた場合
  • -
  • storeNULLの場合
  • -
  • queryCountが正の値であるにもかかわらず、queryListNULLが指定された場合
  • -
  • エントリ列に含まれるロウオブジェクトへのアドレスとしてGSRow以外のものが含まれており、異常検知に成功した場合
  • -
  • エントリ列を構成するエントリのコンテナ名としてNULLが含まれていた場合、ロウオブジェクト列の要素数が正であるにも関わらずロウオブジェクト列の配列アドレスとしてNULLが含まれていた場合、また、ロウオブジェクト列の要素としてNULLが含まれていた場合
  • -
-
-
See Also
gsPutRow
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GS_STATIC_HEADER_FUNC_SPECIFIER GSResult gsPutTimeSeries (GSGridStorestore,
const GSCharname,
const GSBindingbinding,
const GSTimeSeriesPropertiesproperties,
GSBool modifiable,
GSTimeSeries ** timeSeries 
)
-
- -

時系列を新規作成または変更します。

-
同名のコンテナが存在しない場合、指定のバインディング情報により定義されたカラムレイアウトに従い、新規に時系列を作成します。すでに同名の時系列が存在し、既存のカラムレイアウトの内容がすべて一致する場合、実行中のトランザクションを待機する点を除きgsGetTimeSeriesと同様に振る舞います。
-
modifiableGS_TRUEであり、すでに同名の時系列が存在する場合、必要に応じカラムレイアウトを変更します。変更する際、要求したカラムと同一の名前・型の既存のカラムは保持されます。一致しないカラムのうち、既存の時系列にない名前のカラムは追加し、要求側にないカラムはデータも含め削除します。型が異なる同名のカラムが存在する場合は失敗します。また、ロウキーに対応するカラムの追加と削除、時系列構成オプションの変更はできません。時系列構成オプションを指定する場合は、既存の設定内容とすべて同値にする必要があります。
-
コンテナにトリガが設定されており、カラムレイアウト変更によってトリガが通知対象としているカラムが削除された場合、そのカラムはトリガの通知対象から削除されます。
-
新たに追加されるカラムの値は、gsPutCollectionの定義を参照してください。
-
指定の型とカラムレイアウトとの対応関係については、GSContainerの定義を参照してください。
-
すでに同名の時系列が存在し、かつ、該当する時系列において実行中のトランザクションが存在する場合、それらの終了を待機してから処理を行います。
-
Parameters
- - - - - - - -
[in]store処理対象のGSGridStore
[in]name処理対象の時系列の名前
[in]bindingユーザ定義構造体とカラムレイアウトとのバインディング情報
[in]properties時系列の構成オプション。NULLを指定すると、同名の時系列が存在する場合は既存の設定が継承され、存在しない場合は初期設定を指定したものとみなされます。初期設定とは、GS_TIME_SERIES_PROPERTIES_INITIALIZERにより初期化した時系列構成オプションと同値の設定のことです。
[in]modifiable既存時系列のカラムレイアウト変更を許可するかどうか
[out]timeSeriesGSTimeSeriesインスタンスを格納するためのポインタ変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、このポインタ値がNULL以外の値であれば、対応するポインタ変数にNULLが格納されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • 同名の時系列が存在する場合。
  • -
  • modifiableGS_FALSEであり、既存の同名の時系列に関してカラムレイアウトの内容が一致しない場合
  • -
  • modifiableGS_TRUEであり、既存の同名の時系列に関して変更できない項目を変更しようとした場合
  • -
  • 指定の型がロウオブジェクトの型として適切でない場合。詳しくはGSContainerの定義を参照してください。
  • -
  • この処理のタイムアウト、接続障害が発生した場合
  • -
  • properties以外のポインタ型引数にNULLが指定された場合
  • -
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GS_STATIC_HEADER_FUNC_SPECIFIER GSResult gsPutTimeSeriesGeneral (GSGridStorestore,
const GSCharname,
const GSContainerInfoinfo,
GSBool modifiable,
GSTimeSeries ** timeSeries 
)
-
- -

GSContainerInfoを指定して、時系列を新規作成または変更します。

-
コンテナ種別がGS_CONTAINER_TIME_SERIESに限定され、GSTimeSeriesインスタンスが格納される点を除き、gsPutTimeSeriesGeneralと同様に振る舞います。
-
Parameters
- - - - - - -
[in]store処理対象のGSGridStore
[in]name処理対象の時系列の名前
[in]info処理対象の時系列の情報。コンテナ種別には常にGS_CONTAINER_TIME_SERIESを指定
[in]modifiable既存時系列のカラムレイアウト変更を許可するかどうか
[out]timeSeriesGSTimeSeriesインスタンスを格納するためのポインタ変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、このポインタ値がNULL以外の値であれば、対応するポインタ変数にNULLが格納されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • コンテナ種別以外の指定内容に関して、gsPutContainerGeneralの規則に合致しない場合。また、コンテナ種別に関する制限に合致しない場合
  • -
  • この処理のタイムアウト、接続障害が発生した場合
  • -
  • name以外のポインタ型引数にNULLが指定された場合
  • -
-
-
See Also
gsPutContainerGeneral
-
Since
1.5
- -
-
-
-
-
-
GSGridStoreFactory
-
-
- - - - - -

-Typedefs

typedef struct
-GSGridStoreFactoryTag 
GSGridStoreFactory
 GSGridStoreインスタンスを管理します。More...
 
- - - - - - - - - - - - - -

-Functions

GS_DLL_PUBLIC void GS_API_CALL gsCloseFactory (GSGridStoreFactory **factory, GSBool allRelated)
 必要に応じ、指定のGSGridStoreFactoryに関連するリソースをクローズします。More...
 
GS_DLL_PUBLIC
-GSGridStoreFactory
-*GS_API_CALL 
gsGetDefaultFactory ()
 デフォルトのGSGridStoreFactoryインスタンスを取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetGridStore (GSGridStoreFactory *factory, const GSPropertyEntry *properties, size_t propertyCount, GSGridStore **store)
 指定のプロパティを持つGSGridStoreを取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetFactoryProperties (GSGridStoreFactory *factory, const GSPropertyEntry *properties, size_t propertyCount)
 指定のファクトリの設定を変更します。More...
 
-

Detailed Description

-

Typedef Documentation

- -
-
- - - - -
typedef struct GSGridStoreFactoryTag GSGridStoreFactory
-
- -

GSGridStoreインスタンスを管理します。

-
GSGridStoreインスタンス共通のクライアント設定や使用済みのコネクションを管理します。
-
GridDBにアクセスするためには、このファクトリを介してGSGridStoreインスタンスを取得する必要があります。
-
この型のポインタを第一引数とする関数は、すべてスレッド安全です。
- -
-
-

Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC void GS_API_CALL gsCloseFactory (GSGridStoreFactory ** factory,
GSBool allRelated 
)
-
- -

必要に応じ、指定のGSGridStoreFactoryに関連するリソースをクローズします。

-
Note
現バージョンでは、何もクローズ処理を行いません。
-
Parameters
- - - -
[in,out]factory対象とするGSGridStoreFactoryインスタンスのポインタ変数へのポインタ値
[in]allRelated現バージョンでは、結果に影響しません。
-
-
- -
-
- -
-
- - - - - - - -
GS_DLL_PUBLIC GSGridStoreFactory* GS_API_CALL gsGetDefaultFactory ()
-
- -

デフォルトのGSGridStoreFactoryインスタンスを取得します。

-
Returns
GSGridStoreFactoryインスタンスへのポインタ値
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetGridStore (GSGridStoreFactoryfactory,
const GSPropertyEntryproperties,
size_t propertyCount,
GSGridStore ** store 
)
-
- -

指定のプロパティを持つGSGridStoreを取得します。

-
GSGridStoreを取得した時点では、各GSContainerを管理するマスタノード(以下、マスタ)のアドレス探索を必要に応じて行うだけであり、認証処理は行われません。実際に各GSContainerに対応するノードに接続する必要が生じたタイミングで、認証処理が行われます。
-
以下のプロパティを指定できます。サポート外の名称のプロパティは無視されます。 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
名称説明
host 接続先ホスト名。IPアドレス(IPV4のみ)も可。マスタを手動指定する場合は必須。マスタを自動検出する場合は設定しない。notificationMemberおよびnotificationProviderと同時に指定することはできない
port 接続先ポート番号。0から65535までの数値の文字列表現。マスタを手動指定する場合は必須。マスタを自動検出する場合は設定しない
notificationAddress マスタ自動検出に用いられる通知情報を受信するためのIPアドレス(IPV4のみ)。省略時はデフォルトのアドレスを使用
notificationPort マスタ自動検出に用いられる通知情報を受信するためのポート番号。0から65535までの数値の文字列表現。省略時はデフォルトのポートを使用
clusterName クラスタ名。接続先のクラスタに設定されているクラスタ名と一致するかどうかを確認するために使用される。省略時もしくは空文字列を指定した場合、クラスタ名の確認は行われない。
database 接続先のデータベース名。省略時は全てのユーザがアクセス可能な「public」データベースに自動接続される。接続ユーザは接続データベースに属するコンテナを操作できる。
user ユーザ名
password ユーザ認証用のパスワード
consistency 以下のいずれかの一貫性レベル。デフォルトではIMMEDIATEを適用
    -
  • IMMEDIATE
      -
    • 他のクライアントからの更新結果は、該当トランザクションの完了後即座に反映される
    • -
    -
  • -
  • EVENTUAL
      -
    • 他のクライアントからの更新結果は、該当トランザクションが完了した後でも反映されない場合がある。GSContainerに対する更新操作は実行できない
    • -
    -
  • -
-
transactionTimeout トランザクションタイムアウト時間の最低値。関係するGSContainerにおける各トランザクションの開始時点から適用。0からINTEGER型の最大値までの値の文字列表現であり、単位は秒。ただし、タイムアウト時間として有効に機能する範囲に上限があり、上限を超える指定は上限値が指定されたものとみなされる。0の場合、後続のトランザクション処理がタイムアウトエラーになるかどうかは常に不定となる。省略時は接続先GridDB上のデフォルト値を使用
failoverTimeout フェイルオーバ処理にて新たな接続先が見つかるまで待機する時間の最低値。0からINTEGER型の最大値までの数値の文字列表現であり、単位は秒。0の場合、フェイルオーバ処理を行わない。省略時は指定のファクトリの設定値を使用
containerCacheSize コンテナキャッシュに格納するコンテナ情報の最大個数。0からINTEGER型の最大値までの数値の文字列表現。値が0の場合、コンテナキャッシュを使用しないことを意味する。GSContainerを取得する際にキャッシュにヒットした場合は、GridDBへのコンテナ情報の問い合わせを行わない。省略時は既存の設定値を使用。バージョン1.5よりサポート
notificationMember 固定リスト方式を使用して構成されたクラスタに接続する場合に、クラスタノードのアドレス・ポートのリストを次のように指定する。
(アドレス1):(ポート1),(アドレス2):(ポート2),...
notificationAddressおよびnotificationProviderと同時に指定することはできない。バージョン2.9よりサポート
notificationProvider プロバイダ方式を使用して構成されたクラスタに接続する場合に、アドレスプロバイダのURLを指定する。notificationAddressおよびnotificationMemberと同時に指定することはできない。バージョン2.9よりサポート
applicationName アプリケーションの名前。アプリケーションの識別を補助するための情報として、接続先のクラスタ上での各種管理情報の出力の際に含められる場合がある。ただし、アプリケーションの同一性をどのように定義するかについては関与しない。省略時はアプリケーション名の指定がなかったものとみなされる。空文字列は指定できない。バージョン4.2よりサポート
timeZone タイムゾーン情報。TQLでのTIMESTAMP値演算などに使用される。「±hh:mm」または「±hhmm」形式によるオフセット値(±+または-hhは時、mmは分)、「Z」(+00:00に相当)、「auto」(実行環境に応じ自動設定)のいずれかを指定する。autoが使用できるのは夏時間を持たないタイムゾーンに限定される。バージョン4.23よりサポート
-
-
クラスタ名、データベース名、ユーザ名、パスワードについては、ASCIIの大文字・小文字表記の違いがいずれも区別されます。その他、これらの定義に使用できる文字種や長さの上限などの制限については、GridDBテクニカルリファレンスを参照してください。ただし、制限に反する文字列をプロパティ値として指定した場合、各ノードへの接続のタイミングまでエラーが検知されないことや、認証情報の不一致など別のエラーになることがあります。
-
取得のたびに、新たなGSGridStoreインスタンスが生成されます。異なるGSGridStoreインスタンスならびに関連するリソースに対する操作は、スレッド安全です。すなわち、ある2つのリソースがそれぞれGSGridStoreインスタンスを基にして生成されたものまたはGSGridStoreインスタンスそのものであり、かつ、該当する関連GSGridStoreインスタンスが異なる場合、一方のリソースに対してどのスレッドからどのタイミングで関連する関数が呼び出されていたとしても、他方のリソースの関連する関数を呼び出すことができます。ただし、GSGridStore自体のスレッド安全性は保証されていないため、同一GSGridStoreインスタンスに対して複数スレッドから任意のタイミングで関連する関数を呼び出すことはできません。
-
Parameters
- - - - - -
[in]factory取得元のGSGridStoreFactoryインスタンス。NULLの場合、gsGetDefaultFactoryにより得られるインスタンスと同一のものが使用されます。
[in]properties取得設定を指示するためのプロパティ。GSPropertyEntryの配列により構成されます。エントリ数が0の場合、この配列を参照することはなく、NULLを指定することもできます。エントリを構成する名前もしくは値にNULLを含めることはできません。
[in]propertyCountpropertiesとして引数に指定するプロパティのエントリ数。
[out]storeGSGridStoreインスタンスを格納するためのポインタ変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、このポインタ値がNULL以外の値であれば、対応するポインタ変数にNULLが格納されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • 指定のホストについて名前解決できなかった場合
  • -
  • 指定のプロパティが上で説明した形式・制限に合致しないことを検知できた場合
  • -
  • storeNULLが指定された場合
  • -
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetFactoryProperties (GSGridStoreFactoryfactory,
const GSPropertyEntryproperties,
size_t propertyCount 
)
-
- -

指定のファクトリの設定を変更します。

-
設定の変更は、指定のファクトリより生成されたGSGridStore、ならびに、今後指定のファクトリで生成されるGSGridStoreに反映されます。
-
以下のプロパティを指定できます。サポート外の名称のプロパティは無視されます。 - - - - - - -
名称説明
maxConnectionPoolSize 内部で使用されるコネクションプールの最大コネクション数。0からINTEGER型の最大値までの数値の文字列表現。値が0の場合、コネクションプールを使用しないことを意味する。省略時は既存の設定値を使用
failoverTimeout フェイルオーバ処理にて新たな接続先が見つかるまで待機する時間の最低値。0からINTEGER型の最大値までの数値の文字列表現であり、単位は秒。0の場合、フェイルオーバ処理を行わない。省略時は既存の設定値を使用
-
-
Parameters
- - - - -
[in]factory取得元のGSGridStoreFactoryインスタンス。NULLの場合、gsGetDefaultFactoryにより得られるインスタンスと同一のものが使用されます。
[in]properties取得設定を指示するためのプロパティ。GSPropertyEntryの配列により構成されます。エントリ数が0の場合、NULLを指定することもできます。エントリを構成する名前もしくは値にNULLを含めることはできません。
[in]propertyCountpropertiesとして引数に指定するプロパティのエントリ数。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • 指定のプロパティが上で説明した形式に合致しない場合
  • -
  • propertiesNULLが指定された場合
  • -
-
- -
-
-
-
-
-
GSPartitionController
-
-
- - - - - -

-Typedefs

typedef struct
-GSPartitionControllerTag 
GSPartitionController
 パーティション状態の取得や操作のためのコントローラです。More...
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

GS_DLL_PUBLIC void GS_API_CALL gsClosePartitionController (GSPartitionController **controller)
 指定のGSPartitionControllerインスタンスを解放します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPartitionCount (GSPartitionController *controller, int32_t *partitionCount)
 対象とするGridDBクラスタのパーティション数を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPartitionContainerCount (GSPartitionController *controller, int32_t partitionIndex, int64_t *containerCount)
 指定のパーティションに属するコンテナの総数を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPartitionContainerNames (GSPartitionController *controller, int32_t partitionIndex, int64_t start, const int64_t *limit, const GSChar *const **nameList, size_t *size)
 指定のパーティションに所属するコンテナの名前の一覧を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPartitionHosts (GSPartitionController *controller, int32_t partitionIndex, const GSChar *const **addressList, size_t *size)
 指定のパーティションに対応するノードのアドレス一覧を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPartitionOwnerHost (GSPartitionController *controller, int32_t partitionIndex, const GSChar **address)
 指定のパーティションに対応するオーナノードのアドレスを取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPartitionBackupHosts (GSPartitionController *controller, int32_t partitionIndex, const GSChar *const **addressList, size_t *size)
 指定のパーティションに対応するバックアップノードのアドレス一覧を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsAssignPartitionPreferableHost (GSPartitionController *controller, int32_t partitionIndex, const GSChar *host)
 優先的に選択されるホストのアドレスを設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPartitionIndexOfContainer (GSPartitionController *controller, const GSChar *containerName, int32_t *partitionIndex)
 指定のコンテナ名に対応するパーティションインデックスを取得します。More...
 
-

Detailed Description

-

Typedef Documentation

- -
-
- - - - -
typedef struct GSPartitionControllerTag GSPartitionController
-
- -

パーティション状態の取得や操作のためのコントローラです。

-
パーティションとは、データを格納する論理的な領域です。GridDBクラスタ内のデータ配置に基づいた操作を行うために使用します。
-
Since
1.5
- -
-
-

Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsAssignPartitionPreferableHost (GSPartitionControllercontroller,
int32_t partitionIndex,
const GSCharhost 
)
-
- -

優先的に選択されるホストのアドレスを設定します。

-
バックアップノードへの接続など、可能な接続先が複数存在する場合に、設定されたアドレスが候補に含まれていれば常に選択されるようになります。それ以外の場合は設定が無視されます。
-
Parameters
- - - - -
[in]controller処理対象のGSPartitionController
[in]partitionIndexパーティションインデックス。0以上パーティション数未満の値。
[in]host優先的に選択されるホストのアドレス。IPアドレス(IPV4のみ)も可。NULLの場合、設定が解除される
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • controller引数にNULLが指定された場合
  • -
  • 範囲外のパーティションインデックスが指定された場合
  • -
  • アドレスの名前解決に失敗した場合
  • -
  • 対応するGSGridStoreのクローズ後に呼び出された場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - -
GS_DLL_PUBLIC void GS_API_CALL gsClosePartitionController (GSPartitionController ** controller)
-
- -

指定のGSPartitionControllerインスタンスを解放します。

-
Parameters
- - -
[in,out]controllerクローズ対象のGSPartitionControllerインスタンスを指しているポインタ変数へのポインタ値。クローズすると、ポインタ変数にNULLが設定されます。以後、解放したGSPartitionControllerインスタンスにアクセスしてはなりません。ポインタ値またはポインタ変数の値がNULLの場合は、クローズ処理を行いません。
-
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPartitionBackupHosts (GSPartitionControllercontroller,
int32_t partitionIndex,
const GSChar *const ** addressList,
size_t * size 
)
-
- -

指定のパーティションに対応するバックアップノードのアドレス一覧を取得します。

-
オーナノードとは、gsGetGridStoreおける一貫性レベルとして"EVENTUAL"を指定した場合に、優先的に選択されるノードのことです。
-
一覧の順序に関しては不定です。重複するアドレスが含まれることはありません。
-
Attention
アドレス一覧を格納する領域を確保するために、指定のGSPartitionControllerと関係するGSGridStoreインスタンス上で管理される一時的なメモリ領域を使用する場合があります。この領域は、指定のGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
-
Parameters
- - - - - -
[in]controller処理対象のGSPartitionController
[in]partitionIndexパーティションインデックス。0以上パーティション数未満の値。
[out]addressListアドレスの文字列表現一覧の配列を格納するためのポインタ変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
[out]sizeコンテナ名一覧の配列の要素数を格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、0が格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • ポインタ型引数にNULLが指定された場合
  • -
  • 範囲外のパーティションインデックスが指定された場合
  • -
  • この処理のタイムアウト、接続障害が発生した場合
  • -
  • 対応するGSGridStoreのクローズ後に呼び出された場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPartitionContainerCount (GSPartitionControllercontroller,
int32_t partitionIndex,
int64_t * containerCount 
)
-
- -

指定のパーティションに属するコンテナの総数を取得します。

-
コンテナ数を求める際の計算量は、コンテナ数にはおおむね依存しません。
-
Parameters
- - - - -
[in]controller処理対象のGSPartitionController
[in]partitionIndexパーティションインデックス。0以上パーティション数未満の値
[out]containerCountコンテナ数を格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、0が格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • ポインタ型引数にNULLが指定された場合
  • -
  • 範囲外のパーティションインデックスが指定された場合
  • -
  • この処理のタイムアウト、接続障害が発生した場合
  • -
  • 対応するGSGridStoreのクローズ後に呼び出された場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPartitionContainerNames (GSPartitionControllercontroller,
int32_t partitionIndex,
int64_t start,
const int64_t * limit,
const GSChar *const ** nameList,
size_t * size 
)
-
- -

指定のパーティションに所属するコンテナの名前の一覧を取得します。

-
指定のパーティションについてコンテナの新規作成・構成変更・削除が行われたとしても、該当コンテナを除くとその前後で一覧の取得結果の順序が変わることはありません。それ以外の一覧の順序に関しては不定です。重複する名前が含まれることはありません。
-
取得件数の上限が指定された場合、上限を超える場合、後方のものから切り捨てられます。指定条件に該当するものが存在しない場合、空のリストが求まります。
-
Attention
コンテナ名一覧を格納する領域を確保するために、指定のGSPartitionControllerと関係するGSGridStoreインスタンス上で管理される一時的なメモリ領域を使用する場合があります。この領域は、指定のGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
-
Parameters
- - - - - - - -
[in]controller処理対象のGSPartitionController
[in]partitionIndexパーティションインデックス。0以上パーティション数未満の値。
[in]start取得範囲の開始位置。0以上の値
[in]limit取得件数の上限。NULLの場合、上限なしとみなされる
[out]nameListコンテナ名一覧の配列を格納するためのポインタ変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
[out]sizeコンテナ名一覧の配列の要素数を格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、0が格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • limit以外のポインタ型引数にNULLが指定された場合
  • -
  • 範囲外のパーティションインデックスが指定された場合
  • -
  • この処理のタイムアウト、接続障害が発生した場合
  • -
  • 対応するGSGridStoreのクローズ後に呼び出された場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPartitionCount (GSPartitionControllercontroller,
int32_t * partitionCount 
)
-
- -

対象とするGridDBクラスタのパーティション数を取得します。

-
対象とするGridDBクラスタにおけるパーティション数設定の値を取得します。一度取得した結果はキャッシュされ、次にクラスタ障害・クラスタノード障害を検知するまで再びGridDBクラスタに問い合わせることはありません。
-
Parameters
- - - -
[in]controller処理対象のGSPartitionController
[out]partitionCountパーティション数を格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、-1が格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • 引数にNULLが指定された場合
  • -
  • この処理のタイムアウト、接続障害が発生した場合
  • -
  • 対応するGSGridStoreのクローズ後に呼び出された場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPartitionHosts (GSPartitionControllercontroller,
int32_t partitionIndex,
const GSChar *const ** addressList,
size_t * size 
)
-
- -

指定のパーティションに対応するノードのアドレス一覧を取得します。

-
一覧の順序に関しては不定です。重複するアドレスが含まれることはありません。
-
Attention
アドレス一覧を格納する領域を確保するために、指定のGSPartitionControllerと関係するGSGridStoreインスタンス上で管理される一時的なメモリ領域を使用する場合があります。この領域は、指定のGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
-
Parameters
- - - - - -
[in]controller処理対象のGSPartitionController
[in]partitionIndexパーティションインデックス。0以上パーティション数未満の値。
[out]addressListアドレスの文字列表現一覧の配列を格納するためのポインタ変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
[out]sizeコンテナ名一覧の配列の要素数を格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、0が格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • ポインタ型引数にNULLが指定された場合
  • -
  • 範囲外のパーティションインデックスが指定された場合
  • -
  • この処理のタイムアウト、接続障害が発生した場合
  • -
  • 対応するGSGridStoreのクローズ後に呼び出された場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPartitionIndexOfContainer (GSPartitionControllercontroller,
const GSCharcontainerName,
int32_t * partitionIndex 
)
-
- -

指定のコンテナ名に対応するパーティションインデックスを取得します。

-
一度GridDBクラスタが構築されると、コンテナの所属先のパーティションが変化することはなく、パーティションインデックスも一定となります。指定の名前に対応するコンテナが存在するかどうかは、結果に依存しません。
-
パーティションインデックスの算出に必要とする情報はキャッシュされ、次にクラスタ障害・クラスタノード障害を検知するまで再びGridDBクラスタに問い合わせることはありません。
-
Parameters
- - - - -
[in]controller処理対象のGSPartitionController
[in]containerNameコンテナ名
[out]partitionIndexパーティションインデックスを格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、-1が格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • 引数にNULLが指定された場合
  • -
  • コンテナ名として許可されない文字列が指定された場合
  • -
  • この処理のタイムアウト、接続障害が発生した場合
  • -
  • 対応するGSGridStoreのクローズ後に呼び出された場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPartitionOwnerHost (GSPartitionControllercontroller,
int32_t partitionIndex,
const GSChar ** address 
)
-
- -

指定のパーティションに対応するオーナノードのアドレスを取得します。

-
オーナノードとは、gsGetGridStoreおける一貫性レベルとして"IMMEDIATE"を指定した場合に、常に選択されるノードのことです。
-
Attention
アドレスを格納する領域を確保するために、指定のGSPartitionControllerと関係するGSGridStoreインスタンス上で管理される一時的なメモリ領域を使用する場合があります。この領域は、指定のGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
-
Parameters
- - - - -
[in]controller処理対象のGSPartitionController
[in]partitionIndexパーティションインデックス。0以上パーティション数未満の値。
[out]addressアドレスの文字列表現を格納するためのポインタ変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • ポインタ型引数にNULLが指定された場合
  • -
  • 範囲外のパーティションインデックスが指定された場合
  • -
  • この処理のタイムアウト、接続障害が発生した場合
  • -
  • 対応するGSGridStoreのクローズ後に呼び出された場合
  • -
-
-
Since
1.5
- -
-
-
-
-
-
GSQuery
-
-
- - - - - -

-Typedefs

-typedef struct GSQueryTag GSQuery
 特定のGSContainerに対応付けられたクエリを保持し、結果取得方法の設定ならびに実行・結果取得を行う機能を持ちます。
 
- - - - - - - - - - - - - -

-Functions

GS_DLL_PUBLIC void GS_API_CALL gsCloseQuery (GSQuery **query)
 指定のGSQueryインスタンスを解放します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsFetch (GSQuery *query, GSBool forUpdate, GSRowSet **rowSet)
 オプションを指定して指定のクエリを実行し、実行結果に対応するロウ集合を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetFetchOption (GSQuery *query, GSFetchOption fetchOption, const void *value, GSType valueType)
 結果取得に関するオプションを設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowSet (GSQuery *query, GSRowSet **rowSet)
 直近に実行した結果のGSRowSetを取得します。More...
 
-

Detailed Description

-

Function Documentation

- -
-
- - - - - - - - -
GS_DLL_PUBLIC void GS_API_CALL gsCloseQuery (GSQuery ** query)
-
- -

指定のGSQueryインスタンスを解放します。

-
Parameters
- - -
[in,out]queryクローズ対象のGSQueryインスタンスを指しているポインタ変数へのポインタ値。クローズすると、ポインタ変数にNULLが設定されます。以後、解放したGSQueryインスタンスにアクセスしてはなりません。ポインタ値またはポインタ変数の値がNULLの場合は、クローズ処理を行いません。
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsFetch (GSQueryquery,
GSBool forUpdate,
GSRowSet ** rowSet 
)
-
- -

オプションを指定して指定のクエリを実行し、実行結果に対応するロウ集合を取得します。

-
forUpdateGS_TRUEが指定された場合、取得対象のロウすべてをロックします。ロックすると、対応するトランザクションが有効である間、他のトランザクションからの対象ロウに対する変更操作が阻止されます。対応するコンテナの自動コミットモードが無効の場合のみ、指定できます。
-
新たなロウ集合を取得すると、指定のクエリについて直近に実行した結果のGSRowSetを介するロウ操作はできなくなります。
-
一度に大量のロウを取得しようとした場合、GridDBノードが管理する通信バッファのサイズの上限に到達し、失敗することがあります。上限サイズについては、GridDBテクニカルリファレンスを参照してください。
-
Parameters
- - - - -
[in]query処理対象のGSQuery
[in]forUpdate更新用ロックを要求するかどうか
[out]rowSetGSRowSetインスタンスを格納するためのポインタ変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、このポインタ値がNULL以外の値であれば、対応するポインタ変数にNULLが格納されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • 対応するコレクションの自動コミットモード有効であるにもかかわらず、forUpdateGS_TRUEが指定された場合
  • -
  • ロックできないクエリであるにもかかわらず、forUpdateGS_TRUEが指定された場合。具体的なロックの可否は、指定のクエリを作成する機能の各種定義を参照してください。
  • -
  • 正しくないパラメータ・構文・命令を含むクエリを実行しようとした場合。具体的な制約は、指定のクエリを作成する機能の各種定義を参照してください。
  • -
  • この処理または関連するトランザクションのタイムアウト、対応するコンテナの削除もしくはスキーマ変更、接続障害が発生した場合、または対応するGSContainerのクローズ後に呼び出された場合
  • -
  • ポインタ型引数にNULLが指定された場合
  • -
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowSet (GSQueryquery,
GSRowSet ** rowSet 
)
-
- -

直近に実行した結果のGSRowSetを取得します。

-
一度取得すると、以降新たに指定のクエリを実行するまでGSRowSetが取得できなくなります。
-
GS_FETCH_PARTIAL_EXECUTIONが有効に設定されていた場合、クエリ実行処理の続きを行う場合があります。
-
Parameters
- - - -
[in]query処理対象のGSQuery
[out]rowSet直近に実行した結果のGSRowSetインスタンスを格納するためのポインタ変数へのポインタ値。取得済みの場合、もしくは、一度もクエリを実行したことのない場合はNULLが設定されます。実行結果としてGS_RESULT_OK以外が返される場合、このポインタ値がNULL以外の値であれば、対応するポインタ変数にNULLが格納されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • この処理または関連するトランザクションのタイムアウト、対応するコンテナの削除もしくはスキーマ変更、接続障害が発生した場合、またはGSContainerのクローズ後に呼び出された場合
  • -
  • ポインタ型引数にNULLが指定された場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetFetchOption (GSQueryquery,
GSFetchOption fetchOption,
const void * value,
GSType valueType 
)
-
- -

結果取得に関するオプションを設定します。

-
設定可能なオプション項目と値の定義については、GSFetchOptionTagを参照してください。
-
Attention
valueTypevalueの型との対応が正しくない場合、この処理の動作は未定義です。アクセス違反により実行プロセスが異常終了する可能性があります。
-
Parameters
- - - - - -
[in]query処理対象のGSQuery
[in]fetchOptionオプション項目
[in]valueオプションの値。指定可能な型は、valueTypeによって次のように異なります。 - - - - - - - - -
valueType valueの型
INTEGER int32_t*
LONG int64_t*
BOOL GSBool*
-
[in]valueTypeオプションの値の型
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • オプション項目固有の制約に違反した場合
  • -
  • ポインタ型引数にNULLが指定された場合
  • -
  • 対応するGSContainerのクローズ後に呼び出された場合
  • -
-
- -
-
-
-
-
-
GSRow
-
-
- - - - - - - - -

-Typedefs

typedef struct GSRowTag GSRow
 任意のスキーマについて汎用的にフィールド操作できるロウです。More...
 
typedef GSRow GSRowKey
 ロウキーに関するカラムのみから構成されるGSRowの一種です。More...
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

GS_DLL_PUBLIC void GS_API_CALL gsCloseRow (GSRow **row)
 指定のGSRowインスタンスを解放します。More...
 
GS_STATIC_HEADER_FUNC_SPECIFIER
-GSResult 
gsGetRowSchema (GSRow *row, GSContainerInfo *schemaInfo)
 指定のロウに対応するスキーマを取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldGeneral (GSRow *row, int32_t column, const GSValue *fieldValue, GSType type)
 指定のフィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldGeneral (GSRow *row, int32_t column, GSValue *fieldValue, GSType *type)
 指定のフィールドの値とその型を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByString (GSRow *row, int32_t column, const GSChar *fieldValue)
 指定のSTRING型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsString (GSRow *row, int32_t column, const GSChar **fieldValue)
 指定のSTRING型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByBool (GSRow *row, int32_t column, GSBool fieldValue)
 指定のBOOL型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsBool (GSRow *row, int32_t column, GSBool *fieldValue)
 指定のBOOL型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByByte (GSRow *row, int32_t column, int8_t fieldValue)
 指定のBYTE型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsByte (GSRow *row, int32_t column, int8_t *fieldValue)
 指定のBYTE型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByShort (GSRow *row, int32_t column, int16_t fieldValue)
 指定のSHORT型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsShort (GSRow *row, int32_t column, int16_t *fieldValue)
 指定のSHORT型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByInteger (GSRow *row, int32_t column, int32_t fieldValue)
 指定のINTEGER型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsInteger (GSRow *row, int32_t column, int32_t *fieldValue)
 指定のINTEGER型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByLong (GSRow *row, int32_t column, int64_t fieldValue)
 指定のLONG型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsLong (GSRow *row, int32_t column, int64_t *fieldValue)
 指定のLONG型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByFloat (GSRow *row, int32_t column, float fieldValue)
 指定のFLOAT型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsFloat (GSRow *row, int32_t column, float *fieldValue)
 指定のFLOAT型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByDouble (GSRow *row, int32_t column, double fieldValue)
 指定のDOUBLE型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsDouble (GSRow *row, int32_t column, double *fieldValue)
 指定のDOUBLE型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByTimestamp (GSRow *row, int32_t column, GSTimestamp fieldValue)
 指定のTIMESTAMP型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsTimestamp (GSRow *row, int32_t column, GSTimestamp *fieldValue)
 指定のTIMESTAMP型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByGeometry (GSRow *row, int32_t column, const GSChar *fieldValue)
 指定のGEOMETRY型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsGeometry (GSRow *row, int32_t column, const GSChar **fieldValue)
 指定のGEOMETRY型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByBlob (GSRow *row, int32_t column, const GSBlob *fieldValue)
 指定のBLOB型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsBlob (GSRow *row, int32_t column, GSBlob *fieldValue)
 指定のBLOB型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByStringArray (GSRow *row, int32_t column, const GSChar *const *fieldValue, size_t size)
 指定のSTRING配列型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsStringArray (GSRow *row, int32_t column, const GSChar *const **fieldValue, size_t *size)
 指定のSTRING配列型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByBoolArray (GSRow *row, int32_t column, const GSBool *fieldValue, size_t size)
 指定のBOOL配列型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsBoolArray (GSRow *row, int32_t column, const GSBool **fieldValue, size_t *size)
 指定のBOOL配列型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByByteArray (GSRow *row, int32_t column, const int8_t *fieldValue, size_t size)
 指定のBYTE配列型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsByteArray (GSRow *row, int32_t column, const int8_t **fieldValue, size_t *size)
 指定のBYTE配列型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByShortArray (GSRow *row, int32_t column, const int16_t *fieldValue, size_t size)
 指定のSHORT配列型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsShortArray (GSRow *row, int32_t column, const int16_t **fieldValue, size_t *size)
 指定のSHORT配列型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByIntegerArray (GSRow *row, int32_t column, const int32_t *fieldValue, size_t size)
 指定のINTEGER配列型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsIntegerArray (GSRow *row, int32_t column, const int32_t **fieldValue, size_t *size)
 指定のINTEGER配列型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByLongArray (GSRow *row, int32_t column, const int64_t *fieldValue, size_t size)
 指定のLONG配列型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsLongArray (GSRow *row, int32_t column, const int64_t **fieldValue, size_t *size)
 指定のLONG配列型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByFloatArray (GSRow *row, int32_t column, const float *fieldValue, size_t size)
 指定のFLOAT配列型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsFloatArray (GSRow *row, int32_t column, const float **fieldValue, size_t *size)
 指定のFLOAT配列型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByDoubleArray (GSRow *row, int32_t column, const double *fieldValue, size_t size)
 指定のDOUBLE配列型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsDoubleArray (GSRow *row, int32_t column, const double **fieldValue, size_t *size)
 指定のDOUBLE配列型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByTimestampArray (GSRow *row, int32_t column, const GSTimestamp *fieldValue, size_t size)
 指定のTIMESTAMP配列型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsTimestampArray (GSRow *row, int32_t column, const GSTimestamp **fieldValue, size_t *size)
 指定のTIMESTAMP配列型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsCreateRowByRow (GSRow *row, GSRow **destRow)
 同一のフィールド値からなる新たなGSRowインスタンスを作成します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsCreateRowKeyByRow (GSRow *row, GSRowKey **key)
 ロウキーを構成するカラムのみを持ち、それらのカラムについて同一のフィールド値からなる新たなGSRowKeyインスタンスを作成します。More...
 
-

Detailed Description

-

Typedef Documentation

- -
-
- - - - -
typedef struct GSRowTag GSRow
-
- -

任意のスキーマについて汎用的にフィールド操作できるロウです。

-
NULLが設定されたフィールドに対して型指定のフィールド値取得機能を用いた場合、NULLの代わりにGSContainerにて定義されている空の値が求まります。たとえば文字列型カラムに対応するフィールドにNULLが設定されており、かつ、gsGetRowFieldAsStringを用いた場合、NULLアドレスではなく、空の値である長さ0の文字列を指すアドレスが求まります。
-
Since
1.5
- -
-
- -
-
- - - - -
typedef GSRow GSRowKey
-
- -

ロウキーに関するカラムのみから構成されるGSRowの一種です。

-
gsGetRowSchemaより求まるGSContainerInfoに含まれるカラム情報は、ロウキーに関するカラムの情報のみとなります。
-
Since
4.3
- -
-
-

Function Documentation

- -
-
- - - - - - - - -
GS_DLL_PUBLIC void GS_API_CALL gsCloseRow (GSRow ** row)
-
- -

指定のGSRowインスタンスを解放します。

-
Parameters
- - -
[in,out]rowクローズ対象のGSRowインスタンスを指しているポインタ変数へのポインタ値。クローズすると、ポインタ変数にNULLが設定されます。以後、解放したGSRowインスタンスにアクセスしてはなりません。ポインタ値またはポインタ変数の値がNULLの場合は、クローズ処理を行いません。
-
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsCreateRowByRow (GSRowrow,
GSRow ** destRow 
)
-
- -

同一のフィールド値からなる新たなGSRowインスタンスを作成します。

-
Parameters
- - - -
[in]row作成元とするGSRow
[out]destRow新たに作成されるGSRowインスタンスを格納するための、ポインタ変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、このポインタ値がNULL以外の値であれば、対応するポインタ変数にNULLが格納されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • 引数にNULLが指定された場合
  • -
-
-
Since
4.3
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsCreateRowKeyByRow (GSRowrow,
GSRowKey ** key 
)
-
- -

ロウキーを構成するカラムのみを持ち、それらのカラムについて同一のフィールド値からなる新たなGSRowKeyインスタンスを作成します。

-
Parameters
- - - -
[in]row作成元とするGSRow
[out]key新たに作成されるGSRowKeyインスタンスを格納するための、ポインタ変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、このポインタ値がNULL以外の値であれば、対応するポインタ変数にNULLが格納されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • 作成元とするGSRowがロウキーを持たない場合
  • -
  • 引数にNULLが指定された場合
  • -
-
-
Since
4.3
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsBlob (GSRowrow,
int32_t column,
GSBlobfieldValue 
)
-
- -

指定のBLOB型フィールドの値を取得します。

-
Attention
フィールド値に含まれる可変長データを格納するために、指定のGSRowと関係するGSGridStoreインスタンス上で管理される一時的なメモリ領域を使用する場合があります。この領域は、指定のGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
-
Parameters
- - - - -
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[out]fieldValue対象フィールドの値を格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • ポインタ型引数にNULLが指定された場合
  • -
  • 範囲外のカラム番号が指定された場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsBool (GSRowrow,
int32_t column,
GSBoolfieldValue 
)
-
- -

指定のBOOL型フィールドの値を取得します。

-
Parameters
- - - - -
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[out]fieldValue対象フィールドの値を格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • ポインタ型引数にNULLが指定された場合
  • -
  • 範囲外のカラム番号が指定された場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsBoolArray (GSRowrow,
int32_t column,
const GSBool ** fieldValue,
size_t * size 
)
-
- -

指定のBOOL配列型フィールドの値を取得します。

-
Attention
フィールド値に含まれる可変長データを格納するために、指定のGSRowと関係するGSGridStoreインスタンス上で管理される一時的なメモリ領域を使用する場合があります。この領域は、指定のGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
-
Parameters
- - - - - -
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[out]fieldValue対象フィールドの値を格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
[out]size対象フィールドの値の配列要素数を格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、0が格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • ポインタ型引数にNULLが指定された場合
  • -
  • 範囲外のカラム番号が指定された場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsByte (GSRowrow,
int32_t column,
int8_t * fieldValue 
)
-
- -

指定のBYTE型フィールドの値を取得します。

-
Parameters
- - - - -
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[out]fieldValue対象フィールドの値を格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • ポインタ型引数にNULLが指定された場合
  • -
  • 範囲外のカラム番号が指定された場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsByteArray (GSRowrow,
int32_t column,
const int8_t ** fieldValue,
size_t * size 
)
-
- -

指定のBYTE配列型フィールドの値を取得します。

-
Attention
フィールド値に含まれる可変長データを格納するために、指定のGSRowと関係するGSGridStoreインスタンス上で管理される一時的なメモリ領域を使用する場合があります。この領域は、指定のGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
-
Parameters
- - - - - -
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[out]fieldValue対象フィールドの値を格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
[out]size対象フィールドの値の配列要素数を格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、0が格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • ポインタ型引数にNULLが指定された場合
  • -
  • 範囲外のカラム番号が指定された場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsDouble (GSRowrow,
int32_t column,
double * fieldValue 
)
-
- -

指定のDOUBLE型フィールドの値を取得します。

-
Parameters
- - - - -
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[out]fieldValue対象フィールドの値を格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • ポインタ型引数にNULLが指定された場合
  • -
  • 範囲外のカラム番号が指定された場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsDoubleArray (GSRowrow,
int32_t column,
const double ** fieldValue,
size_t * size 
)
-
- -

指定のDOUBLE配列型フィールドの値を取得します。

-
Attention
フィールド値に含まれる可変長データを格納するために、指定のGSRowと関係するGSGridStoreインスタンス上で管理される一時的なメモリ領域を使用する場合があります。この領域は、指定のGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
-
Parameters
- - - - - -
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[out]fieldValue対象フィールドの値を格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
[out]size対象フィールドの値の配列要素数を格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、0が格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • ポインタ型引数にNULLが指定された場合
  • -
  • 範囲外のカラム番号が指定された場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsFloat (GSRowrow,
int32_t column,
float * fieldValue 
)
-
- -

指定のFLOAT型フィールドの値を取得します。

-
Parameters
- - - - -
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[out]fieldValue対象フィールドの値を格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • ポインタ型引数にNULLが指定された場合
  • -
  • 範囲外のカラム番号が指定された場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsFloatArray (GSRowrow,
int32_t column,
const float ** fieldValue,
size_t * size 
)
-
- -

指定のFLOAT配列型フィールドの値を取得します。

-
Attention
フィールド値に含まれる可変長データを格納するために、指定のGSRowと関係するGSGridStoreインスタンス上で管理される一時的なメモリ領域を使用する場合があります。この領域は、指定のGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
-
Parameters
- - - - - -
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[out]fieldValue対象フィールドの値を格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
[out]size対象フィールドの値の配列要素数を格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、0が格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • ポインタ型引数にNULLが指定された場合
  • -
  • 範囲外のカラム番号が指定された場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsGeometry (GSRowrow,
int32_t column,
const GSChar ** fieldValue 
)
-
- -

指定のGEOMETRY型フィールドの値を取得します。

-
Attention
フィールド値に含まれる可変長データを格納するために、指定のGSRowと関係するGSGridStoreインスタンス上で管理される一時的なメモリ領域を使用する場合があります。この領域は、指定のGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
-
Parameters
- - - - -
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[out]fieldValue対象フィールドの値を格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • ポインタ型引数にNULLが指定された場合
  • -
  • 範囲外のカラム番号が指定された場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsInteger (GSRowrow,
int32_t column,
int32_t * fieldValue 
)
-
- -

指定のINTEGER型フィールドの値を取得します。

-
Parameters
- - - - -
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[out]fieldValue対象フィールドの値を格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • ポインタ型引数にNULLが指定された場合
  • -
  • 範囲外のカラム番号が指定された場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsIntegerArray (GSRowrow,
int32_t column,
const int32_t ** fieldValue,
size_t * size 
)
-
- -

指定のINTEGER配列型フィールドの値を取得します。

-
Attention
フィールド値に含まれる可変長データを格納するために、指定のGSRowと関係するGSGridStoreインスタンス上で管理される一時的なメモリ領域を使用する場合があります。この領域は、指定のGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
-
Parameters
- - - - - -
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[out]fieldValue対象フィールドの値を格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
[out]size対象フィールドの値の配列要素数を格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、0が格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • ポインタ型引数にNULLが指定された場合
  • -
  • 範囲外のカラム番号が指定された場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsLong (GSRowrow,
int32_t column,
int64_t * fieldValue 
)
-
- -

指定のLONG型フィールドの値を取得します。

-
Parameters
- - - - -
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[out]fieldValue対象フィールドの値を格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • ポインタ型引数にNULLが指定された場合
  • -
  • 範囲外のカラム番号が指定された場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsLongArray (GSRowrow,
int32_t column,
const int64_t ** fieldValue,
size_t * size 
)
-
- -

指定のLONG配列型フィールドの値を取得します。

-
Attention
フィールド値に含まれる可変長データを格納するために、指定のGSRowと関係するGSGridStoreインスタンス上で管理される一時的なメモリ領域を使用する場合があります。この領域は、指定のGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
-
Parameters
- - - - - -
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[out]fieldValue対象フィールドの値を格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
[out]size対象フィールドの値の配列要素数を格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、0が格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • ポインタ型引数にNULLが指定された場合
  • -
  • 範囲外のカラム番号が指定された場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsShort (GSRowrow,
int32_t column,
int16_t * fieldValue 
)
-
- -

指定のSHORT型フィールドの値を取得します。

-
Parameters
- - - - -
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[out]fieldValue対象フィールドの値を格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • ポインタ型引数にNULLが指定された場合
  • -
  • 範囲外のカラム番号が指定された場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsShortArray (GSRowrow,
int32_t column,
const int16_t ** fieldValue,
size_t * size 
)
-
- -

指定のSHORT配列型フィールドの値を取得します。

-
Attention
フィールド値に含まれる可変長データを格納するために、指定のGSRowと関係するGSGridStoreインスタンス上で管理される一時的なメモリ領域を使用する場合があります。この領域は、指定のGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
-
Parameters
- - - - - -
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[out]fieldValue対象フィールドの値を格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
[out]size対象フィールドの値の配列要素数を格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、0が格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • ポインタ型引数にNULLが指定された場合
  • -
  • 範囲外のカラム番号が指定された場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsString (GSRowrow,
int32_t column,
const GSChar ** fieldValue 
)
-
- -

指定のSTRING型フィールドの値を取得します。

-
Attention
フィールド値に含まれる可変長データを格納するために、指定のGSRowと関係するGSGridStoreインスタンス上で管理される一時的なメモリ領域を使用する場合があります。この領域は、指定のGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
-
Parameters
- - - - -
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[out]fieldValue対象フィールドの値を格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • ポインタ型引数にNULLが指定された場合
  • -
  • 範囲外のカラム番号が指定された場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsStringArray (GSRowrow,
int32_t column,
const GSChar *const ** fieldValue,
size_t * size 
)
-
- -

指定のSTRING配列型フィールドの値を取得します。

-
Attention
フィールド値に含まれる可変長データを格納するために、指定のGSRowと関係するGSGridStoreインスタンス上で管理される一時的なメモリ領域を使用する場合があります。この領域は、指定のGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
-
Parameters
- - - - - -
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[out]fieldValue対象フィールドの値を格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
[out]size対象フィールドの値の配列要素数を格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、0が格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • ポインタ型引数にNULLが指定された場合
  • -
  • 範囲外のカラム番号が指定された場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsTimestamp (GSRowrow,
int32_t column,
GSTimestampfieldValue 
)
-
- -

指定のTIMESTAMP型フィールドの値を取得します。

-
Parameters
- - - - -
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[out]fieldValue対象フィールドの値を格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • ポインタ型引数にNULLが指定された場合
  • -
  • 範囲外のカラム番号が指定された場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsTimestampArray (GSRowrow,
int32_t column,
const GSTimestamp ** fieldValue,
size_t * size 
)
-
- -

指定のTIMESTAMP配列型フィールドの値を取得します。

-
Attention
フィールド値に含まれる可変長データを格納するために、指定のGSRowと関係するGSGridStoreインスタンス上で管理される一時的なメモリ領域を使用する場合があります。この領域は、指定のGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
-
Parameters
- - - - - -
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[out]fieldValue対象フィールドの値を格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
[out]size対象フィールドの値の配列要素数を格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、0が格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • ポインタ型引数にNULLが指定された場合
  • -
  • 範囲外のカラム番号が指定された場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldGeneral (GSRowrow,
int32_t column,
GSValuefieldValue,
GSTypetype 
)
-
- -

指定のフィールドの値とその型を取得します。

-
Attention
フィールド値に含まれる可変長データを格納するために、指定のGSRowと関係するGSGridStoreインスタンス上で管理される一時的なメモリ領域を使用する場合があります。この領域は、指定のGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
-
Parameters
- - - - - -
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[out]fieldValue対象フィールドの値を格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
[out]type対象フィールドの値の型を格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • ポインタ型引数にNULLが指定された場合
  • -
  • 範囲外のカラム番号が指定された場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GS_STATIC_HEADER_FUNC_SPECIFIER GSResult gsGetRowSchema (GSRowrow,
GSContainerInfoschemaInfo 
)
-
- -

指定のロウに対応するスキーマを取得します。

-
ロウキーの有無を含むカラムレイアウトにする情報のみが設定されたGSContainerInfoが求まります。コンテナ名、コンテナ種別、索引設定、時系列構成オプションなどその他のコンテナ情報は含まれません。
-
Attention
カラム情報の列などの可変長データを格納するために、指定のGSRowと関係するGSGridStoreインスタンス上で管理される一時的なメモリ領域を使用します。この領域は、指定のGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
-
Parameters
- - - -
[in]row処理対象のGSRow
[out]schemaInfoスキーマ情報を格納するためのGSContainerInfoへのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、GS_CONTAINER_INFO_INITIALIZERと同一の内容の初期値が格納されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • 引数にNULLが指定された場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByBlob (GSRowrow,
int32_t column,
const GSBlobfieldValue 
)
-
- -

指定のBLOB型フィールドに値を設定します。

-
Parameters
- - - - -
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[in]fieldValue対象フィールドの値
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • ポインタ型引数にNULLが指定された場合
  • -
  • 範囲外のカラム番号が指定された場合
  • -
  • 指定のカラム番号の型と一致しない場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByBool (GSRowrow,
int32_t column,
GSBool fieldValue 
)
-
- -

指定のBOOL型フィールドに値を設定します。

-
Parameters
- - - - -
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[in]fieldValue対象フィールドの値
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • ポインタ型引数にNULLが指定された場合
  • -
  • 範囲外のカラム番号が指定された場合
  • -
  • 指定のカラム番号の型と一致しない場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByBoolArray (GSRowrow,
int32_t column,
const GSBoolfieldValue,
size_t size 
)
-
- -

指定のBOOL配列型フィールドに値を設定します。

-
Parameters
- - - - - -
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[in]fieldValue対象フィールドの値
[in]size対象フィールドの値の配列要素数
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • ポインタ型引数にNULLが指定された場合
  • -
  • 範囲外のカラム番号が指定された場合
  • -
  • 指定のカラム番号の型と一致しない場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByByte (GSRowrow,
int32_t column,
int8_t fieldValue 
)
-
- -

指定のBYTE型フィールドに値を設定します。

-
Parameters
- - - - -
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[in]fieldValue対象フィールドの値
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • ポインタ型引数にNULLが指定された場合
  • -
  • 範囲外のカラム番号が指定された場合
  • -
  • 指定のカラム番号の型と一致しない場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByByteArray (GSRowrow,
int32_t column,
const int8_t * fieldValue,
size_t size 
)
-
- -

指定のBYTE配列型フィールドに値を設定します。

-
Parameters
- - - - - -
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[in]fieldValue対象フィールドの値
[in]size対象フィールドの値の配列要素数
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • ポインタ型引数にNULLが指定された場合
  • -
  • 範囲外のカラム番号が指定された場合
  • -
  • 指定のカラム番号の型と一致しない場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByDouble (GSRowrow,
int32_t column,
double fieldValue 
)
-
- -

指定のDOUBLE型フィールドに値を設定します。

-
Parameters
- - - - -
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[in]fieldValue対象フィールドの値
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • ポインタ型引数にNULLが指定された場合
  • -
  • 範囲外のカラム番号が指定された場合
  • -
  • 指定のカラム番号の型と一致しない場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByDoubleArray (GSRowrow,
int32_t column,
const double * fieldValue,
size_t size 
)
-
- -

指定のDOUBLE配列型フィールドに値を設定します。

-
Parameters
- - - - - -
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[in]fieldValue対象フィールドの値
[in]size対象フィールドの値の配列要素数
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • ポインタ型引数にNULLが指定された場合
  • -
  • 範囲外のカラム番号が指定された場合
  • -
  • 指定のカラム番号の型と一致しない場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByFloat (GSRowrow,
int32_t column,
float fieldValue 
)
-
- -

指定のFLOAT型フィールドに値を設定します。

-
Parameters
- - - - -
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[in]fieldValue対象フィールドの値
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • ポインタ型引数にNULLが指定された場合
  • -
  • 範囲外のカラム番号が指定された場合
  • -
  • 指定のカラム番号の型と一致しない場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByFloatArray (GSRowrow,
int32_t column,
const float * fieldValue,
size_t size 
)
-
- -

指定のFLOAT配列型フィールドに値を設定します。

-
Parameters
- - - - - -
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[in]fieldValue対象フィールドの値
[in]size対象フィールドの値の配列要素数
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • ポインタ型引数にNULLが指定された場合
  • -
  • 範囲外のカラム番号が指定された場合
  • -
  • 指定のカラム番号の型と一致しない場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByGeometry (GSRowrow,
int32_t column,
const GSCharfieldValue 
)
-
- -

指定のGEOMETRY型フィールドに値を設定します。

-
Parameters
- - - - -
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[in]fieldValue対象フィールドの値
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • ポインタ型引数にNULLが指定された場合
  • -
  • 範囲外のカラム番号が指定された場合
  • -
  • 指定のカラム番号の型と一致しない場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByInteger (GSRowrow,
int32_t column,
int32_t fieldValue 
)
-
- -

指定のINTEGER型フィールドに値を設定します。

-
Parameters
- - - - -
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[in]fieldValue対象フィールドの値
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • ポインタ型引数にNULLが指定された場合
  • -
  • 範囲外のカラム番号が指定された場合
  • -
  • 指定のカラム番号の型と一致しない場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByIntegerArray (GSRowrow,
int32_t column,
const int32_t * fieldValue,
size_t size 
)
-
- -

指定のINTEGER配列型フィールドに値を設定します。

-
Parameters
- - - - - -
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[in]fieldValue対象フィールドの値
[in]size対象フィールドの値の配列要素数
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • ポインタ型引数にNULLが指定された場合
  • -
  • 範囲外のカラム番号が指定された場合
  • -
  • 指定のカラム番号の型と一致しない場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByLong (GSRowrow,
int32_t column,
int64_t fieldValue 
)
-
- -

指定のLONG型フィールドに値を設定します。

-
Parameters
- - - - -
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[in]fieldValue対象フィールドの値
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • ポインタ型引数にNULLが指定された場合
  • -
  • 範囲外のカラム番号が指定された場合
  • -
  • 指定のカラム番号の型と一致しない場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByLongArray (GSRowrow,
int32_t column,
const int64_t * fieldValue,
size_t size 
)
-
- -

指定のLONG配列型フィールドに値を設定します。

-
Parameters
- - - - - -
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[in]fieldValue対象フィールドの値
[in]size対象フィールドの値の配列要素数
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • ポインタ型引数にNULLが指定された場合
  • -
  • 範囲外のカラム番号が指定された場合
  • -
  • 指定のカラム番号の型と一致しない場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByShort (GSRowrow,
int32_t column,
int16_t fieldValue 
)
-
- -

指定のSHORT型フィールドに値を設定します。

-
Parameters
- - - - -
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[in]fieldValue対象フィールドの値
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • ポインタ型引数にNULLが指定された場合
  • -
  • 範囲外のカラム番号が指定された場合
  • -
  • 指定のカラム番号の型と一致しない場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByShortArray (GSRowrow,
int32_t column,
const int16_t * fieldValue,
size_t size 
)
-
- -

指定のSHORT配列型フィールドに値を設定します。

-
Parameters
- - - - - -
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[in]fieldValue対象フィールドの値
[in]size対象フィールドの値の配列要素数
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • ポインタ型引数にNULLが指定された場合
  • -
  • 範囲外のカラム番号が指定された場合
  • -
  • 指定のカラム番号の型と一致しない場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByString (GSRowrow,
int32_t column,
const GSCharfieldValue 
)
-
- -

指定のSTRING型フィールドに値を設定します。

-
Parameters
- - - - -
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[in]fieldValue対象フィールドの値
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • ポインタ型引数にNULLが指定された場合
  • -
  • 範囲外のカラム番号が指定された場合
  • -
  • 指定のカラム番号の型と一致しない場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByStringArray (GSRowrow,
int32_t column,
const GSChar *const * fieldValue,
size_t size 
)
-
- -

指定のSTRING配列型フィールドに値を設定します。

-
Parameters
- - - - - -
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[in]fieldValue対象フィールドの値
[in]size対象フィールドの値の配列要素数
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • ポインタ型引数にNULLが指定された場合
  • -
  • 範囲外のカラム番号が指定された場合
  • -
  • 指定のカラム番号の型と一致しない場合
  • -
  • 配列要素にNULLが含まれる場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByTimestamp (GSRowrow,
int32_t column,
GSTimestamp fieldValue 
)
-
- -

指定のTIMESTAMP型フィールドに値を設定します。

-
Parameters
- - - - -
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[in]fieldValue対象フィールドの値
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • ポインタ型引数にNULLが指定された場合
  • -
  • 範囲外のカラム番号が指定された場合
  • -
  • 指定のカラム番号の型と一致しない場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByTimestampArray (GSRowrow,
int32_t column,
const GSTimestampfieldValue,
size_t size 
)
-
- -

指定のTIMESTAMP配列型フィールドに値を設定します。

-
Parameters
- - - - - -
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[in]fieldValue対象フィールドの値
[in]size対象フィールドの値の配列要素数
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • ポインタ型引数にNULLが指定された場合
  • -
  • 範囲外のカラム番号が指定された場合
  • -
  • 指定のカラム番号の型と一致しない場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldGeneral (GSRowrow,
int32_t column,
const GSValuefieldValue,
GSType type 
)
-
- -

指定のフィールドに値を設定します。

-
Attention
対象フィールドの値とその型との対応が一致しない場合、この処理の動作は未定義です。アクセス違反により実行プロセスが異常終了する可能性があります。
-
Parameters
- - - - - -
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[in]fieldValue対象フィールドの値。typeとしてGS_TYPE_NULLが指定された場合は、指定の内容が参照されることはありません。ただし、NULL以外のポインタ値を指定する必要があります
[in]type対象フィールドの値の型
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • ポインタ型引数にNULLが指定された場合
  • -
  • 範囲外のカラム番号が指定された場合
  • -
  • NOT NULL制約の設定されたカラムに対して、フィールド値の型としてGS_TYPE_NULLが指定された場合
  • -
  • フィールドの値の構成要素のポインタ値としてNULLが含まれていた場合
  • -
  • フィールドの値がカラムの型と一致しない場合
  • -
-
-
Since
1.5
- -
-
-
-
-
-
GSRowKeyPredicate
-
-
- - - - - -

-Typedefs

typedef struct GSRowKeyPredicateTag GSRowKeyPredicate
 ロウキーの合致条件を表します。More...
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

GS_DLL_PUBLIC void GS_API_CALL gsCloseRowKeyPredicate (GSRowKeyPredicate **predicate)
 指定のGSRowKeyPredicateインスタンスを解放します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateKeyType (GSRowKeyPredicate *predicate, GSType *keyType)
 合致条件の評価対象とするロウキーの型を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateKeySchema (GSRowKeyPredicate *predicate, GSContainerInfo *info)
 合致条件の評価対象とするロウキーのスキーマを取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateStartGeneralKey (GSRowKeyPredicate *predicate, GSRowKey **keyObj)
 範囲条件の開始位置とするロウキーを取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateStartKeyGeneral (GSRowKeyPredicate *predicate, const GSValue **startKey)
 範囲条件の開始位置とする、単一カラムのロウキーの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateStartKeyAsString (GSRowKeyPredicate *predicate, const GSChar **startKey)
 範囲条件の開始位置とするSTRING型ロウキーの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateStartKeyAsInteger (GSRowKeyPredicate *predicate, const int32_t **startKey)
 範囲条件の開始位置とするINTEGER型ロウキーの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateStartKeyAsLong (GSRowKeyPredicate *predicate, const int64_t **startKey)
 範囲条件の開始位置とするLONG型ロウキーの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateStartKeyAsTimestamp (GSRowKeyPredicate *predicate, const GSTimestamp **startKey)
 範囲条件の開始位置とするTIMESTAMP型ロウキーの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateFinishGeneralKey (GSRowKeyPredicate *predicate, GSRowKey **keyObj)
 範囲条件の終了位置とするロウキーの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateFinishKeyGeneral (GSRowKeyPredicate *predicate, const GSValue **finishKey)
 範囲条件の終了位置とする、単一カラムのロウキーの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateFinishKeyAsString (GSRowKeyPredicate *predicate, const GSChar **finishKey)
 範囲条件の終了位置とするSTRING型ロウキーの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateFinishKeyAsInteger (GSRowKeyPredicate *predicate, const int32_t **finishKey)
 範囲条件の終了位置とするINTEGER型ロウキーの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateFinishKeyAsLong (GSRowKeyPredicate *predicate, const int64_t **finishKey)
 範囲条件の終了位置とするLONG型ロウキーの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateFinishKeyAsTimestamp (GSRowKeyPredicate *predicate, const GSTimestamp **finishKey)
 範囲条件の終了位置とするTIMESTAMP型ロウキーの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateDistinctGeneralKeys (GSRowKeyPredicate *predicate, GSRowKey *const **keyObjList, size_t *size)
 個別条件を構成するロウキーの集合を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateDistinctKeysGeneral (GSRowKeyPredicate *predicate, const GSValue **keyList, size_t *size)
 個別条件を構成する、単一カラムのロウキーの値の集合を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateDistinctKeysAsString (GSRowKeyPredicate *predicate, const GSChar *const **keyList, size_t *size)
 個別条件を構成するSTRING型ロウキーの値の集合を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateDistinctKeysAsInteger (GSRowKeyPredicate *predicate, const int32_t **keyList, size_t *size)
 個別条件を構成するINTEGER型ロウキーの値の集合を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateDistinctKeysAsLong (GSRowKeyPredicate *predicate, const int64_t **keyList, size_t *size)
 個別条件を構成するLONG型ロウキーの値の集合を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateDistinctKeysAsTimestamp (GSRowKeyPredicate *predicate, const GSTimestamp **keyList, size_t *size)
 個別条件を構成するTIMESTAMP型ロウキーの値の集合を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetPredicateStartGeneralKey (GSRowKeyPredicate *predicate, GSRowKey *keyObj)
 範囲条件の開始位置とするロウキーの値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetPredicateStartKeyGeneral (GSRowKeyPredicate *predicate, const GSValue *startKey, GSType keyType)
 範囲条件の開始位置とする、単一カラムのロウキーの値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetPredicateStartKeyByString (GSRowKeyPredicate *predicate, const GSChar *startKey)
 範囲条件の開始位置とするSTRING型ロウキーの値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetPredicateStartKeyByInteger (GSRowKeyPredicate *predicate, const int32_t *startKey)
 範囲条件の開始位置とするINTEGER型ロウキーの値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetPredicateStartKeyByLong (GSRowKeyPredicate *predicate, const int64_t *startKey)
 範囲条件の開始位置とするLONG型ロウキーの値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetPredicateStartKeyByTimestamp (GSRowKeyPredicate *predicate, const GSTimestamp *startKey)
 範囲条件の開始位置とするTIMESTAMP型ロウキーの値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetPredicateFinishGeneralKey (GSRowKeyPredicate *predicate, GSRowKey *keyObj)
 範囲条件の終了位置とするロウキーの値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetPredicateFinishKeyGeneral (GSRowKeyPredicate *predicate, const GSValue *finishKey, GSType keyType)
 範囲条件の終了位置とする、単一カラムのロウキーの値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetPredicateFinishKeyByString (GSRowKeyPredicate *predicate, const GSChar *finishKey)
 範囲条件の終了位置とするSTRING型ロウキーの値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetPredicateFinishKeyByInteger (GSRowKeyPredicate *predicate, const int32_t *finishKey)
 範囲条件の終了位置とするINTEGER型ロウキーの値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetPredicateFinishKeyByLong (GSRowKeyPredicate *predicate, const int64_t *finishKey)
 範囲条件の終了位置とするLONG型ロウキーの値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetPredicateFinishKeyByTimestamp (GSRowKeyPredicate *predicate, const GSTimestamp *finishKey)
 範囲条件の終了位置とするTIMESTAMP型ロウキーの値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsAddPredicateGeneralKey (GSRowKeyPredicate *predicate, GSRowKey *keyObj)
 個別条件の要素の一つとするロウキーの値を追加します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsAddPredicateKeyGeneral (GSRowKeyPredicate *predicate, const GSValue *key, GSType keyType)
 個別条件の要素の一つとする、単一カラムのロウキーの値を追加します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsAddPredicateKeyByString (GSRowKeyPredicate *predicate, const GSChar *key)
 個別条件の要素の一つとするSTRING型ロウキーの値を追加します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsAddPredicateKeyByInteger (GSRowKeyPredicate *predicate, int32_t key)
 個別条件の要素の一つとするINTEGER型ロウキーの値を追加します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsAddPredicateKeyByLong (GSRowKeyPredicate *predicate, int64_t key)
 個別条件の要素の一つとするLONG型ロウキーの値を追加します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsAddPredicateKeyByTimestamp (GSRowKeyPredicate *predicate, GSTimestamp key)
 個別条件の要素の一つとするTIMESTAMP型ロウキーの値を追加します。More...
 
-

Detailed Description

-

Typedef Documentation

- -
-
- - - - -
typedef struct GSRowKeyPredicateTag GSRowKeyPredicate
-
- -

ロウキーの合致条件を表します。

-
gsGetMultipleContainerRowsにおける取得条件を構成するために使用できます。
-
条件の種別として、範囲条件と個別条件の2つの種別があります。両方の種別の条件を共に指定することはできません。条件の内容を何も指定しない場合、対象とするすべてのロウキーに合致することを表します。
-
Since
1.5
- -
-
-

Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsAddPredicateGeneralKey (GSRowKeyPredicatepredicate,
GSRowKeykeyObj 
)
-
- -

個別条件の要素の一つとするロウキーの値を追加します。

-
追加された値と同一の値のロウキーは合致するものとみなされるようになります。
-
Parameters
- - - -
[in]predicate処理対象のGSRowKeyPredicate
[in]keyObj個別条件の要素の一つとするロウキー
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • 引数にNULLが指定された場合
  • -
  • 個別条件がすでに設定されていた場合
  • -
  • 期待した型が合致条件の評価対象とするロウキーの型と異なる場合
  • -
-
-
Since
4.3
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsAddPredicateKeyByInteger (GSRowKeyPredicatepredicate,
int32_t key 
)
-
- -

個別条件の要素の一つとするINTEGER型ロウキーの値を追加します。

-
追加された値と同一の値のロウキーは合致するものとみなされるようになります。
-
Parameters
- - - -
[in]predicate処理対象のGSRowKeyPredicate
[in]key個別条件の要素の一つとするロウキーの値終了位置とするロウキーの値。NULLの場合、設定が解除されます
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • ポインタ型引数にNULLが指定された場合
  • -
  • 個別条件がすでに設定されていた場合
  • -
  • 期待した型が合致条件の評価対象とするロウキーの型と異なる場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsAddPredicateKeyByLong (GSRowKeyPredicatepredicate,
int64_t key 
)
-
- -

個別条件の要素の一つとするLONG型ロウキーの値を追加します。

-
追加された値と同一の値のロウキーは合致するものとみなされるようになります。
-
Parameters
- - - -
[in]predicate処理対象のGSRowKeyPredicate
[in]key個別条件の要素の一つとするロウキーの値終了位置とするロウキーの値。NULLの場合、設定が解除されます
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • ポインタ型引数にNULLが指定された場合
  • -
  • 個別条件がすでに設定されていた場合
  • -
  • 期待した型が合致条件の評価対象とするロウキーの型と異なる場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsAddPredicateKeyByString (GSRowKeyPredicatepredicate,
const GSCharkey 
)
-
- -

個別条件の要素の一つとするSTRING型ロウキーの値を追加します。

-
追加された値と同一の値のロウキーは合致するものとみなされるようになります。
-
Parameters
- - - -
[in]predicate処理対象のGSRowKeyPredicate
[in]key個別条件の要素の一つとするロウキーの値終了位置とするロウキーの値。NULLの場合、設定が解除されます
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • ポインタ型引数にNULLが指定された場合
  • -
  • 個別条件がすでに設定されていた場合
  • -
  • 期待した型が合致条件の評価対象とするロウキーの型と異なる場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsAddPredicateKeyByTimestamp (GSRowKeyPredicatepredicate,
GSTimestamp key 
)
-
- -

個別条件の要素の一つとするTIMESTAMP型ロウキーの値を追加します。

-
追加された値と同一の値のロウキーは合致するものとみなされるようになります。
-
Parameters
- - - -
[in]predicate処理対象のGSRowKeyPredicate
[in]key個別条件の要素の一つとするロウキーの値終了位置とするロウキーの値。NULLの場合、設定が解除されます
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • ポインタ型引数にNULLが指定された場合
  • -
  • 個別条件がすでに設定されていた場合
  • -
  • 期待した型が合致条件の評価対象とするロウキーの型と異なる場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsAddPredicateKeyGeneral (GSRowKeyPredicatepredicate,
const GSValuekey,
GSType keyType 
)
-
- -

個別条件の要素の一つとする、単一カラムのロウキーの値を追加します。

-
追加された値と同一の値のロウキーは合致するものとみなされるようになります。
-
Attention
指定ロウキーの値とその型との対応が一致しない場合、この処理の動作は未定義です。アクセス違反により実行プロセスが異常終了する可能性があります。
-
Parameters
- - - - -
[in]predicate処理対象のGSRowKeyPredicate
[in]key個別条件の要素の一つとするロウキー
[in]keyType個別条件の要素の一つとするロウキーの値の型
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • ポインタ型引数にNULLが指定された場合
  • -
  • 個別条件がすでに設定されていた場合
  • -
  • 期待した型が合致条件の評価対象とするロウキーの型と異なる場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - -
GS_DLL_PUBLIC void GS_API_CALL gsCloseRowKeyPredicate (GSRowKeyPredicate ** predicate)
-
- -

指定のGSRowKeyPredicateインスタンスを解放します。

-
Parameters
- - -
[in,out]predicateクローズ対象のGSRowKeyPredicateインスタンスを指しているポインタ変数へのポインタ値。クローズすると、ポインタ変数にNULLが設定されます。以後、解放したGSRowKeyPredicateインスタンスにアクセスしてはなりません。ポインタ値またはポインタ変数の値がNULLの場合は、クローズ処理を行いません。
-
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateDistinctGeneralKeys (GSRowKeyPredicatepredicate,
GSRowKey *const ** keyObjList,
size_t * size 
)
-
- -

個別条件を構成するロウキーの集合を取得します。

-
Attention
ロウキーの列を格納する領域を確保するために、指定のGSRowKeyPredicateと関係するGSGridStoreインスタンス上で管理される一時的なメモリ領域を使用する場合があります。この領域は、指定のGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
-
Parameters
- - - - -
[in]predicate処理対象のGSRowKeyPredicate
[out]keyObjList個別条件を構成するロウキーの集合を構成する配列のアドレスを格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
[out]size個別条件を構成するロウキーの集合の要素数を格納するための変数へのポインタ値。個別条件が設定されていない場合は0が格納されます。実行結果としてGS_RESULT_OK以外が返される場合、0が格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • 引数にNULLが指定された場合
  • -
-
-
Since
4.3
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateDistinctKeysAsInteger (GSRowKeyPredicatepredicate,
const int32_t ** keyList,
size_t * size 
)
-
- -

個別条件を構成するINTEGER型ロウキーの値の集合を取得します。

-
Attention
値ならびにその列を格納する領域を確保するために、指定のGSRowKeyPredicateと関係するGSGridStoreインスタンス上で管理される一時的なメモリ領域を使用する場合があります。この領域は、指定のGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
-
Parameters
- - - - -
[in]predicate処理対象のGSRowKeyPredicate
[out]keyList個別条件を構成するロウキーの値の集合を構成する配列のアドレスを格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
[out]size個別条件を構成するロウキーの値の集合の要素数を格納するための変数へのポインタ値。個別条件が設定されていない場合は0が格納されます。実行結果としてGS_RESULT_OK以外が返される場合、0が格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • 引数にNULLが指定された場合
  • -
  • 期待した型が合致条件の評価対象とするロウキーの型と異なる場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateDistinctKeysAsLong (GSRowKeyPredicatepredicate,
const int64_t ** keyList,
size_t * size 
)
-
- -

個別条件を構成するLONG型ロウキーの値の集合を取得します。

-
Attention
値ならびにその列を格納する領域を確保するために、指定のGSRowKeyPredicateと関係するGSGridStoreインスタンス上で管理される一時的なメモリ領域を使用する場合があります。この領域は、指定のGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
-
Parameters
- - - - -
[in]predicate処理対象のGSRowKeyPredicate
[out]keyList個別条件を構成するロウキーの値の集合を構成する配列のアドレスを格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
[out]size個別条件を構成するロウキーの値の集合の要素数を格納するための変数へのポインタ値。個別条件が設定されていない場合は0が格納されます。実行結果としてGS_RESULT_OK以外が返される場合、0が格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • 引数にNULLが指定された場合
  • -
  • 期待した型が合致条件の評価対象とするロウキーの型と異なる場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateDistinctKeysAsString (GSRowKeyPredicatepredicate,
const GSChar *const ** keyList,
size_t * size 
)
-
- -

個別条件を構成するSTRING型ロウキーの値の集合を取得します。

-
Attention
値ならびにその列を格納する領域を確保するために、指定のGSRowKeyPredicateと関係するGSGridStoreインスタンス上で管理される一時的なメモリ領域を使用する場合があります。この領域は、指定のGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
-
Parameters
- - - - -
[in]predicate処理対象のGSRowKeyPredicate
[out]keyList個別条件を構成するロウキーの値の集合を構成する配列のアドレスを格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
[out]size個別条件を構成するロウキーの値の集合の要素数を格納するための変数へのポインタ値。個別条件が設定されていない場合は0が格納されます。実行結果としてGS_RESULT_OK以外が返される場合、0が格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • 引数にNULLが指定された場合
  • -
  • 期待した型が合致条件の評価対象とするロウキーの型と異なる場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateDistinctKeysAsTimestamp (GSRowKeyPredicatepredicate,
const GSTimestamp ** keyList,
size_t * size 
)
-
- -

個別条件を構成するTIMESTAMP型ロウキーの値の集合を取得します。

-
Attention
値ならびにその列を格納する領域を確保するために、指定のGSRowKeyPredicateと関係するGSGridStoreインスタンス上で管理される一時的なメモリ領域を使用する場合があります。この領域は、指定のGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
-
Parameters
- - - - -
[in]predicate処理対象のGSRowKeyPredicate
[out]keyList個別条件を構成するロウキーの値の集合を構成する配列のアドレスを格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
[out]size個別条件を構成するロウキーの値の集合の要素数を格納するための変数へのポインタ値。個別条件が設定されていない場合は0が格納されます。実行結果としてGS_RESULT_OK以外が返される場合、0が格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • 引数にNULLが指定された場合
  • -
  • 期待した型が合致条件の評価対象とするロウキーの型と異なる場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateDistinctKeysGeneral (GSRowKeyPredicatepredicate,
const GSValue ** keyList,
size_t * size 
)
-
- -

個別条件を構成する、単一カラムのロウキーの値の集合を取得します。

-
Attention
値ならびにその列を格納する領域を確保するために、指定のGSRowKeyPredicateと関係するGSGridStoreインスタンス上で管理される一時的なメモリ領域を使用する場合があります。この領域は、指定のGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
-
Parameters
- - - - -
[in]predicate処理対象のGSRowKeyPredicate
[out]keyList個別条件を構成するロウキーの値の集合を構成する配列のアドレスを格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
[out]size個別条件を構成するロウキーの値の集合の要素数を格納するための変数へのポインタ値。個別条件が設定されていない場合は0が格納されます。実行結果としてGS_RESULT_OK以外が返される場合、0が格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • 複合ロウキーについての合致条件が指定された場合
  • -
  • 引数にNULLが指定された場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateFinishGeneralKey (GSRowKeyPredicatepredicate,
GSRowKey ** keyObj 
)
-
- -

範囲条件の終了位置とするロウキーの値を取得します。

-
Parameters
- - - -
[in]predicate処理対象のGSRowKeyPredicate
[out]keyObj終了位置とするロウキーとして新たに作成されるGSRowKeyインスタンスを格納するための、ポインタ変数へのポインタ値。終了位置が設定されていない場合はNULLが格納されます。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • 引数にNULLが指定された場合
  • -
-
-
Since
4.3
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateFinishKeyAsInteger (GSRowKeyPredicatepredicate,
const int32_t ** finishKey 
)
-
- -

範囲条件の終了位置とするINTEGER型ロウキーの値を取得します。

-
Attention
値を格納する領域を確保するために、指定のGSRowKeyPredicateと関係するGSGridStoreインスタンス上で管理される一時的なメモリ領域を使用する場合があります。この領域は、指定のGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
-
Parameters
- - - -
[in]predicate処理対象のGSRowKeyPredicate
[out]finishKey終了位置とするロウキーの値を格納するための変数へのポインタ値。終了位置が設定されていない場合はNULLが格納されます。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • 引数にNULLが指定された場合
  • -
  • 期待した型が合致条件の評価対象とするロウキーの型と異なる場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateFinishKeyAsLong (GSRowKeyPredicatepredicate,
const int64_t ** finishKey 
)
-
- -

範囲条件の終了位置とするLONG型ロウキーの値を取得します。

-
Attention
値を格納する領域を確保するために、指定のGSRowKeyPredicateと関係するGSGridStoreインスタンス上で管理される一時的なメモリ領域を使用する場合があります。この領域は、指定のGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
-
Parameters
- - - -
[in]predicate処理対象のGSRowKeyPredicate
[out]finishKey終了位置とするロウキーの値を格納するための変数へのポインタ値。終了位置が設定されていない場合はNULLが格納されます。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • 引数にNULLが指定された場合
  • -
  • 期待した型が合致条件の評価対象とするロウキーの型と異なる場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateFinishKeyAsString (GSRowKeyPredicatepredicate,
const GSChar ** finishKey 
)
-
- -

範囲条件の終了位置とするSTRING型ロウキーの値を取得します。

-
Attention
値を格納する領域を確保するために、指定のGSRowKeyPredicateと関係するGSGridStoreインスタンス上で管理される一時的なメモリ領域を使用する場合があります。この領域は、指定のGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
-
Parameters
- - - -
[in]predicate処理対象のGSRowKeyPredicate
[out]finishKey終了位置とするロウキーの値を格納するための変数へのポインタ値。終了位置が設定されていない場合はNULLが格納されます。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • 引数にNULLが指定された場合
  • -
  • 期待した型が合致条件の評価対象とするロウキーの型と異なる場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateFinishKeyAsTimestamp (GSRowKeyPredicatepredicate,
const GSTimestamp ** finishKey 
)
-
- -

範囲条件の終了位置とするTIMESTAMP型ロウキーの値を取得します。

-
Attention
値を格納する領域を確保するために、指定のGSRowKeyPredicateと関係するGSGridStoreインスタンス上で管理される一時的なメモリ領域を使用する場合があります。この領域は、指定のGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
-
Parameters
- - - -
[in]predicate処理対象のGSRowKeyPredicate
[out]finishKey終了位置とするロウキーの値を格納するための変数へのポインタ値。終了位置が設定されていない場合はNULLが格納されます。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • 引数にNULLが指定された場合
  • -
  • 期待した型が合致条件の評価対象とするロウキーの型と異なる場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateFinishKeyGeneral (GSRowKeyPredicatepredicate,
const GSValue ** finishKey 
)
-
- -

範囲条件の終了位置とする、単一カラムのロウキーの値を取得します。

-
Attention
値を格納する領域を確保するために、指定のGSRowKeyPredicateと関係するGSGridStoreインスタンス上で管理される一時的なメモリ領域を使用する場合があります。この領域は、指定のGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
-
Parameters
- - - -
[in]predicate処理対象のGSRowKeyPredicate
[out]finishKey終了位置とするロウキーの値を格納するための変数へのポインタ値。終了位置が設定されていない場合はNULLが格納されます。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • 複合ロウキーについての合致条件が指定された場合
  • -
  • 引数にNULLが指定された場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateKeySchema (GSRowKeyPredicatepredicate,
GSContainerInfoinfo 
)
-
- -

合致条件の評価対象とするロウキーのスキーマを取得します。

-
この合致条件の作成に用いられた情報に、ロウキー以外のカラム情報やスキーマ以外のコンテナ情報が含まれていたとしても、返却されるスキーマ情報には含まれません。
-
Parameters
- - - -
[in]predicate処理対象のGSRowKeyPredicate
[out]infoスキーマ情報を格納するためのGSContainerInfoへのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、GS_CONTAINER_INFO_INITIALIZERと同一の内容の初期値が格納されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • 引数にNULLが指定された場合
  • -
-
-
Since
4.3
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateKeyType (GSRowKeyPredicatepredicate,
GSTypekeyType 
)
-
- -

合致条件の評価対象とするロウキーの型を取得します。

-
Parameters
- - - -
[in]predicate処理対象のGSRowKeyPredicate
[out]keyType合致条件の評価対象とするロウキーの型を格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • 引数にNULLが指定された場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateStartGeneralKey (GSRowKeyPredicatepredicate,
GSRowKey ** keyObj 
)
-
- -

範囲条件の開始位置とするロウキーを取得します。

-
Parameters
- - - -
[in]predicate処理対象のGSRowKeyPredicate
[out]keyObj開始位置とするロウキーとして新たに作成されるGSRowKeyインスタンスを格納するための、ポインタ変数へのポインタ値。開始位置が設定されていない場合はNULLが格納されます。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • 引数にNULLが指定された場合
  • -
-
-
Since
4.3
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateStartKeyAsInteger (GSRowKeyPredicatepredicate,
const int32_t ** startKey 
)
-
- -

範囲条件の開始位置とするINTEGER型ロウキーの値を取得します。

-
Attention
値を格納する領域を確保するために、指定のGSRowKeyPredicateと関係するGSGridStoreインスタンス上で管理される一時的なメモリ領域を使用する場合があります。この領域は、指定のGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
-
Parameters
- - - -
[in]predicate処理対象のGSRowKeyPredicate
[out]startKey開始位置とするロウキーの値を格納するための変数へのポインタ値。開始位置が設定されていない場合はNULLが格納されます。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • 引数にNULLが指定された場合
  • -
  • 期待した型が合致条件の評価対象とするロウキーの型と異なる場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateStartKeyAsLong (GSRowKeyPredicatepredicate,
const int64_t ** startKey 
)
-
- -

範囲条件の開始位置とするLONG型ロウキーの値を取得します。

-
Attention
値を格納する領域を確保するために、指定のGSRowKeyPredicateと関係するGSGridStoreインスタンス上で管理される一時的なメモリ領域を使用する場合があります。この領域は、指定のGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
-
Parameters
- - - -
[in]predicate処理対象のGSRowKeyPredicate
[out]startKey開始位置とするロウキーの値を格納するための変数へのポインタ値。開始位置が設定されていない場合はNULLが格納されます。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • 引数にNULLが指定された場合
  • -
  • 期待した型が合致条件の評価対象とするロウキーの型と異なる場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateStartKeyAsString (GSRowKeyPredicatepredicate,
const GSChar ** startKey 
)
-
- -

範囲条件の開始位置とするSTRING型ロウキーの値を取得します。

-
Attention
値を格納する領域を確保するために、指定のGSRowKeyPredicateと関係するGSGridStoreインスタンス上で管理される一時的なメモリ領域を使用する場合があります。この領域は、指定のGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
-
Parameters
- - - -
[in]predicate処理対象のGSRowKeyPredicate
[out]startKey開始位置とするロウキーの値を格納するための変数へのポインタ値。開始位置が設定されていない場合はNULLが格納されます。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • 引数にNULLが指定された場合
  • -
  • 期待した型が合致条件の評価対象とするロウキーの型と異なる場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateStartKeyAsTimestamp (GSRowKeyPredicatepredicate,
const GSTimestamp ** startKey 
)
-
- -

範囲条件の開始位置とするTIMESTAMP型ロウキーの値を取得します。

-
Attention
値を格納する領域を確保するために、指定のGSRowKeyPredicateと関係するGSGridStoreインスタンス上で管理される一時的なメモリ領域を使用する場合があります。この領域は、指定のGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
-
Parameters
- - - -
[in]predicate処理対象のGSRowKeyPredicate
[out]startKey開始位置とするロウキーの値を格納するための変数へのポインタ値。開始位置が設定されていない場合はNULLが格納されます。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • 引数にNULLが指定された場合
  • -
  • 期待した型が合致条件の評価対象とするロウキーの型と異なる場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateStartKeyGeneral (GSRowKeyPredicatepredicate,
const GSValue ** startKey 
)
-
- -

範囲条件の開始位置とする、単一カラムのロウキーの値を取得します。

-
Attention
値を格納する領域を確保するために、指定のGSRowKeyPredicateと関係するGSGridStoreインスタンス上で管理される一時的なメモリ領域を使用する場合があります。この領域は、指定のGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
-
Parameters
- - - -
[in]predicate処理対象のGSRowKeyPredicate
[out]startKey開始位置とするロウキーの値を格納するための変数へのポインタ値。開始位置が設定されていない場合はNULLが格納されます。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • 複合ロウキーについての合致条件が指定された場合
  • -
  • 引数にNULLが指定された場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetPredicateFinishGeneralKey (GSRowKeyPredicatepredicate,
GSRowKeykeyObj 
)
-
- -

範囲条件の終了位置とするロウキーの値を設定します。

-
設定された値より大きな値のロウキーは合致しないものとみなされるようになります。
-
STRING型のロウキーまたはその型を含む複合ロウキーのように、大小関係が定義されていないロウキーの場合、条件として設定はできるものの、実際の判定に用いることはできません。
-
Parameters
- - - -
[in]predicate処理対象のGSRowKeyPredicate
[in]keyObj終了位置とするロウキー。NULLの場合、設定が解除されます
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • predicate引数にNULLが指定された場合
  • -
  • 個別条件がすでに設定されていた場合
  • -
  • 期待した型が合致条件の評価対象とするロウキーの型と異なる場合
  • -
-
-
Since
4.3
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetPredicateFinishKeyByInteger (GSRowKeyPredicatepredicate,
const int32_t * finishKey 
)
-
- -

範囲条件の終了位置とするINTEGER型ロウキーの値を設定します。

-
設定された値より大きな値のロウキーは合致しないものとみなされるようになります。
-
STRING型のように大小関係の定義されていない型の場合、条件として設定はできるものの、実際の判定に用いることはできません。
-
Parameters
- - - -
[in]predicate処理対象のGSRowKeyPredicate
[in]finishKey終了位置とするロウキーの値。NULLの場合、設定が解除されます
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • predicate引数にNULLが指定された場合
  • -
  • 個別条件がすでに設定されていた場合
  • -
  • 期待した型が合致条件の評価対象とするロウキーの型と異なる場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetPredicateFinishKeyByLong (GSRowKeyPredicatepredicate,
const int64_t * finishKey 
)
-
- -

範囲条件の終了位置とするLONG型ロウキーの値を設定します。

-
設定された値より大きな値のロウキーは合致しないものとみなされるようになります。
-
STRING型のように大小関係の定義されていない型の場合、条件として設定はできるものの、実際の判定に用いることはできません。
-
Parameters
- - - -
[in]predicate処理対象のGSRowKeyPredicate
[in]finishKey終了位置とするロウキーの値。NULLの場合、設定が解除されます
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • predicate引数にNULLが指定された場合
  • -
  • 個別条件がすでに設定されていた場合
  • -
  • 期待した型が合致条件の評価対象とするロウキーの型と異なる場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetPredicateFinishKeyByString (GSRowKeyPredicatepredicate,
const GSCharfinishKey 
)
-
- -

範囲条件の終了位置とするSTRING型ロウキーの値を設定します。

-
設定された値より大きな値のロウキーは合致しないものとみなされるようになります。
-
STRING型では大小関係が定義されていないため、条件として設定はできるものの、実際の判定に用いることはできません。
-
Parameters
- - - -
[in]predicate処理対象のGSRowKeyPredicate
[in]finishKey終了位置とするロウキーの値。NULLの場合、設定が解除されます
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • predicate引数にNULLが指定された場合
  • -
  • 個別条件がすでに設定されていた場合
  • -
  • 期待した型が合致条件の評価対象とするロウキーの型と異なる場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetPredicateFinishKeyByTimestamp (GSRowKeyPredicatepredicate,
const GSTimestampfinishKey 
)
-
- -

範囲条件の終了位置とするTIMESTAMP型ロウキーの値を設定します。

-
設定された値より大きな値のロウキーは合致しないものとみなされるようになります。
-
STRING型のように大小関係の定義されていない型の場合、条件として設定はできるものの、実際の判定に用いることはできません。
-
Parameters
- - - -
[in]predicate処理対象のGSRowKeyPredicate
[in]finishKey終了位置とするロウキーの値。NULLの場合、設定が解除されます
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • predicate引数にNULLが指定された場合
  • -
  • 個別条件がすでに設定されていた場合
  • -
  • 期待した型が合致条件の評価対象とするロウキーの型と異なる場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetPredicateFinishKeyGeneral (GSRowKeyPredicatepredicate,
const GSValuefinishKey,
GSType keyType 
)
-
- -

範囲条件の終了位置とする、単一カラムのロウキーの値を設定します。

-
設定された値より大きな値のロウキーは合致しないものとみなされるようになります。
-
STRING型のように大小関係の定義されていない型の場合、条件として設定はできるものの、実際の判定に用いることはできません。
-
Attention
指定ロウキーの値とその型との対応が一致しない場合、この処理の動作は未定義です。アクセス違反により実行プロセスが異常終了する可能性があります。
-
Parameters
- - - - -
[in]predicate処理対象のGSRowKeyPredicate
[in]finishKey終了位置とするロウキーの値。NULLの場合、設定が解除されます
[in]keyType終了位置とするロウキーの値の型
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • predicate引数にNULLが指定された場合
  • -
  • 個別条件がすでに設定されていた場合
  • -
  • 期待した型が合致条件の評価対象とするロウキーの型と異なる場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetPredicateStartGeneralKey (GSRowKeyPredicatepredicate,
GSRowKeykeyObj 
)
-
- -

範囲条件の開始位置とするロウキーの値を設定します。

-
設定された値より小さな値のロウキーは合致しないものとみなされるようになります。
-
STRING型のロウキーまたはその型を含む複合ロウキーのように、大小関係が定義されていないロウキーの場合、条件として設定はできるものの、実際の判定に用いることはできません。
-
Parameters
- - - -
[in]predicate処理対象のGSRowKeyPredicate
[in]keyObj開始位置とするロウキー。NULLの場合、設定が解除されます
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • predicate引数にNULLが指定された場合
  • -
  • 個別条件がすでに設定されていた場合
  • -
  • 期待した型が合致条件の評価対象とするロウキーの型と異なる場合
  • -
-
-
Since
4.3
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetPredicateStartKeyByInteger (GSRowKeyPredicatepredicate,
const int32_t * startKey 
)
-
- -

範囲条件の開始位置とするINTEGER型ロウキーの値を設定します。

-
設定された値より小さな値のロウキーは合致しないものとみなされるようになります。
-
STRING型のように大小関係の定義されていない型の場合、条件として設定はできるものの、実際の判定に用いることはできません。
-
Parameters
- - - -
[in]predicate処理対象のGSRowKeyPredicate
[in]startKey開始位置とするロウキーの値。NULLの場合、設定が解除されます
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • predicate引数にNULLが指定された場合
  • -
  • 個別条件がすでに設定されていた場合
  • -
  • 期待した型が合致条件の評価対象とするロウキーの型と異なる場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetPredicateStartKeyByLong (GSRowKeyPredicatepredicate,
const int64_t * startKey 
)
-
- -

範囲条件の開始位置とするLONG型ロウキーの値を設定します。

-
設定された値より小さな値のロウキーは合致しないものとみなされるようになります。
-
STRING型のように大小関係の定義されていない型の場合、条件として設定はできるものの、実際の判定に用いることはできません。
-
Parameters
- - - -
[in]predicate処理対象のGSRowKeyPredicate
[in]startKey開始位置とするロウキーの値。NULLの場合、設定が解除されます
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • predicate引数にNULLが指定された場合
  • -
  • 個別条件がすでに設定されていた場合
  • -
  • 期待した型が合致条件の評価対象とするロウキーの型と異なる場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetPredicateStartKeyByString (GSRowKeyPredicatepredicate,
const GSCharstartKey 
)
-
- -

範囲条件の開始位置とするSTRING型ロウキーの値を設定します。

-
設定された値より小さな値のロウキーは合致しないものとみなされるようになります。
-
STRING型では大小関係が定義されていないため、条件として設定はできるものの、実際の判定に用いることはできません。
-
Parameters
- - - -
[in]predicate処理対象のGSRowKeyPredicate
[in]startKey開始位置とするロウキーの値。NULLの場合、設定が解除されます
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • predicate引数にNULLが指定された場合
  • -
  • 個別条件がすでに設定されていた場合
  • -
  • 期待した型が合致条件の評価対象とするロウキーの型と異なる場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetPredicateStartKeyByTimestamp (GSRowKeyPredicatepredicate,
const GSTimestampstartKey 
)
-
- -

範囲条件の開始位置とするTIMESTAMP型ロウキーの値を設定します。

-
設定された値より小さな値のロウキーは合致しないものとみなされるようになります。
-
STRING型のように大小関係の定義されていない型の場合、条件として設定はできるものの、実際の判定に用いることはできません。
-
Parameters
- - - -
[in]predicate処理対象のGSRowKeyPredicate
[in]startKey開始位置とするロウキーの値。NULLの場合、設定が解除されます
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • predicate引数にNULLが指定された場合
  • -
  • 個別条件がすでに設定されていた場合
  • -
  • 期待した型が合致条件の評価対象とするロウキーの型と異なる場合
  • -
-
-
Since
1.5
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetPredicateStartKeyGeneral (GSRowKeyPredicatepredicate,
const GSValuestartKey,
GSType keyType 
)
-
- -

範囲条件の開始位置とする、単一カラムのロウキーの値を設定します。

-
設定された値より小さな値のロウキーは合致しないものとみなされるようになります。
-
STRING型のように大小関係の定義されていない型の場合、条件として設定はできるものの、実際の判定に用いることはできません。
-
Attention
指定ロウキーの値とその型との対応が一致しない場合、この処理の動作は未定義です。アクセス違反により実行プロセスが異常終了する可能性があります。
-
Parameters
- - - - -
[in]predicate処理対象のGSRowKeyPredicate
[in]startKey開始位置とするロウキーの値。NULLの場合、設定が解除されます
[in]keyType開始位置とするロウキーの値の型
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • predicate引数にNULLが指定された場合
  • -
  • 個別条件がすでに設定されていた場合
  • -
  • 期待した型が合致条件の評価対象とするロウキーの型と異なる場合
  • -
-
-
Since
1.5
- -
-
-
-
-
-
GSRowSet
-
-
- - - - - -

-Typedefs

typedef struct GSRowSetTag GSRowSet
 クエリ実行より求めたロウの集合を管理します。More...
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

GS_DLL_PUBLIC void GS_API_CALL gsCloseRowSet (GSRowSet **rowSet)
 指定のGSRowSetインスタンスを解放します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsDeleteCurrentRow (GSRowSet *rowSet)
 現在のカーソル位置のロウを削除します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetNextRow (GSRowSet *rowSet, void *rowObj)
 ロウ集合内の後続のロウにカーソル移動し、移動後の位置にあるロウオブジェクトを取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetNextAggregation (GSRowSet *rowSet, GSAggregationResult **aggregationResult)
 ロウ集合内の後続のロウにカーソル移動し、移動後の位置にある集計結果を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetNextQueryAnalysis (GSRowSet *rowSet, GSQueryAnalysisEntry *queryAnalysis)
 ロウ集合内の後続のロウにカーソル移動し、移動後の位置にあるクエリ解析結果エントリを取得します。More...
 
GS_DLL_PUBLIC GSRowSetType
-GS_API_CALL 
gsGetRowSetType (GSRowSet *rowSet)
 ロウ集合の種別を取得します。More...
 
GS_DLL_PUBLIC int32_t GS_API_CALL gsGetRowSetSize (GSRowSet *rowSet)
 ロウ集合のサイズ、すなわちロウ集合作成時点におけるロウの数を返します。More...
 
GS_DLL_PUBLIC GSBool GS_API_CALL gsHasNextRow (GSRowSet *rowSet)
 現在のカーソル位置を基準として、ロウ集合内に後続のロウが存在するかどうかを返します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsUpdateCurrentRow (GSRowSet *rowSet, const void *rowObj)
 現在のカーソル位置のロウについて、指定のロウオブジェクトを使用してロウキー以外の値を更新します。More...
 
-

Detailed Description

-

Typedef Documentation

- -
-
- - - - -
typedef struct GSRowSetTag GSRowSet
-
- -

クエリ実行より求めたロウの集合を管理します。

-
ロウ単位・ロウフィールド単位での操作機能を持ち、対象とするロウを指し示すためのカーソル状態を保持します。初期状態のカーソルは、ロウ集合の先頭より手前に位置しています。
- -
-
-

Function Documentation

- -
-
- - - - - - - - -
GS_DLL_PUBLIC void GS_API_CALL gsCloseRowSet (GSRowSet ** rowSet)
-
- -

指定のGSRowSetインスタンスを解放します。

-
Parameters
- - -
[in,out]rowSetクローズ対象のGSRowSetインスタンスを指しているポインタ変数へのポインタ値。クローズすると、ポインタ変数にNULLが設定されます。以後、解放したGSRowSetインスタンスにアクセスしてはなりません。ポインタ値またはポインタ変数の値がNULLの場合は、クローズ処理を行いません。
-
-
- -
-
- -
-
- - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsDeleteCurrentRow (GSRowSetrowSet)
-
- -

現在のカーソル位置のロウを削除します。

-
ロックを有効にして取得したGSRowSetに対してのみ使用できます。また、gsDeleteRowと同様、コンテナの種別ならびに設定によっては、さらに制限が設けられています。
-
Parameters
- - -
[in]rowSet処理対象のGSRowSet
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • 指定のロウ集合の種別がGS_ROW_SET_CONTAINER_ROWS以外の場合
  • -
  • 対象位置のロウが存在しない場合
  • -
  • ロックを有効にせずに取得したGSRowSetに対して呼び出された場合
  • -
  • この処理または関連するトランザクションのタイムアウト、対応するコンテナの削除もしくはスキーマ変更、接続障害が発生した場合、または対応するコンテナのクローズ後に呼び出された場合
  • -
  • 引数にNULLが指定された場合
  • -
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetNextAggregation (GSRowSetrowSet,
GSAggregationResult ** aggregationResult 
)
-
- -

ロウ集合内の後続のロウにカーソル移動し、移動後の位置にある集計結果を取得します。

-
Parameters
- - - -
[in]rowSet処理対象のGSRowSet
[out]aggregationResult集計結果をGSAggregationResultとして格納するためのポインタ変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、このポインタ値がNULL以外の値であれば、対応するポインタ変数にNULLが格納されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • 指定のロウ集合の種別がGS_ROW_SET_AGGREGATION_RESULT以外の場合
  • -
  • 対象位置の集計結果が存在しない場合
  • -
  • 引数にNULLが指定された場合
  • -
  • 対応するGSContainerのクローズ後に呼び出された場合
  • -
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetNextQueryAnalysis (GSRowSetrowSet,
GSQueryAnalysisEntryqueryAnalysis 
)
-
- -

ロウ集合内の後続のロウにカーソル移動し、移動後の位置にあるクエリ解析結果エントリを取得します。

-
Parameters
- - - -
[in]rowSet処理対象のGSRowSet
[out]queryAnalysisクエリ解析結果エントリの内容を格納するためのGSQueryAnalysisEntry。実行結果としてGS_RESULT_OK以外が返される場合、このポインタ値がNULL以外の値であれば、GS_QUERY_ANALYSIS_ENTRY_INITIALIZERと同一の内容の初期値が格納されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • 指定のロウ集合の種別がGS_ROW_SET_QUERY_ANALYSIS以外の場合
  • -
  • 対象位置のエントリが存在しない場合
  • -
  • 引数にNULLが指定された場合
  • -
  • 対応するGSContainerのクローズ後に呼び出された場合
  • -
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetNextRow (GSRowSetrowSet,
void * rowObj 
)
-
- -

ロウ集合内の後続のロウにカーソル移動し、移動後の位置にあるロウオブジェクトを取得します。

-
GS_FETCH_PARTIAL_EXECUTIONが有効に設定されていた場合、クエリ実行処理の続きを行う場合があります。
-
Attention
対応するGSContainerにバインドされたロウオブジェクトの型と指定のロウオブジェクトの型とが一致しない場合、この処理の動作は未定義です。アクセス違反により実行プロセスが異常終了する可能性があります。
-
-文字列や配列などの可変長のデータを格納するために、指定のGSRowSetと対応するGSGridStoreインスタンス上で管理される、一時的なメモリ領域を使用します。この領域は、対応するGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
-
Parameters
- - - -
[in]rowSet処理対象のGSRowSet
[out]rowObj取得対象のロウの内容を格納するためのロウオブジェクト。実行結果としてGS_RESULT_OK以外が返される場合、ロウオブジェクトのフィールドのうち一部またはすべてが変更されることがあります。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • 指定のロウ集合の種別がGS_ROW_SET_CONTAINER_ROWS以外の場合
  • -
  • 対象位置のロウが存在しない場合
  • -
  • 引数にNULLが指定された場合
  • -
  • この処理または関連するトランザクションのタイムアウト、対応するコンテナの削除もしくはスキーマ変更、接続障害が発生した場合
  • -
  • 対応するGSContainerのクローズ後に呼び出された場合
  • -
-
- -
-
- -
-
- - - - - - - - -
GS_DLL_PUBLIC int32_t GS_API_CALL gsGetRowSetSize (GSRowSetrowSet)
-
- -

ロウ集合のサイズ、すなわちロウ集合作成時点におけるロウの数を返します。

-
GS_FETCH_PARTIAL_EXECUTIONが有効に設定されていた場合、クエリ実行処理の進行状況によらず、結果を求めることはできません。
-
Parameters
- - -
[in]rowSet処理対象のGSRowSet
-
-
-
Returns
ロウ集合のサイズ。ただし、rowSetNULLが指定された場合、またはオプション設定の影響によりロウの数を取得できない場合は-1
- -
-
- -
-
- - - - - - - - -
GS_DLL_PUBLIC GSRowSetType GS_API_CALL gsGetRowSetType (GSRowSetrowSet)
-
- -

ロウ集合の種別を取得します。

-
ロウ集合の種別に応じて、それぞれ次の取得機能が使用できます。 - - - - - - - - -
ロウ集合の種別使用できる取得機能
GS_ROW_SET_CONTAINER_ROWS gsGetNextRow
GS_ROW_SET_AGGREGATION_RESULT gsGetNextAggregation
GS_ROW_SET_QUERY_ANALYSIS gsGetNextQueryAnalysis
-
-
Parameters
- - -
[in]rowSet処理対象のGSRowSet
-
-
-
Returns
ロウ集合の種別。ただし、rowSetNULLが指定された場合は-1
- -
-
- -
-
- - - - - - - - -
GS_DLL_PUBLIC GSBool GS_API_CALL gsHasNextRow (GSRowSetrowSet)
-
- -

現在のカーソル位置を基準として、ロウ集合内に後続のロウが存在するかどうかを返します。

-
Parameters
- - -
[in]rowSet処理対象のGSRowSet
-
-
-
Returns
後続のロウが存在するかどうか。ただし、rowSetNULLが指定された場合はGS_FALSE
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsUpdateCurrentRow (GSRowSetrowSet,
const void * rowObj 
)
-
- -

現在のカーソル位置のロウについて、指定のロウオブジェクトを使用してロウキー以外の値を更新します。

-
Attention
対応するGSContainerにバインドされたロウオブジェクトの型と指定のロウオブジェクトの型とが一致しない場合、この処理の動作は未定義です。アクセス違反により実行プロセスが異常終了する可能性があります。
-
ロックを有効にして取得したGSRowSetに対してのみ使用できます。また、gsPutRowと同様、コンテナの種別ならびに設定によっては、さらに制限が設けられています。
-
Parameters
- - - -
[in]rowSet処理対象のGSRowSet
[in]rowObj更新するロウの内容と対応するロウオブジェクト。ロウキーの内容は無視されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • 指定のロウ集合の種別がGS_ROW_SET_CONTAINER_ROWS以外の場合
  • -
  • 対象位置のロウが存在しない場合
  • -
  • ロックを有効にせずに取得したGSRowSetに対して呼び出された場合
  • -
  • この処理または関連するトランザクションのタイムアウト、対応するコンテナの削除もしくはスキーマ変更、接続障害が発生した場合、または対応するコンテナのクローズ後に呼び出された場合。また、指定のロウオブジェクト内のロウキー以外のフィールドについて、文字列など可変長サイズのデータへのポインタ値にNULLが含まれていた場合
  • -
  • 引数にNULLが指定された場合
  • -
-
- -
-
-
-
-
-
GSTimeSeries
-
-
- - - - - -

-Typedefs

typedef GSContainer GSTimeSeries
 時刻をロウキーとする、時系列処理に特化したコンテナです。More...
 
- - - - - - - - - - - - - - - - - - - - - - -

-Functions

GS_DLL_PUBLIC GSResult GS_API_CALL gsAggregateTimeSeries (GSTimeSeries *timeSeries, GSTimestamp start, GSTimestamp end, const GSChar *column, GSAggregation aggregation, GSAggregationResult **aggregationResult)
 開始・終了時刻を指定して、ロウ集合またはその特定のカラムに対し集計演算を行います。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsAppendTimeSeriesRow (GSTimeSeries *timeSeries, const void *rowObj, GSBool *exists)
 GridDB上の現在時刻をロウキーとして、ロウを新規作成または更新します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowByBaseTime (GSTimeSeries *timeSeries, GSTimestamp base, GSTimeOperator timeOp, void *rowObj, GSBool *exists)
 指定の時刻を基準として、関係する1つのロウを取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsInterpolateTimeSeriesRow (GSTimeSeries *timeSeries, GSTimestamp base, const GSChar *column, void *rowObj, GSBool *exists)
 指定時刻に相当するロウオブジェクトについて、線形補間などを行い生成します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsQueryByTimeSeriesRange (GSTimeSeries *timeSeries, GSTimestamp start, GSTimestamp end, GSQuery **query)
 開始時刻・終了時刻を指定して、特定範囲のロウ集合を求めるクエリを作成します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsQueryByTimeSeriesOrderedRange (GSTimeSeries *timeSeries, const GSTimestamp *start, const GSTimestamp *end, GSQueryOrder order, GSQuery **query)
 開始時刻・終了時刻・順序を指定して、特定範囲のロウ集合を求めるクエリを作成します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsQueryByTimeSeriesSampling (GSTimeSeries *timeSeries, GSTimestamp start, GSTimestamp end, const GSChar *const *columnSet, size_t columnCount, GSInterpolationMode mode, int32_t interval, GSTimeUnit intervalUnit, GSQuery **query)
 特定範囲のロウ集合をサンプリングするクエリを作成します。More...
 
-

Detailed Description

-

Typedef Documentation

- -
-
- - - - -
typedef GSContainer GSTimeSeries
-
- -

時刻をロウキーとする、時系列処理に特化したコンテナです。

-
一般的に、範囲取得や集計演算といった処理は、GSCollectionよりも効率的な実装が選択されます。
-
ロウ操作については、GSCollectionと異なり一部制限が設けられています。GSTimeSeriesPropertiesに基づき圧縮オプションが設定されている場合、次のロウ操作を行えません。
    -
  • 指定ロウの更新
  • -
  • 指定ロウの削除
  • -
  • 指定時刻より新しい時刻のロウが存在する場合の、ロウの新規作成
  • -
-
-
gsQueryもしくはgsGetMultipleContainerRowsなどより複数のロウの内容を一度に取得する場合、特に指定がなければ、返却されるロウの順序はロウキーの時刻を基準としてGS_ORDER_ASCENDING相当の順序に整列されます。
-
ロック粒度は、1つ以上のロウ集合をひとまとまりとする内部格納単位となります。したがって、特定ロウについてロックする際、そのロウが属する内部格納単位上の他のロウも同時にロックしようとします。
- -
-
-

Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsAggregateTimeSeries (GSTimeSeriestimeSeries,
GSTimestamp start,
GSTimestamp end,
const GSCharcolumn,
GSAggregation aggregation,
GSAggregationResult ** aggregationResult 
)
-
- -

開始・終了時刻を指定して、ロウ集合またはその特定のカラムに対し集計演算を行います。

-
columnaggregation次第で無視されることがあります。演算対象には、開始・終了時刻と合致する境界上のロウも含まれます。終了時刻より新しい開始時刻を指定した場合、すべてのロウが対象外となります。
-
Parameters
- - - - - - - -
[in]timeSeries処理対象のGSTimeSeries
[in]start開始時刻
[in]end終了時刻
[in]column集計対象のカラム名。合計演算のように、特定のカラムを対象としない場合はNULL
[in]aggregation集計方法
[out]aggregationResult集計結果をGSAggregationResultとして格納するためのポインタ変数へのポインタ値。対象時系列の内容と集計方法によっては、NULLが設定されることもあります。詳細はGSAggregationの定義を参照してください。実行結果としてGS_RESULT_OK以外が返される場合、このポインタ値がNULL以外の値であれば、対応するポインタ変数にNULLが格納されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • 指定のコンテナの種別が時系列ではない場合
  • -
  • 指定の演算方法で許可されていない型のカラムを指定した場合
  • -
  • 対応する名前のカラムが存在しない場合
  • -
  • この処理またはトランザクションのタイムアウト、指定のコンテナの削除もしくはスキーマ変更、接続障害が発生した場合
  • -
  • ポインタ型引数にNULLが指定された場合
  • -
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsAppendTimeSeriesRow (GSTimeSeriestimeSeries,
const void * rowObj,
GSBoolexists 
)
-
- -

GridDB上の現在時刻をロウキーとして、ロウを新規作成または更新します。

-
GridDB上の現在時刻に相当するTIMESTAMP値をロウキーとする点を除き、gsPutRowと同様に振る舞います。指定のロウオブジェクト内のロウキーは無視されます。
-
圧縮オプションが設定された状態の時系列に対しては、GridDB上の現在時刻より新しい時刻のロウが存在しない場合のみ使用できます。最も新しい時刻を持つ既存ロウの時刻が現在時刻と一致する場合、何も変更は行わず既存ロウの内容を保持します。
-
手動コミットモードの場合、対象のロウがロックされます。また、内部格納単位が同一の他のロウもロックされます。
-
Attention
指定のGSTimeSeriesにバインドされたロウオブジェクトの型と指定のロウオブジェクトの型とが一致しない場合、この処理の動作は未定義です。アクセス違反により実行プロセスが異常終了する可能性があります。
-
Parameters
- - - - -
[in]timeSeries処理対象のGSTimeSeries
[in]rowObj新規作成または更新するロウの内容と対応するロウオブジェクト
[out]existsGridDB上の現在時刻と一致するロウが存在したかどうかを格納するための、ブール型変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、GS_FALSEが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • 指定の時系列について圧縮オプションが設定されており、現在時刻より新しい時刻のロウが存在した場合
  • -
  • この処理またはトランザクションのタイムアウト、指定のコンテナの削除もしくはスキーマ変更、接続障害が発生した場合
  • -
  • サポート範囲外の値がロウオブジェクトに含まれていた場合
  • -
  • exists以外の引数にNULLが指定された場合。また、指定のロウオブジェクトについて、文字列など可変長サイズのデータへのポインタ値にNULLが含まれていた場合
  • -
-
-
See Also
gsPutRow
-
-GSTimeSeriesPropertiesTag::compressionMethod
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowByBaseTime (GSTimeSeriestimeSeries,
GSTimestamp base,
GSTimeOperator timeOp,
void * rowObj,
GSBoolexists 
)
-
- -

指定の時刻を基準として、関係する1つのロウを取得します。

-
Attention
指定のGSTimeSeriesにバインドされたロウオブジェクトの型と指定のロウオブジェクトの型とが一致しない場合、この処理の動作は未定義です。アクセス違反により実行プロセスが異常終了する可能性があります。
-
-文字列や配列などの可変長のデータを格納するために、指定のGSTimeSeriesと対応するGSGridStoreインスタンス上で管理される、一時的なメモリ領域を使用します。この領域は、対応するGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
-
Parameters
- - - - - - -
[in]timeSeries処理対象のGSTimeSeries
[in]base基準となる時刻
[in]timeOp取得方法
[out]rowObj取得対象のロウの内容を格納するためのロウオブジェクト。取得対象のロウが存在しない場合、ロウオブジェクトの内容は何も変更されません。実行結果としてGS_RESULT_OK以外が返される場合、ロウオブジェクトのフィールドのうち一部またはすべてが変更されることがあります。
[out]exists条件に一致するロウが存在したかどうかを格納するためのブール型変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、GS_FALSEが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • この処理またはトランザクションのタイムアウト、指定のコンテナの削除もしくはスキーマ変更、接続障害が発生した場合
  • -
  • サポート範囲外の値が基準時刻として指定された場合
  • -
  • exists以外のポインタ型引数にNULLが指定された場合
  • -
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsInterpolateTimeSeriesRow (GSTimeSeriestimeSeries,
GSTimestamp base,
const GSCharcolumn,
void * rowObj,
GSBoolexists 
)
-
- -

指定時刻に相当するロウオブジェクトについて、線形補間などを行い生成します。

-
一致する時系列ロウの指定のカラムの値、もしくは、前後時刻のロウの指定カラムの値を線形補間して得られた値を基にロウオブジェクトを生成します。前後時刻のロウの少なくともいずれか、もしくは、一致するロウが存在しない場合は生成されません。
-
補間対象として指定できるカラムの型は、数値型のみです。指定のカラムならびにロウキー以外のフィールドには、指定時刻と同一またはより前の時刻のロウのうち、最も新しい時刻を持つロウのフィールドの値が設定されます。
-
Attention
指定のGSTimeSeriesにバインドされたロウオブジェクトの型と指定のロウオブジェクトの型とが一致しない場合、この処理の動作は未定義です。アクセス違反により実行プロセスが異常終了する可能性があります。
-
-文字列や配列などの可変長のデータを格納するために、指定のGSTimeSeriesと対応するGSGridStoreインスタンス上で管理される、一時的なメモリ領域を使用します。この領域は、対応するGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
-
Parameters
- - - - - - -
[in]timeSeries処理対象のGSTimeSeries
[in]base基準となる時刻
[in]column線形補間対象のカラム
[out]rowObj生成結果を格納するためのロウオブジェクト。生成のために必要とするロウが存在しない場合、ロウオブジェクトの内容は何も変更されません。実行結果としてGS_RESULT_OK以外が返される場合、ロウオブジェクトのフィールドのうち一部またはすべてが変更されることがあります。
[out]exists生成のために必要とするロウが存在したかどうかを格納するための、ブール型変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、GS_FALSEが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • 対応する名前のカラムが存在しない場合。また、サポートされていない型のカラムが指定された場合
  • -
  • この処理またはトランザクションのタイムアウト、指定のコンテナの削除もしくはスキーマ変更、接続障害が発生した場合
  • -
  • サポート範囲外の値が基準時刻として指定された場合
  • -
  • exists以外のポインタ型引数にNULLが指定された場合
  • -
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsQueryByTimeSeriesOrderedRange (GSTimeSeriestimeSeries,
const GSTimestampstart,
const GSTimestampend,
GSQueryOrder order,
GSQuery ** query 
)
-
- -

開始時刻・終了時刻・順序を指定して、特定範囲のロウ集合を求めるクエリを作成します。

-
取得対象には、開始・終了時刻と合致する境界上のロウも含まれます。終了時刻より新しい開始時刻を指定した場合、すべてのロウが対象外となります。
-
gsFetchを通じてロウ集合を求める際、更新用ロックのオプションを有効にすることもできます。
-
Parameters
- - - - - - -
[in]timeSeries処理対象のGSTimeSeries
[in]start開始時刻またはNULLNULLの場合、指定の時系列上の最も古いロウの時刻が開始時刻として指定されたものとみなします。
[in]end終了時刻またはNULLNULLの場合、指定の時系列上の最も新しいロウの時刻が終了時刻として指定されたものとみなします。
[in]order取得するロウ集合の時刻順序。GS_ORDER_ASCENDINGの場合は古い時刻から新しい時刻の順、GS_ORDER_DESCENDINGの場合は新しい時刻から古い時刻の順となります。
[out]queryGSQueryインスタンスを格納するためのポインタ変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、このポインタ値がNULL以外の値であれば、対応するポインタ変数にNULLが設定されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • 指定のコンテナの種別が時系列ではない場合
  • -
  • startend以外のポインタ型引数にNULLが指定された場合
  • -
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsQueryByTimeSeriesRange (GSTimeSeriestimeSeries,
GSTimestamp start,
GSTimestamp end,
GSQuery ** query 
)
-
- -

開始時刻・終了時刻を指定して、特定範囲のロウ集合を求めるクエリを作成します。

-
取得対象には、開始・終了時刻と合致する境界上のロウも含まれます。終了時刻より新しい開始時刻を指定した場合、すべてのロウが対象外となります。要求するロウ集合は昇順、すなわち古い時刻から新しい時刻の順となります。
-
gsFetchを通じてロウ集合を求める際、更新用ロックのオプションを有効にすることもできます。
-
Parameters
- - - - - -
[in]timeSeries処理対象のGSTimeSeries
[in]start開始時刻
[in]end終了時刻
[out]queryGSQueryインスタンスを格納するためのポインタ変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、このポインタ値がNULL以外の値であれば、対応するポインタ変数にNULLが設定されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • 指定のコンテナの種別が時系列ではない場合
  • -
  • ポインタ型引数にNULLが指定された場合
  • -
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSResult GS_API_CALL gsQueryByTimeSeriesSampling (GSTimeSeriestimeSeries,
GSTimestamp start,
GSTimestamp end,
const GSChar *const * columnSet,
size_t columnCount,
GSInterpolationMode mode,
int32_t interval,
GSTimeUnit intervalUnit,
GSQuery ** query 
)
-
- -

特定範囲のロウ集合をサンプリングするクエリを作成します。

-
サンプリング対象の時刻は、開始時刻に対し非負整数倍のサンプリング間隔を加えた時刻のうち、終了時刻と同じかそれ以前のもののみです。終了時刻より新しい開始時刻を指定した場合、すべてのロウが対象外となります。
-
作成したクエリを実行すると、各サンプリング位置の時刻と一致するロウが存在する場合は該当ロウの値を、存在しない場合はcolumnSetmode引数の指定に従い補間された値を使用しロウ集合を生成します。個別の補間方法については、GSInterpolationModeの定義を参照してください。
-
補間のために参照する必要のあるロウが存在しない場合、該当するサンプリング時刻のロウは生成されず、該当箇所の数だけ結果件数が減少します。サンプリング間隔をより短く設定すると、補間方法次第では異なるサンプリング時刻であっても同一のロウの内容が使用される可能性が高まります。
-
gsFetchを通じてロウ集合を求める際、更新用ロックのオプションを有効にすることはできません。
-
Parameters
- - - - - - - - - - -
[in]timeSeries処理対象のGSTimeSeries
[in]start開始時刻
[in]end終了時刻
[in]columnSetmodeに基づき特定の補間処理を適用するカラムの名前の集合。文字列ポインタの配列より構成されます。空集合の場合は、適用対象のカラムを何も指定しないことを示します。NULLの場合は、空集合を指定した場合と同様です。
[in]columnCountmodeに基づき特定の補間処理を適用するカラムの個数
[in]mode補間方法
[in]intervalサンプリング間隔。0および負の値は指定できません
[in]intervalUnitサンプリング間隔の時間単位。GS_TIME_UNIT_YEARGS_TIME_UNIT_MONTHは指定できません
[out]queryGSQueryインスタンスを格納するためのポインタ変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、このポインタ値がNULL以外の値であれば、対応するポインタ変数にNULLが格納されます。
-
-
-
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    -
  • 指定のコンテナの種別が時系列ではない場合
  • -
  • columnSet以外のポインタ型引数にNULLが指定された場合
  • -
-
- -
-
-
-
-
-
GSTimestamp
-
-
- - - - - -

-Classes

struct  GSTimeZoneTag
 タイムゾーン情報を表します。More...
 
- - - - - - - - - - - - - -

-Macros

#define GS_TIME_ZONE_INITIALIZER   { { 0 } }
 GSTimeZoneの初期化子です。More...
 
#define GS_TIMESTAMP_DEFAULT   0
 時刻1970-01-01T00:00:00Zに相当するGSTimestamp値です。More...
 
#define GS_TIME_STRING_SIZE_MAX   32
 TIMESTAMP型値の文字列表現を格納するための文字列バッファにおける、終端文字を含むバイト単位での最大サイズです。More...
 
#define GS_TIME_ZONE_STRING_SIZE_MAX   8
 GSTimeZone値の文字列表現を格納するための文字列バッファにおける、終端文字を含むバイト単位での最大サイズです。More...
 
- - - - - - - -

-Typedefs

-typedef int64_t GSTimestamp
 GridDB上のTIMESTAMP型と対応する時刻型です。ミリ秒単位のUNIX時刻を保持します。
 
typedef struct GSTimeZoneTag GSTimeZone
 タイムゾーン情報を表します。More...
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

GS_DLL_PUBLIC GSTimestamp
-GS_API_CALL 
gsCurrentTime ()
 現在時刻を求めます。More...
 
GS_DLL_PUBLIC int64_t GS_API_CALL gsGetTimeField (GSTimestamp timestamp, GSTimeUnit timeUnit)
 GSTimestampを構成するフィールド値の一つを取得します。More...
 
GS_DLL_PUBLIC int64_t GS_API_CALL gsGetZonedTimeField (GSTimestamp timestamp, GSTimeUnit timeUnit, const GSTimeZone *zone)
 指定のタイムゾーン設定を用い、GSTimestampを構成するフィールド値の一つを取得します。More...
 
GS_DLL_PUBLIC GSBool GS_API_CALL gsSetTimeField (GSTimestamp *timestamp, int64_t field, GSTimeUnit timeUnit)
 GSTimestampを構成するフィールド値の一つを設定します。More...
 
GS_DLL_PUBLIC GSBool GS_API_CALL gsSetZonedTimeField (GSTimestamp *timestamp, int64_t field, GSTimeUnit timeUnit, const GSTimeZone *zone)
 指定のタイムゾーン設定を用い、GSTimestampを構成するフィールド値の一つを設定します。More...
 
GS_STATIC_HEADER_FUNC_SPECIFIER
-GSTimestamp 
gsAddTime (GSTimestamp timestamp, int64_t amount, GSTimeUnit timeUnit)
 時刻に一定の値を加算します。More...
 
GS_DLL_PUBLIC GSTimestamp
-GS_API_CALL 
gsAddZonedTime (GSTimestamp timestamp, int64_t amount, GSTimeUnit timeUnit, const GSTimeZone *zone)
 指定のタイムゾーン設定を用い、時刻に一定の値を加算します。More...
 
GS_DLL_PUBLIC int64_t GS_API_CALL gsGetTimeDiff (GSTimestamp timestamp1, GSTimestamp timestamp2, GSTimeUnit timeUnit)
 二つの時刻間の差分値を求めます。More...
 
GS_DLL_PUBLIC int64_t GS_API_CALL gsGetZonedTimeDiff (GSTimestamp timestamp1, GSTimestamp timestamp2, GSTimeUnit timeUnit, const GSTimeZone *zone)
 指定のタイムゾーン設定を用い、二つの時刻間の差分値を求めます。More...
 
GS_DLL_PUBLIC size_t GS_API_CALL gsFormatTime (GSTimestamp timestamp, GSChar *strBuf, size_t bufSize)
 TQLのTIMESTAMP値表記に従い、時刻の文字列表現を求めます。More...
 
GS_DLL_PUBLIC size_t GS_API_CALL gsFormatZonedTime (GSTimestamp timestamp, GSChar *strBuf, size_t bufSize, const GSTimeZone *zone)
 指定のタイムゾーン設定を用い、TQLのTIMESTAMP値表記に従って時刻の文字列表現を求めます。More...
 
GS_DLL_PUBLIC GSBool GS_API_CALL gsParseTime (const GSChar *str, GSTimestamp *timestamp)
 TQLのTIMESTAMP値表記に従い、指定の文字列に対応するGSTimestamp値を求めます。More...
 
GS_DLL_PUBLIC int64_t GS_API_CALL gsGetTimeZoneOffset (const GSTimeZone *zone, GSTimeUnit timeUnit)
 指定のタイムゾーンのオフセット値を取得します。More...
 
GS_DLL_PUBLIC GSBool GS_API_CALL gsSetTimeZoneOffset (GSTimeZone *zone, int64_t offset, GSTimeUnit timeUnit)
 指定のタイムゾーンのオフセット値を設定します。More...
 
GS_DLL_PUBLIC size_t gsFormatTimeZone (const GSTimeZone *zone, GSChar *strBuf, size_t bufSize)
 TQLのTIMESTAMP値表記に従い、タイムゾーン情報の文字列表現を求めます。More...
 
GS_DLL_PUBLIC GSBool GS_API_CALL gsParseTimeZone (const GSChar *str, GSTimeZone *zone)
 TQLのTIMESTAMP値表記に従い、指定のタイムゾーン文字列に対応するGSTimeZone値を求めます。More...
 
-

Detailed Description

-

Macro Definition Documentation

- -
-
- - - - -
#define GS_TIME_STRING_SIZE_MAX   32
-
- -

TIMESTAMP型値の文字列表現を格納するための文字列バッファにおける、終端文字を含むバイト単位での最大サイズです。

-
See Also
gsFormatTime
- -
-
- -
-
- - - - -
#define GS_TIME_ZONE_INITIALIZER   { { 0 } }
-
- -

GSTimeZoneの初期化子です。

-
Since
4.3
- -
-
- -
-
- - - - -
#define GS_TIME_ZONE_STRING_SIZE_MAX   8
-
- -

GSTimeZone値の文字列表現を格納するための文字列バッファにおける、終端文字を含むバイト単位での最大サイズです。

-
See Also
gsFormatTimeZone
-
Since
4.3
- -
-
- -
-
- - - - -
#define GS_TIMESTAMP_DEFAULT   0
-
- -

時刻1970-01-01T00:00:00Zに相当するGSTimestamp値です。

-
Since
4.3
- -
-
-

Typedef Documentation

- -
-
- - - - -
typedef struct GSTimeZoneTag GSTimeZone
-
- -

タイムゾーン情報を表します。

-
Since
4.3
- -
-
-

Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GS_STATIC_HEADER_FUNC_SPECIFIER GSTimestamp gsAddTime (GSTimestamp timestamp,
int64_t amount,
GSTimeUnit timeUnit 
)
-
- -

時刻に一定の値を加算します。

-
amountに負の値を指定することで、指定の時刻より前の時刻を求めることができます。
-
現バージョンでは、算出の際に使用されるタイムゾーンはUTCです。
-
Parameters
- - - - -
[in]timestamp対象とする時刻
[in]amount加算する値
[in]timeUnit加算する値の単位
-
-
-
Returns
加算後のGSTimestamp。次の場合は-1
    -
  • サポート範囲外の時刻や単位が指定された場合
  • -
  • 加算結果がサポート範囲外の時刻となりうる場合
  • -
-
-
See Also
gsAddZonedTime
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSTimestamp GS_API_CALL gsAddZonedTime (GSTimestamp timestamp,
int64_t amount,
GSTimeUnit timeUnit,
const GSTimeZonezone 
)
-
- -

指定のタイムゾーン設定を用い、時刻に一定の値を加算します。

-
amountに負の値を指定することで、指定の時刻より前の時刻を求めることができます。
-
演算に用いる時間の単位によっては、タイムゾーン設定の影響を受けない場合があります。
-
Parameters
- - - - - -
[in]timestamp対象とする時刻
[in]amount加算する値
[in]timeUnit加算する値の単位
[in]zoneタイムゾーン設定情報へのポインタ値。NULLの場合はgsAddTimeと同様に振る舞います。
-
-
-
Returns
加算後のGSTimestamp。次の場合は-1
    -
  • サポート範囲外の時刻や単位が指定された場合
  • -
  • 加算結果がサポート範囲外の時刻となりうる場合
  • -
  • 初期化誤りなど正しくないタイムゾーン情報が指定されたことを検知した場合
  • -
-
-
See Also
gsAddZonedTime
-
Since
4.3
- -
-
- -
-
- - - - - - - -
GS_DLL_PUBLIC GSTimestamp GS_API_CALL gsCurrentTime ()
-
- -

現在時刻を求めます。

-
Returns
現在時刻に相当するGSTimestamp。内部のシステムコールに失敗した場合、-1
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC size_t GS_API_CALL gsFormatTime (GSTimestamp timestamp,
GSCharstrBuf,
size_t bufSize 
)
-
- -

TQLのTIMESTAMP値表記に従い、時刻の文字列表現を求めます。

-
現バージョンでは、変換の際に使用されるタイムゾーンはUTCです。
-
Parameters
- - - - -
[in]timestamp対象とする時刻
[out]strBuf出力先の文字列バッファ。bufSizeを超えない範囲で終端文字を含む文字列を出力します。bufSize1以上であり、出力に必要とするサイズに満たない場合、終端文字をバッファ範囲内の最終位置に設定し、残りの領域に可能な限り文字列を出力します。strBufNULLまたはbufSize0の場合、文字列は出力されません。
[in]bufSize出力先の文字列バッファについての、終端文字を含んだバイト単位のサイズ
-
-
-
Returns
終端文字を含んだ、出力に必要とする文字列バッファのバイト単位の最低サイズ。ただし次の場合は、空文字列のサイズに相当する1
    -
  • サポート範囲外の時刻が指定された場合
  • -
-
-
See Also
GS_TIME_STRING_SIZE_MAX
-
-gsFormatZonedTime
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC size_t gsFormatTimeZone (const GSTimeZonezone,
GSCharstrBuf,
size_t bufSize 
)
-
- -

TQLのTIMESTAMP値表記に従い、タイムゾーン情報の文字列表現を求めます。

-
Parameters
- - - - -
[out]zone対象とするタイムゾーン情報
[out]strBuf出力先の文字列バッファ。bufSizeを超えない範囲で終端文字を含む文字列を出力します。bufSize1以上であり、出力に必要とするサイズに満たない場合、終端文字をバッファ範囲内の最終位置に設定し、残りの領域に可能な限り文字列を出力します。strBufNULLまたはbufSize0の場合、文字列は出力されません。
[in]bufSize出力先の文字列バッファについての、終端文字を含んだバイト単位のサイズ
-
-
-
Returns
終端文字を含んだ、出力に必要とする文字列バッファのバイト単位の最低サイズ。ただし次の場合は、空文字列のサイズに相当する1
    -
  • 初期化誤りなど正しくないタイムゾーン情報が指定されたことを検知した場合
  • -
-
-
See Also
GS_TIME_ZONE_STRING_SIZE_MAX
-
Since
4.3
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC size_t GS_API_CALL gsFormatZonedTime (GSTimestamp timestamp,
GSCharstrBuf,
size_t bufSize,
const GSTimeZonezone 
)
-
- -

指定のタイムゾーン設定を用い、TQLのTIMESTAMP値表記に従って時刻の文字列表現を求めます。

-
Parameters
- - - - - -
[in]timestamp対象とする時刻
[out]strBuf出力先の文字列バッファ。bufSizeを超えない範囲で終端文字を含む文字列を出力します。bufSize1以上であり、出力に必要とするサイズに満たない場合、終端文字をバッファ範囲内の最終位置に設定し、残りの領域に可能な限り文字列を出力します。strBufNULLまたはbufSize0の場合、文字列は出力されません。
[in]bufSize出力先の文字列バッファについての、終端文字を含んだバイト単位のサイズ
[in]zoneタイムゾーン設定情報へのポインタ値。NULLの場合はgsFormatTimeと同様に振る舞います。
-
-
-
Returns
終端文字を含んだ、出力に必要とする文字列バッファのバイト単位の最低サイズ。ただし次の場合は、空文字列のサイズに相当する1
    -
  • サポート範囲外の時刻が指定された場合
  • -
  • 初期化誤りなど正しくないタイムゾーン情報が指定されたことを検知した場合
  • -
-
-
See Also
GS_TIME_STRING_SIZE_MAX
-
Since
4.3
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC int64_t GS_API_CALL gsGetTimeDiff (GSTimestamp timestamp1,
GSTimestamp timestamp2,
GSTimeUnit timeUnit 
)
-
- -

二つの時刻間の差分値を求めます。

-
timestamp1に対して、timestamp2で減じた値を求めます。
-
現バージョンでは、算出の際に使用されるタイムゾーンはUTCです。
-
Parameters
- - - - -
[in]timestamp1対象とする一つ目の時刻
[in]timestamp2対象とする二つ目の時刻
[in]timeUnit求める差分値の単位
-
-
-
Returns
差分値。次の場合はint64_t型の値として取りうる範囲の最小値
    -
  • サポート範囲外の時刻や単位が指定された場合
  • -
-
-
See Also
gsGetZonedTimeDiff
-
Since
4.3
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC int64_t GS_API_CALL gsGetTimeField (GSTimestamp timestamp,
GSTimeUnit timeUnit 
)
-
- -

GSTimestampを構成するフィールド値の一つを取得します。

-
現バージョンでは、取得の際に使用されるタイムゾーンはUTCです。
-
Parameters
- - - -
[in]timestamp対象とする時刻
[in]timeUnit取得するフィールド値の単位
-
-
-
Returns
指定の条件に合致するフィールド値。次の場合は-1
    -
  • サポート範囲外の時刻や単位が指定された場合
  • -
-
-
See Also
gsGetZonedTimeField
-
Since
4.3
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC int64_t GS_API_CALL gsGetTimeZoneOffset (const GSTimeZonezone,
GSTimeUnit timeUnit 
)
-
- -

指定のタイムゾーンのオフセット値を取得します。

-
Parameters
- - - -
[in]zone対象とするタイムゾーン情報
[in]timeUnit求めるオフセット値の単位
-
-
-
Returns
差分値。次の場合はint64_t型の値として取りうる範囲の最小値
    -
  • サポート外の単位が指定された場合
  • -
  • 初期化誤りなど正しくないタイムゾーン情報が指定されたことを検知した場合
  • -
-
-
Since
4.3
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC int64_t GS_API_CALL gsGetZonedTimeDiff (GSTimestamp timestamp1,
GSTimestamp timestamp2,
GSTimeUnit timeUnit,
const GSTimeZonezone 
)
-
- -

指定のタイムゾーン設定を用い、二つの時刻間の差分値を求めます。

-
timestamp1に対して、timestamp2で減じた値を求めます。
-
演算に用いる時間の単位によっては、タイムゾーン設定の影響を受けない場合があります。
-
Parameters
- - - - - -
[in]timestamp1対象とする一つ目の時刻
[in]timestamp2対象とする二つ目の時刻
[in]timeUnit求める差分値の単位
[in]zoneタイムゾーン設定情報へのポインタ値。NULLの場合はgsGetTimeDiffと同様に振る舞います。
-
-
-
Returns
差分値。次の場合はint64_t型の値として取りうる範囲の最小値
    -
  • サポート範囲外の時刻や単位が指定された場合
  • -
  • 初期化誤りなど正しくないタイムゾーン情報が指定されたことを検知した場合
  • -
-
-
Since
4.3
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC int64_t GS_API_CALL gsGetZonedTimeField (GSTimestamp timestamp,
GSTimeUnit timeUnit,
const GSTimeZonezone 
)
-
- -

指定のタイムゾーン設定を用い、GSTimestampを構成するフィールド値の一つを取得します。

-
演算に用いる時間の単位によっては、タイムゾーン設定の影響を受けない場合があります。
-
Parameters
- - - - -
[in]timestamp対象とする時刻
[in]timeUnit取得するフィールド値の単位
[in]zoneタイムゾーン設定情報へのポインタ値。NULLの場合はgsGetTimeFieldと同様に振る舞います。
-
-
-
Returns
指定の条件に合致するフィールド値。次の場合は-1
    -
  • サポート範囲外の時刻や単位が指定された場合
  • -
  • 初期化誤りなど正しくないタイムゾーン情報が指定されたことを検知した場合
  • -
-
-
Since
4.3
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSBool GS_API_CALL gsParseTime (const GSCharstr,
GSTimestamptimestamp 
)
-
- -

TQLのTIMESTAMP値表記に従い、指定の文字列に対応するGSTimestamp値を求めます。

-
TIMESTAMP値表記に含まれるタイムゾーン設定を使用します。
-
Parameters
- - - -
[in]str対象とする時刻を表す文字列
[out]timestamp格納先のGSTimestamp変数へのポインタ値。戻り値がGS_FALSEとなる場合、このポインタ値がNULLではない限り-1が格納されます。
-
-
-
Returns
GSTimestamp値への変換に成功し結果を格納できたかどうか。次の場合、GS_FALSEを返します。
    -
  • 時刻の文字列表記と一致しない文字列が指定された場合
  • -
  • サポート範囲外の時刻が指定された場合
  • -
  • 引数にNULLが指定された場合
  • -
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSBool GS_API_CALL gsParseTimeZone (const GSCharstr,
GSTimeZonezone 
)
-
- -

TQLのTIMESTAMP値表記に従い、指定のタイムゾーン文字列に対応するGSTimeZone値を求めます。

-
Parameters
- - - -
[in]str対象とするタイムゾーン文字列
[out]zone格納先のGSTimeZone変数へのポインタ値。戻り値がGS_FALSEとなる場合、このポインタ値がNULLではない限りGS_TIME_ZONE_INITIALIZERと同一の内容の初期値が格納されます。
-
-
-
Returns
GSTimestamp値への変換に成功し結果を格納できたかどうか。次の場合、GS_FALSEを返します。
    -
  • タイムゾーン情報のの文字列表記と一致しない文字列が指定された場合
  • -
  • サポート範囲外のタイムゾーンが指定された場合
  • -
  • 引数にNULLが指定された場合
  • -
-
-
Since
4.3
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSBool GS_API_CALL gsSetTimeField (GSTimestamptimestamp,
int64_t field,
GSTimeUnit timeUnit 
)
-
- -

GSTimestampを構成するフィールド値の一つを設定します。

-
現バージョンでは、設定の際に使用されるタイムゾーンはUTCです。
-
Parameters
- - - - -
[in,out]timestamp対象とする時刻
[in]field設定するフィールド値
[in]timeUnit設定するフィールド値の単位
-
-
-
Returns
フィールド値を設定できたかどうか。次の場合はGS_FALSE
    -
  • timestamp引数にNULLが指定された場合
  • -
  • サポート範囲外の時刻や単位、フィールド値が指定された場合
  • -
-
-
See Also
gsGetZonedTimeField
-
Since
4.3
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSBool GS_API_CALL gsSetTimeZoneOffset (GSTimeZonezone,
int64_t offset,
GSTimeUnit timeUnit 
)
-
- -

指定のタイムゾーンのオフセット値を設定します。

-
Parameters
- - - - -
[out]zone対象とするタイムゾーン情報
[in]offsetオフセット値
[in]timeUnitオフセット値の単位
-
-
-
Returns
オフセット値を設定できたかどうか。次の場合はGS_FALSE
    -
  • zone引数にNULLが指定された場合
  • -
  • サポート範囲外のオフセット値や単位が指定された場合
  • -
-
-
Since
4.3
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GS_DLL_PUBLIC GSBool GS_API_CALL gsSetZonedTimeField (GSTimestamptimestamp,
int64_t field,
GSTimeUnit timeUnit,
const GSTimeZonezone 
)
-
- -

指定のタイムゾーン設定を用い、GSTimestampを構成するフィールド値の一つを設定します。

-
演算に用いる時間の単位によっては、タイムゾーン設定の影響を受けない場合があります。
-
Parameters
- - - - - -
[in,out]timestamp対象とする時刻
[in]field設定するフィールド値
[in]timeUnit設定するフィールド値の単位
[in]zoneタイムゾーン設定情報へのポインタ値。NULLの場合はgsSetTimeFieldと同様に振る舞います。
-
-
-
Returns
フィールド値を設定できたかどうか。次の場合はGS_FALSE
    -
  • timestamp引数にNULLが指定された場合
  • -
  • サポート範囲外の時刻や単位、フィールド値が指定された場合
  • -
  • 初期化誤りなど正しくないタイムゾーン情報が指定されたことを検知した場合
  • -
-
-
Since
4.3
- -
-
-
-
-
-
GSBindingTag Struct Reference
-
-
- -

ロウオブジェクトとロウデータとの対応関係を表すバインディング情報です。 More...

- -

#include <gridstore.h>

-

Detailed Description

-

ロウオブジェクトとロウデータとの対応関係を表すバインディング情報です。

-
- -
-
-
-
GSBlobTag Struct Reference
-
-
- -

ロウオブジェクトにおけるBLOB構造を表します。 More...

- -

#include <gridstore.h>

- - - - - - - - -

-Public Attributes

-size_t size
 BLOBデータのサイズです。
 
-const void * data
 BLOBデータの格納先ポインタです。
 
-

Detailed Description

-

ロウオブジェクトにおけるBLOB構造を表します。

-
- -
-
-
-
GSCollectionPropertiesTag Struct Reference
-
-
- -

コレクションの構成オプションを表します。 More...

- -

#include <gridstore.h>

-

Detailed Description

-

コレクションの構成オプションを表します。

-
Note
現バージョンでは使用されておりません。
-
- -
-
-
-
GSColumnCompressionTag Struct Reference
-
-
- -

特定のカラムの圧縮設定を表します。 More...

- -

#include <gridstore.h>

- - - - - - - - - - - - - - - - - -

-Public Attributes

const GSCharcolumnName
 設定対象のカラムの名前です。More...
 
GSBool relative
 間引き圧縮における判定基準値として、相対誤差を適用するかどうかを示します。More...
 
double rate
 相対誤差あり間引き圧縮における、値がとりうる範囲を基準とした誤差境界値の比率です。More...
 
double span
 相対誤差あり間引き圧縮における、値がとりうる範囲の最大値と最小値の差です。More...
 
double width
 絶対誤差あり間引き圧縮における、誤差境界の幅です。More...
 
-

Detailed Description

-

特定のカラムの圧縮設定を表します。

-
時系列を対象とした誤差あり間引き圧縮のカラム別設定に使用します。
-

Member Data Documentation

- -
-
- - - - -
const GSChar* GSColumnCompressionTag::columnName
-
- -

設定対象のカラムの名前です。

-
間引き圧縮方式(GS_COMPRESSION_HI)を選択し、次の型のカラムに対して指定した場合のみ、カラム別の圧縮設定として使用できます。 -
- -
-
- -
-
- - - - -
double GSColumnCompressionTag::rate
-
- -

相対誤差あり間引き圧縮における、値がとりうる範囲を基準とした誤差境界値の比率です。

-
値がとりうる範囲は、spanメンバと対応します。また、比率は0以上1以下でなければ、時系列を作成することができません。
-
誤差あり間引き圧縮方式(GS_COMPRESSION_HI)において、判定基準値として相対誤差を選択(GSColumnCompressionTag::relativeGS_TRUEを指定)した場合のみ有効です。
- -
-
- -
-
- - - - -
GSBool GSColumnCompressionTag::relative
-
- -

間引き圧縮における判定基準値として、相対誤差を適用するかどうかを示します。

-
間引き圧縮方式(GS_COMPRESSION_HI)以外を選択した場合は無視されます。
- -
-
- -
-
- - - - -
double GSColumnCompressionTag::span
-
- -

相対誤差あり間引き圧縮における、値がとりうる範囲の最大値と最小値の差です。

-
誤差あり間引き圧縮方式(GS_COMPRESSION_HI)において、判定基準値として相対誤差を選択(GSColumnCompressionTag::relativeGS_TRUEを指定)した場合のみ有効です。
- -
-
- -
-
- - - - -
double GSColumnCompressionTag::width
-
- -

絶対誤差あり間引き圧縮における、誤差境界の幅です。

-
誤差あり間引き圧縮方式(GS_COMPRESSION_HI)において、判定基準値として相対誤差を選択(GSColumnCompressionTag::relativeGS_TRUEを指定)した場合のみ有効です。
- -
-
- - -
-
-
-
GSColumnInfoTag Struct Reference
-
-
- -

カラムのスキーマに関する情報を表します。 More...

- -

#include <gridstore.h>

- - - - - - - - - - - - - - -

-Public Attributes

-const GSCharname
 カラム名です。
 
-GSType type
 カラムの型、すなわち、カラムに対応する各フィールド値の型です。
 
GSIndexTypeFlags indexTypeFlags
 索引種別を示すフラグ値のビット和です。More...
 
GSTypeOption options
 カラムに関するオプション設定を示すフラグ値のビット和です。More...
 
-

Detailed Description

-

カラムのスキーマに関する情報を表します。

-

Member Data Documentation

- -
-
- - - - -
GSIndexTypeFlags GSColumnInfoTag::indexTypeFlags
-
- -

索引種別を示すフラグ値のビット和です。

-
GS_INDEX_FLAG_DEFAULTは索引種別が未設定であることを示します。
-
Since
1.5
- -
-
- -
-
- - - - -
GSTypeOption GSColumnInfoTag::options
-
- -

カラムに関するオプション設定を示すフラグ値のビット和です。

-
現バージョンでは、NOT NULL制約または初期値に関連する、以下のフラグ値のみを含めることができます。 -
-
Since
3.5
- -
-
- - -
-
-
-
GSContainerInfoTag Struct Reference
-
-
- -

特定のコンテナに関する情報を表します。 More...

- -

#include <gridstore.h>

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Attributes

-const GSCharname
 コンテナ名です。
 
-GSContainerType type
 コンテナの種別です。
 
-size_t columnCount
 カラム数です。
 
const GSColumnInfocolumnInfoList
 カラム情報のリストです。More...
 
GSBool rowKeyAssigned
 ロウキーに対応するカラムが設定されているかどうかを示す真偽値です。More...
 
GSBool columnOrderIgnorable
 カラム順序が無視できるかどうかを示す真偽値です。More...
 
const GSTimeSeriesPropertiestimeSeriesProperties
 時系列構成オプションです。More...
 
size_t triggerInfoCount
 トリガ情報のエントリ数です。More...
 
const GSTriggerInfotriggerInfoList
 トリガ情報の一覧です。More...
 
const GSChardataAffinity
 データ配置最適化のために用いられる、コンテナ間の類似性(データアフィニティ)を示す文字列です。More...
 
size_t indexInfoCount
 索引情報のエントリ数です。More...
 
const GSIndexInfoindexInfoList
 索引情報の一覧です。More...
 
size_t rowKeyColumnCount
 ロウキーを構成するカラム列についての、カラム数です。More...
 
const int32_t * rowKeyColumnList
 ロウキーを構成するカラム列についての、0から始まるカラム番号一覧です。More...
 
-

Detailed Description

-

特定のコンテナに関する情報を表します。

-

Member Data Documentation

- -
-
- - - - -
const GSColumnInfo* GSContainerInfoTag::columnInfoList
-
- -

カラム情報のリストです。

-
カラム数と同一の長さのGSColumnInfoの配列です。各要素はカラムの定義順と対応します。
- -
-
- -
-
- - - - -
GSBool GSContainerInfoTag::columnOrderIgnorable
-
- -

カラム順序が無視できるかどうかを示す真偽値です。

-
See Also
gsPutContainerGeneral
-
Since
1.5
- -
-
- -
-
- - - - -
const GSChar* GSContainerInfoTag::dataAffinity
-
- -

データ配置最適化のために用いられる、コンテナ間の類似性(データアフィニティ)を示す文字列です。

-
同一クラスタノード上の同一管理領域内に格納されるコンテナについて、配置先を最適化するために使用されます。
-
データアフィニティが同一のコンテナの内容は、近接する配置先に格納される可能性が高くなります。また、解放期限が設定され、近接する配置先に格納された時系列について、登録頻度などの変更パターンが類似している場合、解放期限に到達したロウの解放処理が効率的に行われる可能性が高くなります。
-
コンテナの定義において使用できるデータアフィニティ文字列の文字種や長さには制限があります。具体的には、GridDBテクニカルリファレンスを参照してください。ただし、文字列を設定した時点で必ずしもすべての制限を検査するとは限りません。特に記載のない限り、データアフィニティ文字列が使用される操作では、ASCIIの大文字・小文字表記の違いが区別されます。
-
値がNULLの場合、標準設定を優先することを示します。
-
Since
2.1
- -
-
- -
-
- - - - -
size_t GSContainerInfoTag::indexInfoCount
-
- -

索引情報のエントリ数です。

-
Since
3.5
- -
-
- -
-
- - - - -
const GSIndexInfo* GSContainerInfoTag::indexInfoList
-
- -

索引情報の一覧です。

-
Since
3.5
- -
-
- -
-
- - - - -
GSBool GSContainerInfoTag::rowKeyAssigned
-
- -

ロウキーに対応するカラムが設定されているかどうかを示す真偽値です。

-
現バージョンでは、コンテナが単一カラムからなるロウキーを持つ場合、対応するカラム番号は0となります。
-
任意のロウキー構成を扱うには、GSContainerInfo::rowKeyColumnListを使用します。
- -
-
- -
-
- - - - -
size_t GSContainerInfoTag::rowKeyColumnCount
-
- -

ロウキーを構成するカラム列についての、カラム数です。

-
Since
4.3
- -
-
- -
-
- - - - -
const int32_t* GSContainerInfoTag::rowKeyColumnList
-
- -

ロウキーを構成するカラム列についての、0から始まるカラム番号一覧です。

-
Since
4.3
- -
-
- -
-
- - - - -
const GSTimeSeriesProperties* GSContainerInfoTag::timeSeriesProperties
-
- -

時系列構成オプションです。

-
Since
1.5
- -
-
- -
-
- - - - -
size_t GSContainerInfoTag::triggerInfoCount
-
- -

トリガ情報のエントリ数です。

-
Since
1.5
- -
-
- -
-
- - - - -
const GSTriggerInfo* GSContainerInfoTag::triggerInfoList
-
- -

トリガ情報の一覧です。

-
Since
1.5
- -
-
- - -
-
-
-
GSContainerRowEntryTag Struct Reference
-
-
- -

複数のコンテナの複数のロウを一括して操作する場合に用いる、コンテナ別のロウ内容エントリです。 More...

- -

#include <gridstore.h>

- - - - - - - - - - - -

-Public Attributes

-const GSCharcontainerName
 コンテナ名です。
 
void *const * rowList
 ロウオブジェクトへのアドレスのリストです。More...
 
-size_t rowCount
 ロウオブジェクトの個数です。
 
-

Detailed Description

-

複数のコンテナの複数のロウを一括して操作する場合に用いる、コンテナ別のロウ内容エントリです。

-
Since
1.5
-

Member Data Documentation

- -
-
- - - - -
void* const* GSContainerRowEntryTag::rowList
-
- -

ロウオブジェクトへのアドレスのリストです。

-
現バージョンでは、GSRowのアドレスのみを要素として含めることができます。
- -
-
- - -
-
-
-
GSIndexInfoTag Struct Reference
-
-
- -

索引の設定内容を表します。 More...

- -

#include <gridstore.h>

- - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Attributes

const GSCharname
 索引名です。More...
 
GSIndexTypeFlags type
 索引種別を示すフラグ値です。More...
 
int32_t column
 索引に対応するカラムのカラム番号です。More...
 
const GSCharcolumnName
 索引に対応するカラムのカラム名です。More...
 
size_t columnCount
 索引に対応する任意個数のカラムのカラム番号の列のカラム数です。More...
 
const int32_t * columnList
 索引に対応する任意個数のカラムのカラム番号の列です。More...
 
size_t columnNameCount
 索引に対応する任意個数のカラムのカラム名の列のカラム数です。More...
 
const GSChar *const * columnNameList
 索引に対応する任意個数のカラムのカラム名の列です。More...
 
-

Detailed Description

-

索引の設定内容を表します。

-
Since
3.5
-

Member Data Documentation

- -
-
- - - - -
int32_t GSIndexInfoTag::column
-
- -

索引に対応するカラムのカラム番号です。

-
単一のカラムからなるカラム番号の列が設定された場合と同等であるとみなされます。
-
Since
3.5
- -
-
- -
-
- - - - -
size_t GSIndexInfoTag::columnCount
-
- -

索引に対応する任意個数のカラムのカラム番号の列のカラム数です。

-
Since
4.3
- -
-
- -
-
- - - - -
const int32_t* GSIndexInfoTag::columnList
-
- -

索引に対応する任意個数のカラムのカラム番号の列です。

-
Since
4.3
- -
-
- -
-
- - - - -
const GSChar* GSIndexInfoTag::columnName
-
- -

索引に対応するカラムのカラム名です。

-
単一のカラムからなるカラム名の列が設定された場合と同等であるとみなされます。
-
Since
3.5
- -
-
- -
-
- - - - -
size_t GSIndexInfoTag::columnNameCount
-
- -

索引に対応する任意個数のカラムのカラム名の列のカラム数です。

-
Since
4.3
- -
-
- -
-
- - - - -
const GSChar* const* GSIndexInfoTag::columnNameList
-
- -

索引に対応する任意個数のカラムのカラム名の列です。

-
Since
4.3
- -
-
- -
-
- - - - -
const GSChar* GSIndexInfoTag::name
-
- -

索引名です。

-
Since
3.5
- -
-
- -
-
- - - - -
GSIndexTypeFlags GSIndexInfoTag::type
-
- -

索引種別を示すフラグ値です。

-
デフォルトまたは任意個数の索引種別を含めることができます。複数個の索引種別を含める場合は、各種別のフラグ値のビット和により表現します。コンテナ情報の一部として得られた索引情報では、デフォルトを除くいずれか一つの索引種別のみが設定されます。
-
Since
3.5
- -
-
- - -
-
-
-
GSPropertyEntryTag Struct Reference
-
-
- -

プロパティの構成エントリです。 More...

- -

#include <gridstore.h>

- - - - - - - - -

-Public Attributes

-const GSCharname
 プロパティエントリの名前です。
 
-const GSCharvalue
 プロパティエントリの値です。
 
-

Detailed Description

-

プロパティの構成エントリです。

-
- -
-
-
-
GSQueryAnalysisEntryTag Struct Reference
-
-
- -

クエリプランならびにクエリ処理解析結果を構成する一連の情報の一つを示します。 More...

- -

#include <gridstore.h>

- - - - - - - - - - - - - - - - - - - - -

-Public Attributes

int32_t id
 一連のエントリ列における、このエントリの位置を示すIDです。More...
 
int32_t depth
 他のエントリとの関係を表すための、深さです。More...
 
const GSChartype
 このエントリが示す情報の種別です。More...
 
const GSCharvalueType
 このエントリが示す情報に対応付けられた値の型名です。More...
 
-const GSCharvalue
 このエントリが示す情報に対応付けられた値の文字列表現です。
 
-const GSCharstatement
 このエントリが示す情報に対応するTQL文の一部です。
 
-

Detailed Description

-

クエリプランならびにクエリ処理解析結果を構成する一連の情報の一つを示します。

-
TQLのEXPLAIN文ならびEXPLAIN ANALYZE文の実行結果を保持するために使用します。1つの実行結果は、このエントリの列により表現されます。
-

Member Data Documentation

- -
-
- - - - -
int32_t GSQueryAnalysisEntryTag::depth
-
- -

他のエントリとの関係を表すための、深さです。

-
このエントリより小さな値のIDを順にたどり、このエントリの深さより1だけ浅いエントリが存在した場合、このエントリは、該当するエントリの内容をより詳しく説明するためのものであることを意味します。
- -
-
- -
-
- - - - -
int32_t GSQueryAnalysisEntryTag::id
-
- -

一連のエントリ列における、このエントリの位置を示すIDです。

-
TQLを実行した結果を受け取る場合、IDは1から順に割り当てられます。
- -
-
- -
-
- - - - -
const GSChar* GSQueryAnalysisEntryTag::type
-
- -

このエントリが示す情報の種別です。

-
実行時間といった解析結果の種別、クエリプランの構成要素の種別などを表します。
- -
-
- -
-
- - - - -
const GSChar* GSQueryAnalysisEntryTag::valueType
-
- -

このエントリが示す情報に対応付けられた値の型名です。

-
実行時間といった解析結果などに対応する値の型名です。型の名称は、TQLで定義された基本型のうち次のものです。
    -
  • STRING
  • -
  • BOOL
  • -
  • BYTE
  • -
  • SHORT
  • -
  • INTEGER
  • -
  • LONG
  • -
  • FLOAT
  • -
  • DOUBLE
  • -
-
- -
-
- - -
-
-
-
GSRowKeyPredicateEntryTag Struct Reference
-
-
- -

複数のコンテナに対する取得条件を表すための、コンテナ別の合致条件エントリです。 More...

- -

#include <gridstore.h>

- - - - - - - - -

-Public Attributes

-const GSCharcontainerName
 コンテナ名です。
 
-GSRowKeyPredicatepredicate
 コンテナのロウキーについての合致条件です。
 
-

Detailed Description

-

複数のコンテナに対する取得条件を表すための、コンテナ別の合致条件エントリです。

-
Since
1.5
-
- -
-
-
-
GSTimeSeriesPropertiesTag Struct Reference
-
-
- -

時系列を新規作成または変更する際に使用される、オプションの構成情報を表します。 More...

- -

#include <gridstore.h>

- - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Attributes

int32_t rowExpirationTime
 ロウの有効期限の基準となる経過期間です。More...
 
GSTimeUnit rowExpirationTimeUnit
 ロウの有効期限の基準とする経過時間の単位です。More...
 
int32_t compressionWindowSize
 間引き圧縮において連続して間引きされるロウの最大期間です。More...
 
GSTimeUnit compressionWindowSizeUnit
 間引き圧縮において連続して間引きされるロウの最大期間の単位です。More...
 
-GSCompressionMethod compressionMethod
 時系列圧縮方式の種別です。
 
size_t compressionListSize
 カラム別圧縮設定(compressionList)のエントリ数です。More...
 
GSColumnCompressioncompressionList
 カラム別の圧縮設定です。More...
 
int32_t expirationDivisionCount
 期限に到達したロウデータの解放単位と対応する、有効期間に対しての分割数です。More...
 
-

Detailed Description

-

時系列を新規作成または変更する際に使用される、オプションの構成情報を表します。

-
カラム名の表記、もしくは、個別に圧縮設定できるカラム数の上限などの内容の妥当性について、必ずしも検査するとは限りません。
-

Member Data Documentation

- -
-
- - - - -
GSColumnCompression* GSTimeSeriesPropertiesTag::compressionList
-
- -

カラム別の圧縮設定です。

-
エントリ数が0の場合、時系列を新規作成または更新する際に無視されます。
- -
-
- -
-
- - - - -
size_t GSTimeSeriesPropertiesTag::compressionListSize
-
- -

カラム別圧縮設定(compressionList)のエントリ数です。

-
1つの時系列に対してパラメータ設定できるカラムの上限数については、GridDBテクニカルリファレンスを参照してください。上限を超えたオプションを指定して時系列を作成することはできません。
- -
-
- -
-
- - - - -
int32_t GSTimeSeriesPropertiesTag::compressionWindowSize
-
- -

間引き圧縮において連続して間引きされるロウの最大期間です。

-
この期間が設定された時系列のロウについて、前方のロウと指定の期間以上時刻が離れていた場合、間引き圧縮として間引き可能な条件を満たしていたとしても、間引かれなくなります。
-
時系列圧縮方式としてGS_COMPRESSION_NOが設定されていた場合、この期間の設定は無視されます。
-
時系列圧縮方式としてGS_COMPRESSION_HIまたはGS_COMPRESSION_SSが設定されており、この期間として0以下の値が設定された場合、TIMESTAMP型の取りうる値の範囲全体が期間として設定されたとみなされます。
-
前方のロウと指定の期間以上時刻が離れておらず、かつ、間引き圧縮として間引き可能な条件を満たしていたとしても、格納先の内部の配置などによっては間引かれない場合があります。
- -
-
- -
-
- - - - -
GSTimeUnit GSTimeSeriesPropertiesTag::compressionWindowSizeUnit
-
- -

間引き圧縮において連続して間引きされるロウの最大期間の単位です。

-
最大期間の値が明示的に設定されていた場合、GS_TIME_UNIT_YEARまたはGS_TIME_UNIT_MONTHが設定されたオプションを指定して、時系列を作成することはできません。
- -
-
- -
-
- - - - -
int32_t GSTimeSeriesPropertiesTag::expirationDivisionCount
-
- -

期限に到達したロウデータの解放単位と対応する、有効期間に対しての分割数です。

-
分割数を設定すると、期限に到達したロウデータの管理領域を解放するための条件を制御できます。期限に到達したロウデータが分割数に相当する期間だけ集まった時点で解放しようとします。
-
分割数の上限については、GridDBテクニカルリファレンスを参照してください。上限を超えたオプションを指定して時系列を作成することはできません。
-
値が負の場合、分割数が設定されていないことを示します。0が設定されたオプションを指定して時系列を作成することはできません。
-
ロウの有効期限の基準となる経過期間の設定がない場合、この分割数の設定は無視されます。一方、ロウの有効期限の基準となる経過期間の設定がある場合にこの分割数の設定を省略すると、作成される時系列にはGridDBクラスタ上のデフォルトの分割数が設定されます。
-
Since
2.0
- -
-
- -
-
- - - - -
int32_t GSTimeSeriesPropertiesTag::rowExpirationTime
-
- -

ロウの有効期限の基準となる経過期間です。

-
ロウの有効期限の時刻は、ロウキーの時刻から指定の経過期間を加算することで求まります。有効期限の時刻がGridDB上の現在時刻よりも古いロウは、有効期限の切れたロウとみなされます。期限切れのロウは、検索や更新といったロウ操作の対象から外れ、存在しないものとみなされます。対応するGridDB上の内部データは、随時削除されます。
-
Attention
有効期限超過の判定に使用される現在時刻は、GridDBの各ノードの実行環境に依存します。したがって、ネットワークの遅延や実行環境の時刻設定のずれなどにより、このプロセスの実行環境の現在時刻より前に期限切れ前のロウにアクセスできなくなる場合や、この現在時刻より後に期限切れロウにアクセスできる場合があります。意図しないロウの喪失を避けるために、最低限必要な期間よりも大きな値を設定することを推奨します。
-
作成済みの時系列の設定を変更することはできません。
-
値が負の場合、有効期限はないものとみなされ、明示的に削除操作を行わない限りロウが削除されなくなります。0が設定されたオプションを指定して時系列を作成することはできません。
- -
-
- -
-
- - - - -
GSTimeUnit GSTimeSeriesPropertiesTag::rowExpirationTimeUnit
-
- -

ロウの有効期限の基準とする経過時間の単位です。

-
有効期限の期間値が設定されていた場合、GS_TIME_UNIT_YEARまたはGS_TIME_UNIT_MONTHが設定されたオプションを指定して、時系列を作成することはできません。
- -
-
- - -
-
-
-
GSTimeZoneTag Struct Reference
-
-
- -

タイムゾーン情報を表します。 More...

- -

#include <gridstore.h>

-

Detailed Description

-

タイムゾーン情報を表します。

-
Since
4.3
-
- -
-
-
-
GSTriggerInfoTag Struct Reference
-
-
- -

トリガに関する情報を表します。 More...

- -

#include <gridstore.h>

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Attributes

-const GSCharname
 トリガ名です。
 
-GSTriggerType type
 トリガ種別です。
 
-const GSCharuri
 通知先URIです。
 
-GSTriggerEventTypeFlags eventTypeFlags
 監視対象とする更新操作種別です。
 
-const GSChar *const * columnSet
 通知対象とするカラム名の集合です。
 
-size_t columnCount
 通知対象とするカラム名の数です。
 
-const GSCharjmsDestinationType
 JMS通知で使用するJMSデスティネーション種別です。
 
-const GSCharjmsDestinationName
 JMS通知で使用するJMSデスティネーション名です。
 
-const GSCharuser
 通知先サーバに接続する際のユーザ名です。
 
-const GSCharpassword
 通知先サーバに接続する際のパスワードです。
 
-

Detailed Description

-

トリガに関する情報を表します。

-
Since
1.5
-
- -
-
-
-
GSValueTag Union Reference
-
-
- -

ロウフィールドに格納できるいずれかの型の値です。 More...

- -

#include <gridstore.h>

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Attributes

-const GSCharasString
 STRING型のロウフィールドに対応する値です。
 
-GSBool asBool
 BOOL型のロウフィールドに対応する値です。
 
-int8_t asByte
 BYTE型のロウフィールドに対応する値です。
 
-int16_t asShort
 SHORT型のロウフィールドに対応する値です。
 
-int32_t asInteger
 INTEGER型のロウフィールドに対応する値です。
 
-int64_t asLong
 LONG型のロウフィールドに対応する値です。
 
-float asFloat
 FLOAT型のロウフィールドに対応する値です。
 
-double asDouble
 DOUBLE型のロウフィールドに対応する値です。
 
-GSTimestamp asTimestamp
 TIMESTAMP型のロウフィールドに対応する値です。
 
-const GSCharasGeometry
 GEOMETRY型のロウフィールドに対応する値です。
 
-GSBlob asBlob
 BLOB型のロウフィールドに対応する値です。
 
-struct {
   size_t   length
 配列の要素数です。
 
   union {
      const void *   data
 配列の要素列へのアドレスです。
 
      const GSChar *const *   asString
 STRING型配列の要素列へのアドレスです。
 
      const GSBool *   asBool
 BOOL型配列の要素列へのアドレスです。
 
      const int8_t *   asByte
 BYTE型配列の要素列へのアドレスです。
 
      const int16_t *   asShort
 SHORT型配列の要素列へのアドレスです。
 
      const int32_t *   asInteger
 INTEGER型配列の要素列へのアドレスです。
 
      const int64_t *   asLong
 LONG型配列の要素列へのアドレスです。
 
      const float *   asFloat
 FLOAT型配列の要素列へのアドレスです。
 
      const double *   asDouble
 DOUBLE型配列の要素列へのアドレスです。
 
      const GSTimestamp *   asTimestamp
 TIMESTAMP型配列の要素列へのアドレスです。
 
   }   elements
 配列の要素です。
 
asArray
 配列型のロウフィールドに対応する値です。
 
-

Detailed Description

-

ロウフィールドに格納できるいずれかの型の値です。

-
Since
1.5
-
- -
-
- - -
- -
- -
-

1.2 APIサンプル

-
- - - -
- -
-

1.2.1 基本: コレクション操作のサンプル

-
#include "gridstore.h"
-#include <stdlib.h>
-#include <stdio.h>
-
-typedef struct {
-	const GSChar *name;
-	GSBool status;
-	uint64_t count;
-	const int8_t *lob;
-	size_t lobSize;
-} Person;
-
-GS_STRUCT_BINDING(Person,
-	GS_STRUCT_BINDING_KEY(name, GS_TYPE_STRING)
-	GS_STRUCT_BINDING_ELEMENT(status, GS_TYPE_BOOL)
-	GS_STRUCT_BINDING_ELEMENT(count, GS_TYPE_LONG)
-	GS_STRUCT_BINDING_ARRAY(lob, lobSize, GS_TYPE_BYTE));
-
-// コレクションデータの操作
-int sample1(const char *args[5]) {
-	static const int8_t personLob[] = { 65, 66, 67, 68, 69, 70, 71, 72, 73, 74 };
-	static const GSBool update = GS_TRUE;
-
-	GSGridStore *store;
-	GSCollection *col;
-	GSQuery *query;
-	GSRowSet *rs;
-	Person person;
-	GSResult ret;
-
-	const GSPropertyEntry props[] = {
-			{ "notificationAddress", args[0] },
-			{ "notificationPort", args[1] },
-			{ "clusterName", args[2] },
-			{ "user", args[3] },
-			{ "password", args[4] } };
-	const size_t propCount = sizeof(props) / sizeof(*props);
-
-	// GridStoreインスタンスの取得
-	gsGetGridStore(gsGetDefaultFactory(), props, propCount, &store);
-
-	// コレクションの作成
-	gsPutCollection(store, "col01",
-			GS_GET_STRUCT_BINDING(Person), NULL, GS_FALSE, &col);
-
-	// カラムに索引を設定
-	gsCreateIndex(col, "count", GS_INDEX_FLAG_DEFAULT);
-
-	// 自動コミットモードをオフ
-	gsSetAutoCommit(col, GS_FALSE);
-
-	// Rowのデータを用意
-	person.name = "name01";
-	person.status = GS_FALSE;
-	person.count = 1;
-	person.lob = personLob;
-	person.lobSize = sizeof(personLob);
-
-	// KV形式でRowを操作: RowKeyは"name01"
-	gsPutRow(col, NULL, &person, NULL);	// 登録
-	gsGetRowForUpdate(col, &person.name, &person, NULL);	// 取得(更新用にロック)
-	gsDeleteRow(col, &person.name, NULL);	// 削除
-
-	// KV形式でRowを操作: RowKeyは"name02"
-	gsPutRowByString(col, "name02", &person, NULL);	// 登録(RowKeyを指定)
-
-	// トランザクションの確定(ロック解除)
-	gsCommit(col);
-
-	// コレクション内のRowを検索(クエリ使用)
-	gsQuery(col, "select * where name = 'name02'", &query);
-
-	// 検索したRowの取得と更新
-	gsFetch(query, update, &rs);
-	while (gsHasNextRow(rs)) {
-		size_t i;
-
-		// 検索したRowの更新
-		gsGetNextRow(rs, &person);
-		person.count += 1;
-		ret = gsUpdateCurrentRow(rs, &person);
-		if (!GS_SUCCEEDED(ret)) break;
-
-		printf("Person:");
-		printf(" name=%s", person.name);
-		printf(" status=%s", person.status ? "true" : "false");
-		printf(" count=%d", (int) person.count);
-		printf(" lob=[");
-		for (i = 0; i < person.lobSize; i++) {
-			if (i > 0) printf(", ");
-			printf("%d", (int) person.lob[i]);
-		}
-		printf("]\n");
-	}
-
-	// トランザクションの確定
-	ret = gsCommit(col);
-
-	// リソースの解放
-	gsCloseGridStore(&store, GS_TRUE);
-
-	return (GS_SUCCEEDED(ret) ? EXIT_SUCCESS : EXIT_FAILURE);
-}
-
- - -
- -
- -
-

1.2.2 基本: 時系列操作のサンプル ― 登録・範囲取得

-
#include "gridstore.h"
-#include <stdlib.h>
-#include <stdio.h>
-
-typedef struct {
-	GSTimestamp timestamp;
-	GSBool active;
-	double voltage;
-} Point;
-
-GS_STRUCT_BINDING(Point,
-	GS_STRUCT_BINDING_KEY(timestamp, GS_TYPE_TIMESTAMP)
-	GS_STRUCT_BINDING_ELEMENT(active, GS_TYPE_BOOL)
-	GS_STRUCT_BINDING_ELEMENT(voltage, GS_TYPE_DOUBLE));
-
-// 時系列データの登録と範囲取得
-int sample2(const char *args[5]) {
-	GSGridStore *store;
-	GSTimeSeries *ts;
-	Point point;
-	GSTimestamp now;
-	GSTimestamp before;
-	GSQuery *query;
-	GSRowSet *rs;
-	GSResult ret = !GS_RESULT_OK;
-
-	const GSPropertyEntry props[] = {
-			{ "notificationAddress", args[0] },
-			{ "notificationPort", args[1] },
-			{ "clusterName", args[2] },
-			{ "user", args[3] },
-			{ "password", args[4] } };
-	const size_t propCount = sizeof(props) / sizeof(*props);
-
-	// GridStoreインスタンスの取得
-	gsGetGridStore(gsGetDefaultFactory(), props, propCount, &store);
-
-	// 時系列の作成 (既存の場合は取得のみ)
-	gsPutTimeSeries(store, "point01",
-			GS_GET_STRUCT_BINDING(Point), NULL, GS_FALSE, &ts);
-
-	// 時系列要素のデータを用意
-	point.active = GS_FALSE;
-	point.voltage = 100;
-
-	// 時系列要素の登録(グリッドストア側で時刻設定)
-	gsAppendTimeSeriesRow(ts, &point, NULL);
-
-	// 指定区間の時系列の取得: 6時間前から直近まで
-	now = gsCurrentTime();
-	before = gsAddTime(now, -6, GS_TIME_UNIT_HOUR);
-
-	gsQueryByTimeSeriesRange(ts, before, now, &query);
-	ret = gsFetch(query, GS_FALSE, &rs);
-	while (gsHasNextRow(rs)) {
-		GSChar timeStr[GS_TIME_STRING_SIZE_MAX];
-
-		ret = gsGetNextRow(rs, &point);
-		if (!GS_SUCCEEDED(ret)) break;
-
-		gsFormatTime(point.timestamp, timeStr, sizeof(timeStr));
-		printf("Time=%s", timeStr);
-		printf(" Active=%s", point.active ? "true" : "false");
-		printf(" Voltage=%.1lf\n", point.voltage);
-	}
-
-	// リソースの解放
-	gsCloseGridStore(&store, GS_TRUE);
-
-	return (GS_SUCCEEDED(ret) ? EXIT_SUCCESS : EXIT_FAILURE);
-}
-
- - -
- -
- -
-

1.2.3 基本: 時系列操作のサンプル ― 検索・集計

-
#include "gridstore.h"
-#include <stdlib.h>
-#include <stdio.h>
-
-typedef struct {
-	GSTimestamp timestamp;
-	GSBool active;
-	double voltage;
-} Point;
-
-GS_STRUCT_BINDING(Point,
-	GS_STRUCT_BINDING_KEY(timestamp, GS_TYPE_TIMESTAMP)
-	GS_STRUCT_BINDING_ELEMENT(active, GS_TYPE_BOOL)
-	GS_STRUCT_BINDING_ELEMENT(voltage, GS_TYPE_DOUBLE));
-
-// 時系列データの検索と集計
-int sample3(const char *args[5]) {
-	GSGridStore *store;
-	GSTimeSeries *ts;
-	GSQuery *query;
-	GSRowSet *rs;
-	GSResult ret = !GS_RESULT_OK;
-
-	// 読み取りのみなので、一貫性レベルを緩和(デフォルトはIMMEDIATE)
-	const GSPropertyEntry props[] = {
-			{ "notificationAddress", args[0] },
-			{ "notificationPort", args[1] },
-			{ "clusterName", args[2] },
-			{ "user", args[3] },
-			{ "password", args[4] },
-			{ "consistency", "EVENTUAL" } };
-	const size_t propCount = sizeof(props) / sizeof(*props);
-
-	// GridStoreインスタンスの取得
-	gsGetGridStore(gsGetDefaultFactory(), props, propCount, &store);
-
-	// 時系列の取得(既存の場合は取得のみ)
-	// ※sample2と同じPoint構造体を使用
-	gsGetTimeSeries(store, "point01", GS_GET_STRUCT_BINDING(Point), &ts);
-
-	// 停止中にもかかわらず電圧が基準値以上の箇所を検索
-	gsQuery(ts,
-			"select * from point01"
-			" where not active and voltage > 50", &query);
-	gsFetch(query, GS_FALSE, &rs);
-
-	while (gsHasNextRow(rs)) {
-		// 各異常ポイントについて調査
-
-		GSTimestamp hot;
-		Point hotPoint;
-		GSTimestamp start;
-		Point startPoint;
-		GSTimestamp end;
-		GSAggregationResult *avg;
-		double avgValue;
-		GSChar hotStr[GS_TIME_STRING_SIZE_MAX];
-
-		ret = gsGetNextRow(rs, &hotPoint);
-		if (!GS_SUCCEEDED(ret)) break;
-		hot = hotPoint.timestamp;
-
-		// 10分前付近のデータを取得
-		start = gsAddTime(hot, -10, GS_TIME_UNIT_MINUTE);
-		gsGetRowByBaseTime(
-				ts, start, GS_TIME_OPERATOR_NEXT, &startPoint, NULL);
-
-		// 前後10分間の平均値を計算
-		end = gsAddTime(hot, 10, GS_TIME_UNIT_MINUTE);
-		gsAggregateTimeSeries(
-				ts, start, end, "voltage", GS_AGGREGATION_AVERAGE, &avg);
-
-		ret = gsGetAggregationValueAsDouble(avg, &avgValue, NULL);
-		if (!GS_SUCCEEDED(ret)) break;
-
-		gsFormatTime(hot, hotStr, sizeof(hotStr));
-
-		printf("[Alert] %s", hotStr);
-		printf(" start=%.1lf", startPoint.voltage);
-		printf(" hot=%.1lf", hotPoint.voltage);
-		printf(" avg=%.1lf\n", avgValue);
-	}
-
-	// リソースの解放
-	gsCloseGridStore(&store, GS_TRUE);
-
-	return (GS_SUCCEEDED(ret) ? EXIT_SUCCESS : EXIT_FAILURE);
-}
-
- - -
- -
- -
-

1.2.4 応用: コレクション操作のサンプル ― コンテナ情報を用いてスキーマ定義

-
#include "gridstore.h"
-#include <stdlib.h>
-#include <stdio.h>
-
-// コンテナ情報を用いてスキーマ定義
-int sample4(const char *args[5]) {
-	static const int8_t personLob[] = { 65, 66, 67, 68, 69, 70, 71, 72, 73, 74 };
-	static const GSBool update = GS_TRUE;
-
-	GSGridStore *store;
-	GSContainer *container;
-	GSContainerInfo info = GS_CONTAINER_INFO_INITIALIZER;
-	GSColumnInfo columnInfo = GS_COLUMN_INFO_INITIALIZER;
-	GSColumnInfo columnInfoList[4];
-	GSRow *row;
-	GSQuery *query;
-	GSRowSet *rs;
-	GSResult ret;
-
-	const GSPropertyEntry props[] = {
-			{ "notificationAddress", args[0] },
-			{ "notificationPort", args[1] },
-			{ "clusterName", args[2] },
-			{ "user", args[3] },
-			{ "password", args[4] } };
-	const size_t propCount = sizeof(props) / sizeof(*props);
-
-	// GridStoreインスタンスの取得
-	gsGetGridStore(gsGetDefaultFactory(), props, propCount, &store);
-
-	// コンテナ情報を作成
-	columnInfo.name = "name";
-	columnInfo.type = GS_TYPE_STRING;
-	columnInfoList[0] = columnInfo;
-
-	columnInfo.name = "status";
-	columnInfo.type = GS_TYPE_BOOL;
-	columnInfoList[1] = columnInfo;
-
-	columnInfo.name = "count";
-	columnInfo.type = GS_TYPE_LONG;
-	columnInfoList[2] = columnInfo;
-
-	columnInfo.name = "lob";
-	columnInfo.type = GS_TYPE_BYTE_ARRAY;
-	columnInfoList[3] = columnInfo;
-
-	info.type = GS_CONTAINER_COLLECTION;
-	info.name = "col01";
-	info.columnCount = sizeof(columnInfoList) / sizeof(*columnInfoList);
-	info.columnInfoList = columnInfoList;
-	info.rowKeyAssigned = GS_TRUE;
-
-	// コレクションの作成
-	gsPutContainerGeneral(store, NULL, &info, GS_FALSE, &container);
-
-	// カラムに索引を設定
-	gsCreateIndex(container, "count", GS_INDEX_FLAG_DEFAULT);
-
-	// 自動コミットモードをオフ
-	gsSetAutoCommit(container, GS_FALSE);
-
-	// Rowのデータを用意
-	{
-		const GSChar *name = "name01";
-		GSBool status = GS_FALSE;
-		int64_t count = 1;
-		const int8_t *lobData = personLob;
-		size_t lobSize = sizeof(personLob);
-
-		gsCreateRowByStore(store, &info, &row);
-		gsSetRowFieldByString(row, 0, name);
-		gsSetRowFieldByBool(row, 1, status);
-		gsSetRowFieldByLong(row, 2, count);
-		gsSetRowFieldByByteArray(row, 3, lobData, lobSize);
-	}
-
-	// KV形式でRowを操作: RowKeyは"name01"
-	gsPutRow(container, NULL, row, NULL);	// 登録
-	gsGetRowByString(container, "name01", row, update, NULL);	// 取得(更新用にロック)
-	gsDeleteRowByString(container, "name01", NULL);	// 削除
-
-	// KV形式でRowを操作: RowKeyは"name02"
-	gsPutRowByString(container, "name02", row, NULL);	// 登録(RowKeyを指定)
-
-	// 不要ロウオブジェクトの解放
-	gsCloseRow(&row);
-
-	// トランザクションの確定(ロック解除)
-	gsCommit(container);
-
-	// コレクション内のRowを検索(クエリ使用)
-	gsQuery(container, "select * where name = 'name02'", &query);
-
-	// 検索したRowの取得と更新
-	gsFetch(query, update, &rs);
-	while (gsHasNextRow(rs)) {
-		const GSChar *name;
-		GSBool status;
-		int64_t count;
-		const int8_t *lobData;
-		size_t lobSize;
-		size_t i;
-
-		gsCreateRowByContainer(container, &row);
-
-		// 検索したRowの更新
-		gsGetNextRow(rs, row);
-		gsGetRowFieldAsString(row, 0, &name);
-		gsGetRowFieldAsBool(row, 1, &status);
-		gsGetRowFieldAsLong(row, 2, &count);
-		gsGetRowFieldAsByteArray(row, 3, &lobData, &lobSize);
-		count += 1;
-		ret = gsUpdateCurrentRow(rs, row);
-		if (!GS_SUCCEEDED(ret) || name == NULL) break;
-
-		printf("Person:");
-		printf(" name=%s", name);
-		printf(" status=%s", status ? "true" : "false");
-		printf(" count=%d", (int) count);
-		printf(" lob=[");
-		for (i = 0; i < lobSize; i++) {
-			if (i > 0) {
-				printf(", ");
-			}
-			printf("%d", (int) lobData[i]);
-		}
-		printf("]\n");
-	}
-
-	// トランザクションの確定
-	ret = gsCommit(container);
-
-	// コレクションの削除
-	gsDropContainer(store, info.name);
-
-	// リソースの解放
-	gsCloseGridStore(&store, GS_TRUE);
-
-	return (GS_SUCCEEDED(ret) ? EXIT_SUCCESS : EXIT_FAILURE);
-}
-
- - -
- -
- -
-

1.2.5 応用: コレクション操作のサンプル ― 複数コンテナ一括操作

-
#include "gridstore.h"
-#include <stdlib.h>
-#include <stdio.h>
-
-#define SAMPLE5_CONTAINER_COUNT 5
-#define SAMPLE5_ROW_COUNT 2
-
-// 複数コンテナ一括操作
-int sample5(const char *args[5]) {
-	static const int8_t personLob[] = { 65, 66, 67, 68, 69, 70, 71, 72, 73, 74 };
-
-	static const GSChar *const containerNameList[SAMPLE5_CONTAINER_COUNT] = {
-			"col01", "col02", "col03", "col04", "col05"
-	};
-	static const GSChar *const keyList[SAMPLE5_ROW_COUNT] = {
-			"name01", "name02"
-	};
-
-	static const size_t containerCount = SAMPLE5_CONTAINER_COUNT;
-	static const size_t rowCount = SAMPLE5_ROW_COUNT;
-
-	GSGridStore *store;
-	GSContainer *containerList[SAMPLE5_CONTAINER_COUNT];
-	GSContainerInfo info = GS_CONTAINER_INFO_INITIALIZER;
-	GSColumnInfo columnInfo = GS_COLUMN_INFO_INITIALIZER;
-	GSColumnInfo columnInfoList[4];
-	GSResult ret;
-	int failed = 0;
-	size_t i, j;
-
-	const GSPropertyEntry props[] = {
-			{ "notificationAddress", args[0] },
-			{ "notificationPort", args[1] },
-			{ "clusterName", args[2] },
-			{ "user", args[3] },
-			{ "password", args[4] } };
-	const size_t propCount = sizeof(props) / sizeof(*props);
-
-	// GridStoreインスタンスの取得
-	gsGetGridStore(gsGetDefaultFactory(), props, propCount, &store);
-
-	//コンテナ定義情報を作成
-	columnInfo.name = "name";
-	columnInfo.type = GS_TYPE_STRING;
-	columnInfoList[0] = columnInfo;
-
-	columnInfo.name = "status";
-	columnInfo.type = GS_TYPE_BOOL;
-	columnInfoList[1] = columnInfo;
-
-	columnInfo.name = "count";
-	columnInfo.type = GS_TYPE_LONG;
-	columnInfoList[2] = columnInfo;
-
-	columnInfo.name = "lob";
-	columnInfo.type = GS_TYPE_BYTE_ARRAY;
-	columnInfoList[3] = columnInfo;
-
-	info.type = GS_CONTAINER_COLLECTION;
-	info.columnCount = sizeof(columnInfoList) / sizeof(*columnInfoList);
-	info.columnInfoList = columnInfoList;
-	info.rowKeyAssigned = GS_TRUE;
-
-	// コレクションの作成
-	for (i = 0; i < containerCount; i++) {
-		const GSChar *name = containerNameList[i];
-		gsPutContainerGeneral(store, name, &info, GS_FALSE, &containerList[i]);
-	}
-
-	// 複数コレクションのRowを一括登録
-	{
-		void *allRowList[SAMPLE5_CONTAINER_COUNT][SAMPLE5_ROW_COUNT];
-		GSContainerRowEntry inEntry = GS_CONTAINER_ROW_ENTRY_INITIALIZER;
-		GSContainerRowEntry inEntryList[SAMPLE5_CONTAINER_COUNT];
-
-		GSBool status = GS_FALSE;
-		int64_t count = 1;
-		const int8_t *lobData = personLob;
-		size_t lobSize = sizeof(personLob);
-
-		for (i = 0; i < containerCount; i++) {
-			for (j = 0; j < rowCount; j++) {
-				GSRow *row;
-				const GSChar *name = keyList[j];
-
-				gsCreateRowByStore(store, &info, &row);
-				gsSetRowFieldByString(row, 0, name);
-				gsSetRowFieldByBool(row, 1, status);
-				gsSetRowFieldByLong(row, 2, count);
-				gsSetRowFieldByByteArray(row, 3, lobData, lobSize);
-				count++;
-
-				allRowList[i][j] = row;
-			}
-			inEntry.containerName = containerNameList[i];
-			inEntry.rowList = allRowList[i];
-			inEntry.rowCount = rowCount;
-			inEntryList[i] = inEntry;
-		}
-
-		ret = gsPutMultipleContainerRows(store, inEntryList, containerCount);
-		failed |= !GS_SUCCEEDED(ret);
-
-		for (i = 0; i < containerCount; i++) {
-			for (j = 0; j < rowCount; j++) {
-				GSRow *row = allRowList[i][j];
-				gsCloseRow(&row);
-			}
-		}
-	}
-
-	// 複数コレクションのRowを一括取得
-	{
-		GSRowKeyPredicateEntry predEntry =
-				GS_ROW_KEY_PREDICATE_ENTRY_INITIALIZER;
-		GSRowKeyPredicateEntry predEntryValueList[SAMPLE5_CONTAINER_COUNT];
-		const GSRowKeyPredicateEntry *predEntryList[SAMPLE5_CONTAINER_COUNT];
-		const GSContainerRowEntry *outEntryList;
-		size_t outEntryCount;
-		GSRow *allRowList[SAMPLE5_CONTAINER_COUNT][SAMPLE5_ROW_COUNT];
-
-		// 取得条件を構築
-		for (i = 0; i < containerCount; i++) {
-			GSRowKeyPredicate *predicate;
-
-			gsCreateRowKeyPredicate(store, GS_TYPE_STRING, &predicate);
-			for (j = 0; j < rowCount; j++) {
-				gsAddPredicateKeyByString(predicate, keyList[j]);
-			}
-
-			predEntry.containerName = containerNameList[i];
-			predEntry.predicate = predicate;
-			predEntryValueList[i] = predEntry;
-			predEntryList[i] = &predEntryValueList[i];
-		}
-
-		ret = gsGetMultipleContainerRows(
-				store, predEntryList, containerCount,
-				&outEntryList, &outEntryCount);
-		failed |= !GS_SUCCEEDED(ret);
-
-		// 取得結果ロウ列をコピー
-		for (i = 0; i < containerCount || i < outEntryCount; i++) {
-			GSContainerRowEntry outEntry = GS_CONTAINER_ROW_ENTRY_INITIALIZER;
-			if (i < outEntryCount) {
-				outEntry = outEntryList[i];
-			}
-			for (j = 0; j < rowCount || j < outEntry.rowCount; j++) {
-				GSRow *row = NULL;
-				if (j < outEntry.rowCount) {
-					row = (GSRow*) outEntry.rowList[j];
-				}
-				if (i < containerCount && j < rowCount) {
-					allRowList[i][j] = row;
-				}
-				else {
-					gsCloseRow(&row);
-				}
-			}
-		}
-
-		// 取得結果を出力
-		for (i = 0; i < containerCount; i++) {
-			for (j = 0; j < rowCount; j++) {
-				GSRow *row = allRowList[i][j];
-				const GSChar *name;
-				int64_t count;
-
-				gsGetRowFieldAsString(row, 0, &name);
-				gsGetRowFieldAsLong(row, 2, &count);
-
-				failed |= (name == NULL);
-				if (failed) break;
-
-				printf("Person[%d]:", (int) i);
-				printf(" name=%s", name);
-				printf(" count=%d\n", (int) count);
-
-				gsCloseRow(&row);
-			}
-			gsCloseRowKeyPredicate(&predEntryValueList[i].predicate);
-		}
-	}
-
-	// 複数コレクションのRowを一括検索(クエリ使用)
-	{
-		GSQuery *queryList[SAMPLE5_CONTAINER_COUNT];
-
-		for (i = 0; i < containerCount; i++) {
-			const GSChar *tql = "select * where count >= 0";
-			gsQuery(containerList[i], tql, &queryList[i]);
-		}
-
-		ret = gsFetchAll(store, queryList, containerCount);
-		failed |= !GS_SUCCEEDED(ret);
-
-		for (i = 0; i < containerCount; i++) {
-			GSRowSet *rs;
-			GSRow *row;
-
-			gsCreateRowByContainer(containerList[i], &row);
-			gsGetRowSet(queryList[i], &rs);
-
-			while (gsHasNextRow(rs)) {
-				const GSChar *name;
-				GSBool status;
-				int64_t count;
-				const int8_t *lobData;
-				size_t lobSize;
-
-				ret = gsGetNextRow(rs, row);
-				failed |= !GS_SUCCEEDED(ret);
-				if (failed) break;
-
-				gsGetRowFieldAsString(row, 0, &name);
-				gsGetRowFieldAsBool(row, 1, &status);
-				gsGetRowFieldAsLong(row, 2, &count);
-				gsGetRowFieldAsByteArray(row, 3, &lobData, &lobSize);
-				count += 1;
-
-				failed |= (name == NULL);
-				if (failed) break;
-
-				printf("Person[%d]:", (int) i);
-				printf(" name=%s", name);
-				printf(" status=%s", status ? "true" : "false");
-				printf(" count=%d", (int) count);
-				printf(" lob=[");
-				for (j = 0; j < lobSize; j++) {
-					if (j > 0) {
-						printf(", ");
-					}
-					printf("%d", (int) lobData[j]);
-				}
-				printf("]\n");
-			}
-
-			gsCloseRow(&row);
-			gsCloseRowSet(&rs);
-			gsCloseQuery(&queryList[i]);
-		}
-	}
-
-	// コレクションの削除
-	for (i = 0; i < containerCount; i++) {
-		const GSChar *name = containerNameList[i];
-		gsDropContainer(store, name);
-	}
-
-	// リソースの解放
-	gsCloseGridStore(&store, GS_TRUE);
-
-	return (failed ? EXIT_FAILURE : EXIT_SUCCESS);
-}
-
- - -
-
-
- -
- -
-

2 付録

-
- - - -
- -
-

2.1 値の範囲

-
- - -

-値の上限などの値の範囲を説明します。 -システムの制限値については、GridDBテクニカルリファレンスを参照してください。 -

- -
- -
-

2.1.1 基本型の取りうる値

-
- -

以下の基本型の取りうる値は、次の通りです。 -

- - -
- - - -- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
取りうる値
ブール(BOOL)型真または偽
BYTE型-27から27-1
SHORT型-215から215-1
INTEGER型-231から231-1
LONG型-263から263-1
FLOAT型IEEE754準拠
DOUBLE型IEEE754準拠
時刻(TIMESTAMP)型西暦1970年1月1日のはじめから西暦9999年12月31日の終わりまで(UTC相当)。精度はミリ秒。うるう秒は扱わない
- - - - -
- -

-空間(GEOMETRY)型でTQL演算に使用できる値はST_GeomFromText関数が返す任意の値です。このうちコンテナに格納できる値はQUADRATICSURFACE構造を除いたものです。 -

-

-APIを通じて基本型とマッピングされるオブジェクトの表現範囲は、上記の範囲と異なる場合があります。上記の範囲を超えた値を持つオブジェクトの内容をコンテナに格納することはできませんが、検索条件の構築など、その他操作の可否を規定するものではありません。たとえば、Java APIにて時刻型にマッピングされるjava.util.Dateオブジェクトでは、コンテナに格納できない西暦1970年より前の年の時刻も表現でき、その値をロウキーの条件としてRowKeyPredicateオブジェクトや時系列のサンプリングクエリに含めることができます。しかし、その条件でロウを取得しようとした時点でエラーが検出される可能性があります。マッピングされるオブジェクトの具体的な表現範囲は、個々のオブジェクトの型の定義を参照してください。 -

-
-
-
- -
- -
-

3 商標

-
- - -
    -
  • -GridDBは日本国内における東芝デジタルソリューションズ株式会社の登録商標です。 -
  • -
  • -OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国における登録商標です。文中の社名、商品名等は各社の商標または登録商標である場合があります。 -
  • -
  • -その他製品名は、それぞれの所有者の商標または登録商標です。 - -

    -Copyright (c) 2013-2019 Toshiba Digital Solutions Corporation -

  • -
-
-
-
-
-
- - \ No newline at end of file + + + + +GridDB C APIリファレンス + + + + + + + + +
+ +

GridDB C APIリファレンス

+ + + + + + +
+

1 API

+
+ +
※【注意点】 C APIの空間データはGridDB Community Editionではサポートしていません。Java APIを用いてください。 +
+ +
+ +
+

1.1 API一覧

+
+
+
C API
+
+
+

GridDBの公開C言語インタフェースを定義します

+ + + +
+
+
+
gridstore.h File Reference
+
+
+ +

GridDBのC言語向け公開API. +More...

+
#include <stdlib.h>
+#include <stdint.h>
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Classes

struct  GSPreciseTimestampTag
 GridDB上の高精度のTIMESTAMP型と対応する時刻型です。現バージョンではナノ秒単位までの時刻を保持します。More...
 
struct  GSBlobTag
 ロウオブジェクトにおけるBLOB構造を表します。More...
 
struct  GSPropertyEntryTag
 プロパティの構成エントリです。More...
 
struct  GSColumnCompressionTag
 特定のカラムの圧縮設定を表します。More...
 
struct  GSCollectionPropertiesTag
 コレクションの構成オプションを表します。More...
 
struct  GSTimeSeriesPropertiesTag
 時系列を新規作成または変更する際に使用される、オプションの構成情報を表します。More...
 
struct  GSColumnInfoTag
 カラムのスキーマに関する情報を表します。More...
 
struct  GSTriggerInfoTag
 トリガに関する情報を表します。More...
 
struct  GSIndexInfoTag
 索引の設定内容を表します。More...
 
struct  GSContainerInfoTag
 特定のコンテナに関する情報を表します。More...
 
struct  GSBindingTag
 ロウオブジェクトとロウデータとの対応関係を表すバインディング情報です。More...
 
struct  GSQueryAnalysisEntryTag
 クエリプランならびにクエリ処理解析結果を構成する一連の情報の一つを示します。More...
 
struct  GSContainerRowEntryTag
 複数のコンテナの複数のロウを一括して操作する場合に用いる、コンテナ別のロウ内容エントリです。More...
 
struct  GSRowKeyPredicateEntryTag
 複数のコンテナに対する取得条件を表すための、コンテナ別の合致条件エントリです。More...
 
union  GSValueTag
 ロウフィールドに格納できるいずれかの型の値です。More...
 
struct  GSTimeZoneTag
 タイムゾーン情報を表します。More...
 
struct  GSTimestampFormatOptionTag
 日時フォーマットに関するオプション情報を表します。More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Macros

+#define GS_CLIENT_VERSION_MAJOR   5
 GridDBクライアントのメジャーバージョンを表す数値です。
 
+#define GS_CLIENT_VERSION_MINOR   3
 GridDBクライアントのマイナーバージョンを表す数値です。
 
+#define GS_TRUE   1
 真であることを示すブール型値です。
 
+#define GS_FALSE   0
 偽であることを示すブール型値です。
 
#define GS_RESULT_OK   0
 GridDBに対する命令の実行に成功したことを示す、実行結果コードの値です。More...
 
#define GS_SUCCEEDED(result)   ((result) == GS_RESULT_OK)
 実行結果コードに基づきGridDBに対する命令の実行に成功したかどうかのブール値を求めるマクロです。More...
 
#define GS_PRECISE_TIMESTAMP_INITIALIZER   { 0, 0 }
 GSPreciseTimestampの初期化子です。More...
 
+#define GS_COLUMN_COMPRESSION_INITIALIZER   { NULL, GS_FALSE, 0, 0, 0 }
 GSColumnCompressionの初期化子です。
 
+#define GS_COLLECTION_PROPERTIES_INITIALIZER   { 0 }
 GSCollectionPropertiesの初期化子です。
 
#define GS_TIME_SERIES_PROPERTIES_INITIALIZER
 GSTimeSeriesPropertiesの初期化子です。More...
 
+#define GS_COLUMN_INFO_INITIALIZER   { NULL, GS_TYPE_STRING, GS_INDEX_FLAG_DEFAULT, 0 }
 GSColumnInfoの初期化子です。
 
+#define GS_TRIGGER_INFO_INITIALIZER   { NULL, GS_TRIGGER_REST, NULL, 0, NULL, 0, NULL, NULL, NULL }
 GSTriggerInfoの初期化子です。
 
#define GS_INDEX_INFO_INITIALIZER   { NULL, GS_INDEX_FLAG_DEFAULT, -1, NULL, 0, NULL, 0, NULL }
 GSIndexInfoの初期化子です。More...
 
+#define GS_CONTAINER_INFO_INITIALIZER
 GSContainerInfoの初期化子です。
 
+#define GS_QUERY_ANALYSIS_ENTRY_INITIALIZER   { 0, 0, NULL, NULL, NULL, NULL }
 GSQueryAnalysisEntryの初期化子です。
 
#define GS_CONTAINER_ROW_ENTRY_INITIALIZER   { NULL, NULL, 0 }
 GSContainerRowEntryの初期化子です。More...
 
#define GS_ROW_KEY_PREDICATE_ENTRY_INITIALIZER   { NULL, NULL }
 GSRowKeyPredicateEntryの初期化子です。More...
 
#define GS_TIME_ZONE_INITIALIZER   { { 0 } }
 GSTimeZoneの初期化子です。More...
 
#define GS_TIMESTAMP_DEFAULT   0
 時刻1970-01-01T00:00:00Zに相当するGSTimestamp値です。More...
 
#define GS_TIMESAMP_FORMAT_OPTION_INITIALIZER   { NULL }
 GSTimestampFormatOptionの初期化子です。More...
 
#define GS_TIME_STRING_SIZE_MAX   GS_INTERNAL_TIME_STRING_SIZE_MAX
 TIMESTAMP型値の文字列表現を格納するための文字列バッファにおける、終端文字を含むバイト単位での最大サイズです。More...
 
#define GS_TIME_ZONE_STRING_SIZE_MAX   8
 GSTimeZone値の文字列表現を格納するための文字列バッファにおける、終端文字を含むバイト単位での最大サイズです。More...
 
#define GS_GET_STRUCT_BINDING(type)   GS_STRUCT_BINDING_GETTER_NAME(type) ()
 ユーザ定義構造体とコンテナスキーマとの対応関係の定義を取得します。More...
 
#define GS_STRUCT_BINDING(type, entries)
 ユーザ定義構造体とコンテナスキーマとの対応関係を定義します。More...
 
#define GS_STRUCT_BINDING_NAMED_ELEMENT(name, member, memberType)
 カラム名を指定して、ユーザ定義構造体メンバと基本型カラムスキーマとの対応関係を定義します。More...
 
#define GS_STRUCT_BINDING_NAMED_KEY(name, member, memberType)
 カラム名を指定して、ユーザ定義構造体メンバとロウキー付き基本型カラムスキーマとの対応関係を定義します。More...
 
#define GS_STRUCT_BINDING_NAMED_ARRAY(name, member, sizeMember, elementType)
 カラム名を指定して、ユーザ定義構造体メンバと配列型カラムスキーマとの対応関係を定義します。More...
 
#define GS_STRUCT_BINDING_ELEMENT(member, memberType)
 ユーザ定義構造体メンバと基本型カラムスキーマとの対応関係を定義します。More...
 
#define GS_STRUCT_BINDING_KEY(member, memberType)
 ユーザ定義構造体メンバとロウキー付き基本型カラムスキーマとの対応関係を定義します。More...
 
#define GS_STRUCT_BINDING_ARRAY(member, sizeMember, elementType)
 ユーザ定義構造体メンバと配列型カラムスキーマとの対応関係を定義します。More...
 
#define GS_STRUCT_BINDING_COMPOSITE_KEY(member, bindingType)
 ユーザ定義構造体メンバと複合ロウキー付きカラムスキーマとの対応関係を定義します。More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Typedefs

typedef char GSChar
 GridDB APIで使用される標準の文字の型です。More...
 
typedef char GSBool
 GridDB APIで使用されるブール型です。More...
 
+typedef int32_t GSEnum
 列挙型
 
typedef int64_t GSTimestamp
 GridDB上の通常精度のTIMESTAMP型と対応する時刻型です。ミリ秒単位のUNIX時刻を保持します。More...
 
typedef struct
+GSGridStoreFactoryTag 
GSGridStoreFactory
 GSGridStoreインスタンスを管理します。More...
 
typedef struct GSGridStoreTag GSGridStore
 1つのGridDBシステムが管理するデータ全体を操作するための機能を提供します。More...
 
typedef struct GSContainerTag GSContainer
 同一タイプのロウ集合からなるGridDBの構成要素に対しての、管理機能を提供します。More...
 
+typedef struct GSQueryTag GSQuery
 特定のGSContainerに対応付けられたクエリを保持し、結果取得方法の設定ならびに実行・結果取得を行う機能を持ちます。
 
typedef struct GSRowSetTag GSRowSet
 クエリ実行より求めたロウの集合を管理します。More...
 
typedef struct
+GSAggregationResultTag 
GSAggregationResult
 集計演算の結果を保持します。More...
 
typedef GSContainer GSCollection
 ロウ集合を汎用的に管理するためのコンテナです。More...
 
typedef GSContainer GSTimeSeries
 時刻をロウキーとする、時系列処理に特化したコンテナです。More...
 
typedef struct GSRowTag GSRow
 任意のスキーマについて汎用的にフィールド操作できるロウです。More...
 
typedef GSRow GSRowKey
 ロウキーに関するカラムのみから構成されるGSRowの一種です。More...
 
typedef struct GSRowKeyPredicateTag GSRowKeyPredicate
 ロウキーの合致条件を表します。More...
 
typedef struct
+GSPartitionControllerTag 
GSPartitionController
 パーティション状態の取得や操作のためのコントローラです。More...
 
+typedef int32_t GSResult
 GridDBに対する命令の実行結果コードの型です。
 
typedef struct
+GSPreciseTimestampTag 
GSPreciseTimestamp
 GridDB上の高精度のTIMESTAMP型と対応する時刻型です。現バージョンではナノ秒単位までの時刻を保持します。More...
 
+typedef struct GSBlobTag GSBlob
 ロウオブジェクトにおけるBLOB構造を表します。
 
+typedef struct GSPropertyEntryTag GSPropertyEntry
 プロパティの構成エントリです。
 
typedef GSEnum GSFetchOption
 
typedef GSEnum GSQueryOrder
 
typedef int32_t GSIndexTypeFlags
 
typedef GSEnum GSAggregation
 
typedef GSEnum GSInterpolationMode
 
typedef GSEnum GSTimeOperator
 
typedef GSEnum GSGeometryOperator
 
typedef GSEnum GSCompressionMethod
 
typedef GSEnum GSTimeUnit
 
typedef GSEnum GSContainerType
 
typedef GSEnum GSType
 
typedef int32_t GSTypeOption
 カラムに関するオプション設定を示すフラグ値のビット和です。More...
 
typedef GSEnum GSRowSetType
 
typedef struct
+GSColumnCompressionTag 
GSColumnCompression
 特定のカラムの圧縮設定を表します。More...
 
typedef struct
+GSCollectionPropertiesTag 
GSCollectionProperties
 コレクションの構成オプションを表します。More...
 
typedef struct
+GSTimeSeriesPropertiesTag 
GSTimeSeriesProperties
 時系列を新規作成または変更する際に使用される、オプションの構成情報を表します。More...
 
+typedef struct GSColumnInfoTag GSColumnInfo
 カラムのスキーマに関する情報を表します。
 
typedef GSEnum GSTriggerType
 
typedef int32_t GSTriggerEventTypeFlags
 
typedef struct GSTriggerInfoTag GSTriggerInfo
 トリガに関する情報を表します。More...
 
typedef struct GSIndexInfoTag GSIndexInfo
 索引の設定内容を表します。More...
 
+typedef struct GSContainerInfoTag GSContainerInfo
 特定のコンテナに関する情報を表します。
 
+typedef struct GSBindingTag GSBinding
 ロウオブジェクトとロウデータとの対応関係を表すバインディング情報です。
 
typedef struct
+GSQueryAnalysisEntryTag 
GSQueryAnalysisEntry
 クエリプランならびにクエリ処理解析結果を構成する一連の情報の一つを示します。More...
 
typedef struct
+GSContainerRowEntryTag 
GSContainerRowEntry
 複数のコンテナの複数のロウを一括して操作する場合に用いる、コンテナ別のロウ内容エントリです。More...
 
typedef struct
+GSRowKeyPredicateEntryTag 
GSRowKeyPredicateEntry
 複数のコンテナに対する取得条件を表すための、コンテナ別の合致条件エントリです。More...
 
typedef union GSValueTag GSValue
 ロウフィールドに格納できるいずれかの型の値です。More...
 
typedef struct GSTimeZoneTag GSTimeZone
 タイムゾーン情報を表します。More...
 
typedef struct
+GSTimestampFormatOptionTag 
GSTimestampFormatOption
 日時フォーマットに関するオプション情報を表します。More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Enumerations

enum  GSFetchOptionTag { GS_FETCH_LIMIT, +GS_FETCH_PARTIAL_EXECUTION = (GS_FETCH_LIMIT + 2) + }
 クエリ実行結果を取得する際のオプション項目です。More...
 
enum  GSQueryOrderTag { GS_ORDER_ASCENDING, +GS_ORDER_DESCENDING + }
 クエリにおける要求ロウ順序を表します。More...
 
enum  GSIndexTypeFlagTag { GS_INDEX_FLAG_DEFAULT = -1, +GS_INDEX_FLAG_TREE = 1 << 0, +GS_INDEX_FLAG_HASH = 1 << 1, +GS_INDEX_FLAG_SPATIAL = 1 << 2 + }
 GSContainerに設定する索引の種別を示します。More...
 
enum  GSAggregationTag {
+  GS_AGGREGATION_MINIMUM, +GS_AGGREGATION_MAXIMUM, +GS_AGGREGATION_TOTAL, +GS_AGGREGATION_AVERAGE, +
+  GS_AGGREGATION_VARIANCE, +GS_AGGREGATION_STANDARD_DEVIATION, +GS_AGGREGATION_COUNT, +GS_AGGREGATION_WEIGHTED_AVERAGE +
+ }
 ロウ集合またはその特定のカラムに対する、集計演算の方法を示します。More...
 
enum  GSInterpolationModeTag { GS_INTERPOLATION_LINEAR_OR_PREVIOUS, +GS_INTERPOLATION_EMPTY + }
 ロウの補間方法の種別を表します。More...
 
enum  GSTimeOperatorTag { GS_TIME_OPERATOR_PREVIOUS, +GS_TIME_OPERATOR_PREVIOUS_ONLY, +GS_TIME_OPERATOR_NEXT, +GS_TIME_OPERATOR_NEXT_ONLY + }
 GSTimeSeriesのキー時刻に基づく、ロウの特定方法を表します。More...
 
enum  GSGeometryOperatorTag { GS_GEOMETRY_OPERATOR_INTERSECT + }
 空間範囲同士の関係性についての制約を定義します。More...
 
enum  GSCompressionMethodTag { GS_COMPRESSION_NO, +GS_COMPRESSION_SS, +GS_COMPRESSION_HI + }
 圧縮方式の種別を表します。More...
 
enum  GSTimeUnitTag {
+  GS_TIME_UNIT_YEAR, +GS_TIME_UNIT_MONTH, +GS_TIME_UNIT_DAY, +GS_TIME_UNIT_HOUR, +
+  GS_TIME_UNIT_MINUTE, +GS_TIME_UNIT_SECOND, +GS_TIME_UNIT_MILLISECOND +
+ }
 時系列処理で用いる時間の単位を示します。More...
 
enum  GSContainerTypeTag { GS_CONTAINER_COLLECTION, +GS_CONTAINER_TIME_SERIES + }
 コンテナの種別を表します。More...
 
enum  GSTypeTag {
+  GS_TYPE_STRING, +GS_TYPE_BOOL, +GS_TYPE_BYTE, +GS_TYPE_SHORT, +
+  GS_TYPE_INTEGER, +GS_TYPE_LONG, +GS_TYPE_FLOAT, +GS_TYPE_DOUBLE, +
+  GS_TYPE_TIMESTAMP, +GS_TYPE_GEOMETRY, +GS_TYPE_BLOB, +GS_TYPE_STRING_ARRAY, +
+  GS_TYPE_BOOL_ARRAY, +GS_TYPE_BYTE_ARRAY, +GS_TYPE_SHORT_ARRAY, +GS_TYPE_INTEGER_ARRAY, +
+  GS_TYPE_LONG_ARRAY, +GS_TYPE_FLOAT_ARRAY, +GS_TYPE_DOUBLE_ARRAY, +GS_TYPE_TIMESTAMP_ARRAY, +
+  GS_TYPE_NULL = -1, +GS_TYPE_PRECISE_TIMESTAMP = -2 +
+ }
 GridDB上のフィールド値の型を表します。More...
 
enum  GSTypeOptionTag {
+  GS_TYPE_OPTION_NULLABLE = 1 << 1, +GS_TYPE_OPTION_NOT_NULL = 1 << 2, +GS_TYPE_OPTION_DEFAULT_VALUE_NULL = 1 << 3, +GS_TYPE_OPTION_DEFAULT_VALUE_NOT_NULL = 1 << 4, +
+  GS_TYPE_OPTION_TIME_MILLI = 1 << 5, +GS_TYPE_OPTION_TIME_MICRO = 1 << 6, +GS_TYPE_OPTION_TIME_NANO = 1 << 7 +
+ }
 カラムに関するオプション設定を示します。More...
 
enum  GSRowSetTypeTag { GS_ROW_SET_CONTAINER_ROWS, +GS_ROW_SET_AGGREGATION_RESULT, +GS_ROW_SET_QUERY_ANALYSIS + }
 GSRowSetから取り出すことのできる内容の種別です。More...
 
enum  GSTriggerTypeTag { GS_TRIGGER_REST, +GS_TRIGGER_JMS + }
 トリガの種別を表します。More...
 
enum  GSTriggerEventTypeFlagTag { GS_TRIGGER_EVENT_PUT = 1 << 0, +GS_TRIGGER_EVENT_DELETE = 1 << 1 + }
 トリガで監視対象とする更新操作種別を表します。More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

GS_DLL_PUBLIC void GS_API_CALL gsCloseFactory (GSGridStoreFactory **factory, GSBool allRelated)
 必要に応じ、指定のGSGridStoreFactoryに関連するリソースをクローズします。More...
 
GS_DLL_PUBLIC
+GSGridStoreFactory
+*GS_API_CALL 
gsGetDefaultFactory ()
 デフォルトのGSGridStoreFactoryインスタンスを取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetGridStore (GSGridStoreFactory *factory, const GSPropertyEntry *properties, size_t propertyCount, GSGridStore **store)
 指定のプロパティを持つGSGridStoreを取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetFactoryProperties (GSGridStoreFactory *factory, const GSPropertyEntry *properties, size_t propertyCount)
 指定のファクトリの設定を変更します。More...
 
GS_DLL_PUBLIC void GS_API_CALL gsCloseGridStore (GSGridStore **store, GSBool allRelated)
 指定のGSGridStoreインスタンスについて、対応するGridDBクラスタとの接続状態を解除し、必要に応じて指定のインスタンスならびに関連するリソースを解放します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsDropCollection (GSGridStore *store, const GSChar *name)
 指定の名前を持つコレクションを削除します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsDropTimeSeries (GSGridStore *store, const GSChar *name)
 指定の名前を持つ時系列を削除します。More...
 
GS_STATIC_HEADER_FUNC_SPECIFIER
+GSResult 
gsGetCollection (GSGridStore *store, const GSChar *name, const GSBinding *binding, GSCollection **collection)
 指定の名前のコレクションを操作するためのGSCollectionインスタンスを取得します。More...
 
GS_STATIC_HEADER_FUNC_SPECIFIER
+GSResult 
gsGetContainerInfo (GSGridStore *store, const GSChar *name, GSContainerInfo *info, GSBool *exists)
 指定の名前のコンテナに関する情報を取得します。More...
 
GS_STATIC_HEADER_FUNC_SPECIFIER
+GSResult 
gsGetTimeSeries (GSGridStore *store, const GSChar *name, const GSBinding *binding, GSTimeSeries **timeSeries)
 指定の名前の時系列を操作するためのGSTimeSeriesインスタンスを取得します。More...
 
GS_STATIC_HEADER_FUNC_SPECIFIER
+GSResult 
gsPutContainer (GSGridStore *store, const GSChar *name, const GSBinding *binding, const GSContainerInfo *info, GSBool modifiable, GSContainer **container)
 バインディング情報とGSContainerInfoを指定して、コンテナを新規作成または変更します。More...
 
GS_STATIC_HEADER_FUNC_SPECIFIER
+GSResult 
gsPutCollection (GSGridStore *store, const GSChar *name, const GSBinding *binding, const GSCollectionProperties *properties, GSBool modifiable, GSCollection **collection)
 コレクションを新規作成または変更します。More...
 
GS_STATIC_HEADER_FUNC_SPECIFIER
+GSResult 
gsPutTimeSeries (GSGridStore *store, const GSChar *name, const GSBinding *binding, const GSTimeSeriesProperties *properties, GSBool modifiable, GSTimeSeries **timeSeries)
 時系列を新規作成または変更します。More...
 
GS_STATIC_HEADER_FUNC_SPECIFIER
+GSResult 
gsPutContainerGeneral (GSGridStore *store, const GSChar *name, const GSContainerInfo *info, GSBool modifiable, GSContainer **container)
 GSContainerInfoを指定して、コンテナを新規作成または変更します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetContainerGeneral (GSGridStore *store, const GSChar *name, GSContainer **container)
 GSRowによりロウ操作できるGSContainerインスタンスを取得します。More...
 
GS_STATIC_HEADER_FUNC_SPECIFIER
+GSResult 
gsPutCollectionGeneral (GSGridStore *store, const GSChar *name, const GSContainerInfo *info, GSBool modifiable, GSCollection **collection)
 GSContainerInfoを指定して、コレクションを新規作成または変更します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetCollectionGeneral (GSGridStore *store, const GSChar *name, GSCollection **collection)
 GSRowによりロウ操作できるGSCollectionインスタンスを取得します。More...
 
GS_STATIC_HEADER_FUNC_SPECIFIER
+GSResult 
gsPutTimeSeriesGeneral (GSGridStore *store, const GSChar *name, const GSContainerInfo *info, GSBool modifiable, GSTimeSeries **timeSeries)
 GSContainerInfoを指定して、時系列を新規作成または変更します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetTimeSeriesGeneral (GSGridStore *store, const GSChar *name, GSTimeSeries **timeSeries)
 GSRowによりロウ操作できるGSTimeSeriesインスタンスを取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsDropContainer (GSGridStore *store, const GSChar *name)
 指定の名前を持つコンテナを削除します。More...
 
GS_STATIC_HEADER_FUNC_SPECIFIER
+GSResult 
gsCreateRowByStore (GSGridStore *store, const GSContainerInfo *info, GSRow **row)
 GSContainerInfoを指定して、GSRowを新規作成します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsCreateRowKeyByStore (GSGridStore *store, const GSContainerInfo *info, GSRowKey **key)
 GSContainerInfoを指定して、GSRowKeyを新規作成します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsFetchAll (GSGridStore *store, GSQuery *const *queryList, size_t queryCount)
 指定された任意個数のGSQueryについて、可能な限りリクエスト単位を大きくしてクエリ実行とフェッチを行います。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsPutMultipleContainerRows (GSGridStore *store, const GSContainerRowEntry *entryList, size_t entryCount)
 任意のコンテナの任意個数のロウについて、可能な限りリクエスト単位を大きくして新規作成または更新操作を行います。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetMultipleContainerRows (GSGridStore *store, const GSRowKeyPredicateEntry *const *predicateList, size_t predicateCount, const GSContainerRowEntry **entryList, size_t *entryCount)
 指定の条件に基づき、任意のコンテナの任意個数・範囲のロウについて、可能な限りリクエスト単位を大きくして取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPartitionController (GSGridStore *store, GSPartitionController **partitionController)
 対応するGridDBクラスタについてのGSPartitionControllerを取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsCreateRowKeyPredicate (GSGridStore *store, GSType keyType, GSRowKeyPredicate **predicate)
 指定のGSTypeをロウキーの型とする合致条件を作成します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsCreateRowKeyPredicateGeneral (GSGridStore *store, const GSContainerInfo *info, GSRowKeyPredicate **predicate)
 指定のGSContainerInfoのロウキーに関するカラム定義に基づく、合致条件を作成します。More...
 
GS_DLL_PUBLIC void GS_API_CALL gsCloseContainer (GSContainer **container, GSBool allRelated)
 指定のGSContainerインスタンスについて、必要に応じこのインスタンスならびに関連するリソースを解放します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsCreateTrigger (GSContainer *container, const GSTriggerInfo *info)
 トリガを設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsCreateIndex (GSContainer *container, const GSChar *columnName, GSIndexTypeFlags flags)
 指定された名前のカラムに対し、指定された種別で名前のない索引を作成します。More...
 
GS_STATIC_HEADER_FUNC_SPECIFIER
+GSResult 
gsCreateIndexDetail (GSContainer *container, const GSIndexInfo *info)
 GSIndexInfoで設定されている内容に従い、索引を作成します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsDropTrigger (GSContainer *container, const GSChar *name)
 トリガを削除します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsDropIndex (GSContainer *container, const GSChar *columnName, GSIndexTypeFlags flags)
 指定された名前のカラムのうち、指定された種別の索引のみを削除します。More...
 
GS_STATIC_HEADER_FUNC_SPECIFIER
+GSResult 
gsDropIndexDetail (GSContainer *container, const GSIndexInfo *info)
 GSIndexInfoで設定されている内容に一致する、すべての索引を削除します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsFlush (GSContainer *container)
 これまでの更新結果をSSDなどの不揮発性記憶媒体に書き出し、すべてのクラスタノードが突然停止したとしても内容が失われないようにします。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRow (GSContainer *container, const void *key, void *rowObj, GSBool *exists)
 ロウキーに対応するロウの内容を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsPutRow (GSContainer *container, const void *key, const void *rowObj, GSBool *exists)
 必要に応じ別途ロウキーを指定して、ロウを新規作成または更新します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsPutMultipleRows (GSContainer *container, const void *const *rowObjs, size_t rowCount, GSBool *exists)
 指定のロウオブジェクト集合に基づき、任意個数のロウをまとめて新規作成または更新します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsQuery (GSContainer *container, const GSChar *queryString, GSQuery **query)
 指定のTQL文を実行するためのクエリを作成します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsDeleteRow (GSContainer *container, const void *key, GSBool *exists)
 指定のロウキーに対応するロウを削除します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetContainerType (GSContainer *container, GSContainerType *type)
 指定のコンテナの種別を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsCreateRowByContainer (GSContainer *container, GSRow **row)
 指定のコンテナのカラムレイアウトに基づき、ロウオブジェクトを新規作成します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsAbort (GSContainer *container)
 手動コミットモードにおいて、現在のトランザクションの操作結果を元に戻し、新たなトランザクションを開始します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsCommit (GSContainer *container)
 手動コミットモードにおいて、現在のトランザクションにおける操作結果を確定させ、新たなトランザクションを開始します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowForUpdate (GSContainer *container, const void *key, void *rowObj, GSBool *exists)
 ロウキーに対応するロウについて、更新用ロックを獲得し内容を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetAutoCommit (GSContainer *container, GSBool enabled)
 コミットモードの設定を変更します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowByInteger (GSContainer *container, int32_t key, void *rowObj, GSBool forUpdate, GSBool *exists)
 INTEGER型のロウキーに対応するロウの内容を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowByLong (GSContainer *container, int64_t key, void *rowObj, GSBool forUpdate, GSBool *exists)
 LONG型のロウキーに対応するロウの内容を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowByTimestamp (GSContainer *container, GSTimestamp key, void *rowObj, GSBool forUpdate, GSBool *exists)
 通常精度のTIMESTAMP型のロウキーに対応するロウの内容を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowByPreciseTimestamp (GSContainer *container, const GSPreciseTimestamp *key, void *rowObj, GSBool forUpdate, GSBool *exists)
 高精度のTIMESTAMP型のロウキーに対応するロウの内容を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowByString (GSContainer *container, const GSChar *key, void *rowObj, GSBool forUpdate, GSBool *exists)
 STRING型のロウキーに対応するロウの内容を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsPutRowByInteger (GSContainer *container, int32_t key, const void *rowObj, GSBool *exists)
 INTEGER型のロウキーを指定して、ロウを新規作成または更新します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsPutRowByLong (GSContainer *container, int64_t key, const void *rowObj, GSBool *exists)
 LONG型のロウキーを指定して、ロウを新規作成または更新します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsPutRowByTimestamp (GSContainer *container, GSTimestamp key, const void *rowObj, GSBool *exists)
 通常精度のTIMESTAMP型のロウキーを指定して、ロウを新規作成または更新します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsPutRowByPreciseTimestamp (GSContainer *container, const GSPreciseTimestamp *key, const void *rowObj, GSBool *exists)
 高精度のTIMESTAMP型のロウキーを指定して、ロウを新規作成または更新します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsPutRowByString (GSContainer *container, const GSChar *key, const void *rowObj, GSBool *exists)
 STRING型のロウキーを指定して、ロウを新規作成または更新します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsDeleteRowByInteger (GSContainer *container, int32_t key, GSBool *exists)
 INTEGER型のロウキーに対応するロウを削除します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsDeleteRowByLong (GSContainer *container, int64_t key, GSBool *exists)
 LONG型のロウキーに対応するロウを削除します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsDeleteRowByTimestamp (GSContainer *container, GSTimestamp key, GSBool *exists)
 通常精度のTIMESTAMP型のロウキーに対応するロウを削除します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsDeleteRowByPreciseTimestamp (GSContainer *container, const GSPreciseTimestamp *key, GSBool *exists)
 高精度のTIMESTAMP型のロウキーに対応するロウを削除します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsDeleteRowByString (GSContainer *container, const GSChar *key, GSBool *exists)
 STRING型のロウキーに対応するロウを削除します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowGeneral (GSContainer *container, GSRowKey *keyObj, GSRow *rowObj, GSBool forUpdate, GSBool *exists)
 指定のGSRowKeyに対応するロウの内容をGSRowとして取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsPutRowGeneral (GSContainer *container, GSRowKey *keyObj, GSRow *rowObj, GSBool *exists)
 必要に応じ別途ロウキーを指定して、ロウを新規作成または更新します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsDeleteRowGeneral (GSContainer *container, GSRowKey *keyObj, GSBool *exists)
 指定のロウキーに対応するロウを削除します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsQueryByGeometry (GSCollection *collection, const GSChar *column, const GSChar *geometry, GSGeometryOperator geometryOp, GSQuery **query)
 指定した空間範囲条件に合致するロウ集合を求めるための、クエリを作成します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsQueryByGeometryWithDisjointCondition (GSCollection *collection, const GSChar *column, const GSChar *geometryIntersection, const GSChar *geometryDisjoint, GSQuery **query)
 除外範囲付きの空間範囲条件に合致するロウ集合を求めるための、クエリを作成します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsAggregateTimeSeries (GSTimeSeries *timeSeries, GSTimestamp start, GSTimestamp end, const GSChar *column, GSAggregation aggregation, GSAggregationResult **aggregationResult)
 開始・終了時刻を指定して、ロウ集合またはその特定のカラムに対し集計演算を行います。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsAppendTimeSeriesRow (GSTimeSeries *timeSeries, const void *rowObj, GSBool *exists)
 GridDB上の現在時刻をロウキーとして、ロウを新規作成または更新します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowByBaseTime (GSTimeSeries *timeSeries, GSTimestamp base, GSTimeOperator timeOp, void *rowObj, GSBool *exists)
 指定の時刻を基準として、関係する1つのロウを取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsInterpolateTimeSeriesRow (GSTimeSeries *timeSeries, GSTimestamp base, const GSChar *column, void *rowObj, GSBool *exists)
 指定時刻に相当するロウオブジェクトについて、線形補間などを行い生成します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsQueryByTimeSeriesRange (GSTimeSeries *timeSeries, GSTimestamp start, GSTimestamp end, GSQuery **query)
 開始時刻・終了時刻を指定して、特定範囲のロウ集合を求めるクエリを作成します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsQueryByTimeSeriesOrderedRange (GSTimeSeries *timeSeries, const GSTimestamp *start, const GSTimestamp *end, GSQueryOrder order, GSQuery **query)
 開始時刻・終了時刻・順序を指定して、特定範囲のロウ集合を求めるクエリを作成します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsQueryByTimeSeriesSampling (GSTimeSeries *timeSeries, GSTimestamp start, GSTimestamp end, const GSChar *const *columnSet, size_t columnCount, GSInterpolationMode mode, int32_t interval, GSTimeUnit intervalUnit, GSQuery **query)
 特定範囲のロウ集合をサンプリングするクエリを作成します。More...
 
GS_DLL_PUBLIC void GS_API_CALL gsCloseRow (GSRow **row)
 指定のGSRowインスタンスを解放します。More...
 
GS_STATIC_HEADER_FUNC_SPECIFIER
+GSResult 
gsGetRowSchema (GSRow *row, GSContainerInfo *schemaInfo)
 指定のロウに対応するスキーマを取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldGeneral (GSRow *row, int32_t column, const GSValue *fieldValue, GSType type)
 指定のフィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldGeneral (GSRow *row, int32_t column, GSValue *fieldValue, GSType *type)
 指定のフィールドの値とその型を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldNull (GSRow *row, int32_t column)
 指定のフィールドにNULLを設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldNull (GSRow *row, int32_t column, GSBool *nullValue)
 指定のフィールドにNULLが設定されているかどうかを返します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByString (GSRow *row, int32_t column, const GSChar *fieldValue)
 指定のSTRING型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsString (GSRow *row, int32_t column, const GSChar **fieldValue)
 指定のSTRING型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByBool (GSRow *row, int32_t column, GSBool fieldValue)
 指定のBOOL型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsBool (GSRow *row, int32_t column, GSBool *fieldValue)
 指定のBOOL型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByByte (GSRow *row, int32_t column, int8_t fieldValue)
 指定のBYTE型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsByte (GSRow *row, int32_t column, int8_t *fieldValue)
 指定のBYTE型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByShort (GSRow *row, int32_t column, int16_t fieldValue)
 指定のSHORT型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsShort (GSRow *row, int32_t column, int16_t *fieldValue)
 指定のSHORT型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByInteger (GSRow *row, int32_t column, int32_t fieldValue)
 指定のINTEGER型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsInteger (GSRow *row, int32_t column, int32_t *fieldValue)
 指定のINTEGER型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByLong (GSRow *row, int32_t column, int64_t fieldValue)
 指定のLONG型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsLong (GSRow *row, int32_t column, int64_t *fieldValue)
 指定のLONG型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByFloat (GSRow *row, int32_t column, float fieldValue)
 指定のFLOAT型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsFloat (GSRow *row, int32_t column, float *fieldValue)
 指定のFLOAT型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByDouble (GSRow *row, int32_t column, double fieldValue)
 指定のDOUBLE型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsDouble (GSRow *row, int32_t column, double *fieldValue)
 指定のDOUBLE型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByTimestamp (GSRow *row, int32_t column, GSTimestamp fieldValue)
 指定の通常精度のTIMESTAMP型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsTimestamp (GSRow *row, int32_t column, GSTimestamp *fieldValue)
 指定の通常精度のTIMESTAMP型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByPreciseTimestamp (GSRow *row, int32_t column, const GSPreciseTimestamp *fieldValue)
 指定の高精度のTIMESTAMP型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsPreciseTimestamp (GSRow *row, int32_t column, GSPreciseTimestamp *fieldValue)
 指定の高精度のTIMESTAMP型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByGeometry (GSRow *row, int32_t column, const GSChar *fieldValue)
 指定のGEOMETRY型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsGeometry (GSRow *row, int32_t column, const GSChar **fieldValue)
 指定のGEOMETRY型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByBlob (GSRow *row, int32_t column, const GSBlob *fieldValue)
 指定のBLOB型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsBlob (GSRow *row, int32_t column, GSBlob *fieldValue)
 指定のBLOB型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByStringArray (GSRow *row, int32_t column, const GSChar *const *fieldValue, size_t size)
 指定のSTRING配列型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsStringArray (GSRow *row, int32_t column, const GSChar *const **fieldValue, size_t *size)
 指定のSTRING配列型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByBoolArray (GSRow *row, int32_t column, const GSBool *fieldValue, size_t size)
 指定のBOOL配列型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsBoolArray (GSRow *row, int32_t column, const GSBool **fieldValue, size_t *size)
 指定のBOOL配列型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByByteArray (GSRow *row, int32_t column, const int8_t *fieldValue, size_t size)
 指定のBYTE配列型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsByteArray (GSRow *row, int32_t column, const int8_t **fieldValue, size_t *size)
 指定のBYTE配列型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByShortArray (GSRow *row, int32_t column, const int16_t *fieldValue, size_t size)
 指定のSHORT配列型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsShortArray (GSRow *row, int32_t column, const int16_t **fieldValue, size_t *size)
 指定のSHORT配列型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByIntegerArray (GSRow *row, int32_t column, const int32_t *fieldValue, size_t size)
 指定のINTEGER配列型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsIntegerArray (GSRow *row, int32_t column, const int32_t **fieldValue, size_t *size)
 指定のINTEGER配列型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByLongArray (GSRow *row, int32_t column, const int64_t *fieldValue, size_t size)
 指定のLONG配列型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsLongArray (GSRow *row, int32_t column, const int64_t **fieldValue, size_t *size)
 指定のLONG配列型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByFloatArray (GSRow *row, int32_t column, const float *fieldValue, size_t size)
 指定のFLOAT配列型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsFloatArray (GSRow *row, int32_t column, const float **fieldValue, size_t *size)
 指定のFLOAT配列型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByDoubleArray (GSRow *row, int32_t column, const double *fieldValue, size_t size)
 指定のDOUBLE配列型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsDoubleArray (GSRow *row, int32_t column, const double **fieldValue, size_t *size)
 指定のDOUBLE配列型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByTimestampArray (GSRow *row, int32_t column, const GSTimestamp *fieldValue, size_t size)
 指定のTIMESTAMP配列型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsTimestampArray (GSRow *row, int32_t column, const GSTimestamp **fieldValue, size_t *size)
 指定のTIMESTAMP配列型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsCreateRowByRow (GSRow *row, GSRow **destRow)
 同一のフィールド値からなる新たなGSRowインスタンスを作成します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsCreateRowKeyByRow (GSRow *row, GSRowKey **key)
 ロウキーを構成するカラムのみを持ち、それらのカラムについて同一のフィールド値からなる新たなGSRowKeyインスタンスを作成します。More...
 
GS_DLL_PUBLIC void GS_API_CALL gsCloseQuery (GSQuery **query)
 指定のGSQueryインスタンスを解放します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsFetch (GSQuery *query, GSBool forUpdate, GSRowSet **rowSet)
 オプションを指定して指定のクエリを実行し、実行結果に対応するロウ集合を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetFetchOption (GSQuery *query, GSFetchOption fetchOption, const void *value, GSType valueType)
 結果取得に関するオプションを設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowSet (GSQuery *query, GSRowSet **rowSet)
 直近に実行した結果のGSRowSetを取得します。More...
 
GS_DLL_PUBLIC void GS_API_CALL gsCloseRowSet (GSRowSet **rowSet)
 指定のGSRowSetインスタンスを解放します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsDeleteCurrentRow (GSRowSet *rowSet)
 現在のカーソル位置のロウを削除します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetNextRow (GSRowSet *rowSet, void *rowObj)
 ロウ集合内の後続のロウにカーソル移動し、移動後の位置にあるロウオブジェクトを取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetNextAggregation (GSRowSet *rowSet, GSAggregationResult **aggregationResult)
 ロウ集合内の後続のロウにカーソル移動し、移動後の位置にある集計結果を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetNextQueryAnalysis (GSRowSet *rowSet, GSQueryAnalysisEntry *queryAnalysis)
 ロウ集合内の後続のロウにカーソル移動し、移動後の位置にあるクエリ解析結果エントリを取得します。More...
 
GS_DLL_PUBLIC GSRowSetType
+GS_API_CALL 
gsGetRowSetType (GSRowSet *rowSet)
 ロウ集合の種別を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowSetSchema (GSRowSet *rowSet, GSContainerInfo *schemaInfo, GSBool *exists)
 このロウ集合に対応するスキーマを取得します。More...
 
GS_DLL_PUBLIC int32_t GS_API_CALL gsGetRowSetSize (GSRowSet *rowSet)
 ロウ集合のサイズ、すなわちロウ集合作成時点におけるロウの数を返します。More...
 
GS_DLL_PUBLIC GSBool GS_API_CALL gsHasNextRow (GSRowSet *rowSet)
 現在のカーソル位置を基準として、ロウ集合内に後続のロウが存在するかどうかを返します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsUpdateCurrentRow (GSRowSet *rowSet, const void *rowObj)
 現在のカーソル位置のロウについて、指定のロウオブジェクトを使用してロウキー以外の値を更新します。More...
 
GS_DLL_PUBLIC void GS_API_CALL gsCloseAggregationResult (GSAggregationResult **aggregationResult)
 指定のGSAggregationResultインスタンスを解放します。More...
 
GS_DLL_PUBLIC GSBool GS_API_CALL gsGetAggregationValue (GSAggregationResult *aggregationResult, void *value, GSType valueType)
 集計結果を指定の型の値として取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetAggregationValueAsLong (GSAggregationResult *aggregationResult, int64_t *value, GSBool *assigned)
 数値型の集計値をLONG型(int64_t)として取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetAggregationValueAsDouble (GSAggregationResult *aggregationResult, double *value, GSBool *assigned)
 数値型の集計値をDOUBLE型(double)として取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetAggregationValueAsTimestamp (GSAggregationResult *aggregationResult, GSTimestamp *value, GSBool *assigned)
 時刻型の集計値を通常精度のTIMESTAMP型(GSTimestamp)で取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetAggregationValueAsPreciseTimestamp (GSAggregationResult *aggregationResult, GSPreciseTimestamp *value, GSBool *assigned)
 時刻型の集計値を高精度のTIMESTAMP型(GSPreciseTimestamp)で取得します。More...
 
GS_DLL_PUBLIC void GS_API_CALL gsCloseRowKeyPredicate (GSRowKeyPredicate **predicate)
 指定のGSRowKeyPredicateインスタンスを解放します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateKeyType (GSRowKeyPredicate *predicate, GSType *keyType)
 合致条件の評価対象とするロウキーの型を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateKeySchema (GSRowKeyPredicate *predicate, GSContainerInfo *info)
 合致条件の評価対象とするロウキーのスキーマを取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateStartGeneralKey (GSRowKeyPredicate *predicate, GSRowKey **keyObj)
 範囲条件の開始位置とするロウキーを取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateStartKeyGeneral (GSRowKeyPredicate *predicate, const GSValue **startKey)
 範囲条件の開始位置とする、単一カラムのロウキーの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateStartKeyAsString (GSRowKeyPredicate *predicate, const GSChar **startKey)
 範囲条件の開始位置とするSTRING型ロウキーの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateStartKeyAsInteger (GSRowKeyPredicate *predicate, const int32_t **startKey)
 範囲条件の開始位置とするINTEGER型ロウキーの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateStartKeyAsLong (GSRowKeyPredicate *predicate, const int64_t **startKey)
 範囲条件の開始位置とするLONG型ロウキーの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateStartKeyAsTimestamp (GSRowKeyPredicate *predicate, const GSTimestamp **startKey)
 範囲条件の開始位置とする通常精度のTIMESTAMP型ロウキーの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateStartKeyAsPreciseTimestamp (GSRowKeyPredicate *predicate, const GSPreciseTimestamp **startKey)
 範囲条件の開始位置とする高精度のTIMESTAMP型ロウキーの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateFinishGeneralKey (GSRowKeyPredicate *predicate, GSRowKey **keyObj)
 範囲条件の終了位置とするロウキーの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateFinishKeyGeneral (GSRowKeyPredicate *predicate, const GSValue **finishKey)
 範囲条件の終了位置とする、単一カラムのロウキーの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateFinishKeyAsString (GSRowKeyPredicate *predicate, const GSChar **finishKey)
 範囲条件の終了位置とするSTRING型ロウキーの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateFinishKeyAsInteger (GSRowKeyPredicate *predicate, const int32_t **finishKey)
 範囲条件の終了位置とするINTEGER型ロウキーの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateFinishKeyAsLong (GSRowKeyPredicate *predicate, const int64_t **finishKey)
 範囲条件の終了位置とするLONG型ロウキーの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateFinishKeyAsTimestamp (GSRowKeyPredicate *predicate, const GSTimestamp **finishKey)
 範囲条件の終了位置とする通常精度のTIMESTAMP型ロウキーの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateFinishKeyAsPreciseTimestamp (GSRowKeyPredicate *predicate, const GSPreciseTimestamp **finishKey)
 範囲条件の終了位置とする高精度のTIMESTAMP型ロウキーの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateDistinctGeneralKeys (GSRowKeyPredicate *predicate, GSRowKey *const **keyObjList, size_t *size)
 個別条件を構成するロウキーの集合を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateDistinctKeysGeneral (GSRowKeyPredicate *predicate, const GSValue **keyList, size_t *size)
 個別条件を構成する、単一カラムのロウキーの値の集合を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateDistinctKeysAsString (GSRowKeyPredicate *predicate, const GSChar *const **keyList, size_t *size)
 個別条件を構成するSTRING型ロウキーの値の集合を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateDistinctKeysAsInteger (GSRowKeyPredicate *predicate, const int32_t **keyList, size_t *size)
 個別条件を構成するINTEGER型ロウキーの値の集合を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateDistinctKeysAsLong (GSRowKeyPredicate *predicate, const int64_t **keyList, size_t *size)
 個別条件を構成するLONG型ロウキーの値の集合を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateDistinctKeysAsTimestamp (GSRowKeyPredicate *predicate, const GSTimestamp **keyList, size_t *size)
 個別条件を構成する通常精度のTIMESTAMP型ロウキーの値の集合を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateDistinctKeysAsPreciseTimestamp (GSRowKeyPredicate *predicate, const GSPreciseTimestamp **keyList, size_t *size)
 個別条件を構成する高精度のTIMESTAMP型ロウキーの値の集合を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetPredicateStartGeneralKey (GSRowKeyPredicate *predicate, GSRowKey *keyObj)
 範囲条件の開始位置とするロウキーの値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetPredicateStartKeyGeneral (GSRowKeyPredicate *predicate, const GSValue *startKey, GSType keyType)
 範囲条件の開始位置とする、単一カラムのロウキーの値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetPredicateStartKeyByString (GSRowKeyPredicate *predicate, const GSChar *startKey)
 範囲条件の開始位置とするSTRING型ロウキーの値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetPredicateStartKeyByInteger (GSRowKeyPredicate *predicate, const int32_t *startKey)
 範囲条件の開始位置とするINTEGER型ロウキーの値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetPredicateStartKeyByLong (GSRowKeyPredicate *predicate, const int64_t *startKey)
 範囲条件の開始位置とするLONG型ロウキーの値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetPredicateStartKeyByTimestamp (GSRowKeyPredicate *predicate, const GSTimestamp *startKey)
 範囲条件の開始位置とする通常精度のTIMESTAMP型ロウキーの値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetPredicateStartKeyByPreciseTimestamp (GSRowKeyPredicate *predicate, const GSPreciseTimestamp *startKey)
 範囲条件の開始位置とする高精度のTIMESTAMP型ロウキーの値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetPredicateFinishGeneralKey (GSRowKeyPredicate *predicate, GSRowKey *keyObj)
 範囲条件の終了位置とするロウキーの値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetPredicateFinishKeyGeneral (GSRowKeyPredicate *predicate, const GSValue *finishKey, GSType keyType)
 範囲条件の終了位置とする、単一カラムのロウキーの値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetPredicateFinishKeyByString (GSRowKeyPredicate *predicate, const GSChar *finishKey)
 範囲条件の終了位置とするSTRING型ロウキーの値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetPredicateFinishKeyByInteger (GSRowKeyPredicate *predicate, const int32_t *finishKey)
 範囲条件の終了位置とするINTEGER型ロウキーの値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetPredicateFinishKeyByLong (GSRowKeyPredicate *predicate, const int64_t *finishKey)
 範囲条件の終了位置とするLONG型ロウキーの値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetPredicateFinishKeyByTimestamp (GSRowKeyPredicate *predicate, const GSTimestamp *finishKey)
 範囲条件の終了位置とする通常精度のTIMESTAMP型ロウキーの値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetPredicateFinishKeyByPreciseTimestamp (GSRowKeyPredicate *predicate, const GSPreciseTimestamp *finishKey)
 範囲条件の終了位置とする高精度のTIMESTAMP型ロウキーの値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsAddPredicateGeneralKey (GSRowKeyPredicate *predicate, GSRowKey *keyObj)
 個別条件の要素の一つとするロウキーの値を追加します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsAddPredicateKeyGeneral (GSRowKeyPredicate *predicate, const GSValue *key, GSType keyType)
 個別条件の要素の一つとする、単一カラムのロウキーの値を追加します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsAddPredicateKeyByString (GSRowKeyPredicate *predicate, const GSChar *key)
 個別条件の要素の一つとするSTRING型ロウキーの値を追加します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsAddPredicateKeyByInteger (GSRowKeyPredicate *predicate, int32_t key)
 個別条件の要素の一つとするINTEGER型ロウキーの値を追加します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsAddPredicateKeyByLong (GSRowKeyPredicate *predicate, int64_t key)
 個別条件の要素の一つとするLONG型ロウキーの値を追加します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsAddPredicateKeyByTimestamp (GSRowKeyPredicate *predicate, GSTimestamp key)
 個別条件の要素の一つとする通常精度のTIMESTAMP型ロウキーの値を追加します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsAddPredicateKeyByPreciseTimestamp (GSRowKeyPredicate *predicate, const GSPreciseTimestamp *key)
 個別条件の要素の一つとする高精度のTIMESTAMP型ロウキーの値を追加します。More...
 
GS_DLL_PUBLIC void GS_API_CALL gsClosePartitionController (GSPartitionController **controller)
 指定のGSPartitionControllerインスタンスを解放します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPartitionCount (GSPartitionController *controller, int32_t *partitionCount)
 対象とするGridDBクラスタのパーティション数を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPartitionContainerCount (GSPartitionController *controller, int32_t partitionIndex, int64_t *containerCount)
 指定のパーティションに属するコンテナの総数を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPartitionContainerNames (GSPartitionController *controller, int32_t partitionIndex, int64_t start, const int64_t *limit, const GSChar *const **nameList, size_t *size)
 指定のパーティションに所属するコンテナの名前の一覧を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPartitionHosts (GSPartitionController *controller, int32_t partitionIndex, const GSChar *const **addressList, size_t *size)
 指定のパーティションに対応するノードのアドレス一覧を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPartitionOwnerHost (GSPartitionController *controller, int32_t partitionIndex, const GSChar **address)
 指定のパーティションに対応するオーナノードのアドレスを取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPartitionBackupHosts (GSPartitionController *controller, int32_t partitionIndex, const GSChar *const **addressList, size_t *size)
 指定のパーティションに対応するバックアップノードのアドレス一覧を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsAssignPartitionPreferableHost (GSPartitionController *controller, int32_t partitionIndex, const GSChar *host)
 優先的に選択されるホストのアドレスを設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPartitionIndexOfContainer (GSPartitionController *controller, const GSChar *containerName, int32_t *partitionIndex)
 指定のコンテナ名に対応するパーティションインデックスを取得します。More...
 
GS_DLL_PUBLIC GSTimestamp
+GS_API_CALL 
gsCurrentTime ()
 現在時刻を求めます。More...
 
GS_DLL_PUBLIC int64_t GS_API_CALL gsGetTimeField (GSTimestamp timestamp, GSTimeUnit timeUnit)
 GSTimestampを構成するフィールド値の一つを取得します。More...
 
GS_DLL_PUBLIC int64_t GS_API_CALL gsGetZonedTimeField (GSTimestamp timestamp, GSTimeUnit timeUnit, const GSTimeZone *zone)
 指定のタイムゾーン設定を用い、GSTimestampを構成するフィールド値の一つを取得します。More...
 
GS_DLL_PUBLIC GSBool GS_API_CALL gsSetTimeField (GSTimestamp *timestamp, int64_t field, GSTimeUnit timeUnit)
 GSTimestampを構成するフィールド値の一つを設定します。More...
 
GS_DLL_PUBLIC GSBool GS_API_CALL gsSetZonedTimeField (GSTimestamp *timestamp, int64_t field, GSTimeUnit timeUnit, const GSTimeZone *zone)
 指定のタイムゾーン設定を用い、GSTimestampを構成するフィールド値の一つを設定します。More...
 
GS_STATIC_HEADER_FUNC_SPECIFIER
+GSTimestamp 
gsAddTime (GSTimestamp timestamp, int64_t amount, GSTimeUnit timeUnit)
 時刻に一定の値を加算します。More...
 
GS_DLL_PUBLIC GSTimestamp
+GS_API_CALL 
gsAddZonedTime (GSTimestamp timestamp, int64_t amount, GSTimeUnit timeUnit, const GSTimeZone *zone)
 指定のタイムゾーン設定を用い、時刻に一定の値を加算します。More...
 
GS_DLL_PUBLIC int64_t GS_API_CALL gsGetTimeDiff (GSTimestamp timestamp1, GSTimestamp timestamp2, GSTimeUnit timeUnit)
 二つの時刻間の差分値を求めます。More...
 
GS_DLL_PUBLIC int64_t GS_API_CALL gsGetZonedTimeDiff (GSTimestamp timestamp1, GSTimestamp timestamp2, GSTimeUnit timeUnit, const GSTimeZone *zone)
 指定のタイムゾーン設定を用い、二つの時刻間の差分値を求めます。More...
 
GS_DLL_PUBLIC size_t GS_API_CALL gsFormatTime (GSTimestamp timestamp, GSChar *strBuf, size_t bufSize)
 TQLのTIMESTAMP値表記に従い、時刻の文字列表現を求めます。More...
 
GS_DLL_PUBLIC size_t GS_API_CALL gsFormatZonedTime (GSTimestamp timestamp, GSChar *strBuf, size_t bufSize, const GSTimeZone *zone)
 指定のタイムゾーン設定を用い、TQLのTIMESTAMP値表記に従って時刻の文字列表現を求めます。More...
 
GS_DLL_PUBLIC size_t GS_API_CALL gsFormatPreciseTime (const GSPreciseTimestamp *timestamp, GSChar *strBuf, size_t bufSize, const GSTimestampFormatOption *option)
 指定のオプション設定を用い、高精度のTIMESTAMP値表記に従って時刻の文字列表現を求めます。More...
 
GS_DLL_PUBLIC GSBool GS_API_CALL gsParseTime (const GSChar *str, GSTimestamp *timestamp)
 TQLのTIMESTAMP値表記に従い、指定の文字列に対応するGSTimestamp値を求めます。More...
 
GS_DLL_PUBLIC GSBool GS_API_CALL gsParsePreciseTime (const GSChar *str, GSPreciseTimestamp *timestamp, const GSTimestampFormatOption *option)
 通常精度もしくは高精度のTIMESTAMP値表記に従い、指定の文字列に対応するGSPreciseTimestamp値を求めます。More...
 
GS_DLL_PUBLIC int64_t GS_API_CALL gsGetTimeZoneOffset (const GSTimeZone *zone, GSTimeUnit timeUnit)
 指定のタイムゾーンのオフセット値を取得します。More...
 
GS_DLL_PUBLIC GSBool GS_API_CALL gsSetTimeZoneOffset (GSTimeZone *zone, int64_t offset, GSTimeUnit timeUnit)
 指定のタイムゾーンのオフセット値を設定します。More...
 
GS_DLL_PUBLIC size_t gsFormatTimeZone (const GSTimeZone *zone, GSChar *strBuf, size_t bufSize)
 TQLのTIMESTAMP値表記に従い、タイムゾーン情報の文字列表現を求めます。More...
 
GS_DLL_PUBLIC GSBool GS_API_CALL gsParseTimeZone (const GSChar *str, GSTimeZone *zone)
 TQLのTIMESTAMP値表記に従い、指定のタイムゾーン文字列に対応するGSTimeZone値を求めます。More...
 
GS_DLL_PUBLIC size_t GS_API_CALL gsGetErrorStackSize (void *gsResource)
 指定のリソースに関する直前のエラー情報のスタックサイズを取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetErrorCode (void *gsResource, size_t stackIndex)
 指定のリソースに関する直前のエラーのエラーコードを取得します。More...
 
GS_DLL_PUBLIC size_t GS_API_CALL gsFormatErrorMessage (void *gsResource, size_t stackIndex, GSChar *strBuf, size_t bufSize)
 指定のリソースに関する直前のエラーのメッセージを取得します。More...
 
GS_DLL_PUBLIC size_t GS_API_CALL gsFormatErrorLocation (void *gsResource, size_t stackIndex, GSChar *strBuf, size_t bufSize)
 指定のリソースに関する直前のエラーのメッセージの内部モジュールのエラー位置情報を取得します。More...
 
GS_DLL_PUBLIC GSBool GS_API_CALL gsIsTimeoutError (GSResult result)
 要求した処理が既定の時間内に終了しなかった場合に発生したエラーに該当するエラーコードかどうかを判定します。More...
 
GS_DLL_PUBLIC size_t GS_API_CALL gsFormatErrorName (void *gsResource, size_t stackIndex, GSChar *strBuf, size_t bufSize)
 指定のリソースに関する直前のエラーのエラー名を取得します。More...
 
GS_DLL_PUBLIC size_t GS_API_CALL gsFormatErrorDescription (void *gsResource, size_t stackIndex, GSChar *strBuf, size_t bufSize)
 指定のリソースに関する直前のエラーの説明内容を取得します。More...
 
GS_DLL_PUBLIC size_t GS_API_CALL gsGetErrorParameterCount (void *gsResource, size_t stackIndex)
 指定のリソースに関する直前のエラーに関するパラメータの個数を取得します。More...
 
GS_DLL_PUBLIC size_t GS_API_CALL gsFormatErrorParameterName (void *gsResource, size_t stackIndex, size_t parameterIndex, GSChar *strBuf, size_t bufSize)
 指定のリソースに関する直前のエラーに関するパラメータの名前を取得します。More...
 
GS_DLL_PUBLIC size_t GS_API_CALL gsFormatErrorParameterValue (void *gsResource, size_t stackIndex, size_t parameterIndex, GSChar *strBuf, size_t bufSize)
 指定のリソースに関する直前のエラーに関するパラメータの値を取得します。More...
 
+

Detailed Description

+

GridDBのC言語向け公開API.

+
+
+
+
基本定義
+
+
+ + + + + + + + + + + +

+Classes

struct  GSBlobTag
 ロウオブジェクトにおけるBLOB構造を表します。More...
 
struct  GSPropertyEntryTag
 プロパティの構成エントリです。More...
 
union  GSValueTag
 ロウフィールドに格納できるいずれかの型の値です。More...
 
+ + + + + + + + + + + + + + + + + + + +

+Macros

+#define GS_CLIENT_VERSION_MAJOR   5
 GridDBクライアントのメジャーバージョンを表す数値です。
 
+#define GS_CLIENT_VERSION_MINOR   3
 GridDBクライアントのマイナーバージョンを表す数値です。
 
+#define GS_TRUE   1
 真であることを示すブール型値です。
 
+#define GS_FALSE   0
 偽であることを示すブール型値です。
 
#define GS_RESULT_OK   0
 GridDBに対する命令の実行に成功したことを示す、実行結果コードの値です。More...
 
#define GS_SUCCEEDED(result)   ((result) == GS_RESULT_OK)
 実行結果コードに基づきGridDBに対する命令の実行に成功したかどうかのブール値を求めるマクロです。More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + +

+Typedefs

typedef char GSChar
 GridDB APIで使用される標準の文字の型です。More...
 
typedef char GSBool
 GridDB APIで使用されるブール型です。More...
 
+typedef int32_t GSEnum
 列挙型
 
+typedef int32_t GSResult
 GridDBに対する命令の実行結果コードの型です。
 
+typedef struct GSBlobTag GSBlob
 ロウオブジェクトにおけるBLOB構造を表します。
 
+typedef struct GSPropertyEntryTag GSPropertyEntry
 プロパティの構成エントリです。
 
typedef GSEnum GSType
 
typedef union GSValueTag GSValue
 ロウフィールドに格納できるいずれかの型の値です。More...
 
+ + + + +

+Enumerations

enum  GSTypeTag {
+  GS_TYPE_STRING, +GS_TYPE_BOOL, +GS_TYPE_BYTE, +GS_TYPE_SHORT, +
+  GS_TYPE_INTEGER, +GS_TYPE_LONG, +GS_TYPE_FLOAT, +GS_TYPE_DOUBLE, +
+  GS_TYPE_TIMESTAMP, +GS_TYPE_GEOMETRY, +GS_TYPE_BLOB, +GS_TYPE_STRING_ARRAY, +
+  GS_TYPE_BOOL_ARRAY, +GS_TYPE_BYTE_ARRAY, +GS_TYPE_SHORT_ARRAY, +GS_TYPE_INTEGER_ARRAY, +
+  GS_TYPE_LONG_ARRAY, +GS_TYPE_FLOAT_ARRAY, +GS_TYPE_DOUBLE_ARRAY, +GS_TYPE_TIMESTAMP_ARRAY, +
+  GS_TYPE_NULL = -1, +GS_TYPE_PRECISE_TIMESTAMP = -2 +
+ }
 GridDB上のフィールド値の型を表します。More...
 
+

Detailed Description

+

Macro Definition Documentation

+ +
+
+ + + + +
#define GS_RESULT_OK   0
+
+ +

GridDBに対する命令の実行に成功したことを示す、実行結果コードの値です。

+
See Also
GSResult
+ +
+
+ +
+
+ + + + + + + + +
#define GS_SUCCEEDED( result)   ((result) == GS_RESULT_OK)
+
+ +

実行結果コードに基づきGridDBに対する命令の実行に成功したかどうかのブール値を求めるマクロです。

+
See Also
GS_RESULT_OK
+
+GSResult
+ +
+
+

Typedef Documentation

+ +
+
+ + + + +
typedef char GSBool
+
+ +

GridDB APIで使用されるブール型です。

+
GridDB上のBOOL型と対応します。
+ +
+
+ +
+
+ + + + +
typedef char GSChar
+
+ +

GridDB APIで使用される標準の文字の型です。

+
この型の文字列エンコーディングは常にUTF-8です。
+ +
+
+ +
+
+ + + + +
typedef GSEnum GSType
+
+
See Also
GSTypeTag
+ +
+
+ +
+
+ + + + +
typedef union GSValueTag GSValue
+
+ +

ロウフィールドに格納できるいずれかの型の値です。

+
Since
1.5
+ +
+
+

Enumeration Type Documentation

+ +
+
+ + + + +
enum GSTypeTag
+
+ +

GridDB上のフィールド値の型を表します。

+ + + + + + + + + + + + + + + + + + + + + + + +
Enumerator
GS_TYPE_STRING  +

STRING型です。

+
GS_TYPE_BOOL  +

BOOL型です。

+
GS_TYPE_BYTE  +

BYTE型です。

+
GS_TYPE_SHORT  +

SHORT型です。

+
GS_TYPE_INTEGER  +

INTEGER型です。

+
GS_TYPE_LONG  +

LONG型です。

+
GS_TYPE_FLOAT  +

FLOAT型です。

+
GS_TYPE_DOUBLE  +

DOUBLE型です。

+
GS_TYPE_TIMESTAMP  +

TIMESTAMP型です。

+
カラム定義に用いる場合、精度の指定にはGSTypeOptionの日時精度に関するオプションを用います。
+
ロウオブジェクトのフィールド値の型を識別するために用いる場合は、通常精度のTIMESTAMP値であることを示します。
+
GS_TYPE_GEOMETRY  +

GEOMETRY型です。

+
GS_TYPE_BLOB  +

BLOB型です。

+
GS_TYPE_STRING_ARRAY  +

STRING型配列です。

+
GS_TYPE_BOOL_ARRAY  +

BOOL型配列です。

+
GS_TYPE_BYTE_ARRAY  +

BYTE型配列です。

+
GS_TYPE_SHORT_ARRAY  +

SHORT型配列です。

+
GS_TYPE_INTEGER_ARRAY  +

INTEGER型配列です。

+
GS_TYPE_LONG_ARRAY  +

LONG型配列です。

+
GS_TYPE_FLOAT_ARRAY  +

FLOAT型配列です。

+
GS_TYPE_DOUBLE_ARRAY  +

DOUBLE型配列です。

+
GS_TYPE_TIMESTAMP_ARRAY  +

TIMESTAMP型配列です。

+
GS_TYPE_NULL  +

ロウフィールドにNULLが設定されていることを示します。

+
カラムの型として用いることはできません。
+
Since
3.5
+
GS_TYPE_PRECISE_TIMESTAMP  +

高精度のTIMESTAMP値であることを示します。

+
カラムの型として用いることはできません。ロウオブジェクトのフィールド値の型を識別するために用います。
+
Since
5.3
+
+ +
+
+
+
+
+
バインディング
+
+
+ + + + + +

+Classes

struct  GSBindingTag
 ロウオブジェクトとロウデータとの対応関係を表すバインディング情報です。More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Macros

#define GS_GET_STRUCT_BINDING(type)   GS_STRUCT_BINDING_GETTER_NAME(type) ()
 ユーザ定義構造体とコンテナスキーマとの対応関係の定義を取得します。More...
 
#define GS_STRUCT_BINDING(type, entries)
 ユーザ定義構造体とコンテナスキーマとの対応関係を定義します。More...
 
#define GS_STRUCT_BINDING_NAMED_ELEMENT(name, member, memberType)
 カラム名を指定して、ユーザ定義構造体メンバと基本型カラムスキーマとの対応関係を定義します。More...
 
#define GS_STRUCT_BINDING_NAMED_KEY(name, member, memberType)
 カラム名を指定して、ユーザ定義構造体メンバとロウキー付き基本型カラムスキーマとの対応関係を定義します。More...
 
#define GS_STRUCT_BINDING_NAMED_ARRAY(name, member, sizeMember, elementType)
 カラム名を指定して、ユーザ定義構造体メンバと配列型カラムスキーマとの対応関係を定義します。More...
 
#define GS_STRUCT_BINDING_ELEMENT(member, memberType)
 ユーザ定義構造体メンバと基本型カラムスキーマとの対応関係を定義します。More...
 
#define GS_STRUCT_BINDING_KEY(member, memberType)
 ユーザ定義構造体メンバとロウキー付き基本型カラムスキーマとの対応関係を定義します。More...
 
#define GS_STRUCT_BINDING_ARRAY(member, sizeMember, elementType)
 ユーザ定義構造体メンバと配列型カラムスキーマとの対応関係を定義します。More...
 
#define GS_STRUCT_BINDING_COMPOSITE_KEY(member, bindingType)
 ユーザ定義構造体メンバと複合ロウキー付きカラムスキーマとの対応関係を定義します。More...
 
+ + + + +

+Typedefs

+typedef struct GSBindingTag GSBinding
 ロウオブジェクトとロウデータとの対応関係を表すバインディング情報です。
 
+

Detailed Description

+

Macro Definition Documentation

+ +
+
+ + + + + + + + +
#define GS_GET_STRUCT_BINDING( type)   GS_STRUCT_BINDING_GETTER_NAME(type) ()
+
+ +

ユーザ定義構造体とコンテナスキーマとの対応関係の定義を取得します。

+
指定の定義名のGS_STRUCT_BINDINGの定義を参照できるようにする必要があります。
+
Parameters
+ + +
type対応関係の定義名。
+
+
+
Returns
対応関係を示すGSBinding*型の値
+
See Also
GS_STRUCT_BINDING
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
#define GS_STRUCT_BINDING( type,
 entries 
)
+
+ +

ユーザ定義構造体とコンテナスキーマとの対応関係を定義します。

+
現バージョンでは、静的関数の定義に展開されます。
+
複合ロウキーの構成情報の定義にも使用できます。
+
Parameters
+ + + +
type対応関係の定義名。関数名の一部として使用されます。
entries構造体メンバとカラム定義との対応関係を示す以下の定義の列を、「,」で区切らず順に並べます。 +
+
+
+
See Also
GS_GET_STRUCT_BINDING
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
#define GS_STRUCT_BINDING_ARRAY( member,
 sizeMember,
 elementType 
)
+
+ +

ユーザ定義構造体メンバと配列型カラムスキーマとの対応関係を定義します。

+
構造体メンバの名前がそのままカラム名として使用されます。
+
Parameters
+ + + + +
member配列ポインタ変数に対応する構造体メンバの名前
sizeMember配列サイズ変数に対応する構造体メンバの名前
elementType配列型の要素型の名前
+
+
+
See Also
GS_STRUCT_BINDING
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
#define GS_STRUCT_BINDING_COMPOSITE_KEY( member,
 bindingType 
)
+
+ +

ユーザ定義構造体メンバと複合ロウキー付きカラムスキーマとの対応関係を定義します。

+
Parameters
+ + + +
member構造体メンバの名前
bindingType複合ロウキーを構成するユーザ定義構造体の名前。対応する複合ロウキーの構成については、別途GS_STRUCT_BINDINGを通じて定義されていなければならない
+
+
+
See Also
GS_STRUCT_BINDING
+
Since
4.3
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
#define GS_STRUCT_BINDING_ELEMENT( member,
 memberType 
)
+
+ +

ユーザ定義構造体メンバと基本型カラムスキーマとの対応関係を定義します。

+
構造体メンバの名前がそのままカラム名として使用されます。
+
Parameters
+ + + +
member構造体メンバの名前
memberType基本型の名前
+
+
+
See Also
GS_STRUCT_BINDING
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
#define GS_STRUCT_BINDING_KEY( member,
 memberType 
)
+
+ +

ユーザ定義構造体メンバとロウキー付き基本型カラムスキーマとの対応関係を定義します。

+
構造体メンバの名前がそのままカラム名として使用されます。
+
Parameters
+ + + +
member構造体メンバの名前
memberType基本型の名前
+
+
+
See Also
GS_STRUCT_BINDING
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define GS_STRUCT_BINDING_NAMED_ARRAY( name,
 member,
 sizeMember,
 elementType 
)
+
+ +

カラム名を指定して、ユーザ定義構造体メンバと配列型カラムスキーマとの対応関係を定義します。

+
Parameters
+ + + + + +
nameカラム名
member配列ポインタ変数に対応する構造体メンバの名前
sizeMember配列サイズ変数に対応する構造体メンバの名前
elementType配列型の要素型の名前
+
+
+
See Also
GS_STRUCT_BINDING
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
#define GS_STRUCT_BINDING_NAMED_ELEMENT( name,
 member,
 memberType 
)
+
+ +

カラム名を指定して、ユーザ定義構造体メンバと基本型カラムスキーマとの対応関係を定義します。

+
Parameters
+ + + + +
nameカラム名
member構造体メンバの名前
memberType基本型の名前
+
+
+
See Also
GS_STRUCT_BINDING
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
#define GS_STRUCT_BINDING_NAMED_KEY( name,
 member,
 memberType 
)
+
+ +

カラム名を指定して、ユーザ定義構造体メンバとロウキー付き基本型カラムスキーマとの対応関係を定義します。

+
Parameters
+ + + + +
nameカラム名
member構造体メンバの名前
memberType基本型の名前
+
+
+
See Also
GS_STRUCT_BINDING
+ +
+
+
+
+
+
エラー処理
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

GS_DLL_PUBLIC size_t GS_API_CALL gsGetErrorStackSize (void *gsResource)
 指定のリソースに関する直前のエラー情報のスタックサイズを取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetErrorCode (void *gsResource, size_t stackIndex)
 指定のリソースに関する直前のエラーのエラーコードを取得します。More...
 
GS_DLL_PUBLIC size_t GS_API_CALL gsFormatErrorMessage (void *gsResource, size_t stackIndex, GSChar *strBuf, size_t bufSize)
 指定のリソースに関する直前のエラーのメッセージを取得します。More...
 
GS_DLL_PUBLIC size_t GS_API_CALL gsFormatErrorLocation (void *gsResource, size_t stackIndex, GSChar *strBuf, size_t bufSize)
 指定のリソースに関する直前のエラーのメッセージの内部モジュールのエラー位置情報を取得します。More...
 
GS_DLL_PUBLIC GSBool GS_API_CALL gsIsTimeoutError (GSResult result)
 要求した処理が既定の時間内に終了しなかった場合に発生したエラーに該当するエラーコードかどうかを判定します。More...
 
GS_DLL_PUBLIC size_t GS_API_CALL gsFormatErrorName (void *gsResource, size_t stackIndex, GSChar *strBuf, size_t bufSize)
 指定のリソースに関する直前のエラーのエラー名を取得します。More...
 
GS_DLL_PUBLIC size_t GS_API_CALL gsFormatErrorDescription (void *gsResource, size_t stackIndex, GSChar *strBuf, size_t bufSize)
 指定のリソースに関する直前のエラーの説明内容を取得します。More...
 
GS_DLL_PUBLIC size_t GS_API_CALL gsGetErrorParameterCount (void *gsResource, size_t stackIndex)
 指定のリソースに関する直前のエラーに関するパラメータの個数を取得します。More...
 
GS_DLL_PUBLIC size_t GS_API_CALL gsFormatErrorParameterName (void *gsResource, size_t stackIndex, size_t parameterIndex, GSChar *strBuf, size_t bufSize)
 指定のリソースに関する直前のエラーに関するパラメータの名前を取得します。More...
 
GS_DLL_PUBLIC size_t GS_API_CALL gsFormatErrorParameterValue (void *gsResource, size_t stackIndex, size_t parameterIndex, GSChar *strBuf, size_t bufSize)
 指定のリソースに関する直前のエラーに関するパラメータの値を取得します。More...
 
+

Detailed Description

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC size_t GS_API_CALL gsFormatErrorDescription (void * gsResource,
size_t stackIndex,
GSCharstrBuf,
size_t bufSize 
)
+
+ +

指定のリソースに関する直前のエラーの説明内容を取得します。

+
説明内容は、エラーメッセージのうち、エラー番号・エラー名を除いた部分に相当します。
+
Parameters
+ + + + + +
[in]gsResourceリソースのアドレス。gsGetErrorStackSizeの同名の引数と同様です。
[in]stackIndexエラースタックのインデックス。gsGetErrorCodeの同名の引数と同様です。
[out]strBufエラーの説明内容を格納する文字列バッファ。gsFormatErrorMessageの同名の引数と同様です。
[in]bufSizeエラーの説明内容を格納する文字列バッファの終端文字を含む文字数。gsFormatErrorMessageの同名の引数と同様です。
+
+
+
Returns
終端文字を含んだ、出力に必要とする文字列バッファのバイト単位の最低サイズ。該当する情報を取得できなかった場合、0
+
Since
4.2
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC size_t GS_API_CALL gsFormatErrorLocation (void * gsResource,
size_t stackIndex,
GSCharstrBuf,
size_t bufSize 
)
+
+ +

指定のリソースに関する直前のエラーのメッセージの内部モジュールのエラー位置情報を取得します。

+
設定によっては常に空文字列しか求まらない場合があります。
+
Parameters
+ + + + + +
[in]gsResourceリソースのアドレス。gsGetErrorStackSizeの同名の引数と同様です。
[in]stackIndexエラースタックのインデックス。gsGetErrorCodeの同名の引数と同様です。
[out]strBufエラー位置情報を格納する文字列バッファ。gsFormatErrorMessageの同名の引数と同様です。
[in]bufSizeエラー位置情報を格納する文字列バッファの終端文字を含む文字数。gsFormatErrorMessageの同名の引数と同様です。
+
+
+
Returns
終端文字を含んだ、出力に必要とする文字列バッファのバイト単位の最低サイズ。該当する情報を取得できなかった場合、0
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC size_t GS_API_CALL gsFormatErrorMessage (void * gsResource,
size_t stackIndex,
GSCharstrBuf,
size_t bufSize 
)
+
+ +

指定のリソースに関する直前のエラーのメッセージを取得します。

+
Parameters
+ + + + + +
[in]gsResourceリソースのアドレス。gsGetErrorStackSizeの同名の引数と同様です。
[in]stackIndexエラースタックのインデックス。gsGetErrorCodeの同名の引数と同様です。
[out]strBufエラーメッセージを格納する文字列バッファ。NULLの場合、有効な結果を取得できません。NULLではなく、別の原因で有効な結果が取得できなかった場合、bufSizeが正の値であれば空文字列を格納します。
[in]bufSizeエラーメッセージを格納する文字列バッファの終端文字を含む文字数。格納する文字列の終端文字を含む文字数の方が大きい場合、終端文字を除く後方の文字列を切り詰めて格納します。0の場合、文字列バッファにアクセスしません。
+
+
+
Returns
終端文字を含んだ、出力に必要とする文字列バッファのバイト単位の最低サイズ。該当する情報を取得できなかった場合、0
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC size_t GS_API_CALL gsFormatErrorName (void * gsResource,
size_t stackIndex,
GSCharstrBuf,
size_t bufSize 
)
+
+ +

指定のリソースに関する直前のエラーのエラー名を取得します。

+
Parameters
+ + + + + +
[in]gsResourceリソースのアドレス。gsGetErrorStackSizeの同名の引数と同様です。
[in]stackIndexエラースタックのインデックス。gsGetErrorCodeの同名の引数と同様です。
[out]strBufエラー名を格納する文字列バッファ。gsFormatErrorMessageの同名の引数と同様です。
[in]bufSizeエラー名を格納する文字列バッファの終端文字を含む文字数。gsFormatErrorMessageの同名の引数と同様です。
+
+
+
Returns
終端文字を含んだ、出力に必要とする文字列バッファのバイト単位の最低サイズ。該当する情報を取得できなかった場合、0
+
Since
4.2
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC size_t GS_API_CALL gsFormatErrorParameterName (void * gsResource,
size_t stackIndex,
size_t parameterIndex,
GSCharstrBuf,
size_t bufSize 
)
+
+ +

指定のリソースに関する直前のエラーに関するパラメータの名前を取得します。

+
Parameters
+ + + + + + +
[in]gsResourceリソースのアドレス。gsGetErrorStackSizeの同名の引数と同様です。
[in]stackIndexエラースタックのインデックス。gsGetErrorCodeの同名の引数と同様です。
[in]parameterIndexエラーに関するパラメータ集合のインデックス。0以上、かつ、パラメータの個数未満の値を指定した場合のみ、有効な結果を取得できます。
[out]strBufパラメータ名を格納する文字列バッファ。gsFormatErrorMessageの同名の引数と同様です。
[in]bufSizeパラメータ名を格納する文字列バッファの終端文字を含む文字数。gsFormatErrorMessageの同名の引数と同様です。
+
+
+
Returns
終端文字を含んだ、出力に必要とする文字列バッファのバイト単位の最低サイズ。該当する情報を取得できなかった場合、0
+
See Also
gsGetErrorParameterCount
+
Since
4.2
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC size_t GS_API_CALL gsFormatErrorParameterValue (void * gsResource,
size_t stackIndex,
size_t parameterIndex,
GSCharstrBuf,
size_t bufSize 
)
+
+ +

指定のリソースに関する直前のエラーに関するパラメータの値を取得します。

+
Parameters
+ + + + + + +
[in]gsResourceリソースのアドレス。gsGetErrorStackSizeの同名の引数と同様です。
[in]stackIndexエラースタックのインデックス。gsGetErrorCodeの同名の引数と同様です。
[in]parameterIndexエラーに関するパラメータ集合のインデックス。gsFormatErrorParameterNameの同名の引数と同様です。
[out]strBufパラメータ値を格納する文字列バッファ。gsFormatErrorMessageの同名の引数と同様です。
[in]bufSizeパラメータ値を格納する文字列バッファの終端文字を含む文字数。gsFormatErrorMessageの同名の引数と同様です。
+
+
+
Returns
終端文字を含んだ、出力に必要とする文字列バッファのバイト単位の最低サイズ。該当する情報を取得できなかった場合、0
+
See Also
gsGetErrorParameterCount
+
Since
4.2
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetErrorCode (void * gsResource,
size_t stackIndex 
)
+
+ +

指定のリソースに関する直前のエラーのエラーコードを取得します。

+
Parameters
+ + + +
[in]gsResourceリソースのアドレス。gsGetErrorStackSizeの同名の引数と同様です。
[in]stackIndexエラースタックのインデックス。0以上スタックサイズ未満の値を指定した場合のみ、有効な結果を取得できます。
+
+
+
Returns
エラーコード。該当する情報を取得できなかった場合、GS_RESULT_OK以外の値
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC size_t GS_API_CALL gsGetErrorParameterCount (void * gsResource,
size_t stackIndex 
)
+
+ +

指定のリソースに関する直前のエラーに関するパラメータの個数を取得します。

+
エラーに関する内容のうち、特定の情報についてはパラメータとして取り出すことができます。各パラメータは、名前と値を持ちます。パラメータの個数に基づく各インデックス値を通じ、順不同にパラメータを列挙することができます。取得できるパラメータについては、エラーを引き起こした操作に関する、個々のインタフェースまたは関連するインタフェースの定義を参照してください。
+
取得できるパラメータの内容は、gsFormatErrorMessageもしくはgsFormatErrorDescriptionより求まる文字列にも原則として含まれます。一方、この文字列から特定の情報だけを一定の文字列解析規則で取り出せるとは限りません。特定のバージョンのある状況下では取り出せたとしても、別の条件では意図しない情報が求まるなどして取り出せない可能性があります。エラーに関するパラメータを個々に取得することで、インタフェースの定義で明記された一部の情報については、文字列解析を行わずに取り出せます。
+
エラーに関するパラメータだけを記録し、メッセージ文字列などその他のエラー内容を記録しなかった場合、記録された内容からエラーの原因を特定することが困難となる可能性があります。
+
Parameters
+ + + +
[in]gsResourceリソースのアドレス。gsGetErrorStackSizeの同名の引数と同様です。
[in]stackIndexエラースタックのインデックス。gsGetErrorCodeの同名の引数と同様です。
+
+
+
Returns
エラーに関するパラメータの個数。該当する情報を取得できなかった場合、0
+
Since
4.2
+ +
+
+ +
+
+ + + + + + + + +
GS_DLL_PUBLIC size_t GS_API_CALL gsGetErrorStackSize (void * gsResource)
+
+ +

指定のリソースに関する直前のエラー情報のスタックサイズを取得します。

+
エラー情報はスタック構造になっており、スタック番号の大きいものほどより直接的なエラー原因と対応します。
+
Parameters
+ + +
[in]gsResourceリソースのアドレス。ここでのリソースとは、GSGridStoreFactoryインスタンス、または、GSGridStoreFactoryを介して生成された、クローズ関数により破棄可能なリソースのことです。NULLが指定された場合、有効な結果を取得できません。
+
+
+
Returns
スタックサイズ。該当する情報を取得できなかった場合、0
+ +
+
+ +
+
+ + + + + + + + +
GS_DLL_PUBLIC GSBool GS_API_CALL gsIsTimeoutError (GSResult result)
+
+ +

要求した処理が既定の時間内に終了しなかった場合に発生したエラーに該当するエラーコードかどうかを判定します。

+
Returns
該当するエラーコードかどうか
+
Since
1.5
+ +
+
+
+
+
+
GSAggregationResult
+
+
+ + + + + +

+Typedefs

typedef struct
+GSAggregationResultTag 
GSAggregationResult
 集計演算の結果を保持します。More...
 
+ + + + + + + + + + + + + + + + + + + +

+Functions

GS_DLL_PUBLIC void GS_API_CALL gsCloseAggregationResult (GSAggregationResult **aggregationResult)
 指定のGSAggregationResultインスタンスを解放します。More...
 
GS_DLL_PUBLIC GSBool GS_API_CALL gsGetAggregationValue (GSAggregationResult *aggregationResult, void *value, GSType valueType)
 集計結果を指定の型の値として取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetAggregationValueAsLong (GSAggregationResult *aggregationResult, int64_t *value, GSBool *assigned)
 数値型の集計値をLONG型(int64_t)として取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetAggregationValueAsDouble (GSAggregationResult *aggregationResult, double *value, GSBool *assigned)
 数値型の集計値をDOUBLE型(double)として取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetAggregationValueAsTimestamp (GSAggregationResult *aggregationResult, GSTimestamp *value, GSBool *assigned)
 時刻型の集計値を通常精度のTIMESTAMP型(GSTimestamp)で取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetAggregationValueAsPreciseTimestamp (GSAggregationResult *aggregationResult, GSPreciseTimestamp *value, GSBool *assigned)
 時刻型の集計値を高精度のTIMESTAMP型(GSPreciseTimestamp)で取得します。More...
 
+

Detailed Description

+

Typedef Documentation

+ +
+
+ + + + +
typedef struct GSAggregationResultTag GSAggregationResult
+
+ +

集計演算の結果を保持します。

+
gsGetNextAggregationもしくはgsAggregateTimeSeriesにより取得できる、集計演算の結果を保持します。整数型カラムに対する演算結果を浮動小数点型として、また、有効桁数の少ない数値型のカラムに対する演算結果をより桁数の多い数値型として受け取ることができます。
+
保持する型は、集計演算の種別や集計対象のカラムの型によって決定されます。具体的な規則はGSAggregationまたはTQLの仕様を参照してください。
+
取り出しできる型は、保持する型によって決まります。保持する型が数値型の場合はDOUBLE型またはLONG型、TIMESTAMP型の場合はTIMESTAMP型の値としてのみ取り出しできます。
+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + +
GS_DLL_PUBLIC void GS_API_CALL gsCloseAggregationResult (GSAggregationResult ** aggregationResult)
+
+ +

指定のGSAggregationResultインスタンスを解放します。

+
Parameters
+ + +
[in,out]aggregationResultクローズ対象のGSAggregationResultインスタンスを指しているポインタ変数へのポインタ値。クローズすると、ポインタ変数にNULLが設定されます。以後、解放したGSAggregationResultインスタンスにアクセスしてはなりません。ポインタ値またはポインタ変数の値がNULLの場合は、クローズ処理を行いません。
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSBool GS_API_CALL gsGetAggregationValue (GSAggregationResultaggregationResult,
void * value,
GSType valueType 
)
+
+ +

集計結果を指定の型の値として取得します。

+
取り出しできる型は、指定のaggregationResultが保持している値の型によって、次のように決まります。 + + + + + + + + +
取り出しできる値の型保持している値の型
LONG型(GS_TYPE_LONG) 数値型
DOUBLE型(GS_TYPE_DOUBLE) 数値型
TIMESTAMP型(GS_TYPE_TIMESTAMP) TIMESTAMP型
+
+
また、valueとして指定できる型は、valueTypeによって次のように決まります。 + + + + + + + + +
valueType valueの型
LONG型(GS_TYPE_LONG) int64_t*
DOUBLE型(GS_TYPE_DOUBLE) double*
TIMESTAMP型(GS_TYPE_TIMESTAMP) GSTimestamp*
+
+
Attention
valueTypevalueの型との対応が正しくない場合、この処理の動作は未定義です。アクセス違反により実行プロセスが異常終了する可能性があります。
+
Parameters
+ + + + +
[in]aggregationResult処理対象のGSAggregationResult
[out]value取り出す値を格納するための変数へのポインタ値。aggregationResultNULLの場合、また、valueTypevalueとして指定できる型のいずれとも対応しない場合は、何も格納しません。aggregationResultが保持している値の型と照らし合わせて、valueTypeが取り出しできない型であった場合、初期値として0を格納します。
[in]valueType取り出す値の型
+
+
+
Returns
指定のaggregationResultが保持している値を取り出しできたかどうか。次の場合、GS_FALSEを返します。
    +
  • valueTypeとして取り出しできない型が指定された場合
  • +
  • ポインタ型引数にNULLが指定された場合
  • +
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetAggregationValueAsDouble (GSAggregationResultaggregationResult,
double * value,
GSBoolassigned 
)
+
+ +

数値型の集計値をDOUBLE型(double)として取得します。

+
数値型以外の値を保持している場合、assigned引数にはGS_FALSEが格納されます。DOUBLE型以外の数値を保持している場合、DOUBLE型に変換したものが格納されます。
+
Parameters
+ + + + +
[in]aggregationResult取得対象のGSAggregationResult
[out]value集計値を格納するための変数へのポインタ値
[out]assigned期待の型の値を取得できたかどうかを格納するための変数へのポインタ値。NULLが指定された場合、取得できたかどうかの情報は格納されません
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • assigned以外の引数にNULLが指定された場合
  • +
+
+
Since
3.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetAggregationValueAsLong (GSAggregationResultaggregationResult,
int64_t * value,
GSBoolassigned 
)
+
+ +

数値型の集計値をLONG型(int64_t)として取得します。

+
数値型以外の値を保持している場合、assigned引数にはGS_FALSEが格納されます。LONG型以外の数値を保持している場合、LONG型に変換したものが格納されます。
+
Parameters
+ + + + +
[in]aggregationResult取得対象のGSAggregationResult
[out]value集計値を格納するための変数へのポインタ値
[out]assigned期待の型の値を取得できたかどうかを格納するための変数へのポインタ値。NULLが指定された場合、取得できたかどうかの情報は格納されません
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • assigned以外の引数にNULLが指定された場合
  • +
+
+
Since
3.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetAggregationValueAsPreciseTimestamp (GSAggregationResultaggregationResult,
GSPreciseTimestampvalue,
GSBoolassigned 
)
+
+ +

時刻型の集計値を高精度のTIMESTAMP型(GSPreciseTimestamp)で取得します。

+
TIMESTAMP型以外の値を保持している場合、assigned引数にはGS_FALSEが格納されます。
+
高精度のTIMESTAMP値を保持している場合、通常精度の値に変換したものが求まります。
+
Parameters
+ + + + +
[in]aggregationResult取得対象のGSAggregationResult
[out]value集計値を格納するための変数へのポインタ値
[out]assigned期待の型の値を取得できたかどうかを格納するための変数へのポインタ値。NULLが指定された場合、取得できたかどうかの情報は格納されません
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • assigned以外の引数にNULLが指定された場合
  • +
+
+
Since
5.3
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetAggregationValueAsTimestamp (GSAggregationResultaggregationResult,
GSTimestampvalue,
GSBoolassigned 
)
+
+ +

時刻型の集計値を通常精度のTIMESTAMP型(GSTimestamp)で取得します。

+
TIMESTAMP型以外の値を保持している場合、assigned引数にはGS_FALSEが格納されます。
+
通常精度のTIMESTAMP値を保持している場合、高精度の値に変換したものが求まります。
+
Parameters
+ + + + +
[in]aggregationResult取得対象のGSAggregationResult
[out]value集計値を格納するための変数へのポインタ値
[out]assigned期待の型の値を取得できたかどうかを格納するための変数へのポインタ値。NULLが指定された場合、取得できたかどうかの情報は格納されません
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • assigned以外の引数にNULLが指定された場合
  • +
+
+
Since
3.5
+ +
+
+
+
+
+
GSCollection
+
+
+ + + + + +

+Classes

struct  GSCollectionPropertiesTag
 コレクションの構成オプションを表します。More...
 
+ + + + +

+Macros

+#define GS_COLLECTION_PROPERTIES_INITIALIZER   { 0 }
 GSCollectionPropertiesの初期化子です。
 
+ + + + + + + + + +

+Typedefs

typedef GSContainer GSCollection
 ロウ集合を汎用的に管理するためのコンテナです。More...
 
typedef GSEnum GSGeometryOperator
 
typedef struct
+GSCollectionPropertiesTag 
GSCollectionProperties
 コレクションの構成オプションを表します。More...
 
+ + + + +

+Enumerations

enum  GSGeometryOperatorTag { GS_GEOMETRY_OPERATOR_INTERSECT + }
 空間範囲同士の関係性についての制約を定義します。More...
 
+ + + + + + + +

+Functions

GS_DLL_PUBLIC GSResult GS_API_CALL gsQueryByGeometry (GSCollection *collection, const GSChar *column, const GSChar *geometry, GSGeometryOperator geometryOp, GSQuery **query)
 指定した空間範囲条件に合致するロウ集合を求めるための、クエリを作成します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsQueryByGeometryWithDisjointCondition (GSCollection *collection, const GSChar *column, const GSChar *geometryIntersection, const GSChar *geometryDisjoint, GSQuery **query)
 除外範囲付きの空間範囲条件に合致するロウ集合を求めるための、クエリを作成します。More...
 
+

Detailed Description

+

Typedef Documentation

+ +
+
+ + + + +
typedef GSContainer GSCollection
+
+ +

ロウ集合を汎用的に管理するためのコンテナです。

+
ロウキーには次の型が使用できます。
    +
  • STRING型(GSChar*)
  • +
  • INTEGER型(int32_t)
  • +
  • LONG型(int64_t)
  • +
  • TIMESTAMP型(GSTimestamp)
  • +
+
+
ロウキーの設定は必須ではありません。
+
ロウ操作について、コンテナ固有の制限は設けられていません。
+
gsQueryもしくはgsGetMultipleContainerRowsなどより複数のロウの内容を一度に取得する場合、特に指定がなければ、返却されるロウの順序は不定となります。
+
ロック粒度はロウ単位です。
+ +
+
+ +
+
+ +

コレクションの構成オプションを表します。

+
Note
現バージョンでは使用されておりません。
+ +
+
+ +
+
+ + + + +
typedef GSEnum GSGeometryOperator
+
+
See Also
GSGeometryOperatorTag
+ +
+
+

Enumeration Type Documentation

+ +
+
+ + + + +
enum GSGeometryOperatorTag
+
+ +

空間範囲同士の関係性についての制約を定義します。

+
空間範囲検索の条件指定のために使用します。
+ + +
Enumerator
GS_GEOMETRY_OPERATOR_INTERSECT  +

双方の空間範囲またはその外接構造が交差する関係にあることを示します。

+
双方の外接直方体(Minimum Bounding Box)、もしくは外接直方体と2次曲面が交差する関係にあることを示します。交差判定の条件は、TQLのST_MBRIntersects関数、もしくはST_QSFMBRIntersects関数と同一です。
+
+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsQueryByGeometry (GSCollectioncollection,
const GSCharcolumn,
const GSChargeometry,
GSGeometryOperator geometryOp,
GSQuery ** query 
)
+
+ +

指定した空間範囲条件に合致するロウ集合を求めるための、クエリを作成します。

+
gsFetchを通じてロウ集合を求める際、更新用ロックのオプションを有効にすることもできます。
+
Parameters
+ + + + + + +
[in]collection処理対象のGSCollection
[in]column比較対象の空間型カラムの名前
[in]geometry比較対象として与える空間構造
[in]geometryOp比較方法
[out]queryGSQueryインスタンスを格納するためのポインタ変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、このポインタ値がNULL以外の値であれば、対応するポインタ変数にNULLが格納されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • 指定のコンテナの種別がコレクションではない場合
  • +
  • 対応する名前のカラムが存在しない場合
  • +
  • geometryOp以外の引数にNULLが指定された場合
  • +
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsQueryByGeometryWithDisjointCondition (GSCollectioncollection,
const GSCharcolumn,
const GSChargeometryIntersection,
const GSChargeometryDisjoint,
GSQuery ** query 
)
+
+ +

除外範囲付きの空間範囲条件に合致するロウ集合を求めるための、クエリを作成します。

+
geometryIntersectionと交差し、かつ、geometryDisjointと交差しないカラム値を持つロウ集合を取得します。交差判定の条件は、GS_GEOMETRY_OPERATOR_INTERSECTと同一です。
+
gsFetchを通じてロウ集合を求める際、更新用ロックのオプションを有効にすることもできます。
+
Parameters
+ + + + + + +
[in]collection処理対象のGSCollection
[in]column比較対象の空間型カラムの名前
[in]geometryIntersectionカラム上の値と交差する範囲を示す空間構造
[in]geometryDisjoint上の値と交差しない範囲を示す空間構造
[out]queryGSQueryインスタンスを格納するためのポインタ変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、このポインタ値がNULL以外の値であれば、対応するポインタ変数にNULLが格納されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • 指定のコンテナの種別がコレクションではない場合
  • +
  • 対応する名前のカラムが存在しない場合
  • +
  • 引数にNULLが指定された場合
  • +
+
+ +
+
+
+
+
+
GSContainer
+
+
+ + + + + + + + + + + + + + +

+Classes

struct  GSColumnInfoTag
 カラムのスキーマに関する情報を表します。More...
 
struct  GSTriggerInfoTag
 トリガに関する情報を表します。More...
 
struct  GSIndexInfoTag
 索引の設定内容を表します。More...
 
struct  GSContainerInfoTag
 特定のコンテナに関する情報を表します。More...
 
+ + + + + + + + + + + + + +

+Macros

+#define GS_COLUMN_INFO_INITIALIZER   { NULL, GS_TYPE_STRING, GS_INDEX_FLAG_DEFAULT, 0 }
 GSColumnInfoの初期化子です。
 
+#define GS_TRIGGER_INFO_INITIALIZER   { NULL, GS_TRIGGER_REST, NULL, 0, NULL, 0, NULL, NULL, NULL }
 GSTriggerInfoの初期化子です。
 
#define GS_INDEX_INFO_INITIALIZER   { NULL, GS_INDEX_FLAG_DEFAULT, -1, NULL, 0, NULL, 0, NULL }
 GSIndexInfoの初期化子です。More...
 
+#define GS_CONTAINER_INFO_INITIALIZER
 GSContainerInfoの初期化子です。
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Typedefs

typedef struct GSContainerTag GSContainer
 同一タイプのロウ集合からなるGridDBの構成要素に対しての、管理機能を提供します。More...
 
typedef int32_t GSIndexTypeFlags
 
typedef GSEnum GSContainerType
 
typedef int32_t GSTypeOption
 カラムに関するオプション設定を示すフラグ値のビット和です。More...
 
+typedef struct GSColumnInfoTag GSColumnInfo
 カラムのスキーマに関する情報を表します。
 
typedef GSEnum GSTriggerType
 
typedef int32_t GSTriggerEventTypeFlags
 
typedef struct GSTriggerInfoTag GSTriggerInfo
 トリガに関する情報を表します。More...
 
typedef struct GSIndexInfoTag GSIndexInfo
 索引の設定内容を表します。More...
 
+typedef struct GSContainerInfoTag GSContainerInfo
 特定のコンテナに関する情報を表します。
 
+ + + + + + + + + + + + + + + + +

+Enumerations

enum  GSIndexTypeFlagTag { GS_INDEX_FLAG_DEFAULT = -1, +GS_INDEX_FLAG_TREE = 1 << 0, +GS_INDEX_FLAG_HASH = 1 << 1, +GS_INDEX_FLAG_SPATIAL = 1 << 2 + }
 GSContainerに設定する索引の種別を示します。More...
 
enum  GSContainerTypeTag { GS_CONTAINER_COLLECTION, +GS_CONTAINER_TIME_SERIES + }
 コンテナの種別を表します。More...
 
enum  GSTypeOptionTag {
+  GS_TYPE_OPTION_NULLABLE = 1 << 1, +GS_TYPE_OPTION_NOT_NULL = 1 << 2, +GS_TYPE_OPTION_DEFAULT_VALUE_NULL = 1 << 3, +GS_TYPE_OPTION_DEFAULT_VALUE_NOT_NULL = 1 << 4, +
+  GS_TYPE_OPTION_TIME_MILLI = 1 << 5, +GS_TYPE_OPTION_TIME_MICRO = 1 << 6, +GS_TYPE_OPTION_TIME_NANO = 1 << 7 +
+ }
 カラムに関するオプション設定を示します。More...
 
enum  GSTriggerTypeTag { GS_TRIGGER_REST, +GS_TRIGGER_JMS + }
 トリガの種別を表します。More...
 
enum  GSTriggerEventTypeFlagTag { GS_TRIGGER_EVENT_PUT = 1 << 0, +GS_TRIGGER_EVENT_DELETE = 1 << 1 + }
 トリガで監視対象とする更新操作種別を表します。More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

GS_DLL_PUBLIC void GS_API_CALL gsCloseContainer (GSContainer **container, GSBool allRelated)
 指定のGSContainerインスタンスについて、必要に応じこのインスタンスならびに関連するリソースを解放します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsCreateTrigger (GSContainer *container, const GSTriggerInfo *info)
 トリガを設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsCreateIndex (GSContainer *container, const GSChar *columnName, GSIndexTypeFlags flags)
 指定された名前のカラムに対し、指定された種別で名前のない索引を作成します。More...
 
GS_STATIC_HEADER_FUNC_SPECIFIER
+GSResult 
gsCreateIndexDetail (GSContainer *container, const GSIndexInfo *info)
 GSIndexInfoで設定されている内容に従い、索引を作成します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsDropTrigger (GSContainer *container, const GSChar *name)
 トリガを削除します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsDropIndex (GSContainer *container, const GSChar *columnName, GSIndexTypeFlags flags)
 指定された名前のカラムのうち、指定された種別の索引のみを削除します。More...
 
GS_STATIC_HEADER_FUNC_SPECIFIER
+GSResult 
gsDropIndexDetail (GSContainer *container, const GSIndexInfo *info)
 GSIndexInfoで設定されている内容に一致する、すべての索引を削除します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsFlush (GSContainer *container)
 これまでの更新結果をSSDなどの不揮発性記憶媒体に書き出し、すべてのクラスタノードが突然停止したとしても内容が失われないようにします。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRow (GSContainer *container, const void *key, void *rowObj, GSBool *exists)
 ロウキーに対応するロウの内容を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsPutRow (GSContainer *container, const void *key, const void *rowObj, GSBool *exists)
 必要に応じ別途ロウキーを指定して、ロウを新規作成または更新します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsPutMultipleRows (GSContainer *container, const void *const *rowObjs, size_t rowCount, GSBool *exists)
 指定のロウオブジェクト集合に基づき、任意個数のロウをまとめて新規作成または更新します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsQuery (GSContainer *container, const GSChar *queryString, GSQuery **query)
 指定のTQL文を実行するためのクエリを作成します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsDeleteRow (GSContainer *container, const void *key, GSBool *exists)
 指定のロウキーに対応するロウを削除します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetContainerType (GSContainer *container, GSContainerType *type)
 指定のコンテナの種別を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsCreateRowByContainer (GSContainer *container, GSRow **row)
 指定のコンテナのカラムレイアウトに基づき、ロウオブジェクトを新規作成します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsAbort (GSContainer *container)
 手動コミットモードにおいて、現在のトランザクションの操作結果を元に戻し、新たなトランザクションを開始します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsCommit (GSContainer *container)
 手動コミットモードにおいて、現在のトランザクションにおける操作結果を確定させ、新たなトランザクションを開始します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowForUpdate (GSContainer *container, const void *key, void *rowObj, GSBool *exists)
 ロウキーに対応するロウについて、更新用ロックを獲得し内容を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetAutoCommit (GSContainer *container, GSBool enabled)
 コミットモードの設定を変更します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowByInteger (GSContainer *container, int32_t key, void *rowObj, GSBool forUpdate, GSBool *exists)
 INTEGER型のロウキーに対応するロウの内容を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowByLong (GSContainer *container, int64_t key, void *rowObj, GSBool forUpdate, GSBool *exists)
 LONG型のロウキーに対応するロウの内容を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowByTimestamp (GSContainer *container, GSTimestamp key, void *rowObj, GSBool forUpdate, GSBool *exists)
 通常精度のTIMESTAMP型のロウキーに対応するロウの内容を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowByPreciseTimestamp (GSContainer *container, const GSPreciseTimestamp *key, void *rowObj, GSBool forUpdate, GSBool *exists)
 高精度のTIMESTAMP型のロウキーに対応するロウの内容を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowByString (GSContainer *container, const GSChar *key, void *rowObj, GSBool forUpdate, GSBool *exists)
 STRING型のロウキーに対応するロウの内容を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsPutRowByInteger (GSContainer *container, int32_t key, const void *rowObj, GSBool *exists)
 INTEGER型のロウキーを指定して、ロウを新規作成または更新します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsPutRowByLong (GSContainer *container, int64_t key, const void *rowObj, GSBool *exists)
 LONG型のロウキーを指定して、ロウを新規作成または更新します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsPutRowByTimestamp (GSContainer *container, GSTimestamp key, const void *rowObj, GSBool *exists)
 通常精度のTIMESTAMP型のロウキーを指定して、ロウを新規作成または更新します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsPutRowByPreciseTimestamp (GSContainer *container, const GSPreciseTimestamp *key, const void *rowObj, GSBool *exists)
 高精度のTIMESTAMP型のロウキーを指定して、ロウを新規作成または更新します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsPutRowByString (GSContainer *container, const GSChar *key, const void *rowObj, GSBool *exists)
 STRING型のロウキーを指定して、ロウを新規作成または更新します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsDeleteRowByInteger (GSContainer *container, int32_t key, GSBool *exists)
 INTEGER型のロウキーに対応するロウを削除します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsDeleteRowByLong (GSContainer *container, int64_t key, GSBool *exists)
 LONG型のロウキーに対応するロウを削除します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsDeleteRowByTimestamp (GSContainer *container, GSTimestamp key, GSBool *exists)
 通常精度のTIMESTAMP型のロウキーに対応するロウを削除します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsDeleteRowByPreciseTimestamp (GSContainer *container, const GSPreciseTimestamp *key, GSBool *exists)
 高精度のTIMESTAMP型のロウキーに対応するロウを削除します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsDeleteRowByString (GSContainer *container, const GSChar *key, GSBool *exists)
 STRING型のロウキーに対応するロウを削除します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowGeneral (GSContainer *container, GSRowKey *keyObj, GSRow *rowObj, GSBool forUpdate, GSBool *exists)
 指定のGSRowKeyに対応するロウの内容をGSRowとして取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsPutRowGeneral (GSContainer *container, GSRowKey *keyObj, GSRow *rowObj, GSBool *exists)
 必要に応じ別途ロウキーを指定して、ロウを新規作成または更新します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsDeleteRowGeneral (GSContainer *container, GSRowKey *keyObj, GSBool *exists)
 指定のロウキーに対応するロウを削除します。More...
 
+

Detailed Description

+

Macro Definition Documentation

+ +
+
+ + + + +
#define GS_INDEX_INFO_INITIALIZER   { NULL, GS_INDEX_FLAG_DEFAULT, -1, NULL, 0, NULL, 0, NULL }
+
+ +

GSIndexInfoの初期化子です。

+
Since
3.5
+ +
+
+

Typedef Documentation

+ +
+
+ + + + +
typedef struct GSContainerTag GSContainer
+
+ +

同一タイプのロウ集合からなるGridDBの構成要素に対しての、管理機能を提供します。

+
ロウオブジェクトを入出力の基本単位として、各種管理機能を提供します。ロウオブジェクトとGridDB上のロウは、指定のロウオブジェクト型とGridDB上のスキーマとの対応関係に基づいて、相互にマッピングされます。
+
GridDB上のスキーマを構成する各カラムは、対応するGS_STRUCT_BINDINGの内容に基づき決定されます。1つのコンテナは1つ以上のカラムにより構成されます。
+
1つのコンテナのカラム間で、ASCIIの大文字・小文字表記だけが異なる名前のものを複数定義することはできません。その他、コンテナ定義におけるカラム名の文字種や長さ、カラム数には制限があります。具体的には、GridDB機能リファレンスを参照してください。特に記載のない限り、カラム名を指定する操作では、ASCIIの大文字・小文字表記の違いは区別されません。
+
カラムの型と、ロウオブジェクト内の各値の型との対応は、それぞれ次の通りです。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
カラム型ロウオブジェクト内の各値の型
STRING GSChar*
BOOL GSBool
BYTE int8_t
SHORT int16_t
INTEGER int32_t
LONG int64_t
FLOAT float
DOUBLE double
TIMESTAMP(通常精度:ミリ秒) GSTimestamp
TIMESTAMP(高精度:マイクロ・ナノ秒) GSPreciseTimestamp
GEOMETRY GSChar*
BLOB GSBlob
STRING配列GSChar**
BOOL配列GSBool*
BYTE配列int8_t*
SHORT配列int16_t*
INTEGER配列int32_t*
LONG配列int64_t*
FLOAT配列float*
DOUBLE配列double*
TIMESTAMP配列GSTimestamp*
+
+
フィールドの値の表現範囲やサイズには制限があります。具体的には、付録の章の値の範囲の説明、ならびに、GridDB機能リファレンスを参照してください。制限に反する値をコンテナに格納することはできません。
+
ロウキーとして許可されている型や、ロウキーに対応するカラムの有無、ロウ更新の可否といった制約は、このコンテナ型から派生した個別の型の定義によって異なります。
+
GridDB上のロウにおけるNULLは、NOT NULL制約が設定されていない限り保持することができます。NULLは、GSRowを通じて格納や取り出しを行うことができます。一方、GS_STRUCT_BINDINGと対応付くロウオブジェクトにおいては、常に後述の空の値にマッピングされます。
+
ロウオブジェクト型におけるNOT NULL制約は、GS_TYPE_OPTION_NULLABLEならびにGS_TYPE_OPTION_NOT_NULLにより明示的に指定できます。NOT NULL制約がいずれの指定対象にも指定されていない場合、ロウキー以外のカラムはNOT NULL制約なしであるとみなされます。ロウキーは暗黙的にNOT NULL制約が設定された状態となっており、この制約を外すような指定はできません。また、同一指定対象での矛盾したNOT NULL制約は指定できません。NOT NULL制約は、GSColumnInfoTag::optionsを通じて指定することができます。
+
空の値は、GSRowの作成など各種操作の初期値などとして用いられることのある、フィールド値の一種です。以下のように、カラム型ごとに値が定義されています。 + + + + + + + + + + + + + + + + +
カラム型空の値
STRING "" (長さ0の文字列)
BOOL 偽(GS_FALSE)
数値型0
TIMESTAMP 1970-01-01T00:00:00Z
GEOMETRY POINT(EMPTY)
BLOB 長さ0のBLOBデータ
配列型要素数0の配列
+
+
日時精度は、GSTypeOptionの日時精度に関するオプションにより明示的に指定できます。
+
トランザクション処理では、デフォルトで自動コミットモードが有効になっています。自動コミットモードでは、変更操作は逐次確定し、明示的に取り消すことができません。手動コミットモードにおいて、GSContainerインスタンスを介した操作によりクラスタノード上でエラーが検出された場合、コミット前の更新操作はすべて取り消されます。トランザクション分離レベルはREAD COMMITTEDのみをサポートします。ロック粒度は、コンテナの種別によって異なります。
+
ロウの更新・追加・削除、ならびに更新用ロック獲得を行った場合、内部でトランザクションが生成されます。このトランザクションには、有効期限が存在します。これらの操作をあるGSContainerインスタンスに対してはじめて行った時刻を起点として、GridDB上で定められている期間だけ経過した後に、さらに同様の操作やトランザクション操作を行おうとすると、該当するGSContainerインスタンスを介した以降の操作は常に失敗するようになります。
+
あるコンテナへの操作要求に対するクラスタノード上での処理が開始され、終了するまでの間、同一のコンテナに対する操作が待機させられる場合があります。ここでの操作には、コンテナのスキーマや索引などの定義変更、コンテナ情報の参照、ロウ操作などが含まれます。一貫性レベルがIMMEDIATEGSGridStoreインスタンスを通じてコンテナを操作する場合、同一のコンテナに対するIMMEDIATE設定での他の操作処理の途中、原則としては待機させられます。また、コンテナに対する他の操作処理の途中の状態に基づいて処理が行われることは、原則としてはありません。例外事項については、個別の操作ごとの説明を参照してください。
+ +
+
+ +
+
+ + + + +
typedef GSEnum GSContainerType
+
+
See Also
GSContainerTypeTag
+ +
+
+ +
+
+ + + + +
typedef struct GSIndexInfoTag GSIndexInfo
+
+ +

索引の設定内容を表します。

+
Since
3.5
+ +
+
+ +
+
+ + + + +
typedef int32_t GSIndexTypeFlags
+
+
See Also
GSIndexTypeFlagTag
+ +
+
+ +
+
+ + + + +
typedef int32_t GSTriggerEventTypeFlags
+
+
+ +
+
+ + + + +
typedef struct GSTriggerInfoTag GSTriggerInfo
+
+ +

トリガに関する情報を表します。

+
Since
1.5
+ +
+
+ +
+
+ + + + +
typedef GSEnum GSTriggerType
+
+
See Also
GSTriggerTypeTag
+ +
+
+ +
+
+ + + + +
typedef int32_t GSTypeOption
+
+ +

カラムに関するオプション設定を示すフラグ値のビット和です。

+
ある設定項目について、対応するフラグ値が複数含まれていた場合に、オプション設定が矛盾しているとみなされるものが存在します。それらの設定項目のうち、対応するフラグ値が一つも含まれていないものは、未設定状態であるとみなされます。この制約に該当する設定項目とフラグ値との対応は次の通りです。 + + + + + + +
設定項目フラグ値
NOT NULL制約 +
初期値でのNULL使用有無 +
+
+
See Also
GSTypeOptionTag
+ +
+
+

Enumeration Type Documentation

+ +
+
+ + + + +
enum GSContainerTypeTag
+
+ +

コンテナの種別を表します。

+ + + +
Enumerator
GS_CONTAINER_COLLECTION  +

対象のコンテナがコレクションであることを示します。

+
GS_CONTAINER_TIME_SERIES  +

対象のコンテナが時系列であることを示します。

+
+ +
+
+ +
+
+ + + + +
enum GSIndexTypeFlagTag
+
+ +

GSContainerに設定する索引の種別を示します。

+ + + + + +
Enumerator
GS_INDEX_FLAG_DEFAULT  +

デフォルトの索引を示します。

+
この索引種別は、特定の種別を明示せずに索引の操作を行う必要がある場合に用いられるものであり、実在する索引はこの種別以外の種別に分類されます。
+
GS_INDEX_FLAG_TREE  +

ツリー索引を示します。

+
この索引種別は、時系列におけるロウキーと対応するカラムを除く任意の種別のコンテナにおける、次の型のカラムに対して使用できます。
    +
  • STRING
  • +
  • BOOL
  • +
  • BYTE
  • +
  • SHORT
  • +
  • INTEGER
  • +
  • LONG
  • +
  • FLOAT
  • +
  • DOUBLE
  • +
  • TIMESTAMP
  • +
+
+
GS_INDEX_FLAG_HASH  +

ハッシュ索引を示します。

+
この索引は、GSCollectionにおける次の型のカラムに対して設定できます。
    +
  • STRING
  • +
  • BOOL
  • +
  • BYTE
  • +
  • SHORT
  • +
  • INTEGER
  • +
  • LONG
  • +
  • FLOAT
  • +
  • DOUBLE
  • +
  • TIMESTAMP
  • +
+
+
GSTimeSeriesに対して設定することはできません。
+
GS_INDEX_FLAG_SPATIAL  +

空間索引を示します。

+
この索引種別は、GSCollectionにおけるGEOMETRY型のカラムに対してのみ使用できます。GSTimeSeriesに対して設定することはできません。
+
+ +
+
+ +
+
+ + + + +
enum GSTriggerEventTypeFlagTag
+
+ +

トリガで監視対象とする更新操作種別を表します。

+ + + +
Enumerator
GS_TRIGGER_EVENT_PUT  +

コンテナに対するロウ新規作成または更新を示します。

+
GS_TRIGGER_EVENT_DELETE  +

コンテナに対するロウ削除を示します。

+
+ +
+
+ +
+
+ + + + +
enum GSTriggerTypeTag
+
+ +

トリガの種別を表します。

+ + + +
Enumerator
GS_TRIGGER_REST  +

コンテナの更新時にRESTで通知するトリガ種別を示します。

+
GS_TRIGGER_JMS  +

コンテナの更新時にJava Message Service(JMS)で通知するトリガ種別を示します。

+
+ +
+
+ +
+
+ + + + +
enum GSTypeOptionTag
+
+ +

カラムに関するオプション設定を示します。

+
See Also
GSTypeOption
+ + + + + + + + +
Enumerator
GS_TYPE_OPTION_NULLABLE  +

NOT NULL制約を持たないカラムであることを示します。

+
Since
3.5
+
GS_TYPE_OPTION_NOT_NULL  +

NOT NULL制約を持つカラムであることを示します。

+
Since
3.5
+
GS_TYPE_OPTION_DEFAULT_VALUE_NULL  +

初期値としてNULLを使用するカラムであることを示します。

+
Since
4.1
+
GS_TYPE_OPTION_DEFAULT_VALUE_NOT_NULL  +

初期値としてNULLを使用しないカラムであることを示します。

+
Since
4.1
+
GS_TYPE_OPTION_TIME_MILLI  +

ミリ秒単位で保持する通常精度の日時型カラムであることを示します。

+
日時型カラムの定義において、精度のオプションが指定されなかった場合、この通常精度のオプションが選択されたものとみなされます。
+
Since
5.3
+
GS_TYPE_OPTION_TIME_MICRO  +

マイクロ秒単位で保持する高精度の日時型カラムであることを示します。

+
Since
5.3
+
GS_TYPE_OPTION_TIME_NANO  +

ナノ秒単位で保持する高精度の日時型カラムであることを示します。

+
Since
5.3
+
+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsAbort (GSContainercontainer)
+
+ +

手動コミットモードにおいて、現在のトランザクションの操作結果を元に戻し、新たなトランザクションを開始します。

+
Parameters
+ + +
[in]container処理対象のGSContainer
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • 自動コミットモードであるにもかかわらず呼び出した場合
  • +
  • この処理またはトランザクションのタイムアウト、指定のコンテナの削除、接続障害が発生した場合
  • +
  • 引数にNULLが指定された場合
  • +
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC void GS_API_CALL gsCloseContainer (GSContainer ** container,
GSBool allRelated 
)
+
+ +

指定のGSContainerインスタンスについて、必要に応じこのインスタンスならびに関連するリソースを解放します。

+
トランザクションを保持している場合、未コミットの更新内容はすべて元に戻されます。
+
この処理を行うために接続障害が発生したとしても、ローカルリソースの解放処理は適宜実施されます。ただし、GridDB上のトランザクション状態などは状態などは残る可能性があります。
+
Parameters
+ + + +
[in,out]containerクローズ対象のGSContainerインスタンスを指しているポインタ変数へのポインタ値。クローズすると、ポインタ変数にNULLが設定されます。以後、解放したGSContainerインスタンスにアクセスしてはなりません。ポインタ値またはポインタ変数の値がNULLの場合は、クローズ処理を行いません。
[in]allRelated指定のGSContainerと関連する下位のリソースのうち、未クローズのものすべてをクローズするかどうか。関連する下位のリソースとは、指定のGSContainerを介して取得したGSQueryGSAggregationResult、ならびに、これらのリソースと関連する下位のリソースのことを指します。GS_FALSEを指定した場合、指定のGSContainerを介して取得したリソースを個別にクローズする必要があり、すべてクローズした時点で指定のGSContainer自体のリソースが解放されます。
+
+
+ +
+
+ +
+
+ + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsCommit (GSContainercontainer)
+
+ +

手動コミットモードにおいて、現在のトランザクションにおける操作結果を確定させ、新たなトランザクションを開始します。

+
Parameters
+ + +
[in]container処理対象のGSContainer
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • 自動コミットモードであるにもかかわらず呼び出した場合
  • +
  • この処理またはトランザクションのタイムアウト、指定のコンテナの削除、接続障害が発生した場合
  • +
  • 引数にNULLが指定された場合
  • +
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsCreateIndex (GSContainercontainer,
const GSCharcolumnName,
GSIndexTypeFlags flags 
)
+
+ +

指定された名前のカラムに対し、指定された種別で名前のない索引を作成します。

+
カラム名と種別のみが設定されたGSIndexInfoを指定してgsCreateIndexDetailを呼び出した場合と同様に振る舞います。ただし、flagsにデフォルト種別を含め一つも種別が指定されていない場合、索引は作成されません。
+
Parameters
+ + + + +
[in]container処理対象のGSContainer
[in]columnName処理対象のカラムの名前
[in]flags作成する索引種別のフラグ値のビット和。指定できる値はgsCreateIndexDetailの場合と同様です
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • 指定のカラム名と種別がgsCreateIndexDetailの規則に合致しない場合
  • +
  • この処理のタイムアウト、指定のコンテナの削除もしくはスキーマ変更、接続障害が発生した場合
  • +
  • flags以外の引数にNULLが指定された場合
  • +
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GS_STATIC_HEADER_FUNC_SPECIFIER GSResult gsCreateIndexDetail (GSContainercontainer,
const GSIndexInfoinfo 
)
+
+ +

GSIndexInfoで設定されている内容に従い、索引を作成します。

+
作成対象の索引のカラムについては、カラム名列またはカラム番号列の少なくとも一方が設定されており、かつ、対応するコンテナにおいて実在するものが設定されている必要があります。カラム名列とカラム番号列が共に設定されている場合、対応するカラム列が順序を含め一致している必要があります。
+
索引種別が一つも設定されていないかGS_INDEX_FLAG_DEFAULTが設定されていた場合、後述の基準に従い、デフォルト種別の索引が選択されます。それ以外の場合、対象のカラムにおいて許されている索引種別である限り、一つ以上の種別を指定できます。複数個の種別が設定されていた場合、作成途中に一部の索引のみが作成された状態のコンテナ情報を参照できることや、エラーが生じるとその状態まま作成操作が終了することがあります。
+
1つのコンテナの索引間で、ASCIIの大文字・小文字表記だけが異なる名前のものを複数定義することはできません。その他、索引の定義において使用できる索引名の文字種や長さには制限があります。具体的には、GridDB機能リファレンスを参照してください。特に記載のない限り、索引名を指定する操作では、ASCIIの大文字・小文字表記の違いは区別されません。
+
既存の同名の索引が存在した場合、後述の条件を満たす同一設定のGSIndexInfoを指定しなければならず、その場合新たな索引は作成されません。一方、既存の異なる名前の索引または名前のない索引と同一設定のGSIndexInfoを指定することはできません。
+
索引名が設定されていない場合は、名前のない索引の作成が要求されたものとみなされます。名前を除いて同一設定の索引がすでに存在していた場合、名前のない索引でなければならず、その場合新たな索引は作成されません。
+
現バージョンでは、少なくともGSContainerを通じて作成された索引において、次の条件を満たす場合に索引名を除いて同一設定の索引であるとみなされます。
    +
  • 索引対象のカラム列が順序を含め一致すること。カラム名列、カラム番号列、単一カラム指定、といった、カラム列の指定方法の違いは無視される
  • +
  • 索引種別が一致すること。デフォルト指定の有無といった索引種別の指定方法の違いは無視される
  • +
+
+
現バージョンにおける、gsGetDefaultFactoryを基に生成されたGSContainerインスタンスでは、コンテナの種別、対応するカラムの型などに基づき、次の索引種別がデフォルトとして選択されます。 + + + + + + + + + + + + + + + + +
カラムの型コレクション時系列
STRING GS_INDEX_FLAG_TREE GS_INDEX_FLAG_TREE
BOOL GS_INDEX_FLAG_TREE GS_INDEX_FLAG_TREE
数値型GS_INDEX_FLAG_TREE GS_INDEX_FLAG_TREE
TIMESTAMP GS_INDEX_FLAG_TREE GS_INDEX_FLAG_TREE※制限あり
GEOMETRY GS_INDEX_FLAG_SPATIAL (なし)
BLOB (なし) (なし)
配列型(なし) (なし)
+
+
時系列のロウキー(TIMESTAMP型)には索引を設定できません。また、カラム列を構成するカラム型によってデフォルト種別が異なる場合には、選択できません。
+
このGSContainerインスタンスが未コミットのトランザクションを保持していた場合、コミットしてから作成を行います。処理対象のコンテナにおいて実行中の他のトランザクションが存在する場合、それらの終了を待機してから作成を行います。すでに索引が存在しており新たな索引が作成されなかった場合、他のトランザクションによって待機するかどうかは未定義です。またこの場合、このGSContainerインスタンスが保持している未コミットのトランザクションが常にコミットされるかどうかは未定義です。
+
現バージョンでは、コンテナの規模など諸条件を満たした場合、索引の作成開始から終了までの間に、処理対象のコンテナに対してコンテナ情報の参照、一部の索引操作、トリガ操作、ロウ操作(更新含む)を行える場合があります。それ以外の操作は、GSContainerでの説明通り待機させる場合があります。索引の作成途中に別の操作が行われる場合は、作成途中の索引に関する情報はコンテナ情報には含まれません。
+
Parameters
+ + + +
[in]container処理対象のGSContainer
[in]info処理対象の索引の情報
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • 作成対象のカラム、索引名が上記の規則に合致しない場合
  • +
  • この処理のタイムアウト、指定のコンテナの削除もしくはスキーマ変更、接続障害が発生した場合
  • +
  • 指定のカラムにおいてサポートされていない索引種別が指定された場合
  • +
  • 引数にNULLが指定された場合
  • +
+
+
Since
3.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsCreateRowByContainer (GSContainercontainer,
GSRow ** row 
)
+
+ +

指定のコンテナのカラムレイアウトに基づき、ロウオブジェクトを新規作成します。

+
作成されるGSRowの各フィールドにはgsCreateRowByStoreにより作成した場合と同様に既定の初期値が設定されます。
+
Parameters
+ + + +
[in]container処理対象のGSContainer
[out]rowGSRowインスタンスを格納するためのポインタ変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、このポインタ値がNULL以外の値であれば、対応するポインタ変数にNULLが格納されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • 引数にNULLが指定された場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsCreateTrigger (GSContainercontainer,
const GSTriggerInfoinfo 
)
+
+ +

トリガを設定します。

+
指定のコンテナに対して特定の種別の更新操作が行われた場合に、指定のURIに通知が送信されるようになります。指定されたトリガと同名のトリガが存在した場合、設定内容が上書きされます。
+
トリガ設定内容の詳細は、GSTriggerInfoの定義を参照してください。トリガ名、トリガ種別、通知条件、通知先URI、通知内容の詳細は以下の通りです。
+
トリガ名
トリガ種別や通知条件などの違いによらず、1つのコンテナのトリガ間で、ASCIIの大文字・小文字表記を含め同一の名前のものを複数定義することはできません。その他、トリガの定義において使用できるトリガ名の文字種や長さには制限があります。具体的には、GridDB機能リファレンスを参照してください。特に記載のない限り、トリガ名を指定する操作では、ASCIIの大文字・小文字表記の違いが区別されます。
+
トリガ種別
次のトリガ種別をサポートします。 + + + + + + +
名称説明
REST コンテナに指定された種別の更新操作が行われた際に、指定されたURIにREST(HTTP POSTメソッド)で通知するトリガです。
Java Message Service(JMS) コンテナに指定された種別の更新操作が行われた際に、指定されたURIのJMSサーバへJMSメッセージを通知するトリガです。JMSプロバイダとしてApache ActiveMQを使用します。
+
+
通知条件
指定のコンテナに対するロウ新規作成/更新(gsPutRowgsPutMultipleRowsgsPutMultipleContainerRowsgsUpdateCurrentRow)・削除(gsDeleteRowgsDeleteCurrentRow)操作命令の実行直後に通知を行います。監視対象として複数の操作が指定された場合は、そのうちのいずれかが実行された際に通知を行います。
+
通知を行った時点でのレプリケーションの完了は保証されません。自動コミットモード無効で実行されたロウ新規作成/更新・削除命令に対応する通知については、通知を行った時点でトランザクションが未コミットであったり、通知後にトランザクションがアボートされたりした場合、通知を受けた時点で通知に含まれるデータが取得できないことがあります。
+
複数ロウ一括操作の場合、1件のロウ操作ごとに通知を行います。指定されたURIに通知を行っても一定時間以内に応答がない場合、タイムアウトし再送は行いません。GridDBクラスタに障害が発生した場合、ある更新操作に対応する通知が行われないことのほか、複数回通知されることがあります。
+
通知先URI
通知先URIは次の書式で記述します。
(メソッド名)://(ホスト名):(ポート番号)/(パス)
+
ただし、トリガ種別がRESTの場合、メソッド名にはhttpのみ指定できます。
+
通知内容
更新が行われたコンテナ名、更新操作名、更新されたロウデータの指定したカラムの値を通知します。更新操作名は、ロウ新規作成/更新では"put"、削除では"delete"となります。
+
通知する値は、ロウ新規作成では新規作成直後、更新では更新後、削除では削除前のロウデータについての、指定カラムの値となります。カラムの型がTIMESTAMPの場合、1970-01-01T00:00:00Zからの経過ミリ秒を示す整数が値として設定されます。カラムの型が、BLOB型、GEOMETRY型、配列型の場合、空文字列が値として設定されます。
+
通知方法―RESTの場合
以下のようなJSON文字列を、MIMEタイプapplication/jsonで送信します。
{
+
"container" : "(コンテナ名)",
+
"event" : "(更新操作名)",
+
"row" : {
+
"(カラム名)" : (カラムデータ),
+
"(カラム名)" : (カラムデータ),
+
...
+
}
+
}
+
+
通知方法―JMSの場合
javax.jms.TextMessageを、指定されたデスティネーション種別・デスティネーション名で送信します。
+
コンテナ名は、javax.jms.Message::setStringProperty("@container", "(コンテナ名)")で設定されます。更新操作名は、javax.jms.Message::setStringProperty("@event", "(更新操作名)")で設定されます。
+
カラムの値は、カラムの型に応じたjavax.jms.Message::setXXXProperty("(カラム名)", (カラムデータ))で設定されます。
+
トリガが設定されているコンテナに対してgsPutCollectiongsPutTimeSeriesなどによりカラムレイアウトが変更された際に、トリガの通知対象となっているカラムの削除または名称変更があった場合、該当するカラムはトリガの通知対象から削除されます。
+
GridDBからの通知の際に、設定されている通知先URIへのリクエストに対応するサーバが応答しなかった場合、タイムアウト時刻までの待機処理が発生します。この待機処理は、このコンテナならびに他の一部のコンテナの更新に対する通知が遅れる要因となります。したがって、無効となった通知先URIを持つトリガはgsDropTriggerにより削除することが推奨されます。
+
一つのコンテナに対して設定できるトリガの最大数、ならびに、トリガの各種設定値の上限については、GridDB機能リファレンスを参照してください。
+
Parameters
+ + + +
[in]container設定対象のGSContainer
[in]info設定対象のトリガ情報
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • トリガ名がNULL空、またはその他の規則に合致しない場合
  • +
  • 監視対象更新操作の指定がない場合
  • +
  • 通知先のURIが規定の構文に合致しない場合
  • +
  • トリガ種別でJMSが指定され、かつJMSデスティネーション種別がNULL、または空、または指定の書式に合致しない場合
  • +
  • トリガ種別でJMSが指定され、かつJMSデスティネーション名がNULL、または空の場合
  • +
  • この処理のタイムアウト、指定のコンテナの削除、接続障害が発生した場合
  • +
  • 引数にNULLが指定された場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsDeleteRow (GSContainercontainer,
const void * key,
GSBoolexists 
)
+
+ +

指定のロウキーに対応するロウを削除します。

+
ロウキーに対応するカラムが存在する場合のみ使用できます。対応するロウが存在しない場合は何も変更しません。
+
ただし、コンテナの種別ならびに設定によっては、制限が設けられています。圧縮オプションが設定された状態の時系列に対しては使用できません。
+
手動コミットモードの場合、対象のロウはロックされます。
+
Attention
指定のGSContainerにバインドされたロウオブジェクトのロウキーの型と指定のロウキーの型とが一致しない場合、この処理の動作は未定義です。アクセス違反により実行プロセスが異常終了する可能性があります。
+
Parameters
+ + + + +
[in]container処理対象のGSContainer
[in]key処理対象のロウキーが格納された変数へのポインタ値。GSContainerにおいて定義されているコンテナ上のロウキーの型とこの引数の型との関係は、gsGetRowの場合と同様です。
[out]exists処理対象のロウが存在したかどうかを格納するためのブール型変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、GS_FALSEが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • ロウキーに対応するカラムが存在しない場合
  • +
  • 特定コンテナ固有の制限に反する操作を行った場合
  • +
  • この処理またはトランザクションのタイムアウト、指定のコンテナの削除もしくはスキーマ変更、接続障害が発生した場合
  • +
  • サポート範囲外の値がキーとして指定された場合
  • +
  • exists以外の引数にNULLが指定された場合。また、keyに対応する文字列キーのポインタ値がNULLの場合
  • +
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsDeleteRowByInteger (GSContainercontainer,
int32_t key,
GSBoolexists 
)
+
+ +

INTEGER型のロウキーに対応するロウを削除します。

+
ロウキーに対応するINTEGER型のカラムが存在する場合のみ使用できます。対応するロウが存在しない場合は何も変更しません。
+
手動コミットモードの場合、対象のロウはロックされます。
+
Parameters
+ + + + +
[in]container処理対象のGSContainer
[in]key処理対象のロウキー
[out]exists処理対象のロウが存在したかどうかを格納するためのブール型変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、GS_FALSEが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • ロウキーに対応するINTEGER型のカラムが存在しない場合
  • +
  • この処理またはトランザクションのタイムアウト、指定のコンテナの削除もしくはスキーマ変更、接続障害が発生した場合
  • +
+
+
See Also
gsDeleteRow
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsDeleteRowByLong (GSContainercontainer,
int64_t key,
GSBoolexists 
)
+
+ +

LONG型のロウキーに対応するロウを削除します。

+
ロウキーに対応するLONG型のカラムが存在する場合のみ使用できます。対応するロウが存在しない場合は何も変更しません。
+
手動コミットモードの場合、対象のロウはロックされます。
+
Parameters
+ + + + +
[in]container処理対象のGSContainer
[in]key処理対象のロウキー
[out]exists処理対象のロウが存在したかどうかを格納するためのブール型変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、GS_FALSEが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • ロウキーに対応するLONG型のカラムが存在しない場合
  • +
  • この処理またはトランザクションのタイムアウト、指定のコンテナの削除もしくはスキーマ変更、接続障害が発生した場合
  • +
+
+
See Also
gsDeleteRow
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsDeleteRowByPreciseTimestamp (GSContainercontainer,
const GSPreciseTimestampkey,
GSBoolexists 
)
+
+ +

高精度のTIMESTAMP型のロウキーに対応するロウを削除します。

+
ロウキーに対応する高精度のTIMESTAMP型のカラムが存在する場合のみ使用できます。対応するロウが存在しない場合は何も変更しません。
+
ただし、コンテナの種別ならびに設定によっては、制限が設けられています。圧縮オプションが設定された状態の時系列に対しては使用できません。
+
手動コミットモードの場合、対象のロウはロックされます。
+
Parameters
+ + + + +
[in]container処理対象のGSContainer
[in]key処理対象のロウキー
[out]exists処理対象のロウが存在したかどうかを格納するためのブール型変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、GS_FALSEが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • ロウキーに対応する高精度のTIMESTAMP型のカラムが存在しない場合
  • +
  • 特定コンテナ固有の制限に反する操作を行った場合
  • +
  • この処理またはトランザクションのタイムアウト、指定のコンテナの削除もしくはスキーマ変更、接続障害が発生した場合
  • +
  • サポート範囲外の値がキーとして指定された場合
  • +
+
+
See Also
gsDeleteRow
+
Since
5.3
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsDeleteRowByString (GSContainercontainer,
const GSCharkey,
GSBoolexists 
)
+
+ +

STRING型のロウキーに対応するロウを削除します。

+
ロウキーに対応するSTRING型のカラムが存在する場合のみ使用できます。対応するロウが存在しない場合は何も変更しません。
+
手動コミットモードの場合、対象のロウはロックされます。
+
Parameters
+ + + + +
[in]container処理対象のGSContainer
[in]key処理対象のロウキー
[out]exists処理対象のロウが存在したかどうかを格納するためのブール型変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、GS_FALSEが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • ロウキーに対応するSTRING型のカラムが存在しない場合
  • +
  • この処理またはトランザクションのタイムアウト、指定のコンテナの削除もしくはスキーマ変更、接続障害が発生した場合
  • +
  • サポート範囲外の値がキーとして指定された場合
  • +
+
+
See Also
gsDeleteRow
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsDeleteRowByTimestamp (GSContainercontainer,
GSTimestamp key,
GSBoolexists 
)
+
+ +

通常精度のTIMESTAMP型のロウキーに対応するロウを削除します。

+
ロウキーに対応する通常精度のTIMESTAMP型のカラムが存在する場合のみ使用できます。対応するロウが存在しない場合は何も変更しません。
+
ただし、コンテナの種別ならびに設定によっては、制限が設けられています。圧縮オプションが設定された状態の時系列に対しては使用できません。
+
手動コミットモードの場合、対象のロウはロックされます。
+
Parameters
+ + + + +
[in]container処理対象のGSContainer
[in]key処理対象のロウキー
[out]exists処理対象のロウが存在したかどうかを格納するためのブール型変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、GS_FALSEが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • ロウキーに対応する通常精度のTIMESTAMP型のカラムが存在しない場合
  • +
  • 特定コンテナ固有の制限に反する操作を行った場合
  • +
  • この処理またはトランザクションのタイムアウト、指定のコンテナの削除もしくはスキーマ変更、接続障害が発生した場合
  • +
  • サポート範囲外の値がキーとして指定された場合
  • +
+
+
See Also
gsDeleteRow
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsDeleteRowGeneral (GSContainercontainer,
GSRowKeykeyObj,
GSBoolexists 
)
+
+ +

指定のロウキーに対応するロウを削除します。

+
ロウキーを持つコンテナであれば、ロウキーを構成するカラム数やカラム型によらず使用できます。対応するロウが存在しない場合は何も変更しません。
+
ただし、コンテナの種別ならびに設定によっては、制限が設けられています。圧縮オプションが設定された状態の時系列に対しては使用できません。
+
手動コミットモードの場合、対象のロウはロックされます。
+
Parameters
+ + + + +
[in]container処理対象のGSContainer
[in]keyObj処理対象のロウキー
[out]exists処理対象のロウが存在したかどうかを格納するためのブール型変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、GS_FALSEが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • ロウキーに対応するカラムが存在しない場合
  • +
  • 特定コンテナ固有の制限に反する操作を行った場合
  • +
  • この処理またはトランザクションのタイムアウト、指定のコンテナの削除もしくはスキーマ変更、接続障害が発生した場合
  • +
  • サポート範囲外の値がキーとして指定された場合
  • +
  • exists以外の引数にNULLが指定された場合。また、keyに対応する文字列キーのポインタ値がNULLの場合
  • +
+
+
Since
4.3
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsDropIndex (GSContainercontainer,
const GSCharcolumnName,
GSIndexTypeFlags flags 
)
+
+ +

指定された名前のカラムのうち、指定された種別の索引のみを削除します。

+
カラム名と種別のみが設定されたGSIndexInfoを指定してgsDropIndexDetailを呼び出した場合と同様に振る舞います。ただし、flagsにデフォルト種別を含め一つも種別が指定されていない場合、いずれの索引も削除対象にはなりません。
+
Parameters
+ + + + +
[in]container処理対象のGSContainer
[in]columnName処理対象のカラムの名前
[in]flags削除する索引種別のフラグ値のビット和。指定できる値はgsDropIndexDetailの場合と同様です
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • 指定のカラム名と種別がgsDropIndexDetailの規則に合致しない場合
  • +
  • この処理のタイムアウト、指定のコンテナの削除もしくはスキーマ変更、接続障害が発生した場合
  • +
  • flags以外の引数にNULLが指定された場合
  • +
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GS_STATIC_HEADER_FUNC_SPECIFIER GSResult gsDropIndexDetail (GSContainercontainer,
const GSIndexInfoinfo 
)
+
+ +

GSIndexInfoで設定されている内容に一致する、すべての索引を削除します。

+
GSIndexInfoの設定内容は、削除対象の索引を絞り込む条件として使用されます。絞り込み条件は、カラム列、索引種別、索引名の3つに分類されます。それぞれ設定するかどうかは任意です。いずれも設定されていない場合は、作成済みのすべての索引が削除されます。
+
カラム名列またはカラム番号列が設定されている場合、対応するコンテナにおいて実在するものである必要があります。カラム名列とカラム番号列が共に設定されている場合、対応するカラムが互いに一致している必要があります。カラム名列ならびにカラム番号列が共に設定されていない場合、他の絞り込み条件(索引種別、索引名)を満たす任意のカラム列に対する索引が削除対象となります。
+
索引種別が設定されている場合、指定の種別の索引のみが削除対象となります。GS_INDEX_FLAG_DEFAULTが設定されている場合、gsCreateIndexDetailの基準に従い、デフォルト種別の索引が選択されます。それ以外の場合、対象のカラムにおいて許されている索引種別である限り、任意個数の種別を指定できます。複数個の種別が設定されていた場合、削除途中に一部の索引のみが削除された状態のコンテナ情報を参照できることや、エラーが生じるとその状態まま削除操作が終了することがあります。索引をサポートしていないカラムや指定の種別の索引をサポートしていないカラムについては、削除対象にはなりません。索引種別が設定されていない場合、他の絞り込み条件(カラム列、索引名)を満たす任意の種別の索引が削除対象となります。
+
索引名が設定されている場合、指定の名前の索引のみが削除対象となります。索引名の同一性は、gsCreateIndexDetailの基準に従います。索引名が設定されていない場合、他の絞り込み条件(カラム列、索引種別)を満たす、任意の名前の索引ならびに名前のない索引が削除対象となります。
+
削除対象となる索引が一つも存在しない場合、索引の削除は行われません。
+
トランザクションの扱いは、gsCreateIndexDetailと同様です。また、索引種別としてデフォルト種別または単一の種別が設定されており、かつ、複数の索引が削除対象となった場合に、一部の索引のみが削除された状態で他のトランザクションが実行されることがありうるかどうかは未定義です。
+
索引の削除要求の完了直後の状態に関しては、gsDropContainerと同様です。
+
Parameters
+ + + +
[in]container処理対象のGSContainer
[in]info処理対象の索引の情報
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • 削除対象のカラム、索引名が上記の規則に合致しない場合
  • +
  • この処理のタイムアウト、指定のコンテナの削除もしくはスキーマ変更、接続障害が発生した場合
  • +
  • 引数にNULLが指定された場合
  • +
+
+
Since
3.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsDropTrigger (GSContainercontainer,
const GSCharname 
)
+
+ +

トリガを削除します。

+
指定された名前のトリガが存在しない場合は何も削除しません。
+
Parameters
+ + + +
[in]container削除対象のGSContainer
[in]name削除対象のトリガ名
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • この処理のタイムアウト、指定のコンテナの削除、接続障害が発生した場合
  • +
  • 引数にNULLが指定された場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsFlush (GSContainercontainer)
+
+ +

これまでの更新結果をSSDなどの不揮発性記憶媒体に書き出し、すべてのクラスタノードが突然停止したとしても内容が失われないようにします。

+
通常より信頼性が要求される処理のために使用します。ただし、頻繁に実行すると性能低下を引き起こす可能性が高まります。
+
書き出し対象のクラスタノードの範囲など、挙動の詳細はGridDB上の設定によって変化します。
+
Parameters
+ + +
[in]container処理対象のGSContainer
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • この処理のタイムアウト、指定のコンテナの削除もしくはスキーマ変更、接続障害が発生した場合
  • +
  • 引数にNULLが指定された場合
  • +
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetContainerType (GSContainercontainer,
GSContainerTypetype 
)
+
+ +

指定のコンテナの種別を取得します。

+
現バージョンでは、インスタンス生成時点で常に種別が確定するため、この操作によりGridDBクラスタに問い合わせを行うことはありません。
+
Parameters
+ + + +
[in]container処理対象のGSContainer
[out]type指定のコンテナの種別を格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、GS_CONTAINER_COLLECTIONが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • 引数にNULLが指定された場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRow (GSContainercontainer,
const void * key,
void * rowObj,
GSBoolexists 
)
+
+ +

ロウキーに対応するロウの内容を取得します。

+
ロウキーに対応するカラムが存在する場合のみ使用できます。
+
Attention
指定のGSContainerにバインドされたロウオブジェクトの型と指定のロウオブジェクトの型とが一致しない場合、この処理の動作は未定義です。同様に、ロウキーの型が一致しない場合の動作も未定義です。アクセス違反により実行プロセスが異常終了する可能性があります。
+
+文字列や配列などの可変長のデータを格納するために、指定のGSContainerと対応するGSGridStoreインスタンス上で管理される、一時的なメモリ領域を使用します。この領域は、対応するGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
+
Parameters
+ + + + + +
[in]container処理対象のGSContainer
[in]key処理対象のロウキーが格納された変数へのポインタ値。GSContainerにおいて定義されているコンテナ上のロウキーの型とこの引数の型との関係は次のようになります。 + + + + + + + + + + + + +
コンテナ上の型引数の型
STRING GSChar** ※GSChar*との取り違えに注意
INTEGER int32_t*
LONG int64_t*
TIMESTAMP GSTimeStamp*
複合ロウキーGSRowKey*
+
[out]rowObj取得対象のロウの内容を格納するためのロウオブジェクト。取得対象のロウが存在しない場合、ロウオブジェクトの内容は何も変更されません。実行結果としてGS_RESULT_OK以外が返される場合、ロウオブジェクトのフィールドのうち一部またはすべてが変更されることがあります。
[out]exists処理対象のロウが存在したかどうかを格納するためのブール型変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、GS_FALSEが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • ロウキーに対応するカラムが存在しない場合
  • +
  • この処理またはトランザクションのタイムアウト、指定のコンテナの削除もしくはスキーマ変更、接続障害が発生した場合
  • +
  • サポート範囲外の値がキーとして設定されていた場合
  • +
  • exists以外の引数にNULLが指定された場合
  • +
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowByInteger (GSContainercontainer,
int32_t key,
void * rowObj,
GSBool forUpdate,
GSBoolexists 
)
+
+ +

INTEGER型のロウキーに対応するロウの内容を取得します。

+
ロウキーに対応するINTEGER型のカラムが存在する場合のみ使用できます。
+
手動コミットモードにおいて更新用ロックを要求した場合、トランザクションが終了するかタイムアウトするまで対象ロウのロックを維持します。ロックされたロウに対する他のトランザクションからの更新・削除操作は、このトランザクションが終了するかタイムアウトするまで待機するようになります。対象ロウが削除されたとしても、ロックは維持されます。
+
自動コミットモードの場合、更新用ロックを要求できません。
+
取得結果のロウオブジェクトに含まれる文字列や配列などの可変長サイズのデータのリソースは、指定のGSContainerを直接介した次回のロウオブジェクト取得処理を実行するまで維持されます。
+
Attention
指定のGSContainerにバインドされたロウオブジェクトの型と指定のロウオブジェクトの型とが一致しない場合、この処理の動作は未定義です。アクセス違反により実行プロセスが異常終了する可能性があります。
+
+文字列や配列などの可変長のデータを格納するために、指定のGSContainerと対応するGSGridStoreインスタンス上で管理される、一時的なメモリ領域を使用します。この領域は、対応するGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
+
Parameters
+ + + + + + +
[in]container処理対象のGSContainer
[in]key処理対象のロウキー
[out]rowObj取得対象のロウの内容を格納するためのロウオブジェクト。取得対象のロウが存在しない場合、ロウオブジェクトの内容は何も変更されません。実行結果としてGS_RESULT_OK以外が返される場合、ロウオブジェクトのフィールドのうち一部またはすべてが変更されることがあります。
[in]forUpdate更新用ロックを要求するかどうか
[out]exists処理対象のロウが存在したかどうかを格納するためのブール型変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、GS_FALSEが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • ロウキーに対応するINTEGER型のカラムが存在しない場合
  • +
  • 自動コミットモードであるにもかかわらず、更新用ロックを要求しようとした場合
  • +
  • この処理またはトランザクションのタイムアウト、指定のコンテナの削除もしくはスキーマ変更、接続障害が発生した場合
  • +
  • サポート範囲外の値がキーとして設定されていた場合
  • +
  • exists以外の引数にNULLが指定された場合
  • +
+
+
See Also
gsGetRow
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowByLong (GSContainercontainer,
int64_t key,
void * rowObj,
GSBool forUpdate,
GSBoolexists 
)
+
+ +

LONG型のロウキーに対応するロウの内容を取得します。

+
ロウキーに対応するLONG型のカラムが存在する場合のみ使用できます。
+
手動コミットモードにおいて更新用ロックを要求した場合、トランザクションが終了するかタイムアウトするまで対象ロウのロックを維持します。ロックされたロウに対する他のトランザクションからの更新・削除操作は、このトランザクションが終了するかタイムアウトするまで待機するようになります。対象ロウが削除されたとしても、ロックは維持されます。
+
自動コミットモードの場合、更新用ロックを要求できません。
+
取得結果のロウオブジェクトに含まれる文字列や配列などの可変長サイズのデータのリソースは、指定のGSContainerを直接介した次回のロウオブジェクト取得処理を実行するまで維持されます。
+
Attention
指定のGSContainerにバインドされたロウオブジェクトの型と指定のロウオブジェクトの型とが一致しない場合、この処理の動作は未定義です。アクセス違反により実行プロセスが異常終了する可能性があります。
+
+文字列や配列などの可変長のデータを格納するために、指定のGSContainerと対応するGSGridStoreインスタンス上で管理される、一時的なメモリ領域を使用します。この領域は、対応するGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
+
Parameters
+ + + + + + +
[in]container処理対象のGSContainer
[in]key処理対象のロウキー
[out]rowObj取得対象のロウの内容を格納するためのロウオブジェクト。取得対象のロウが存在しない場合、ロウオブジェクトの内容は何も変更されません。実行結果としてGS_RESULT_OK以外が返される場合、ロウオブジェクトのフィールドのうち一部またはすべてが変更されることがあります。
[in]forUpdate更新用ロックを要求するかどうか
[out]exists処理対象のロウが存在したかどうかを格納するためのブール型変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、GS_FALSEが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • ロウキーに対応するLONG型のカラムが存在しない場合
  • +
  • 自動コミットモードであるにもかかわらず、更新用ロックを要求しようとした場合
  • +
  • この処理またはトランザクションのタイムアウト、指定のコンテナの削除もしくはスキーマ変更、接続障害が発生した場合
  • +
  • サポート範囲外の値がキーとして設定されていた場合
  • +
  • exists以外の引数にNULLが指定された場合
  • +
+
+
See Also
gsGetRow
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowByPreciseTimestamp (GSContainercontainer,
const GSPreciseTimestampkey,
void * rowObj,
GSBool forUpdate,
GSBoolexists 
)
+
+ +

高精度のTIMESTAMP型のロウキーに対応するロウの内容を取得します。

+
ロウキーに対応する高精度のTIMESTAMP型のカラムが存在する場合のみ使用できます。
+
手動コミットモードにおいて更新用ロックを要求した場合、トランザクションが終了するかタイムアウトするまで対象ロウのロックを維持します。ロックされたロウに対する他のトランザクションからの更新・削除操作は、このトランザクションが終了するかタイムアウトするまで待機するようになります。対象ロウが削除されたとしても、ロックは維持されます。
+
自動コミットモードの場合、更新用ロックを要求できません。
+
取得結果のロウオブジェクトに含まれる文字列や配列などの可変長サイズのデータのリソースは、指定のGSContainerを直接介した次回のロウオブジェクト取得処理を実行するまで維持されます。
+
Attention
指定のGSContainerにバインドされたロウオブジェクトの型と指定のロウオブジェクトの型とが一致しない場合、この処理の動作は未定義です。アクセス違反により実行プロセスが異常終了する可能性があります。
+
+文字列や配列などの可変長のデータを格納するために、指定のGSContainerと対応するGSGridStoreインスタンス上で管理される、一時的なメモリ領域を使用します。この領域は、対応するGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
+
Parameters
+ + + + + + +
[in]container処理対象のGSContainer
[in]key処理対象のロウキー
[out]rowObj取得対象のロウの内容を格納するためのロウオブジェクト。取得対象のロウが存在しない場合、ロウオブジェクトの内容は何も変更されません。実行結果としてGS_RESULT_OK以外が返される場合、ロウオブジェクトのフィールドのうち一部またはすべてが変更されることがあります。
[in]forUpdate更新用ロックを要求するかどうか
[out]exists処理対象のロウが存在したかどうかを格納するためのブール型変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、GS_FALSEが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • ロウキーに対応する高精度のTIMESTAMP型のカラムが存在しない場合
  • +
  • 自動コミットモードであるにもかかわらず、更新用ロックを要求しようとした場合
  • +
  • この処理またはトランザクションのタイムアウト、指定のコンテナの削除もしくはスキーマ変更、接続障害が発生した場合
  • +
  • サポート範囲外の値がキーとして設定されていた場合
  • +
  • exists以外の引数にNULLが指定された場合
  • +
+
+
See Also
gsGetRow
+
Since
5.3
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowByString (GSContainercontainer,
const GSCharkey,
void * rowObj,
GSBool forUpdate,
GSBoolexists 
)
+
+ +

STRING型のロウキーに対応するロウの内容を取得します。

+
ロウキーに対応するSTRING型のカラムが存在する場合のみ使用できます。
+
手動コミットモードにおいて更新用ロックを要求した場合、トランザクションが終了するかタイムアウトするまで対象ロウのロックを維持します。ロックされたロウに対する他のトランザクションからの更新・削除操作は、このトランザクションが終了するかタイムアウトするまで待機するようになります。対象ロウが削除されたとしても、ロックは維持されます。
+
自動コミットモードの場合、更新用ロックを要求できません。
+
取得結果のロウオブジェクトに含まれる文字列や配列などの可変長サイズのデータのリソースは、指定のGSContainerを直接介した次回のロウオブジェクト取得処理を実行するまで維持されます。
+
Attention
指定のGSContainerにバインドされたロウオブジェクトの型と指定のロウオブジェクトの型とが一致しない場合、この処理の動作は未定義です。アクセス違反により実行プロセスが異常終了する可能性があります。
+
+文字列や配列などの可変長のデータを格納するために、指定のGSContainerと対応するGSGridStoreインスタンス上で管理される、一時的なメモリ領域を使用します。この領域は、対応するGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
+
Parameters
+ + + + + + +
[in]container処理対象のGSContainer
[in]key処理対象のロウキー
[out]rowObj取得対象のロウの内容を格納するためのロウオブジェクト。取得対象のロウが存在しない場合、ロウオブジェクトの内容は何も変更されません。実行結果としてGS_RESULT_OK以外が返される場合、ロウオブジェクトのフィールドのうち一部またはすべてが変更されることがあります。
[in]forUpdate更新用ロックを要求するかどうか
[out]exists処理対象のロウが存在したかどうかを格納するためのブール型変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、GS_FALSEが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • ロウキーに対応するSTRING型のカラムが存在しない場合
  • +
  • 自動コミットモードであるにもかかわらず、更新用ロックを要求しようとした場合
  • +
  • この処理またはトランザクションのタイムアウト、指定のコンテナの削除もしくはスキーマ変更、接続障害が発生した場合
  • +
  • サポート範囲外の値がキーとして設定されていた場合
  • +
  • exists以外の引数にNULLが指定された場合
  • +
+
+
See Also
gsGetRow
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowByTimestamp (GSContainercontainer,
GSTimestamp key,
void * rowObj,
GSBool forUpdate,
GSBoolexists 
)
+
+ +

通常精度のTIMESTAMP型のロウキーに対応するロウの内容を取得します。

+
ロウキーに対応する通常精度のTIMESTAMP型のカラムが存在する場合のみ使用できます。
+
手動コミットモードにおいて更新用ロックを要求した場合、トランザクションが終了するかタイムアウトするまで対象ロウのロックを維持します。ロックされたロウに対する他のトランザクションからの更新・削除操作は、このトランザクションが終了するかタイムアウトするまで待機するようになります。対象ロウが削除されたとしても、ロックは維持されます。
+
自動コミットモードの場合、更新用ロックを要求できません。
+
取得結果のロウオブジェクトに含まれる文字列や配列などの可変長サイズのデータのリソースは、指定のGSContainerを直接介した次回のロウオブジェクト取得処理を実行するまで維持されます。
+
Attention
指定のGSContainerにバインドされたロウオブジェクトの型と指定のロウオブジェクトの型とが一致しない場合、この処理の動作は未定義です。アクセス違反により実行プロセスが異常終了する可能性があります。
+
+文字列や配列などの可変長のデータを格納するために、指定のGSContainerと対応するGSGridStoreインスタンス上で管理される、一時的なメモリ領域を使用します。この領域は、対応するGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
+
Parameters
+ + + + + + +
[in]container処理対象のGSContainer
[in]key処理対象のロウキー
[out]rowObj取得対象のロウの内容を格納するためのロウオブジェクト。取得対象のロウが存在しない場合、ロウオブジェクトの内容は何も変更されません。実行結果としてGS_RESULT_OK以外が返される場合、ロウオブジェクトのフィールドのうち一部またはすべてが変更されることがあります。
[in]forUpdate更新用ロックを要求するかどうか
[out]exists処理対象のロウが存在したかどうかを格納するためのブール型変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、GS_FALSEが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • ロウキーに対応する通常精度のTIMESTAMP型のカラムが存在しない場合
  • +
  • 自動コミットモードであるにもかかわらず、更新用ロックを要求しようとした場合
  • +
  • この処理またはトランザクションのタイムアウト、指定のコンテナの削除もしくはスキーマ変更、接続障害が発生した場合
  • +
  • サポート範囲外の値がキーとして設定されていた場合
  • +
  • exists以外の引数にNULLが指定された場合
  • +
+
+
See Also
gsGetRow
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowForUpdate (GSContainercontainer,
const void * key,
void * rowObj,
GSBoolexists 
)
+
+ +

ロウキーに対応するロウについて、更新用ロックを獲得し内容を取得します。

+
ロウキーに対応するカラムが存在する場合、かつ、手動コミットモードの場合のみ使用できます。
+
トランザクションが終了するかタイムアウトするまで対象ロウのロックを維持します。ロックされたロウに対する他のトランザクションからの更新・削除操作は、このトランザクションが終了するかタイムアウトするまで待機するようになります。対象ロウが削除されたとしても、ロックは維持されます。
+
取得結果のロウオブジェクトに含まれる文字列や配列などの可変長サイズのデータのリソースは、指定のGSContainerを直接介した次回のロウオブジェクト取得処理を実行するまで維持されます。
+
Attention
指定のGSContainerにバインドされたロウオブジェクトの型と指定のロウオブジェクトの型とが一致しない場合、この処理の動作は未定義です。同様に、ロウキーの型が一致しない場合の動作も未定義です。アクセス違反により実行プロセスが異常終了する可能性があります。
+
+文字列や配列などの可変長のデータを格納するために、指定のGSContainerと対応するGSGridStoreインスタンス上で管理される、一時的なメモリ領域を使用します。この領域は、対応するGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
+
Parameters
+ + + + + +
[in]container処理対象のGSContainer
[in]key処理対象のロウキーが格納された変数へのポインタ値。GSContainerにおいて定義されているコンテナ上のロウキーの型とこの引数の型との関係は、gsGetRowの場合と同様です。
[out]rowObj取得対象のロウの内容を格納するためのロウオブジェクト。取得対象のロウが存在しない場合、ロウオブジェクトの内容は何も変更されません。実行結果としてGS_RESULT_OK以外が返される場合、ロウオブジェクトのフィールドのうち一部またはすべてが変更されることがあります。
[out]exists処理対象のロウが存在したかどうかを格納するためのブール型変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、GS_FALSEが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • ロウキーに対応するカラムが存在しない場合
  • +
  • 自動コミットモードの場合
  • +
  • この処理またはトランザクションのタイムアウト、指定のコンテナの削除もしくはスキーマ変更、接続障害が発生した場合
  • +
  • サポート範囲外の値がキーとして設定されていた場合
  • +
  • exists以外の引数にNULLが指定された場合
  • +
+
+
See Also
gsGetRow
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowGeneral (GSContainercontainer,
GSRowKeykeyObj,
GSRowrowObj,
GSBool forUpdate,
GSBoolexists 
)
+
+ +

指定のGSRowKeyに対応するロウの内容をGSRowとして取得します。

+
ロウキーを持つコンテナであれば、ロウキーを構成するカラム数やカラム型によらず使用できます。gsGetRowとは異なり、指定のGSRowがクローズされるまで各フィールド値にアクセスすることができます。
+
手動コミットモードにおいて更新用ロックを要求した場合、トランザクションが終了するかタイムアウトするまで対象ロウのロックを維持します。ロックされたロウに対する他のトランザクションからの更新・削除操作は、このトランザクションが終了するかタイムアウトするまで待機するようになります。対象ロウが削除されたとしても、ロックは維持されます。
+
自動コミットモードの場合、更新用ロックを要求できません。
+
Parameters
+ + + + + + +
[in]container処理対象のGSContainer
[in]keyObj処理対象のロウキー
[out]rowObj取得対象のロウの内容を格納するためのロウオブジェクト。取得対象のロウが存在しない場合、ロウオブジェクトの内容は何も変更されません。実行結果としてGS_RESULT_OK以外が返される場合、ロウオブジェクトのフィールドのうち一部またはすべてが変更されることがあります。
[in]forUpdate更新用ロックを要求するかどうか
[out]exists処理対象のロウが存在したかどうかを格納するためのブール型変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、GS_FALSEが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • ロウキーが存在しない場合
  • +
  • 自動コミットモードであるにもかかわらず、更新用ロックを要求しようとした場合
  • +
  • この処理またはトランザクションのタイムアウト、指定のコンテナの削除もしくはスキーマ変更、接続障害が発生した場合
  • +
  • サポート範囲外の値がキーとして設定されていた場合
  • +
  • exists以外の引数にNULLが指定された場合
  • +
+
+
See Also
gsGetRow
+
Since
4.3
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsPutMultipleRows (GSContainercontainer,
const void *const * rowObjs,
size_t rowCount,
GSBoolexists 
)
+
+ +

指定のロウオブジェクト集合に基づき、任意個数のロウをまとめて新規作成または更新します。

+
指定のロウオブジェクト集合の各ロウについて、配列要素の順序にしたがってgsPutRowを呼び出した場合と同様に新規作成または更新操作を行います。
+
指定のロウオブジェクト集合内に同一のロウキーを持つ複数のロウが存在する場合、ロウオブジェクト集合を構成する配列要素の順序を基準として、同一のロウキーを持つ最も後方にあるロウオブジェクトの内容が反映されます。
+
コンテナの種別ならびに設定によっては、操作できるロウの内容についてgsPutRowと同様の制限が設けられています。具体的な制限事項は、個別のコンテナ種別の定義を参照してください。
+
手動コミットモードの場合、対象のロウがロックされます。
+
自動コミットモードのときに、コンテナならびにロウに対する処理の途中でエラーが発生した場合、コンテナの一部のロウに対する操作結果のみが反映されたままとなることがあります。
+
Attention
指定のGSContainerにバインドされたロウオブジェクトの型と指定のロウオブジェクトの型とが一致しない場合、この処理の動作は未定義です。同様に、ロウキーの型が一致しない場合の動作も未定義です。アクセス違反により実行プロセスが異常終了する可能性があります。
+
Parameters
+ + + + + +
[in]container処理対象のGSContainer
[in]rowObjs新規作成するロウ集合の内容と対応するロウオブジェクト列。このロウオブジェクト列は、個々のロウオブジェクトへのポインタ値の配列により構成されます。rowCount0の場合、この配列を参照することはなく、NULLを指定することもできます。
[in]rowCount新規作成するロウの個数。0の場合、ロウを新規作成せず正常に処理を終えます。
[out]exists現バージョンでは、ポインタ値がNULLではない限り常にGS_FALSEが格納されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • 特定コンテナ種別固有の制限に反する操作を行った場合
  • +
  • この処理またはトランザクションのタイムアウト、指定のコンテナの削除もしくはスキーマ変更、接続障害が発生した場合
  • +
  • サポート範囲外の値がロウオブジェクトに含まれていた場合
  • +
  • containerNULLの場合
  • +
  • exists以外のポインタ型引数にNULLが指定された場合。また、指定のロウオブジェクト内のフィールドについて、文字列など可変長サイズのデータへのポインタ値にNULLが含まれていた場合
  • +
  • rowCountが正の値であるにもかかわらず、rowObjsNULLが指定された場合
  • +
  • ロウオブジェクト列を構成する配列要素にNULLが含まれていた場合
  • +
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsPutRow (GSContainercontainer,
const void * key,
const void * rowObj,
GSBoolexists 
)
+
+ +

必要に応じ別途ロウキーを指定して、ロウを新規作成または更新します。

+
ロウキーに対応するカラムが存在する場合、ロウキーとコンテナの状態を基に、ロウを新規作成するか、更新するかを決定します。この際、対応するロウがコンテナ内に存在しない場合は新規作成、存在する場合は更新します。ロウオブジェクトとは別にロウキーを指定した場合、ロウオブジェクト内のロウキーより優先して使用されます。
+
ロウキーに対応するカラムを持たない場合、常に新規のロウを作成します。別途指定するロウキーには、常にNULLを指定します。
+
ただし、コンテナの種別ならびに設定によっては、制限が設けられています。指定のコンテナが時系列であり、圧縮オプションが設定されている場合、以下の操作のみを条件付きで行うことができます。
    +
  • 新規作成
      +
    • 最も新しい時刻を持つ既存ロウより新しい時刻のロウを指定した場合のみ
    • +
    +
  • +
  • 既存ロウの内容の保持
      +
    • 最も新しい時刻を持つ既存ロウの時刻が指定の時刻と一致する場合のみ
    • +
    +
  • +
+
+
手動コミットモードの場合、対象のロウはロックされます。
+
Attention
指定のGSContainerにバインドされたロウオブジェクトの型と指定のロウオブジェクトの型とが一致しない場合、この処理の動作は未定義です。同様に、ロウキーの型が一致しない場合の動作も未定義です。アクセス違反により実行プロセスが異常終了する可能性があります。
+
Parameters
+ + + + + +
[in]container処理対象のGSContainer
[in]key処理対象のロウキーが格納された変数へのポインタ値。GSContainerにおいて定義されているコンテナ上のロウキーの型とこの引数の型との関係は、gsGetRowの場合と同様です。ロウキーに対応するカラムが存在しない場合、もしくは指定のロウオブジェクト内のキーを用いる場合はNULLを指定します。
[in]rowObj新規作成または更新するロウの内容と対応するロウオブジェクト
[out]exists処理対象のロウが存在したかどうかを格納するためのブール型変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、GS_FALSEが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • ロウキーに対応するカラムが存在しないにもかかわらず、キーが指定された場合
  • +
  • 特定コンテナ固有の制限に反する操作を行った場合
  • +
  • この処理またはトランザクションのタイムアウト、指定のコンテナの削除もしくはスキーマ変更、接続障害が発生した場合
  • +
  • サポート範囲外の値がキーまたはロウオブジェクトに含まれていた場合
  • +
  • exists以外の引数にNULLが指定された場合。また、指定のロウオブジェクト内のロウキー以外のフィールドについて、文字列など可変長サイズのデータへのポインタ値にNULLが含まれていた場合。もしくは、ロウキーに対応するカラムが存在しkeyNULLであるにもかかわらず、ロウキーのフィールドに同様にNULLが含まれていた場合
  • +
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsPutRowByInteger (GSContainercontainer,
int32_t key,
const void * rowObj,
GSBoolexists 
)
+
+ +

INTEGER型のロウキーを指定して、ロウを新規作成または更新します。

+
ロウキーに対応するINTEGER型のカラムが存在する場合のみ使用できます。
+
ロウキーとコンテナの状態を基に、ロウを新規作成するか更新するかを決定します。この際、対応するロウがコンテナ内に存在しない場合は新規作成、存在する場合は更新します。ロウオブジェクト内のロウキーは無視されます。
+
手動コミットモードの場合、対象のロウはロックされます。
+
Attention
指定のGSContainerにバインドされたロウオブジェクトの型と指定のロウオブジェクトの型とが一致しない場合、この処理の動作は未定義です。アクセス違反により実行プロセスが異常終了する可能性があります。
+
Parameters
+ + + + + +
[in]container処理対象のGSContainer
[in]key処理対象のロウキー
[in]rowObj新規作成または更新するロウの内容と対応するロウオブジェクト
[out]exists処理対象のロウが存在したかどうかを格納するためのブール型変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、GS_FALSEが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • ロウキーに対応するINTEGER型のカラムが存在しない場合
  • +
  • この処理またはトランザクションのタイムアウト、指定のコンテナの削除もしくはスキーマ変更、接続障害が発生した場合
  • +
  • サポート範囲外の値がロウオブジェクトに含まれていた場合
  • +
  • exists以外の引数にNULLが指定された場合。また、指定のロウオブジェクト内のロウキー以外のフィールドについて、文字列など可変長サイズのデータへのポインタ値にNULLが含まれていた場合。もしくは、ロウキーに対応するカラムが存在しkeyNULLであるにもかかわらず、ロウキーのフィールドに同様にNULLが含まれていた場合
  • +
+
+
See Also
gsPutRow
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsPutRowByLong (GSContainercontainer,
int64_t key,
const void * rowObj,
GSBoolexists 
)
+
+ +

LONG型のロウキーを指定して、ロウを新規作成または更新します。

+
ロウキーに対応するLONG型のカラムが存在する場合のみ使用できます。
+
ロウキーとコンテナの状態を基に、ロウを新規作成するか更新するかを決定します。この際、対応するロウがコンテナ内に存在しない場合は新規作成、存在する場合は更新します。ロウオブジェクト内のロウキーは無視されます。
+
手動コミットモードの場合、対象のロウはロックされます。
+
Attention
指定のGSContainerにバインドされたロウオブジェクトの型と指定のロウオブジェクトの型とが一致しない場合、この処理の動作は未定義です。アクセス違反により実行プロセスが異常終了する可能性があります。
+
Parameters
+ + + + + +
[in]container処理対象のGSContainer
[in]key処理対象のロウキー
[in]rowObj新規作成または更新するロウの内容と対応するロウオブジェクト
[out]exists処理対象のロウが存在したかどうかを格納するためのブール型変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、GS_FALSEが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • ロウキーに対応するLONG型のカラムが存在しない場合
  • +
  • この処理またはトランザクションのタイムアウト、指定のコンテナの削除もしくはスキーマ変更、接続障害が発生した場合
  • +
  • サポート範囲外の値がロウオブジェクトに含まれていた場合
  • +
  • exists以外の引数にNULLが指定された場合。また、指定のロウオブジェクト内のロウキー以外のフィールドについて、文字列など可変長サイズのデータへのポインタ値にNULLが含まれていた場合。もしくは、ロウキーに対応するカラムが存在しkeyNULLであるにもかかわらず、ロウキーのフィールドに同様にNULLが含まれていた場合
  • +
+
+
See Also
gsPutRow
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsPutRowByPreciseTimestamp (GSContainercontainer,
const GSPreciseTimestampkey,
const void * rowObj,
GSBoolexists 
)
+
+ +

高精度のTIMESTAMP型のロウキーを指定して、ロウを新規作成または更新します。

+
ロウキーに対応する高精度のTIMESTAMP型のカラムが存在する場合のみ使用できます。
+
ロウキーとコンテナの状態を基に、ロウを新規作成するか更新するかを決定します。この際、対応するロウがコンテナ内に存在しない場合は新規作成、存在する場合は更新します。ロウオブジェクト内のロウキーは無視されます。
+
ただし、コンテナの種別ならびに設定によっては、制限が設けられています。指定のコンテナが時系列であり、圧縮オプションが設定されている場合、以下の操作のみを条件付きで行うことができます。
    +
  • 新規作成
      +
    • 最も新しい時刻を持つ既存ロウより新しい時刻のロウを指定した場合のみ
    • +
    +
  • +
  • 既存ロウの内容の保持
      +
    • 最も新しい時刻を持つ既存ロウの時刻が指定の時刻と一致する場合のみ
    • +
    +
  • +
+
+
手動コミットモードの場合、対象のロウはロックされます。
+
Attention
指定のGSContainerにバインドされたロウオブジェクトの型と指定のロウオブジェクトの型とが一致しない場合、この処理の動作は未定義です。アクセス違反により実行プロセスが異常終了する可能性があります。
+
Parameters
+ + + + + +
[in]container処理対象のGSContainer
[in]key処理対象のロウキー
[in]rowObj新規作成または更新するロウの内容と対応するロウオブジェクト
[out]exists処理対象のロウが存在したかどうかを格納するためのブール型変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、GS_FALSEが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • ロウキーに対応する高精度のTIMESTAMP型のカラムが存在しない場合
  • +
  • 特定コンテナ固有の制限に反する操作を行った場合
  • +
  • この処理またはトランザクションのタイムアウト、指定のコンテナの削除もしくはスキーマ変更、接続障害が発生した場合
  • +
  • サポート範囲外の値がキーまたはロウオブジェクトに含まれていた場合
  • +
  • exists以外の引数にNULLが指定された場合。また、指定のロウオブジェクト内のフィールドについて、文字列など可変長サイズのデータへのポインタ値にNULLが含まれていた場合
  • +
+
+
See Also
gsPutRow
+
Since
5.3
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsPutRowByString (GSContainercontainer,
const GSCharkey,
const void * rowObj,
GSBoolexists 
)
+
+ +

STRING型のロウキーを指定して、ロウを新規作成または更新します。

+
ロウキーに対応するSTRING型のカラムが存在する場合のみ使用できます。
+
ロウキーとコンテナの状態を基に、ロウを新規作成するか更新するかを決定します。この際、対応するロウがコンテナ内に存在しない場合は新規作成、存在する場合は更新します。ロウオブジェクト内のロウキーは無視されます。
+
手動コミットモードの場合、対象のロウはロックされます。
+
Attention
指定のGSContainerにバインドされたロウオブジェクトの型と指定のロウオブジェクトの型とが一致しない場合、この処理の動作は未定義です。アクセス違反により実行プロセスが異常終了する可能性があります。
+
Parameters
+ + + + + +
[in]container処理対象のGSContainer
[in]key処理対象のロウキー
[in]rowObj新規作成または更新するロウの内容と対応するロウオブジェクト
[out]exists処理対象のロウが存在したかどうかを格納するためのブール型変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、GS_FALSEが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • ロウキーに対応するSTRING型のカラムが存在しない場合
  • +
  • この処理またはトランザクションのタイムアウト、指定のコンテナの削除もしくはスキーマ変更、接続障害が発生した場合
  • +
  • サポート範囲外の値がキーまたはロウオブジェクトに含まれていた場合
  • +
  • exists以外の引数にNULLが指定された場合。また、指定のロウオブジェクト内のロウキー以外のフィールドについて、文字列など可変長サイズのデータへのポインタ値にNULLが含まれていた場合
  • +
+
+
See Also
gsPutRow
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsPutRowByTimestamp (GSContainercontainer,
GSTimestamp key,
const void * rowObj,
GSBoolexists 
)
+
+ +

通常精度のTIMESTAMP型のロウキーを指定して、ロウを新規作成または更新します。

+
ロウキーに対応する通常精度のTIMESTAMP型のカラムが存在する場合のみ使用できます。
+
ロウキーとコンテナの状態を基に、ロウを新規作成するか更新するかを決定します。この際、対応するロウがコンテナ内に存在しない場合は新規作成、存在する場合は更新します。ロウオブジェクト内のロウキーは無視されます。
+
ただし、コンテナの種別ならびに設定によっては、制限が設けられています。指定のコンテナが時系列であり、圧縮オプションが設定されている場合、以下の操作のみを条件付きで行うことができます。
    +
  • 新規作成
      +
    • 最も新しい時刻を持つ既存ロウより新しい時刻のロウを指定した場合のみ
    • +
    +
  • +
  • 既存ロウの内容の保持
      +
    • 最も新しい時刻を持つ既存ロウの時刻が指定の時刻と一致する場合のみ
    • +
    +
  • +
+
+
手動コミットモードの場合、対象のロウはロックされます。
+
Attention
指定のGSContainerにバインドされたロウオブジェクトの型と指定のロウオブジェクトの型とが一致しない場合、この処理の動作は未定義です。アクセス違反により実行プロセスが異常終了する可能性があります。
+
Parameters
+ + + + + +
[in]container処理対象のGSContainer
[in]key処理対象のロウキー
[in]rowObj新規作成または更新するロウの内容と対応するロウオブジェクト
[out]exists処理対象のロウが存在したかどうかを格納するためのブール型変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、GS_FALSEが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • ロウキーに対応する通常精度のTIMESTAMP型のカラムが存在しない場合
  • +
  • 特定コンテナ固有の制限に反する操作を行った場合
  • +
  • この処理またはトランザクションのタイムアウト、指定のコンテナの削除もしくはスキーマ変更、接続障害が発生した場合
  • +
  • サポート範囲外の値がキーまたはロウオブジェクトに含まれていた場合
  • +
  • exists以外の引数にNULLが指定された場合。また、指定のロウオブジェクト内のフィールドについて、文字列など可変長サイズのデータへのポインタ値にNULLが含まれていた場合
  • +
+
+
See Also
gsPutRow
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsPutRowGeneral (GSContainercontainer,
GSRowKeykeyObj,
GSRowrowObj,
GSBoolexists 
)
+
+ +

必要に応じ別途ロウキーを指定して、ロウを新規作成または更新します。

+
ロウキーを構成するカラム数やカラム型によらず使用できます。
+
ロウキーに対応するカラムが存在する場合、ロウキーとコンテナの状態を基に、ロウを新規作成するか、更新するかを決定します。この際、対応するロウがコンテナ内に存在しない場合は新規作成、存在する場合は更新します。ロウオブジェクトとは別にロウキーを指定した場合、ロウオブジェクト内のロウキーより優先して使用されます。
+
ロウキーに対応するカラムを持たない場合、常に新規のロウを作成します。この場合、別途指定するロウキーには、常にNULLを指定します。
+
ただし、コンテナの種別ならびに設定によっては、gsPutRowと同様の制限が設けられています。
+
手動コミットモードの場合、対象のロウはロックされます。
+
Parameters
+ + + + + +
[in]container処理対象のGSContainer
[in]keyObj処理対象のロウキー。ロウキーに対応するカラムが存在しない場合、もしくは指定のロウオブジェクト内のキーを用いる場合はNULLを指定します。
[in]rowObj新規作成または更新するロウの内容と対応するロウオブジェクト
[out]exists処理対象のロウが存在したかどうかを格納するためのブール型変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、GS_FALSEが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • ロウキーに対応するカラムが存在しないにもかかわらず、キーが指定された場合
  • +
  • 特定コンテナ固有の制限に反する操作を行った場合
  • +
  • この処理またはトランザクションのタイムアウト、指定のコンテナの削除もしくはスキーマ変更、接続障害が発生した場合
  • +
  • サポート範囲外の値がキーまたはロウオブジェクトに含まれていた場合
  • +
  • exists以外の引数にNULLが指定された場合。また、指定のロウオブジェクト内のロウキー以外のフィールドについて、文字列など可変長サイズのデータへのポインタ値にNULLが含まれていた場合。もしくは、ロウキーに対応するカラムが存在しkeyNULLであるにもかかわらず、ロウキーのフィールドに同様にNULLが含まれていた場合
  • +
+
+
See Also
gsPutRow
+
Since
4.3
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsQuery (GSContainercontainer,
const GSCharqueryString,
GSQuery ** query 
)
+
+ +

指定のTQL文を実行するためのクエリを作成します。

+
gsFetchを通じてロウ集合を求める際に更新用ロックのオプションを有効できるのは、指定のコンテナ上に実在しないロウが選択されることのないクエリのみです。たとえば、補間演算を含むクエリに対しては有効にできません。
+
Parameters
+ + + + +
[in]container処理対象のGSContainer
[in]queryStringTQL文
[out]queryGSQueryインスタンスを格納するためのポインタ変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、このポインタ値がNULL以外の値であれば、対応するポインタ変数にNULLが格納されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • 引数にNULLが指定された場合
  • +
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetAutoCommit (GSContainercontainer,
GSBool enabled 
)
+
+ +

コミットモードの設定を変更します。

+
自動コミットモードでは、直接トランザクション状態を制御できず、変更操作が逐次コミットされます。自動コミットモードが有効でない場合、すなわち手動コミットモードの場合は、直接gsCommitを呼び出すかトランザクションがタイムアウトしない限り、指定のコンテナ内で同一のトランザクションが使用され続け、変更操作はコミットされません。
+
自動コミットモードが無効から有効に切り替わる際、未コミットの変更内容は暗黙的にコミットされます。コミットモードに変更がない場合、トランザクション状態は変更されません。
+
Parameters
+ + + +
[in]container処理対象のGSContainer
[in]enabled自動コミットモードを有効にするかどうか。GS_TRUEの場合は自動コミットモード、GS_FALSEの場合は手動コミットモードが有効になります。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • モード変更に伴いコミット処理を要求した際に、この処理またはトランザクションのタイムアウト、指定のコンテナの削除もしくはスキーマ変更、接続障害が発生した場合
  • +
  • ポインタ型引数にNULLが指定された場合
  • +
+
+ +
+
+
+
+
+
GSGridStore
+
+
+ + + + + + + + +

+Classes

struct  GSContainerRowEntryTag
 複数のコンテナの複数のロウを一括して操作する場合に用いる、コンテナ別のロウ内容エントリです。More...
 
struct  GSRowKeyPredicateEntryTag
 複数のコンテナに対する取得条件を表すための、コンテナ別の合致条件エントリです。More...
 
+ + + + + + + +

+Macros

#define GS_CONTAINER_ROW_ENTRY_INITIALIZER   { NULL, NULL, 0 }
 GSContainerRowEntryの初期化子です。More...
 
#define GS_ROW_KEY_PREDICATE_ENTRY_INITIALIZER   { NULL, NULL }
 GSRowKeyPredicateEntryの初期化子です。More...
 
+ + + + + + + + + + +

+Typedefs

typedef struct GSGridStoreTag GSGridStore
 1つのGridDBシステムが管理するデータ全体を操作するための機能を提供します。More...
 
typedef struct
+GSContainerRowEntryTag 
GSContainerRowEntry
 複数のコンテナの複数のロウを一括して操作する場合に用いる、コンテナ別のロウ内容エントリです。More...
 
typedef struct
+GSRowKeyPredicateEntryTag 
GSRowKeyPredicateEntry
 複数のコンテナに対する取得条件を表すための、コンテナ別の合致条件エントリです。More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

GS_DLL_PUBLIC void GS_API_CALL gsCloseGridStore (GSGridStore **store, GSBool allRelated)
 指定のGSGridStoreインスタンスについて、対応するGridDBクラスタとの接続状態を解除し、必要に応じて指定のインスタンスならびに関連するリソースを解放します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsDropCollection (GSGridStore *store, const GSChar *name)
 指定の名前を持つコレクションを削除します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsDropTimeSeries (GSGridStore *store, const GSChar *name)
 指定の名前を持つ時系列を削除します。More...
 
GS_STATIC_HEADER_FUNC_SPECIFIER
+GSResult 
gsGetCollection (GSGridStore *store, const GSChar *name, const GSBinding *binding, GSCollection **collection)
 指定の名前のコレクションを操作するためのGSCollectionインスタンスを取得します。More...
 
GS_STATIC_HEADER_FUNC_SPECIFIER
+GSResult 
gsGetContainerInfo (GSGridStore *store, const GSChar *name, GSContainerInfo *info, GSBool *exists)
 指定の名前のコンテナに関する情報を取得します。More...
 
GS_STATIC_HEADER_FUNC_SPECIFIER
+GSResult 
gsGetTimeSeries (GSGridStore *store, const GSChar *name, const GSBinding *binding, GSTimeSeries **timeSeries)
 指定の名前の時系列を操作するためのGSTimeSeriesインスタンスを取得します。More...
 
GS_STATIC_HEADER_FUNC_SPECIFIER
+GSResult 
gsPutContainer (GSGridStore *store, const GSChar *name, const GSBinding *binding, const GSContainerInfo *info, GSBool modifiable, GSContainer **container)
 バインディング情報とGSContainerInfoを指定して、コンテナを新規作成または変更します。More...
 
GS_STATIC_HEADER_FUNC_SPECIFIER
+GSResult 
gsPutCollection (GSGridStore *store, const GSChar *name, const GSBinding *binding, const GSCollectionProperties *properties, GSBool modifiable, GSCollection **collection)
 コレクションを新規作成または変更します。More...
 
GS_STATIC_HEADER_FUNC_SPECIFIER
+GSResult 
gsPutTimeSeries (GSGridStore *store, const GSChar *name, const GSBinding *binding, const GSTimeSeriesProperties *properties, GSBool modifiable, GSTimeSeries **timeSeries)
 時系列を新規作成または変更します。More...
 
GS_STATIC_HEADER_FUNC_SPECIFIER
+GSResult 
gsPutContainerGeneral (GSGridStore *store, const GSChar *name, const GSContainerInfo *info, GSBool modifiable, GSContainer **container)
 GSContainerInfoを指定して、コンテナを新規作成または変更します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetContainerGeneral (GSGridStore *store, const GSChar *name, GSContainer **container)
 GSRowによりロウ操作できるGSContainerインスタンスを取得します。More...
 
GS_STATIC_HEADER_FUNC_SPECIFIER
+GSResult 
gsPutCollectionGeneral (GSGridStore *store, const GSChar *name, const GSContainerInfo *info, GSBool modifiable, GSCollection **collection)
 GSContainerInfoを指定して、コレクションを新規作成または変更します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetCollectionGeneral (GSGridStore *store, const GSChar *name, GSCollection **collection)
 GSRowによりロウ操作できるGSCollectionインスタンスを取得します。More...
 
GS_STATIC_HEADER_FUNC_SPECIFIER
+GSResult 
gsPutTimeSeriesGeneral (GSGridStore *store, const GSChar *name, const GSContainerInfo *info, GSBool modifiable, GSTimeSeries **timeSeries)
 GSContainerInfoを指定して、時系列を新規作成または変更します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetTimeSeriesGeneral (GSGridStore *store, const GSChar *name, GSTimeSeries **timeSeries)
 GSRowによりロウ操作できるGSTimeSeriesインスタンスを取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsDropContainer (GSGridStore *store, const GSChar *name)
 指定の名前を持つコンテナを削除します。More...
 
GS_STATIC_HEADER_FUNC_SPECIFIER
+GSResult 
gsCreateRowByStore (GSGridStore *store, const GSContainerInfo *info, GSRow **row)
 GSContainerInfoを指定して、GSRowを新規作成します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsCreateRowKeyByStore (GSGridStore *store, const GSContainerInfo *info, GSRowKey **key)
 GSContainerInfoを指定して、GSRowKeyを新規作成します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsFetchAll (GSGridStore *store, GSQuery *const *queryList, size_t queryCount)
 指定された任意個数のGSQueryについて、可能な限りリクエスト単位を大きくしてクエリ実行とフェッチを行います。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsPutMultipleContainerRows (GSGridStore *store, const GSContainerRowEntry *entryList, size_t entryCount)
 任意のコンテナの任意個数のロウについて、可能な限りリクエスト単位を大きくして新規作成または更新操作を行います。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetMultipleContainerRows (GSGridStore *store, const GSRowKeyPredicateEntry *const *predicateList, size_t predicateCount, const GSContainerRowEntry **entryList, size_t *entryCount)
 指定の条件に基づき、任意のコンテナの任意個数・範囲のロウについて、可能な限りリクエスト単位を大きくして取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPartitionController (GSGridStore *store, GSPartitionController **partitionController)
 対応するGridDBクラスタについてのGSPartitionControllerを取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsCreateRowKeyPredicate (GSGridStore *store, GSType keyType, GSRowKeyPredicate **predicate)
 指定のGSTypeをロウキーの型とする合致条件を作成します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsCreateRowKeyPredicateGeneral (GSGridStore *store, const GSContainerInfo *info, GSRowKeyPredicate **predicate)
 指定のGSContainerInfoのロウキーに関するカラム定義に基づく、合致条件を作成します。More...
 
+

Detailed Description

+

Macro Definition Documentation

+ +
+
+ + + + +
#define GS_CONTAINER_ROW_ENTRY_INITIALIZER   { NULL, NULL, 0 }
+
+ +

GSContainerRowEntryの初期化子です。

+
Since
1.5
+ +
+
+ +
+
+ + + + +
#define GS_ROW_KEY_PREDICATE_ENTRY_INITIALIZER   { NULL, NULL }
+
+ +

GSRowKeyPredicateEntryの初期化子です。

+
Since
1.5
+ +
+
+

Typedef Documentation

+ +
+
+ + + + +
typedef struct GSContainerRowEntryTag GSContainerRowEntry
+
+ +

複数のコンテナの複数のロウを一括して操作する場合に用いる、コンテナ別のロウ内容エントリです。

+
Since
1.5
+ +
+
+ +
+
+ + + + +
typedef struct GSGridStoreTag GSGridStore
+
+ +

1つのGridDBシステムが管理するデータ全体を操作するための機能を提供します。

+
コレクションや時系列といったコンテナの追加・削除・構成変更、ならびに、コンテナを構成するロウの操作機能を提供します。
+
コンテナ種別などの違いによらず、1つのデータベースのコンテナ間で、ASCIIの大文字・小文字表記だけが異なる名前のものを複数定義することはできません。コンテナ名は、ベースコンテナ名単独、もしくは、ベースコンテナ名の後ろにノードアフィニティ名をアットマーク「@」で連結した形式で表記します。その他、コンテナの定義において使用できるコンテナ名の文字種や長さには制限があります。具体的には、GridDB機能リファレンスを参照してください。特に記載のない限り、コンテナ名を指定する操作では、ASCIIの大文字・小文字表記の違いは区別されません。
+
このインタフェースまたはこのインタフェースを通じて得られたインスタンスのインタフェースに対する操作を通じてエラーが発生した場合、エラーに関する次のパラメータを取得できることがあります。 + + + + + + +
パラメータ名説明
address接続先クラスタノードのアドレス・ポート。ホスト名またはIPアドレスとポート番号とをコロン「:」で連結した文字列により構成されます。このインタフェースまたはこのインタフェースを通じて得られたインスタンスのインタフェースにおいて、クラスタへのアクセスを伴う操作を呼び出した際にエラーを検知すると、このパラメータを含むことがあります。このパラメータを含む場合、パラメータが示すクラスタノードにおいてエラーの詳細が記録されていることがあります。
containerエラーに関係しうるコンテナの名前。任意個数のコンテナを一括して扱う操作において、そのうち少なくとも一つのコンテナについての操作を行えないことが判明した場合に、このパラメータを含むことがあります。任意個数のコンテナを扱う具体的な操作については、個々のインタフェースの定義を参照してください。クラスタノードへのリクエスト準備段階でのリソース不足など、どのコンテナの問題か特定し切れないことがあるため、どのようなエラーでもこのパラメータを含むとは限りません。また、複数のコンテナについて操作できない可能性があったとしても、パラメータに含まれるのは高々一つのコンテナの名前のみです。
+
+
この型のポインタを第一引数とする関数のスレッド安全性は保証されません。
+
See Also
GSCollection
+
+GSTimeSeries
+
+GSContainer
+
+gsGetErrorParameterCount
+ +
+
+ +
+
+ +

複数のコンテナに対する取得条件を表すための、コンテナ別の合致条件エントリです。

+
Since
1.5
+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC void GS_API_CALL gsCloseGridStore (GSGridStore ** store,
GSBool allRelated 
)
+
+ +

指定のGSGridStoreインスタンスについて、対応するGridDBクラスタとの接続状態を解除し、必要に応じて指定のインスタンスならびに関連するリソースを解放します。

+
Parameters
+ + + +
[in,out]storeクローズ対象のGSGridStoreインスタンスを指しているポインタ変数へのポインタ値。クローズすると、ポインタ変数にNULLが設定されます。以後、解放したGSGridStoreインスタンスにアクセスしてはなりません。ポインタ値またはポインタ変数の値がNULLの場合は、クローズ処理を行いません。
[in]allRelated指定のGSGridStoreと関連する下位のリソースのうち、未クローズのものすべてをクローズするかどうか。関連する下位のリソースとは、指定のGSGridStoreを介して取得したGSCollectionGSTimeSeries、ならびに、これらのリソースと関連する下位のリソースのことを指します。GS_FALSEを指定した場合、指定のGSGridStoreを介して取得したリソースを個別にクローズする必要があり、すべてクローズした時点で指定のGSGridStore自体のリソースが解放されます。
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GS_STATIC_HEADER_FUNC_SPECIFIER GSResult gsCreateRowByStore (GSGridStorestore,
const GSContainerInfoinfo,
GSRow ** row 
)
+
+ +

GSContainerInfoを指定して、GSRowを新規作成します。

+
GSContainerにて規定された制約に合致するよう、GSColumnInfoのリストならびにロウキーの構成を含むカラムレイアウトをGSContainerInfoに指定します。
+
また、コンテナ種別をGSContainerInfoに含めることで、特定のコンテナ種別固有の制約に合致するかどうかを検証できます。ただし、作成されたGSRowに対してgsGetRowSchemaを呼び出したとしても、常に固定の値であるGS_CONTAINER_COLLECTIONがコンテナ種別として設定されたGSContainerInfoが求まります。
+
作成されたGSRowの各フィールドには、GSContainerInfoに含まれる各カラムのGSColumnInfoに基づいた初期値が設定されます。初期値として、GSColumnInfo::optionsに含まれるオプションに応じた次の値が使用されます。 + + + + + + + + + + +
オプション初期値
GS_TYPE_OPTION_DEFAULT_VALUE_NULL NULL。ただし制約に反するロウは作成できない。
GS_TYPE_OPTION_DEFAULT_VALUE_NOT_NULL 空の値。GSContainerの定義を参照。
(上記いずれも指定なし) 現バージョンでは、GS_TYPE_OPTION_DEFAULT_VALUE_NOT_NULLが指定された場合と同様。
(上記オプションを両方指定) GSTypeOptionの定義に基づき矛盾する設定と見なされ、ロウを作成できない。
+
+
Parameters
+ + + + +
[in]store処理対象のGSGridStore
[in]infoカラムレイアウトを含むコンテナ情報。その他の内容は無視される
[out]rowGSRowインスタンスを格納するためのポインタ変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、このポインタ値がNULL以外の値であれば、対応するポインタ変数にNULLが格納されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • コンテナ種別もしくはカラムレイアウトの制約に合致しない場合
  • +
  • 引数にNULLが指定された場合
  • +
+
+
See Also
GSContainer
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsCreateRowKeyByStore (GSGridStorestore,
const GSContainerInfoinfo,
GSRowKey ** key 
)
+
+ +

GSContainerInfoを指定して、GSRowKeyを新規作成します。

+
ロウキー以外のカラムに関する情報は無視されます。それ以外はgsCreateRowByStoreと同様に振る舞います。
+
Parameters
+ + + + +
[in]store処理対象のGSGridStore
[in]infoカラムレイアウトを含むコンテナ情報。その他の内容は無視される
[out]keyGSRowKeyインスタンスを格納するためのポインタ変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、このポインタ値がNULL以外の値であれば、対応するポインタ変数にNULLが格納されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • ロウキーを持たないコンテナ情報が指定された場合
  • +
  • コンテナ種別もしくはカラムレイアウトの制約に合致しない場合
  • +
  • 引数にNULLが指定された場合
  • +
+
+
Since
4.3
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsCreateRowKeyPredicate (GSGridStorestore,
GSType keyType,
GSRowKeyPredicate ** predicate 
)
+
+ +

指定のGSTypeをロウキーの型とする合致条件を作成します。

+
合致条件の評価対象とするコンテナは、単一カラムからなるロウキーを持ち、かつ、そのロウキーの型は指定のGSTypeと同一の型でなければなりません。
+
設定可能なロウキーの型は、GSContainerから派生した個別のコンテナ型にて許容されている型のみです。
+
複合ロウキーなどロウキーを構成するカラムの個数によらずに合致条件を作成するには、gsCreateRowKeyPredicateGeneralを使用します。
+
Parameters
+ + + + +
[in]store処理対象のGSGridStore
[in]keyType合致条件の評価対象とするロウキーの型
[out]predicateGSRowKeyPredicateインスタンスを格納するためのポインタ変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、このポインタ値がNULL以外の値であれば、対応するポインタ変数にNULLが格納されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • 指定された型がロウキーとして常にサポート外となる場合
  • +
  • ポインタ型引数にNULLが指定された場合
  • +
+
+
See Also
GSContainer
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsCreateRowKeyPredicateGeneral (GSGridStorestore,
const GSContainerInfoinfo,
GSRowKeyPredicate ** predicate 
)
+
+ +

指定のGSContainerInfoのロウキーに関するカラム定義に基づく、合致条件を作成します。

+
合致条件の評価対象とするコンテナは、ロウキーを持ち、かつ、指定のGSContainerInfoのロウキーに関するカラム定義と対応づく必要があります。ロウキー以外のカラム定義については対応関係の判定に用いられません。
+
Parameters
+ + + + +
[in]store処理対象のGSGridStore
[in]info合致条件の判定対象とするロウキーのカラムレイアウトを含む、コンテナ情報。その他の内容は無視される
[out]predicateGSRowKeyPredicateインスタンスを格納するためのポインタ変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、このポインタ値がNULL以外の値であれば、対応するポインタ変数にNULLが格納されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • 指定の情報がロウキーを含まないか、ロウキーとして常にサポート外となる場合
  • +
  • ポインタ型引数にNULLが指定された場合
  • +
+
+
Since
4.3
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsDropCollection (GSGridStorestore,
const GSCharname 
)
+
+ +

指定の名前を持つコレクションを削除します。

+
削除済みの場合の扱い、トランザクションの扱い、削除要求完了直後の状態に関しては、gsDropContainerと同様です。
+
Parameters
+ + + +
[in]store処理対象のGSGridStore
[in]name処理対象のコレクションの名前
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • 種別の異なるコンテナを削除しようとした場合
  • +
  • この処理のタイムアウト、接続障害が発生した場合
  • +
  • 引数にNULLが指定された場合
  • +
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsDropContainer (GSGridStorestore,
const GSCharname 
)
+
+ +

指定の名前を持つコンテナを削除します。

+
削除済みの場合は何も変更しません。
+
処理対象のコンテナにおいて実行中のトランザクションが存在する場合、それらの終了を待ってから削除を行います。
+
コンテナの削除要求が完了した直後は、削除したコンテナの索引やロウなどのために使用されていたメモリやストレージ領域を他の用途にただちに再利用できない場合があります。また、削除処理に関連した処理がクラスタ上で動作することにより、削除前と比べて負荷が高まる期間が一定程度継続する場合があります。
+
Parameters
+ + + +
[in]store処理対象のGSGridStore
[in]name処理対象のコンテナの名前
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • この処理のタイムアウト、接続障害が発生した場合
  • +
  • 引数にNULLが指定された場合
  • +
+
+
See Also
gsDropCollection
+
+gsTimeSeries
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsDropTimeSeries (GSGridStorestore,
const GSCharname 
)
+
+ +

指定の名前を持つ時系列を削除します。

+
削除済みの場合は何も変更しません。
+
削除済みの場合の扱い、トランザクションの扱い、削除要求完了直後の状態に関しては、gsDropContainerと同様です。
+
Parameters
+ + + +
[in]store処理対象のGSGridStore
[in]name処理対象の時系列の名前
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • 種別の異なるコンテナを削除しようとした場合
  • +
  • この処理のタイムアウト、接続障害が発生した場合
  • +
  • 引数にNULLが指定された場合
  • +
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsFetchAll (GSGridStorestore,
GSQuery *const * queryList,
size_t queryCount 
)
+
+ +

指定された任意個数のGSQueryについて、可能な限りリクエスト単位を大きくしてクエリ実行とフェッチを行います。

+
指定のクエリ列に含まれる各GSQueryについて、個別にgsFetchを行った場合と同様にクエリ実行とフェッチを行い、結果のGSRowSetを設定します。GSQueryの実行結果を取り出すには、gsGetRowSetを使用します。ただし、個別に行う場合と違い、同一の格納先などの可能な限り大きな単位で対象ノードに対しリクエストしようとします。これにより、リストの要素数が多くなるほど、対象ノードとやりとりする回数が削減される可能性が高くなります。リスト内のGSQueryの実行順序は不定です。
+
指定のクエリ列には、指定のGSGridStoreインスタンスを介して得られた、対応するGSContainerがクローズされていないGSQueryのみを含めることができます。gsFetchと同様、各GSQueryが持つ最後に生成されたGSRowSetを介するロウ操作ができなくなります。同一のインスタンスが配列に複数含まれていた場合、それぞれ異なるインスタンスであった場合と同様に振る舞います。
+
他のコンテナ・ロウ操作と同様、異なるコンテナ間での整合性は保証されません。したがって、あるコンテナに対する処理の結果は、その処理の開始前に完了した他の操作命令の影響を受けることがあります。
+
指定のGSQueryに対応する各GSContainerのコミットモードが自動コミットモード、手動コミットモードのいずれであったとしても、使用できます。トランザクション状態はクエリの実行結果に反映されます。正常に操作が完了した場合、トランザクションタイムアウト時間に到達しない限り、対応する各GSContainerのトランザクションをアボートすることはありません。
+
GSQueryに対する処理の途中でエラーが発生した場合、一部のGSQueryについてのみ新たなGSRowSetが設定されることがあります。また、指定のGSQueryに対応する各GSContainerの未コミットのトランザクションについては、アボートされることがあります。
+
一度に大量のロウを取得しようとした場合、GridDBノードが管理する通信バッファのサイズの上限に到達し、失敗することがあります。上限サイズについては、GridDB機能リファレンスを参照してください。
+
この操作によりエラーが発生した場合、エラー情報にはcontainerパラメータが含まれることがあります。エラーに関するパラメータの詳細は、GSGridStoreの定義を参照してください。
+
Parameters
+ + + + +
[in]store処理対象のGSGridStore
[in]queryList対象とするクエリ列。GSQueryへのポインタ値の配列により構成されます。queryCount0の場合、この配列を参照することはなく、NULLを指定することもできます。
[in]queryCount対象とするクエリ列の要素数
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • 指定のGSGridStoreインスタンスを介して得られたGSQuery以外のGSQueryが含まれていた場合
  • +
  • 正しくないパラメータ・構文・命令を含むクエリを実行しようとした場合。たとえば、TQLでは、関数の引数に対応しない型のカラムを指定した場合。具体的な制約は、指定のクエリを作成する機能の各種定義を参照してください
  • +
  • この処理または関連するトランザクションのタイムアウト、対応するコンテナの削除もしくはスキーマ変更、接続障害が発生した場合、または対応するコンテナのクローズ後に呼び出された場合
  • +
  • queryCountが正の値であるにもかかわらず、queryListNULLが指定された場合
  • +
  • クエリ列を構成する配列要素にNULLが含まれていた場合
  • +
+
+
See Also
gsFetch
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GS_STATIC_HEADER_FUNC_SPECIFIER GSResult gsGetCollection (GSGridStorestore,
const GSCharname,
const GSBindingbinding,
GSCollection ** collection 
)
+
+ +

指定の名前のコレクションを操作するためのGSCollectionインスタンスを取得します。

+
指定の型とカラムレイアウトとの対応関係については、GSContainerの定義を参照してください。
+
Parameters
+ + + + + +
[in]store処理対象のコレクションが格納されているGSGridStore
[in]name処理対象のコレクションの名前
[in]bindingユーザ定義構造体とカラムレイアウトとのバインディング情報
[out]collectionGSCollectionインスタンスを格納するためのポインタ変数へのポインタ値。指定の名前のコレクションが存在しない場合、NULLが設定されます。実行結果としてGS_RESULT_OK以外が返される場合、このポインタ値がNULL以外の値であれば、対応するポインタ変数にNULLが格納されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • 同名の時系列が存在する場合
  • +
  • 指定の型と既存のカラムレイアウトが一致しない場合
  • +
  • 指定の型がロウオブジェクトの型として適切でない場合。詳しくはGSContainerの定義を参照してください。
  • +
  • この処理のタイムアウト、接続障害が発生した場合
  • +
  • 引数にNULLが指定された場合
  • +
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetCollectionGeneral (GSGridStorestore,
const GSCharname,
GSCollection ** collection 
)
+
+ +

GSRowによりロウ操作できるGSCollectionインスタンスを取得します。

+
期待するコンテナ種別がGS_CONTAINER_COLLECTIONに限定され、常にGSContainerインスタンスが格納される点を除き、gsGetContainerGeneralと同様に振る舞います。
+
Parameters
+ + + + +
[in]store処理対象のGSGridStore
[in]name処理対象のコレクションの名前
[out]collectionGSCollectionインスタンスを格納するためのポインタ変数へのポインタ値。指定の名前のコレクションが存在しない場合、NULLが設定されます。実行結果としてGS_RESULT_OK以外が返される場合、このポインタ値がNULL以外の値であれば、対応するポインタ変数にNULLが格納されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • 同名の時系列が存在する場合
  • +
  • この処理のタイムアウト、接続障害が発生した場合
  • +
  • 引数にNULLが指定された場合
  • +
+
+
See Also
gsGetContainerGeneral
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetContainerGeneral (GSGridStorestore,
const GSCharname,
GSContainer ** container 
)
+
+ +

GSRowによりロウ操作できるGSContainerインスタンスを取得します。

+
次の点を除き、gsGetCollectionもしくはgsGetTimeSeriesと同様に振る舞います。
    +
  • 既存のコンテナの種別ならびにカラムレイアウトに基づきGSContainerインスタンスを返却する
  • +
  • コンテナの種別ならびにカラムレイアウトを指定しないため、これらの不一致に伴うエラーが発生しない
  • +
  • 返却されるGSContainerのロウオブジェクトの型が常にGSRowとなるそれぞれの同名の引数nameの用法についても同様です。
  • +
+
+
Parameters
+ + + + +
[in]store処理対象のGSGridStore
[in]name処理対象のコンテナの名前
[out]containerGSContainerインスタンスを格納するためのポインタ変数へのポインタ値。指定の名前のコンテナが存在しない場合、NULLが設定されます。指定の名前のコンテナが存在し、種別がGS_CONTAINER_COLLECTIONであった場合はGSCollectionGS_CONTAINER_TIME_SERIESであった場合はGSTimeSeries固有の機能が使用できます。実行結果としてGS_RESULT_OK以外が返される場合、このポインタ値がNULL以外の値であれば、対応するポインタ変数にNULLが格納されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • この処理のタイムアウト、接続障害が発生した場合
  • +
  • 引数にNULLが指定された場合
  • +
+
+
See Also
gsGetCollection
+
+gsGetTimeSeries
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GS_STATIC_HEADER_FUNC_SPECIFIER GSResult gsGetContainerInfo (GSGridStorestore,
const GSCharname,
GSContainerInfoinfo,
GSBoolexists 
)
+
+ +

指定の名前のコンテナに関する情報を取得します。

+
返却されるGSContainerInfoに含まれるコンテナ名は、GridDB上に格納されているものが設定されます。したがって、指定したコンテナ名と比較すると、ASCIIの大文字・小文字表記が異なる場合があります。
+
カラム順序を無視するかどうかについては、無視しない状態に設定されます。この設定は、GSContainerInfo::columnOrderIgnorableを通じて確認できます。
+
現バージョンでは、初期値でのNULL使用有無は未設定状態で求まります。この設定は、GSColumnInfo::optionsを通じて確認できます。
+
Attention
カラム情報の列などの可変長データを格納するために、指定のGSGridStoreインスタンス上で管理される一時的なメモリ領域を使用します。この領域は、指定のGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
+
Parameters
+ + + + + +
[in]store処理対象のコンテナが格納されているGSGridStore
[in]name処理対象のコンテナの名前
[out]info指定の名前のコンテナに関する情報を格納するためのGSContainerInfoへのポインタ値。指定の名前のコンテナが存在しない場合、もしくは、実行結果としてGS_RESULT_OK以外が返される場合、GS_CONTAINER_INFO_INITIALIZERと同一の内容の初期値が格納されます。
[out]exists処理対象のコンテナが存在したかどうかを格納するためのブール型変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、GS_FALSEが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • この処理のタイムアウト、接続障害が発生した場合
  • +
  • exists以外の引数にNULLが指定された場合
  • +
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetMultipleContainerRows (GSGridStorestore,
const GSRowKeyPredicateEntry *const * predicateList,
size_t predicateCount,
const GSContainerRowEntry ** entryList,
size_t * entryCount 
)
+
+ +

指定の条件に基づき、任意のコンテナの任意個数・範囲のロウについて、可能な限りリクエスト単位を大きくして取得します。

+
指定のエントリ列に含まれる条件に従い、個別にgsGetRowもしくはgsFetchを呼び出した場合と同様に、ロウの内容を取得します。ただし、個別に行う場合と違い、同一の格納先などの可能な限り大きな単位で対象ノードに対しリクエストしようとします。これにより、対象コンテナの総数や条件に合致するロウの総数が多くなるほど、対象ノードとやりとりする回数が削減される可能性が高くなります。
+
指定の条件エントリ列は、コンテナ名と、GSRowKeyPredicateで表現される取得条件との組からなる任意個数の条件エントリから構成されます。同一のGSRowKeyPredicateインスタンスを複数含めることもできます。また、対象とするコンテナとして、コンテナ種別やカラムレイアウトが異なるものを混在させることができます。ただし、コンテナの構成によっては評価できない取得条件が存在します。具体的な制限については、GSRowKeyPredicateに対する各種設定機能の定義を参照してください。コンテナ名または取得条件としてNULLを設定することはできません。
+
取得するエントリ列は、コンテナ名とロウオブジェクト列との組からなるエントリにより構成されます。また、取得するエントリ列には、取得条件として指定したエントリ列のうち、リクエスト時点で実在するコンテナに関するエントリのみが含まれます。同一のコンテナを指す複数のエントリが指定の条件エントリ列に含まれていた場合、取得するエントリ列にはこれらを1つにまとめたエントリが格納されます。同一のリストに複数のロウオブジェクトが含まれる場合、格納される順序はコンテナ種別と対応するGSContainerから派生した個別のコンテナ型の定義に従います。指定のコンテナに対応するロウが1つも存在しない場合、対応するロウオブジェクト列の要素数は0となります。
+
他のコンテナ・ロウ操作と同様、異なるコンテナ間での整合性は保証されません。したがって、あるコンテナに対する処理の結果は、その処理の開始前に完了した他の操作命令の影響を受けることがあります。
+
gsGetRowForUpdateもしくはgsFetchのように、トランザクションを維持し、更新用ロックを要求することはできません。
+
一度に大量のロウを取得しようとした場合、GridDBノードが管理する通信バッファのサイズの上限に到達し、失敗することがあります。上限サイズについては、GridDB機能リファレンスを参照してください。
+
この操作によりエラーが発生した場合、エラー情報にはcontainerパラメータが含まれることがあります。エラーに関するパラメータの詳細は、GSGridStoreの定義を参照してください。
+
Attention
取得するエントリ列ならびにその中に含まれるコンテナ名やロウオブジェクト列の可変長のデータを格納するために、指定のGSGridStoreインスタンス上で管理される、一時的なメモリ領域を使用します。この領域は、対応するGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
+
Parameters
+ + + + + + +
[in]store処理対象のGSGridStore
[in]predicateList対象とするコンテナの名前と取得条件との組からなる条件エントリの列。GSContainerRowEntryの配列により構成されます。predicateCount0の場合、この配列を参照することはなく、NULLを指定することもできます。
[in]predicateCount条件エントリ列の要素数
[out]entryList取得結果エントリ列のアドレスを格納するためのポインタ変数へのポインタ値。取得結果エントリ列はGSContainerRowEntryの配列により構成されます。実行結果としてGS_RESULT_OK以外が返される場合、このポインタ値がNULL以外の値であれば、対応するポインタ変数にNULLが格納されます。
[out]entryCount取得結果エントリ列の要素数を格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、このポインタ値がNULL以外の値であれば、対応するポインタ変数にNULLが格納されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • 指定のコンテナに関して評価できない取得条件が指定された場合
  • +
  • 特定コンテナ種別固有の制限に反する操作を行った場合
  • +
  • この処理または関連するトランザクションのタイムアウト、接続障害が発生した場合
  • +
  • predicateList以外のポインタ型引数にNULLが指定された場合
  • +
  • predicateCountが正の値であるにもかかわらず、predicateListNULLが指定された場合
  • +
  • エントリ列を構成するエントリのコンテナ名もしくは取得条件としてNULLが含まれていた場合
  • +
+
+
See Also
gsGetRow
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPartitionController (GSGridStorestore,
GSPartitionController ** partitionController 
)
+
+ +

対応するGridDBクラスタについてのGSPartitionControllerを取得します。

+
指定のGSGridStoreをクローズした時点で使用できなくなります。
+
Parameters
+ + + +
[in]store処理対象のGSGridStore
[out]partitionControllerGSPartitionControllerインスタンスを格納するためのポインタ変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、このポインタ値がNULL以外の値であれば、対応するポインタ変数にNULLが格納されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • 引数にNULLが指定された場合
  • +
+
+
See Also
GSPartitionController
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GS_STATIC_HEADER_FUNC_SPECIFIER GSResult gsGetTimeSeries (GSGridStorestore,
const GSCharname,
const GSBindingbinding,
GSTimeSeries ** timeSeries 
)
+
+ +

指定の名前の時系列を操作するためのGSTimeSeriesインスタンスを取得します。

+
指定の型とカラムレイアウトとの対応関係については、GSContainerの定義を参照してください。
+
Parameters
+ + + + + +
[in]store処理対象の時系列が格納されているGSGridStore
[in]name処理対象の時系列の名前
[in]bindingユーザ定義構造体とカラムレイアウトとのバインディング情報
[out]timeSeriesGSTimeSeriesインスタンスを格納するためのポインタ変数へのポインタ値。指定の名前の時系列が存在しない場合、NULLが設定されます。実行結果としてGS_RESULT_OK以外が返される場合、このポインタ値がNULL以外の値であれば、対応するポインタ変数にNULLが格納されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • 同名のコレクションが存在する場合
  • +
  • 指定の型と既存のカラムレイアウトが一致しない場合
  • +
  • 指定の型がロウオブジェクトの型として適切でない場合。詳しくはGSContainerの定義を参照してください。
  • +
  • この処理のタイムアウト、接続障害が発生した場合
  • +
  • 引数にNULLが指定された場合
  • +
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetTimeSeriesGeneral (GSGridStorestore,
const GSCharname,
GSTimeSeries ** timeSeries 
)
+
+ +

GSRowによりロウ操作できるGSTimeSeriesインスタンスを取得します。

+
期待するコンテナ種別がGS_CONTAINER_TIME_SERIESに限定され、常にGSTimeSeriesインスタンスが格納される点を除き、gsGetContainerGeneralと同様に振る舞います。
+
Parameters
+ + + + +
[in]store処理対象のGSGridStore
[in]name処理対象の時系列の名前
[out]timeSeriesGSCollectionインスタンスを格納するためのポインタ変数へのポインタ値。指定の名前の時系列が存在しない場合、NULLが設定されます。実行結果としてGS_RESULT_OK以外が返される場合、このポインタ値がNULL以外の値であれば、対応するポインタ変数にNULLが格納されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • 同名のコレクションが存在する場合
  • +
  • この処理のタイムアウト、接続障害が発生した場合
  • +
  • 引数にNULLが指定された場合
  • +
+
+
See Also
gsGetContainerGeneral
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GS_STATIC_HEADER_FUNC_SPECIFIER GSResult gsPutCollection (GSGridStorestore,
const GSCharname,
const GSBindingbinding,
const GSCollectionPropertiesproperties,
GSBool modifiable,
GSCollection ** collection 
)
+
+ +

コレクションを新規作成または変更します。

+
同名のコンテナが存在しない場合、指定のバインディング情報により定義されたカラムレイアウトに従い、新規にコレクションを作成します。すでに同名のコレクションが存在し、既存のカラムレイアウトの内容がすべて一致する場合、実行中のトランザクションを待機する点を除きgsGetCollectionと同様に振る舞います。
+
modifiableGS_TRUEであり、すでに同名のコレクションが存在する場合、必要に応じカラムレイアウトを変更します。変更する際、要求したカラムと同一の名前・型の既存のカラムは保持されます。一致しないカラムのうち、既存のコレクションにない名前のカラムは追加し、要求側にないカラムはデータも含め削除します。型が異なる同名のカラムが存在する場合は失敗します。また、ロウキーに対応するカラムの追加と削除はできません。
+
コンテナにトリガが設定されており、カラムレイアウト変更によってトリガが通知対象としているカラムが削除された場合、そのカラムはトリガの通知対象から削除されます。
+
新たに追加されるカラムの値は、GSContainerにて定義されている空の値を初期値として初期化されます。
+
指定の型とカラムレイアウトとの対応関係については、GSContainerの定義を参照してください。
+
すでに同名のコレクションが存在し、かつ、該当するコレクションにおいて実行中のトランザクションが存在する場合、それらの終了を待機してから処理を行います。
+
ロウキーを持つコレクションを新規に作成する場合、ロウキーに対し、gsCreateIndexにて定義されているデフォルト種別の索引が作成されます。この索引は、削除することができます。
+
現バージョンでは、コンテナの規模など諸条件を満たした場合、カラムレイアウトの変更開始から終了までの間に、処理対象のコンテナに対してコンテナ情報の参照、更新ロックなしでのロウの参照操作を行える場合があります。それ以外の操作は、GSContainerでの定義通り待機させる場合があります。カラムレイアウトの変更途中に別の操作が行われる場合は、変更前のカラムレイアウトが使用されます。
+
Parameters
+ + + + + + + +
[in]store処理対象のGSGridStore
[in]name処理対象のコレクションの名前
[in]bindingユーザ定義構造体とカラムレイアウトとのバインディング情報
[in]propertiesコレクションの構成オプション。NULLを指定できます。現バージョンでは使用されておらず、内容はチェックされません。
[in]modifiable既存コレクションのカラムレイアウト変更を許可するかどうか
[out]collectionGSCollectionインスタンスを格納するためのポインタ変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、このポインタ値がNULL以外の値であれば、対応するポインタ変数にNULLが格納されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • 同名の時系列が存在する場合。
  • +
  • modifiableGS_FALSEであり、既存の同名のコレクションに関してカラムレイアウトの内容が一致しない場合
  • +
  • modifiableGS_TRUEであり、既存の同名のコレクションに関して変更できない項目を変更しようとした場合
  • +
  • 指定の型がロウオブジェクトの型として適切でない場合。詳しくはGSContainerの定義を参照してください。
  • +
  • この処理のタイムアウト、接続障害が発生した場合
  • +
  • properties以外のポインタ型引数にNULLが指定された場合
  • +
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GS_STATIC_HEADER_FUNC_SPECIFIER GSResult gsPutCollectionGeneral (GSGridStorestore,
const GSCharname,
const GSContainerInfoinfo,
GSBool modifiable,
GSCollection ** collection 
)
+
+ +

GSContainerInfoを指定して、コレクションを新規作成または変更します。

+
コンテナ種別がGS_CONTAINER_COLLECTIONに限定され、GSContainerインスタンスが格納される点を除き、gsPutContainerGeneralと同様に振る舞います。
+
Parameters
+ + + + + + +
[in]store処理対象のGSGridStore
[in]name処理対象のコレクションの名前
[in]info処理対象のコレクションの情報。コンテナ種別には常にGS_CONTAINER_COLLECTIONを指定
[in]modifiable既存コレクションのカラムレイアウト変更を許可するかどうか
[out]collectionGSCollectionインスタンスを格納するためのポインタ変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、このポインタ値がNULL以外の値であれば、対応するポインタ変数にNULLが格納されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • コンテナ種別以外の指定内容に関して、gsPutContainerGeneralの規則に合致しない場合。また、コンテナ種別に関する制限に合致しない場合
  • +
  • この処理のタイムアウト、接続障害が発生した場合
  • +
  • name以外のポインタ型引数にNULLが指定された場合
  • +
+
+
See Also
gsPutContainerGeneral
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GS_STATIC_HEADER_FUNC_SPECIFIER GSResult gsPutContainer (GSGridStorestore,
const GSCharname,
const GSBindingbinding,
const GSContainerInfoinfo,
GSBool modifiable,
GSContainer ** container 
)
+
+ +

バインディング情報とGSContainerInfoを指定して、コンテナを新規作成または変更します。

+
主に、バインディング情報を指定して、追加設定を持つコンテナを新規作成する場合に使用します。
+
カラムレイアウトならびにカラム順序の無視設定をGSContainerInfoに指定できない点を除けば、gsPutContainerGeneralと同様です。
+
Parameters
+ + + + + + + +
[in]store処理対象のGSGridStore
[in]name処理対象のコンテナの名前
[in]bindingユーザ定義構造体とカラムレイアウトとのバインディング情報
[in]info処理対象のコンテナの情報。NULLの場合は無視される
[in]modifiable既存コレクションのカラムレイアウト変更を許可するかどうか
[out]containerGSContainerインスタンスを格納するためのポインタ変数へのポインタ値。GS_CONTAINER_COLLECTIONを指定した場合はGSCollectionGS_CONTAINER_TIME_SERIESを指定した場合はGSTimeSeries固有の機能が使用できます。実行結果としてGS_RESULT_OK以外が返される場合、このポインタ値がNULL以外の値であれば、対応するポインタ変数にNULLが格納されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • nameならびにinfo引数の内容が規則に合致しない場合。また、指定のコンテナ種別に対応するコンテナ新規作成・変更関数の規則に合致しない場合
  • +
  • 指定の型がロウオブジェクトの型として適切でない場合。詳しくはGSContainerの定義を参照してください。
  • +
  • この処理のタイムアウト、接続障害が発生した場合
  • +
  • name以外のポインタ型引数にNULLが指定された場合
  • +
+
+
See Also
gsPutCollection
+
+gsPutTimeSeries
+
+gsPutContainerGeneral
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GS_STATIC_HEADER_FUNC_SPECIFIER GSResult gsPutContainerGeneral (GSGridStorestore,
const GSCharname,
const GSContainerInfoinfo,
GSBool modifiable,
GSContainer ** container 
)
+
+ +

GSContainerInfoを指定して、コンテナを新規作成または変更します。

+
次の点を除き、gsPutCollectionもしくはgsPutTimeSeriesと同様に振る舞います。
    +
  • GSContainerInfoを用いてコンテナ種別、カラムレイアウト、ならびに、必要に応じ時系列構成オプションを指定する
  • +
  • 返却されるGSContainerのロウオブジェクトの型が常にGSRowとなるそれぞれの同名の引数modifiableの用法についても同様です。
  • +
+
+
コンテナに関する情報の指定方法の一覧は次の通りです。 + + + + + + + + + + + + + + + + + + +
項目引数説明
コンテナ名nameまたはinfo 少なくともいずれかの引数にNULLではない値を指定する。両方に指定する場合、異なる値を指定してはならない。
コンテナ種別info GS_CONTAINER_COLLECTIONを指定した場合、gsPutCollectionと同様の振る舞いとなる。GS_CONTAINER_TIME_SERIESを指定した場合、gsPutTimeSeriesと同様の振る舞いとなる。
カラムレイアウトinfo GSContainerにて規定された制約に合致するようGSColumnInfoのリストならびにロウキーの構成を設定する。ただし現バージョンでは、初期値でのNULL使用有無が設定されたGSColumnInfo::optionsを持つGSColumnInfoを含めることはできない。
カラム順序の無視info 無視する場合、同名の既存のコンテナのカラム順序と一致するかどうかを検証しない。
時系列構成オプションinfo コンテナ種別がGS_CONTAINER_TIME_SERIESの場合のみ、NULLではない値を指定できる。
索引設定info 現バージョンでは無視される。今後のバージョンでは、gsCreateIndexの規則に合致しない設定が含まれていた場合、エラーとなる可能性がある。
トリガ設定info 現バージョンでは無視される。今後のバージョンでは、gsCreateTriggerの規則に合致しない設定が含まれていた場合、エラーとなる可能性がある。
コンテナ類似性info NULL以外を指定し新規作成する場合、指定の内容が反映される。既存コンテナの設定を変更することはできない。NULLを指定した場合は無視される。
+
+
Parameters
+ + + + + + +
[in]store処理対象のGSGridStore
[in]name処理対象のコンテナの名前
[in]info処理対象のコンテナの情報
[in]modifiable既存コンテナのカラムレイアウト変更を許可するかどうか
[out]containerGSContainerインスタンスを格納するためのポインタ変数へのポインタ値。GS_CONTAINER_COLLECTIONを指定した場合はGSCollectionGS_CONTAINER_TIME_SERIESを指定した場合はGSTimeSeries固有の機能が使用できます。実行結果としてGS_RESULT_OK以外が返される場合、このポインタ値がNULL以外の値であれば、対応するポインタ変数にNULLが格納されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • nameならびにinfo引数の内容が規則に合致しない場合。また、指定のコンテナ種別に対応するコンテナ新規作成・変更関数の規則に合致しない場合
  • +
  • この処理のタイムアウト、接続障害が発生した場合
  • +
  • name以外のポインタ型引数にNULLが指定された場合
  • +
+
+
See Also
gsPutCollection
+
+gsPutTimeSeries
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsPutMultipleContainerRows (GSGridStorestore,
const GSContainerRowEntryentryList,
size_t entryCount 
)
+
+ +

任意のコンテナの任意個数のロウについて、可能な限りリクエスト単位を大きくして新規作成または更新操作を行います。

+
指定のエントリ列に含まれる各ロウオブジェクトについて、個別にgsPutRowを呼び出した場合と同様に新規作成または更新操作を行います。ただし、個別に行う場合と違い、同一の格納先などの可能な限り大きな単位で対象ノードに対しリクエストしようとします。これにより、対象コンテナの総数や指定のロウオブジェクトの総数が多くなるほど、対象ノードとやりとりする回数が削減される可能性が高くなります。
+
指定のエントリ列は、コンテナ名とロウオブジェクト列との組からなる任意個数のエントリから構成されます。対象とするコンテナとして、コンテナ種別やカラムレイアウトが異なるものを混在させることができます。ただし、すでに存在するコンテナでなければなりません。エントリ列のコンテナ名としてNULLを設定することはできません。また、ロウオブジェクト列の要素数が正ならば、ロウオブジェクト列の配列アドレスとしてNULLを設定することはできません。
+
各ロウオブジェクト列には、対象のコンテナと同一のカラムレイアウトのGSRowのみを任意個数含めることができます。現バージョンでは、カラム順序についてもすべて同一でなければなりません。ロウオブジェクト列の要素としてNULLを含めることはできません。
+
コンテナの種別ならびに設定によっては、操作できるロウの内容についてgsPutRowと同様の制限が設けられています。具体的な制限事項は、gsPutRowの定義を参照してください。
+
指定のエントリ列内に同一コンテナを対象とした同一ロウキーを持つ複数のロウオブジェクト列が存在する場合、異なるリスト間であればエントリ列の要素順、同一ロウオブジェクト列内であればその要素順を基準として、同値のロウキーを持つ最も後方にあるロウオブジェクトの内容が反映されます。
+
トランザクションを維持し、ロックを保持し続けることはできません。ただし、既存のトランザクションが対象ロウに影響するロックを確保している場合、すべてのロックが解放されるまで待機し続けます。
+
他のコンテナ・ロウ操作と同様、異なるコンテナ間での整合性は保証されません。したがって、あるコンテナに対する処理の結果は、その処理の開始前に完了した他の操作命令の影響を受けることがあります。
+
各コンテナならびにロウに対する処理の途中でエラーが発生した場合、一部のコンテナの一部のロウに対する操作結果のみが反映されたままとなることがあります。
+
この操作によりエラーが発生した場合、エラー情報にはcontainerパラメータが含まれることがあります。エラーに関するパラメータの詳細は、GSGridStoreの定義を参照してください。
+
Attention
エントリ列に含まれるロウオブジェクトへのアドレスとしてGSRow以外のものが含まれており、異常を検知できなかった場合、この処理の動作は未定義です。アクセス違反により実行プロセスが異常終了する可能性があります。
+
Parameters
+ + + + +
[in]store処理対象のGSGridStore
[in]entryList対象とするコンテナの名前とロウオブジェクト列からなるエントリの列。GSContainerRowEntryの配列により構成されます。entryCount0の場合、この配列を参照することはなく、NULLを指定することもできます。
[in]entryCountエントリ列の要素数
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • 対象とするコンテナが存在しない場合、また、対象とするコンテナとロウオブジェクトとのカラムレイアウトが一致しない場合
  • +
  • 特定コンテナ種別固有の制限に反する操作を行った場合
  • +
  • この処理または関連するトランザクションのタイムアウト、接続障害が発生した場合、またはサポート範囲外の値がロウオブジェクトに含まれていた場合
  • +
  • storeNULLの場合
  • +
  • queryCountが正の値であるにもかかわらず、queryListNULLが指定された場合
  • +
  • エントリ列に含まれるロウオブジェクトへのアドレスとしてGSRow以外のものが含まれており、異常検知に成功した場合
  • +
  • エントリ列を構成するエントリのコンテナ名としてNULLが含まれていた場合、ロウオブジェクト列の要素数が正であるにも関わらずロウオブジェクト列の配列アドレスとしてNULLが含まれていた場合、また、ロウオブジェクト列の要素としてNULLが含まれていた場合
  • +
+
+
See Also
gsPutRow
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GS_STATIC_HEADER_FUNC_SPECIFIER GSResult gsPutTimeSeries (GSGridStorestore,
const GSCharname,
const GSBindingbinding,
const GSTimeSeriesPropertiesproperties,
GSBool modifiable,
GSTimeSeries ** timeSeries 
)
+
+ +

時系列を新規作成または変更します。

+
同名のコンテナが存在しない場合、指定のバインディング情報により定義されたカラムレイアウトに従い、新規に時系列を作成します。すでに同名の時系列が存在し、既存のカラムレイアウトの内容がすべて一致する場合、実行中のトランザクションを待機する点を除きgsGetTimeSeriesと同様に振る舞います。
+
modifiableGS_TRUEであり、すでに同名の時系列が存在する場合、必要に応じカラムレイアウトを変更します。変更する際、要求したカラムと同一の名前・型の既存のカラムは保持されます。一致しないカラムのうち、既存の時系列にない名前のカラムは追加し、要求側にないカラムはデータも含め削除します。型が異なる同名のカラムが存在する場合は失敗します。また、ロウキーに対応するカラムの追加と削除、時系列構成オプションの変更はできません。時系列構成オプションを指定する場合は、既存の設定内容とすべて同値にする必要があります。
+
コンテナにトリガが設定されており、カラムレイアウト変更によってトリガが通知対象としているカラムが削除された場合、そのカラムはトリガの通知対象から削除されます。
+
新たに追加されるカラムの値は、gsPutCollectionの定義を参照してください。
+
指定の型とカラムレイアウトとの対応関係については、GSContainerの定義を参照してください。
+
すでに同名の時系列が存在し、かつ、該当する時系列において実行中のトランザクションが存在する場合、それらの終了を待機してから処理を行います。
+
Parameters
+ + + + + + + +
[in]store処理対象のGSGridStore
[in]name処理対象の時系列の名前
[in]bindingユーザ定義構造体とカラムレイアウトとのバインディング情報
[in]properties時系列の構成オプション。NULLを指定すると、同名の時系列が存在する場合は既存の設定が継承され、存在しない場合は初期設定を指定したものとみなされます。初期設定とは、GS_TIME_SERIES_PROPERTIES_INITIALIZERにより初期化した時系列構成オプションと同値の設定のことです。
[in]modifiable既存時系列のカラムレイアウト変更を許可するかどうか
[out]timeSeriesGSTimeSeriesインスタンスを格納するためのポインタ変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、このポインタ値がNULL以外の値であれば、対応するポインタ変数にNULLが格納されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • 同名の時系列が存在する場合。
  • +
  • modifiableGS_FALSEであり、既存の同名の時系列に関してカラムレイアウトの内容が一致しない場合
  • +
  • modifiableGS_TRUEであり、既存の同名の時系列に関して変更できない項目を変更しようとした場合
  • +
  • 指定の型がロウオブジェクトの型として適切でない場合。詳しくはGSContainerの定義を参照してください。
  • +
  • この処理のタイムアウト、接続障害が発生した場合
  • +
  • properties以外のポインタ型引数にNULLが指定された場合
  • +
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GS_STATIC_HEADER_FUNC_SPECIFIER GSResult gsPutTimeSeriesGeneral (GSGridStorestore,
const GSCharname,
const GSContainerInfoinfo,
GSBool modifiable,
GSTimeSeries ** timeSeries 
)
+
+ +

GSContainerInfoを指定して、時系列を新規作成または変更します。

+
コンテナ種別がGS_CONTAINER_TIME_SERIESに限定され、GSTimeSeriesインスタンスが格納される点を除き、gsPutTimeSeriesGeneralと同様に振る舞います。
+
Parameters
+ + + + + + +
[in]store処理対象のGSGridStore
[in]name処理対象の時系列の名前
[in]info処理対象の時系列の情報。コンテナ種別には常にGS_CONTAINER_TIME_SERIESを指定
[in]modifiable既存時系列のカラムレイアウト変更を許可するかどうか
[out]timeSeriesGSTimeSeriesインスタンスを格納するためのポインタ変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、このポインタ値がNULL以外の値であれば、対応するポインタ変数にNULLが格納されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • コンテナ種別以外の指定内容に関して、gsPutContainerGeneralの規則に合致しない場合。また、コンテナ種別に関する制限に合致しない場合
  • +
  • この処理のタイムアウト、接続障害が発生した場合
  • +
  • name以外のポインタ型引数にNULLが指定された場合
  • +
+
+
See Also
gsPutContainerGeneral
+
Since
1.5
+ +
+
+
+
+
+
GSGridStoreFactory
+
+
+ + + + + +

+Typedefs

typedef struct
+GSGridStoreFactoryTag 
GSGridStoreFactory
 GSGridStoreインスタンスを管理します。More...
 
+ + + + + + + + + + + + + +

+Functions

GS_DLL_PUBLIC void GS_API_CALL gsCloseFactory (GSGridStoreFactory **factory, GSBool allRelated)
 必要に応じ、指定のGSGridStoreFactoryに関連するリソースをクローズします。More...
 
GS_DLL_PUBLIC
+GSGridStoreFactory
+*GS_API_CALL 
gsGetDefaultFactory ()
 デフォルトのGSGridStoreFactoryインスタンスを取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetGridStore (GSGridStoreFactory *factory, const GSPropertyEntry *properties, size_t propertyCount, GSGridStore **store)
 指定のプロパティを持つGSGridStoreを取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetFactoryProperties (GSGridStoreFactory *factory, const GSPropertyEntry *properties, size_t propertyCount)
 指定のファクトリの設定を変更します。More...
 
+

Detailed Description

+

Typedef Documentation

+ +
+
+ + + + +
typedef struct GSGridStoreFactoryTag GSGridStoreFactory
+
+ +

GSGridStoreインスタンスを管理します。

+
GSGridStoreインスタンス共通のクライアント設定や使用済みのコネクションを管理します。
+
GridDBにアクセスするためには、このファクトリを介してGSGridStoreインスタンスを取得する必要があります。
+
この型のポインタを第一引数とする関数は、すべてスレッド安全です。
+
追加の環境設定を行うことで、次の機能を使用できるようになります。
+
SSL接続
アドバンスド機能用ライブラリを使用できるよう設定することで、クラスタもしくはアドレスプロバイダへのTCP接続においてSSL接続を選択できるようになります。アドバンスド機能用ライブラリの設定方法については、GridDB機能リファレンスを参照してください。
+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC void GS_API_CALL gsCloseFactory (GSGridStoreFactory ** factory,
GSBool allRelated 
)
+
+ +

必要に応じ、指定のGSGridStoreFactoryに関連するリソースをクローズします。

+
Note
現バージョンでは、何もクローズ処理を行いません。
+
Parameters
+ + + +
[in,out]factory対象とするGSGridStoreFactoryインスタンスのポインタ変数へのポインタ値
[in]allRelated現バージョンでは、結果に影響しません。
+
+
+ +
+
+ +
+
+ + + + + + + +
GS_DLL_PUBLIC GSGridStoreFactory* GS_API_CALL gsGetDefaultFactory ()
+
+ +

デフォルトのGSGridStoreFactoryインスタンスを取得します。

+
Returns
GSGridStoreFactoryインスタンスへのポインタ値
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetGridStore (GSGridStoreFactoryfactory,
const GSPropertyEntryproperties,
size_t propertyCount,
GSGridStore ** store 
)
+
+ +

指定のプロパティを持つGSGridStoreを取得します。

+
GSGridStoreを取得した時点では、各GSContainerを管理するマスタノード(以下、マスタ)のアドレス探索を必要に応じて行うだけであり、認証処理は行われません。実際に各GSContainerに対応するノードに接続する必要が生じたタイミングで、認証処理が行われます。
+
以下のプロパティを指定できます。サポート外の名称のプロパティは無視されます。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
名称説明
host 接続先ホスト名。IPアドレス(IPV4のみ)も可。マスタを手動指定する場合は必須。マスタを自動検出する場合は設定しない。notificationMemberおよびnotificationProviderプロパティと同時に指定することはできない
port 接続先ポート番号。0から65535までの数値の文字列表現。マスタを手動指定する場合は必須。マスタを自動検出する場合は設定しない
notificationAddress マスタ自動検出に用いられる通知情報を受信するためのIPアドレス(IPv4のみ)。省略時はデフォルトのアドレスを使用。notificationMemberおよびnotificationProviderプロパティと同時に指定することはできない
notificationPort マスタ自動検出に用いられる通知情報を受信するためのポート番号。0から65535までの数値の文字列表現。省略時はデフォルトのポートを使用
clusterName クラスタ名。接続先のクラスタに設定されているクラスタ名と一致するかどうかを確認するために使用される。省略時もしくは空文字列を指定した場合、クラスタ名の確認は行われない。
database 接続先のデータベース名。省略時は全てのユーザがアクセス可能な「public」データベースに自動接続される。接続ユーザは接続データベースに属するコンテナを操作できる。
user ユーザ名
password ユーザ認証用のパスワード
consistency 一貫性レベル。次のいずれかの文字列を指定できる。
+
"IMMEDIATE"
+
他のクライアントからの更新結果は、該当トランザクションの完了後即座に反映される
+
"EVENTUAL"
+
他のクライアントからの更新結果は、該当トランザクションが完了した後でも反映されない場合がある。GSContainerに対する更新操作は実行できない
+
+省略時は"IMMEDIATE"が指定されたものとみなされる
transactionTimeout トランザクションタイムアウト時間の最低値。関係するGSContainerにおける各トランザクションの開始時点から適用。0からINTEGER型の最大値までの値の文字列表現であり、単位は秒。ただし、タイムアウト時間として有効に機能する範囲に上限があり、上限を超える指定は上限値が指定されたものとみなされる。0の場合、後続のトランザクション処理がタイムアウトエラーになるかどうかは常に不定となる。省略時は接続先GridDB上のデフォルト値を使用
failoverTimeout フェイルオーバ処理にて新たな接続先が見つかるまで待機する時間の最低値。0からINTEGER型の最大値までの数値の文字列表現であり、単位は秒。0の場合、フェイルオーバ処理を行わない。省略時は指定のファクトリの設定値を使用
containerCacheSize コンテナキャッシュに格納するコンテナ情報の最大個数。0からINTEGER型の最大値までの数値の文字列表現。値が0の場合、コンテナキャッシュを使用しないことを意味する。GSContainerを取得する際にキャッシュにヒットした場合は、GridDBへのコンテナ情報の問い合わせを行わない。省略時は既存の設定値を使用。バージョン1.5よりサポート
notificationMember 固定リスト方式を使用して構成されたクラスタに接続する場合に、クラスタノードのアドレス・ポートのリストを次のように指定する。
(アドレス1):(ポート1),(アドレス2):(ポート2),...
notificationAddressおよびnotificationProviderプロパティと同時に指定することはできない。バージョン2.9よりサポート
notificationProvider プロバイダ方式を使用して構成されたクラスタに接続する場合に、アドレスプロバイダのURLを指定する。notificationAddressおよびnotificationMemberプロパティと同時に指定することはできない。バージョン2.9よりサポート
applicationName アプリケーションの名前。アプリケーションの識別を補助するための情報として、接続先のクラスタ上での各種管理情報の出力の際に含められる場合がある。ただし、アプリケーションの同一性をどのように定義するかについては関与しない。省略時はアプリケーション名の指定がなかったものとみなされる。空文字列は指定できない。バージョン4.2よりサポート
timeZone タイムゾーン情報。TQLでのTIMESTAMP値演算などに使用される。「±hh:mm」または「±hhmm」形式によるオフセット値(±+または-hhは時、mmは分)、「Z」(+00:00に相当)、「auto」(実行環境に応じ自動設定)のいずれかを指定する。autoが使用できるのは夏時間を持たないタイムゾーンに限定される。バージョン4.3よりサポート
authentication 認証種別。次のいずれかの文字列を指定できる。
+
"INTERNAL"
+
クラスタ上で管理されているアカウント情報に基づいた、内部認証
+
"LDAP"
+
クラスタ外にあるLDAPサーバで管理されているアカウント情報に基づいた、外部認証。LDAP接続設定のないクラスタに接続する場合、もしくは、管理ユーザを使用する場合は指定できない
+
+省略時は自動的に認証種別が選択される。原則として指定は不要。非管理ユーザについて内部認証と外部認証を併用するクラスタへの接続の際に、内部認証を用いる場合などに指定する。バージョン4.5よりサポート
sslMode クラスタへの接続においてSSLの使用有無の判断に用いられるモード。次のいずれかの文字列を指定できる。
+
"DISABLED"
+
SSLを常に使用しない
+
"PREFERRED"
+
可能な限りSSLを使用する。SSL接続・非SSL接続共に使用できる場合はSSL接続を使用する
+
"VERIFY"
+
SSLを常に使用する。サーバ検証あり
+
+SSL接続を選択できる環境設定(詳細: GSGridStoreFactory)の場合のみ指定できる。それ以外の場合は、プロパティの値によらず指定できない。SSL接続を選択できる場合、省略時は"PREFERRED"が指定されたものとみなされる。バージョン4.5よりサポート。"VERIFY"はバージョン4.6よりサポート。
connectionRoute クラスタ接続時における通信経路。次の文字列を指定できる。
+
"PUBLIC"
+
クラスタの外部通信経路が設定されている場合に、外部通信経路を経由した接続を行う
+
+省略時は通常のクラスタ通信経路を用いた接続が行われる。外部接続が必要な場合のみ指定する。バージョン5.1.1よりサポート
+
+
クラスタ名、データベース名、ユーザ名、パスワードについては、ASCIIの大文字・小文字表記の違いがいずれも区別されます。その他、これらの定義に使用できる文字種や長さの上限などの制限については、GridDB機能リファレンスを参照してください。ただし、制限に反する文字列をプロパティ値として指定した場合、各ノードへの接続のタイミングまでエラーが検知されないことや、認証情報の不一致など別のエラーになることがあります。
+
取得のたびに、新たなGSGridStoreインスタンスが生成されます。異なるGSGridStoreインスタンスならびに関連するリソースに対する操作は、スレッド安全です。すなわち、ある2つのリソースがそれぞれGSGridStoreインスタンスを基にして生成されたものまたはGSGridStoreインスタンスそのものであり、かつ、該当する関連GSGridStoreインスタンスが異なる場合、一方のリソースに対してどのスレッドからどのタイミングで関連する関数が呼び出されていたとしても、他方のリソースの関連する関数を呼び出すことができます。ただし、GSGridStore自体のスレッド安全性は保証されていないため、同一GSGridStoreインスタンスに対して複数スレッドから任意のタイミングで関連する関数を呼び出すことはできません。
+
Parameters
+ + + + + +
[in]factory取得元のGSGridStoreFactoryインスタンス。NULLの場合、gsGetDefaultFactoryにより得られるインスタンスと同一のものが使用されます。
[in]properties取得設定を指示するためのプロパティ。GSPropertyEntryの配列により構成されます。エントリ数が0の場合、この配列を参照することはなく、NULLを指定することもできます。エントリを構成する名前もしくは値にNULLを含めることはできません。
[in]propertyCountpropertiesとして引数に指定するプロパティのエントリ数。
[out]storeGSGridStoreインスタンスを格納するためのポインタ変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、このポインタ値がNULL以外の値であれば、対応するポインタ変数にNULLが格納されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • 指定のホストについて名前解決できなかった場合
  • +
  • 指定のプロパティが上で説明した形式・制限に合致しないことを検知できた場合
  • +
  • storeNULLが指定された場合
  • +
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetFactoryProperties (GSGridStoreFactoryfactory,
const GSPropertyEntryproperties,
size_t propertyCount 
)
+
+ +

指定のファクトリの設定を変更します。

+
設定の変更は、指定のファクトリより生成されたGSGridStore、ならびに、今後指定のファクトリで生成されるGSGridStoreに反映されます。
+
以下のプロパティを指定できます。サポート外の名称のプロパティは無視されます。 + + + + + + +
名称説明
maxConnectionPoolSize 内部で使用されるコネクションプールの最大コネクション数。0からINTEGER型の最大値までの数値の文字列表現。値が0の場合、コネクションプールを使用しないことを意味する。省略時は既存の設定値を使用
failoverTimeout フェイルオーバ処理にて新たな接続先が見つかるまで待機する時間の最低値。0からINTEGER型の最大値までの数値の文字列表現であり、単位は秒。0の場合、フェイルオーバ処理を行わない。省略時は既存の設定値を使用
+
+
Parameters
+ + + + +
[in]factory取得元のGSGridStoreFactoryインスタンス。NULLの場合、gsGetDefaultFactoryにより得られるインスタンスと同一のものが使用されます。
[in]properties取得設定を指示するためのプロパティ。GSPropertyEntryの配列により構成されます。エントリ数が0の場合、NULLを指定することもできます。エントリを構成する名前もしくは値にNULLを含めることはできません。
[in]propertyCountpropertiesとして引数に指定するプロパティのエントリ数。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • 指定のプロパティが上で説明した形式に合致しない場合
  • +
  • propertiesNULLが指定された場合
  • +
+
+ +
+
+
+
+
+
GSPartitionController
+
+
+ + + + + +

+Typedefs

typedef struct
+GSPartitionControllerTag 
GSPartitionController
 パーティション状態の取得や操作のためのコントローラです。More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

GS_DLL_PUBLIC void GS_API_CALL gsClosePartitionController (GSPartitionController **controller)
 指定のGSPartitionControllerインスタンスを解放します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPartitionCount (GSPartitionController *controller, int32_t *partitionCount)
 対象とするGridDBクラスタのパーティション数を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPartitionContainerCount (GSPartitionController *controller, int32_t partitionIndex, int64_t *containerCount)
 指定のパーティションに属するコンテナの総数を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPartitionContainerNames (GSPartitionController *controller, int32_t partitionIndex, int64_t start, const int64_t *limit, const GSChar *const **nameList, size_t *size)
 指定のパーティションに所属するコンテナの名前の一覧を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPartitionHosts (GSPartitionController *controller, int32_t partitionIndex, const GSChar *const **addressList, size_t *size)
 指定のパーティションに対応するノードのアドレス一覧を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPartitionOwnerHost (GSPartitionController *controller, int32_t partitionIndex, const GSChar **address)
 指定のパーティションに対応するオーナノードのアドレスを取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPartitionBackupHosts (GSPartitionController *controller, int32_t partitionIndex, const GSChar *const **addressList, size_t *size)
 指定のパーティションに対応するバックアップノードのアドレス一覧を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsAssignPartitionPreferableHost (GSPartitionController *controller, int32_t partitionIndex, const GSChar *host)
 優先的に選択されるホストのアドレスを設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPartitionIndexOfContainer (GSPartitionController *controller, const GSChar *containerName, int32_t *partitionIndex)
 指定のコンテナ名に対応するパーティションインデックスを取得します。More...
 
+

Detailed Description

+

Typedef Documentation

+ +
+
+ + + + +
typedef struct GSPartitionControllerTag GSPartitionController
+
+ +

パーティション状態の取得や操作のためのコントローラです。

+
パーティションとは、データを格納する論理的な領域です。GridDBクラスタ内のデータ配置に基づいた操作を行うために使用します。
+
Since
1.5
+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsAssignPartitionPreferableHost (GSPartitionControllercontroller,
int32_t partitionIndex,
const GSCharhost 
)
+
+ +

優先的に選択されるホストのアドレスを設定します。

+
バックアップノードへの接続など、可能な接続先が複数存在する場合に、設定されたアドレスが候補に含まれていれば常に選択されるようになります。それ以外の場合は設定が無視されます。
+
Parameters
+ + + + +
[in]controller処理対象のGSPartitionController
[in]partitionIndexパーティションインデックス。0以上パーティション数未満の値。
[in]host優先的に選択されるホストのアドレス。IPアドレス(IPv4のみ)も可。NULLの場合、設定が解除される
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • controller引数にNULLが指定された場合
  • +
  • 範囲外のパーティションインデックスが指定された場合
  • +
  • アドレスの名前解決に失敗した場合
  • +
  • 対応するGSGridStoreのクローズ後に呼び出された場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + +
GS_DLL_PUBLIC void GS_API_CALL gsClosePartitionController (GSPartitionController ** controller)
+
+ +

指定のGSPartitionControllerインスタンスを解放します。

+
Parameters
+ + +
[in,out]controllerクローズ対象のGSPartitionControllerインスタンスを指しているポインタ変数へのポインタ値。クローズすると、ポインタ変数にNULLが設定されます。以後、解放したGSPartitionControllerインスタンスにアクセスしてはなりません。ポインタ値またはポインタ変数の値がNULLの場合は、クローズ処理を行いません。
+
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPartitionBackupHosts (GSPartitionControllercontroller,
int32_t partitionIndex,
const GSChar *const ** addressList,
size_t * size 
)
+
+ +

指定のパーティションに対応するバックアップノードのアドレス一覧を取得します。

+
オーナノードとは、gsGetGridStoreおける一貫性レベルとして"EVENTUAL"を指定した場合に、優先的に選択されるノードのことです。
+
一覧の順序に関しては不定です。重複するアドレスが含まれることはありません。
+
Attention
アドレス一覧を格納する領域を確保するために、指定のGSPartitionControllerと関係するGSGridStoreインスタンス上で管理される一時的なメモリ領域を使用する場合があります。この領域は、指定のGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
+
Parameters
+ + + + + +
[in]controller処理対象のGSPartitionController
[in]partitionIndexパーティションインデックス。0以上パーティション数未満の値。
[out]addressListアドレスの文字列表現一覧の配列を格納するためのポインタ変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
[out]sizeコンテナ名一覧の配列の要素数を格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、0が格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • ポインタ型引数にNULLが指定された場合
  • +
  • 範囲外のパーティションインデックスが指定された場合
  • +
  • この処理のタイムアウト、接続障害が発生した場合
  • +
  • 対応するGSGridStoreのクローズ後に呼び出された場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPartitionContainerCount (GSPartitionControllercontroller,
int32_t partitionIndex,
int64_t * containerCount 
)
+
+ +

指定のパーティションに属するコンテナの総数を取得します。

+
コンテナ数を求める際の計算量は、コンテナ数にはおおむね依存しません。
+
Parameters
+ + + + +
[in]controller処理対象のGSPartitionController
[in]partitionIndexパーティションインデックス。0以上パーティション数未満の値
[out]containerCountコンテナ数を格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、0が格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • ポインタ型引数にNULLが指定された場合
  • +
  • 範囲外のパーティションインデックスが指定された場合
  • +
  • この処理のタイムアウト、接続障害が発生した場合
  • +
  • 対応するGSGridStoreのクローズ後に呼び出された場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPartitionContainerNames (GSPartitionControllercontroller,
int32_t partitionIndex,
int64_t start,
const int64_t * limit,
const GSChar *const ** nameList,
size_t * size 
)
+
+ +

指定のパーティションに所属するコンテナの名前の一覧を取得します。

+
指定のパーティションについてコンテナの新規作成・構成変更・削除が行われたとしても、該当コンテナを除くとその前後で一覧の取得結果の順序が変わることはありません。それ以外の一覧の順序に関しては不定です。重複する名前が含まれることはありません。
+
取得件数の上限が指定された場合、上限を超える場合、後方のものから切り捨てられます。指定条件に該当するものが存在しない場合、空のリストが求まります。
+
Attention
コンテナ名一覧を格納する領域を確保するために、指定のGSPartitionControllerと関係するGSGridStoreインスタンス上で管理される一時的なメモリ領域を使用する場合があります。この領域は、指定のGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
+
Parameters
+ + + + + + + +
[in]controller処理対象のGSPartitionController
[in]partitionIndexパーティションインデックス。0以上パーティション数未満の値。
[in]start取得範囲の開始位置。0以上の値
[in]limit取得件数の上限。NULLの場合、上限なしとみなされる
[out]nameListコンテナ名一覧の配列を格納するためのポインタ変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
[out]sizeコンテナ名一覧の配列の要素数を格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、0が格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • limit以外のポインタ型引数にNULLが指定された場合
  • +
  • 範囲外のパーティションインデックスが指定された場合
  • +
  • この処理のタイムアウト、接続障害が発生した場合
  • +
  • 対応するGSGridStoreのクローズ後に呼び出された場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPartitionCount (GSPartitionControllercontroller,
int32_t * partitionCount 
)
+
+ +

対象とするGridDBクラスタのパーティション数を取得します。

+
対象とするGridDBクラスタにおけるパーティション数設定の値を取得します。一度取得した結果はキャッシュされ、次にクラスタ障害・クラスタノード障害を検知するまで再びGridDBクラスタに問い合わせることはありません。
+
Parameters
+ + + +
[in]controller処理対象のGSPartitionController
[out]partitionCountパーティション数を格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、-1が格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • 引数にNULLが指定された場合
  • +
  • この処理のタイムアウト、接続障害が発生した場合
  • +
  • 対応するGSGridStoreのクローズ後に呼び出された場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPartitionHosts (GSPartitionControllercontroller,
int32_t partitionIndex,
const GSChar *const ** addressList,
size_t * size 
)
+
+ +

指定のパーティションに対応するノードのアドレス一覧を取得します。

+
一覧の順序に関しては不定です。重複するアドレスが含まれることはありません。
+
Attention
アドレス一覧を格納する領域を確保するために、指定のGSPartitionControllerと関係するGSGridStoreインスタンス上で管理される一時的なメモリ領域を使用する場合があります。この領域は、指定のGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
+
Parameters
+ + + + + +
[in]controller処理対象のGSPartitionController
[in]partitionIndexパーティションインデックス。0以上パーティション数未満の値。
[out]addressListアドレスの文字列表現一覧の配列を格納するためのポインタ変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
[out]sizeコンテナ名一覧の配列の要素数を格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、0が格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • ポインタ型引数にNULLが指定された場合
  • +
  • 範囲外のパーティションインデックスが指定された場合
  • +
  • この処理のタイムアウト、接続障害が発生した場合
  • +
  • 対応するGSGridStoreのクローズ後に呼び出された場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPartitionIndexOfContainer (GSPartitionControllercontroller,
const GSCharcontainerName,
int32_t * partitionIndex 
)
+
+ +

指定のコンテナ名に対応するパーティションインデックスを取得します。

+
一度GridDBクラスタが構築されると、コンテナの所属先のパーティションが変化することはなく、パーティションインデックスも一定となります。指定の名前に対応するコンテナが存在するかどうかは、結果に依存しません。
+
パーティションインデックスの算出に必要とする情報はキャッシュされ、次にクラスタ障害・クラスタノード障害を検知するまで再びGridDBクラスタに問い合わせることはありません。
+
Parameters
+ + + + +
[in]controller処理対象のGSPartitionController
[in]containerNameコンテナ名
[out]partitionIndexパーティションインデックスを格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、-1が格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • 引数にNULLが指定された場合
  • +
  • コンテナ名として許可されない文字列が指定された場合
  • +
  • この処理のタイムアウト、接続障害が発生した場合
  • +
  • 対応するGSGridStoreのクローズ後に呼び出された場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPartitionOwnerHost (GSPartitionControllercontroller,
int32_t partitionIndex,
const GSChar ** address 
)
+
+ +

指定のパーティションに対応するオーナノードのアドレスを取得します。

+
オーナノードとは、gsGetGridStoreおける一貫性レベルとして"IMMEDIATE"を指定した場合に、常に選択されるノードのことです。
+
Attention
アドレスを格納する領域を確保するために、指定のGSPartitionControllerと関係するGSGridStoreインスタンス上で管理される一時的なメモリ領域を使用する場合があります。この領域は、指定のGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
+
Parameters
+ + + + +
[in]controller処理対象のGSPartitionController
[in]partitionIndexパーティションインデックス。0以上パーティション数未満の値。
[out]addressアドレスの文字列表現を格納するためのポインタ変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • ポインタ型引数にNULLが指定された場合
  • +
  • 範囲外のパーティションインデックスが指定された場合
  • +
  • この処理のタイムアウト、接続障害が発生した場合
  • +
  • 対応するGSGridStoreのクローズ後に呼び出された場合
  • +
+
+
Since
1.5
+ +
+
+
+
+
+
GSQuery
+
+
+ + + + + + + + + +

+Typedefs

+typedef struct GSQueryTag GSQuery
 特定のGSContainerに対応付けられたクエリを保持し、結果取得方法の設定ならびに実行・結果取得を行う機能を持ちます。
 
typedef GSEnum GSFetchOption
 
typedef GSEnum GSQueryOrder
 
+ + + + + + + +

+Enumerations

enum  GSFetchOptionTag { GS_FETCH_LIMIT, +GS_FETCH_PARTIAL_EXECUTION = (GS_FETCH_LIMIT + 2) + }
 クエリ実行結果を取得する際のオプション項目です。More...
 
enum  GSQueryOrderTag { GS_ORDER_ASCENDING, +GS_ORDER_DESCENDING + }
 クエリにおける要求ロウ順序を表します。More...
 
+ + + + + + + + + + + + + +

+Functions

GS_DLL_PUBLIC void GS_API_CALL gsCloseQuery (GSQuery **query)
 指定のGSQueryインスタンスを解放します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsFetch (GSQuery *query, GSBool forUpdate, GSRowSet **rowSet)
 オプションを指定して指定のクエリを実行し、実行結果に対応するロウ集合を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetFetchOption (GSQuery *query, GSFetchOption fetchOption, const void *value, GSType valueType)
 結果取得に関するオプションを設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowSet (GSQuery *query, GSRowSet **rowSet)
 直近に実行した結果のGSRowSetを取得します。More...
 
+

Detailed Description

+

Typedef Documentation

+ +
+
+ + + + +
typedef GSEnum GSFetchOption
+
+
See Also
GSFetchOptionTag
+ +
+
+ +
+
+ + + + +
typedef GSEnum GSQueryOrder
+
+
See Also
GSQueryOrderTag
+ +
+
+

Enumeration Type Documentation

+ +
+
+ + + + +
enum GSFetchOptionTag
+
+ +

クエリ実行結果を取得する際のオプション項目です。

+ + + +
Enumerator
GS_FETCH_LIMIT  +

取得するロウの数の最大値を設定するために使用します。

+
実行結果のロウ数が最大値を超えた場合、GSRowSetで得られる順番で先頭から最大値の分だけが取得できます。それ以降のロウは取得できません。
+
サポートされる設定値の型は、INTEGERまたはLONGです。負の値は指定できません。設定が省略された場合、上限は設定されません。
+
GS_FETCH_PARTIAL_EXECUTION  +

部分実行モードを設定するために使用します。

+
部分実行モードでは、クエリの中間処理や結果送受信に用いるバッファのサイズなどがなるべく一定の範囲に収まるよう、必要に応じて実行対象のデータ範囲を分割し、この部分範囲ごとに実行とフェッチをリクエストすることがあります。そのため、GSRowSetを取得した時点で一部の範囲の結果が求まっていないことや、結果ロウを順に参照していく段階で、残りの範囲を部分的に実行していくことがあります。
+
部分実行モードは、現バージョンでは次の条件すべてを満たすクエリに使用できます。また、GS_FETCH_LIMITオプションと併用することができます。条件を満たさない場合でも、各種フェッチオプションの設定時点ではエラーを検知しない場合があります。
    +
  • TQL文からなるクエリであること
  • +
  • TQL文において、選択式が「*」のみからなり、ORDER BY節を含まないこと
  • +
  • 対応するGSContainerが個々の部分的なクエリ実行時点において常に自動コミットモードに設定されていること
  • +
+
+
部分実行モードでは、対応するGSContainerのトランザクション分離レベルや状態に基づき、個々の部分的なクエリ実行時点において参照可能なロウが使用されます。ただし、クエリ全体の実行開始時点で存在しないロウは、実行対象から外れる場合があります。
+
部分実行モードを有効にした場合にGSRowSetに対して使用できない操作や特有の挙動については、個別の定義を参照してください。
+
サポートされる設定値の型は、BOOLのみです。部分実行モードを有効にするには、GS_TRUEと一致する値を指定します。現バージョンでは、未設定の場合には部分実行モードを有効にしません。
+
Since
4.0
+
+ +
+
+ +
+
+ + + + +
enum GSQueryOrderTag
+
+ +

クエリにおける要求ロウ順序を表します。

+
各種クエリ機能別に定義される判定対象を基準として、順序指定を行うために使用します。具体的な判定対象は、個別の機能によって異なります。
+ + + +
Enumerator
GS_ORDER_ASCENDING  +

要求ロウ順序が昇順であることを表します。

+
GS_ORDER_DESCENDING  +

要求ロウ順序が降順であることを表します。

+
+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + +
GS_DLL_PUBLIC void GS_API_CALL gsCloseQuery (GSQuery ** query)
+
+ +

指定のGSQueryインスタンスを解放します。

+
Parameters
+ + +
[in,out]queryクローズ対象のGSQueryインスタンスを指しているポインタ変数へのポインタ値。クローズすると、ポインタ変数にNULLが設定されます。以後、解放したGSQueryインスタンスにアクセスしてはなりません。ポインタ値またはポインタ変数の値がNULLの場合は、クローズ処理を行いません。
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsFetch (GSQueryquery,
GSBool forUpdate,
GSRowSet ** rowSet 
)
+
+ +

オプションを指定して指定のクエリを実行し、実行結果に対応するロウ集合を取得します。

+
forUpdateGS_TRUEが指定された場合、取得対象のロウすべてをロックします。ロックすると、対応するトランザクションが有効である間、他のトランザクションからの対象ロウに対する変更操作が阻止されます。対応するコンテナの自動コミットモードが無効の場合のみ、指定できます。
+
新たなロウ集合を取得すると、指定のクエリについて直近に実行した結果のGSRowSetを介するロウ操作はできなくなります。
+
一度に大量のロウを取得しようとした場合、GridDBノードが管理する通信バッファのサイズの上限に到達し、失敗することがあります。上限サイズについては、GridDB機能リファレンスを参照してください。
+
Parameters
+ + + + +
[in]query処理対象のGSQuery
[in]forUpdate更新用ロックを要求するかどうか
[out]rowSetGSRowSetインスタンスを格納するためのポインタ変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、このポインタ値がNULL以外の値であれば、対応するポインタ変数にNULLが格納されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • 対応するコレクションの自動コミットモード有効であるにもかかわらず、forUpdateGS_TRUEが指定された場合
  • +
  • ロックできないクエリであるにもかかわらず、forUpdateGS_TRUEが指定された場合。具体的なロックの可否は、指定のクエリを作成する機能の各種定義を参照してください。
  • +
  • 正しくないパラメータ・構文・命令を含むクエリを実行しようとした場合。具体的な制約は、指定のクエリを作成する機能の各種定義を参照してください。
  • +
  • この処理または関連するトランザクションのタイムアウト、対応するコンテナの削除もしくはスキーマ変更、接続障害が発生した場合、または対応するGSContainerのクローズ後に呼び出された場合
  • +
  • ポインタ型引数にNULLが指定された場合
  • +
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowSet (GSQueryquery,
GSRowSet ** rowSet 
)
+
+ +

直近に実行した結果のGSRowSetを取得します。

+
一度取得すると、以降新たに指定のクエリを実行するまでGSRowSetが取得できなくなります。
+
GS_FETCH_PARTIAL_EXECUTIONが有効に設定されていた場合、クエリ実行処理の続きを行う場合があります。
+
Parameters
+ + + +
[in]query処理対象のGSQuery
[out]rowSet直近に実行した結果のGSRowSetインスタンスを格納するためのポインタ変数へのポインタ値。取得済みの場合、もしくは、一度もクエリを実行したことのない場合はNULLが設定されます。実行結果としてGS_RESULT_OK以外が返される場合、このポインタ値がNULL以外の値であれば、対応するポインタ変数にNULLが格納されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • この処理または関連するトランザクションのタイムアウト、対応するコンテナの削除もしくはスキーマ変更、接続障害が発生した場合、またはGSContainerのクローズ後に呼び出された場合
  • +
  • ポインタ型引数にNULLが指定された場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetFetchOption (GSQueryquery,
GSFetchOption fetchOption,
const void * value,
GSType valueType 
)
+
+ +

結果取得に関するオプションを設定します。

+
設定可能なオプション項目と値の定義については、GSFetchOptionTagを参照してください。
+
Attention
valueTypevalueの型との対応が正しくない場合、この処理の動作は未定義です。アクセス違反により実行プロセスが異常終了する可能性があります。
+
Parameters
+ + + + + +
[in]query処理対象のGSQuery
[in]fetchOptionオプション項目
[in]valueオプションの値。指定可能な型は、valueTypeによって次のように異なります。 + + + + + + + + +
valueType valueの型
INTEGER int32_t*
LONG int64_t*
BOOL GSBool*
+
[in]valueTypeオプションの値の型
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • オプション項目固有の制約に違反した場合
  • +
  • ポインタ型引数にNULLが指定された場合
  • +
  • 対応するGSContainerのクローズ後に呼び出された場合
  • +
+
+ +
+
+
+
+
+
GSRow
+
+
+ + + + + + + + +

+Typedefs

typedef struct GSRowTag GSRow
 任意のスキーマについて汎用的にフィールド操作できるロウです。More...
 
typedef GSRow GSRowKey
 ロウキーに関するカラムのみから構成されるGSRowの一種です。More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

GS_DLL_PUBLIC void GS_API_CALL gsCloseRow (GSRow **row)
 指定のGSRowインスタンスを解放します。More...
 
GS_STATIC_HEADER_FUNC_SPECIFIER
+GSResult 
gsGetRowSchema (GSRow *row, GSContainerInfo *schemaInfo)
 指定のロウに対応するスキーマを取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldGeneral (GSRow *row, int32_t column, const GSValue *fieldValue, GSType type)
 指定のフィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldGeneral (GSRow *row, int32_t column, GSValue *fieldValue, GSType *type)
 指定のフィールドの値とその型を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldNull (GSRow *row, int32_t column)
 指定のフィールドにNULLを設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldNull (GSRow *row, int32_t column, GSBool *nullValue)
 指定のフィールドにNULLが設定されているかどうかを返します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByString (GSRow *row, int32_t column, const GSChar *fieldValue)
 指定のSTRING型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsString (GSRow *row, int32_t column, const GSChar **fieldValue)
 指定のSTRING型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByBool (GSRow *row, int32_t column, GSBool fieldValue)
 指定のBOOL型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsBool (GSRow *row, int32_t column, GSBool *fieldValue)
 指定のBOOL型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByByte (GSRow *row, int32_t column, int8_t fieldValue)
 指定のBYTE型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsByte (GSRow *row, int32_t column, int8_t *fieldValue)
 指定のBYTE型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByShort (GSRow *row, int32_t column, int16_t fieldValue)
 指定のSHORT型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsShort (GSRow *row, int32_t column, int16_t *fieldValue)
 指定のSHORT型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByInteger (GSRow *row, int32_t column, int32_t fieldValue)
 指定のINTEGER型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsInteger (GSRow *row, int32_t column, int32_t *fieldValue)
 指定のINTEGER型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByLong (GSRow *row, int32_t column, int64_t fieldValue)
 指定のLONG型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsLong (GSRow *row, int32_t column, int64_t *fieldValue)
 指定のLONG型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByFloat (GSRow *row, int32_t column, float fieldValue)
 指定のFLOAT型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsFloat (GSRow *row, int32_t column, float *fieldValue)
 指定のFLOAT型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByDouble (GSRow *row, int32_t column, double fieldValue)
 指定のDOUBLE型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsDouble (GSRow *row, int32_t column, double *fieldValue)
 指定のDOUBLE型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByTimestamp (GSRow *row, int32_t column, GSTimestamp fieldValue)
 指定の通常精度のTIMESTAMP型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsTimestamp (GSRow *row, int32_t column, GSTimestamp *fieldValue)
 指定の通常精度のTIMESTAMP型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByPreciseTimestamp (GSRow *row, int32_t column, const GSPreciseTimestamp *fieldValue)
 指定の高精度のTIMESTAMP型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsPreciseTimestamp (GSRow *row, int32_t column, GSPreciseTimestamp *fieldValue)
 指定の高精度のTIMESTAMP型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByGeometry (GSRow *row, int32_t column, const GSChar *fieldValue)
 指定のGEOMETRY型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsGeometry (GSRow *row, int32_t column, const GSChar **fieldValue)
 指定のGEOMETRY型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByBlob (GSRow *row, int32_t column, const GSBlob *fieldValue)
 指定のBLOB型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsBlob (GSRow *row, int32_t column, GSBlob *fieldValue)
 指定のBLOB型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByStringArray (GSRow *row, int32_t column, const GSChar *const *fieldValue, size_t size)
 指定のSTRING配列型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsStringArray (GSRow *row, int32_t column, const GSChar *const **fieldValue, size_t *size)
 指定のSTRING配列型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByBoolArray (GSRow *row, int32_t column, const GSBool *fieldValue, size_t size)
 指定のBOOL配列型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsBoolArray (GSRow *row, int32_t column, const GSBool **fieldValue, size_t *size)
 指定のBOOL配列型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByByteArray (GSRow *row, int32_t column, const int8_t *fieldValue, size_t size)
 指定のBYTE配列型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsByteArray (GSRow *row, int32_t column, const int8_t **fieldValue, size_t *size)
 指定のBYTE配列型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByShortArray (GSRow *row, int32_t column, const int16_t *fieldValue, size_t size)
 指定のSHORT配列型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsShortArray (GSRow *row, int32_t column, const int16_t **fieldValue, size_t *size)
 指定のSHORT配列型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByIntegerArray (GSRow *row, int32_t column, const int32_t *fieldValue, size_t size)
 指定のINTEGER配列型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsIntegerArray (GSRow *row, int32_t column, const int32_t **fieldValue, size_t *size)
 指定のINTEGER配列型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByLongArray (GSRow *row, int32_t column, const int64_t *fieldValue, size_t size)
 指定のLONG配列型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsLongArray (GSRow *row, int32_t column, const int64_t **fieldValue, size_t *size)
 指定のLONG配列型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByFloatArray (GSRow *row, int32_t column, const float *fieldValue, size_t size)
 指定のFLOAT配列型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsFloatArray (GSRow *row, int32_t column, const float **fieldValue, size_t *size)
 指定のFLOAT配列型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByDoubleArray (GSRow *row, int32_t column, const double *fieldValue, size_t size)
 指定のDOUBLE配列型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsDoubleArray (GSRow *row, int32_t column, const double **fieldValue, size_t *size)
 指定のDOUBLE配列型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByTimestampArray (GSRow *row, int32_t column, const GSTimestamp *fieldValue, size_t size)
 指定のTIMESTAMP配列型フィールドに値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsTimestampArray (GSRow *row, int32_t column, const GSTimestamp **fieldValue, size_t *size)
 指定のTIMESTAMP配列型フィールドの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsCreateRowByRow (GSRow *row, GSRow **destRow)
 同一のフィールド値からなる新たなGSRowインスタンスを作成します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsCreateRowKeyByRow (GSRow *row, GSRowKey **key)
 ロウキーを構成するカラムのみを持ち、それらのカラムについて同一のフィールド値からなる新たなGSRowKeyインスタンスを作成します。More...
 
+

Detailed Description

+

Typedef Documentation

+ +
+
+ + + + +
typedef struct GSRowTag GSRow
+
+ +

任意のスキーマについて汎用的にフィールド操作できるロウです。

+
NULLが設定されたフィールドに対して型指定のフィールド値取得機能を用いた場合、NULLの代わりにGSContainerにて定義されている空の値が求まります。たとえば文字列型カラムに対応するフィールドにNULLが設定されており、かつ、gsGetRowFieldAsStringを用いた場合、NULLアドレスではなく、空の値である長さ0の文字列を指すアドレスが求まります。
+
Since
1.5
+ +
+
+ +
+
+ + + + +
typedef GSRow GSRowKey
+
+ +

ロウキーに関するカラムのみから構成されるGSRowの一種です。

+
gsGetRowSchemaより求まるGSContainerInfoに含まれるカラム情報は、ロウキーに関するカラムの情報のみとなります。
+
Since
4.3
+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + +
GS_DLL_PUBLIC void GS_API_CALL gsCloseRow (GSRow ** row)
+
+ +

指定のGSRowインスタンスを解放します。

+
Parameters
+ + +
[in,out]rowクローズ対象のGSRowインスタンスを指しているポインタ変数へのポインタ値。クローズすると、ポインタ変数にNULLが設定されます。以後、解放したGSRowインスタンスにアクセスしてはなりません。ポインタ値またはポインタ変数の値がNULLの場合は、クローズ処理を行いません。
+
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsCreateRowByRow (GSRowrow,
GSRow ** destRow 
)
+
+ +

同一のフィールド値からなる新たなGSRowインスタンスを作成します。

+
Parameters
+ + + +
[in]row作成元とするGSRow
[out]destRow新たに作成されるGSRowインスタンスを格納するための、ポインタ変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、このポインタ値がNULL以外の値であれば、対応するポインタ変数にNULLが格納されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • 引数にNULLが指定された場合
  • +
+
+
Since
4.3
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsCreateRowKeyByRow (GSRowrow,
GSRowKey ** key 
)
+
+ +

ロウキーを構成するカラムのみを持ち、それらのカラムについて同一のフィールド値からなる新たなGSRowKeyインスタンスを作成します。

+
Parameters
+ + + +
[in]row作成元とするGSRow
[out]key新たに作成されるGSRowKeyインスタンスを格納するための、ポインタ変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、このポインタ値がNULL以外の値であれば、対応するポインタ変数にNULLが格納されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • 作成元とするGSRowがロウキーを持たない場合
  • +
  • 引数にNULLが指定された場合
  • +
+
+
Since
4.3
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsBlob (GSRowrow,
int32_t column,
GSBlobfieldValue 
)
+
+ +

指定のBLOB型フィールドの値を取得します。

+
Attention
フィールド値に含まれる可変長データを格納するために、指定のGSRowと関係するGSGridStoreインスタンス上で管理される一時的なメモリ領域を使用する場合があります。この領域は、指定のGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
+
Parameters
+ + + + +
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[out]fieldValue対象フィールドの値を格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • ポインタ型引数にNULLが指定された場合
  • +
  • 範囲外のカラム番号が指定された場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsBool (GSRowrow,
int32_t column,
GSBoolfieldValue 
)
+
+ +

指定のBOOL型フィールドの値を取得します。

+
Parameters
+ + + + +
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[out]fieldValue対象フィールドの値を格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • ポインタ型引数にNULLが指定された場合
  • +
  • 範囲外のカラム番号が指定された場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsBoolArray (GSRowrow,
int32_t column,
const GSBool ** fieldValue,
size_t * size 
)
+
+ +

指定のBOOL配列型フィールドの値を取得します。

+
Attention
フィールド値に含まれる可変長データを格納するために、指定のGSRowと関係するGSGridStoreインスタンス上で管理される一時的なメモリ領域を使用する場合があります。この領域は、指定のGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
+
Parameters
+ + + + + +
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[out]fieldValue対象フィールドの値を格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
[out]size対象フィールドの値の配列要素数を格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、0が格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • ポインタ型引数にNULLが指定された場合
  • +
  • 範囲外のカラム番号が指定された場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsByte (GSRowrow,
int32_t column,
int8_t * fieldValue 
)
+
+ +

指定のBYTE型フィールドの値を取得します。

+
Parameters
+ + + + +
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[out]fieldValue対象フィールドの値を格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • ポインタ型引数にNULLが指定された場合
  • +
  • 範囲外のカラム番号が指定された場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsByteArray (GSRowrow,
int32_t column,
const int8_t ** fieldValue,
size_t * size 
)
+
+ +

指定のBYTE配列型フィールドの値を取得します。

+
Attention
フィールド値に含まれる可変長データを格納するために、指定のGSRowと関係するGSGridStoreインスタンス上で管理される一時的なメモリ領域を使用する場合があります。この領域は、指定のGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
+
Parameters
+ + + + + +
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[out]fieldValue対象フィールドの値を格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
[out]size対象フィールドの値の配列要素数を格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、0が格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • ポインタ型引数にNULLが指定された場合
  • +
  • 範囲外のカラム番号が指定された場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsDouble (GSRowrow,
int32_t column,
double * fieldValue 
)
+
+ +

指定のDOUBLE型フィールドの値を取得します。

+
Parameters
+ + + + +
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[out]fieldValue対象フィールドの値を格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • ポインタ型引数にNULLが指定された場合
  • +
  • 範囲外のカラム番号が指定された場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsDoubleArray (GSRowrow,
int32_t column,
const double ** fieldValue,
size_t * size 
)
+
+ +

指定のDOUBLE配列型フィールドの値を取得します。

+
Attention
フィールド値に含まれる可変長データを格納するために、指定のGSRowと関係するGSGridStoreインスタンス上で管理される一時的なメモリ領域を使用する場合があります。この領域は、指定のGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
+
Parameters
+ + + + + +
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[out]fieldValue対象フィールドの値を格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
[out]size対象フィールドの値の配列要素数を格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、0が格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • ポインタ型引数にNULLが指定された場合
  • +
  • 範囲外のカラム番号が指定された場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsFloat (GSRowrow,
int32_t column,
float * fieldValue 
)
+
+ +

指定のFLOAT型フィールドの値を取得します。

+
Parameters
+ + + + +
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[out]fieldValue対象フィールドの値を格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • ポインタ型引数にNULLが指定された場合
  • +
  • 範囲外のカラム番号が指定された場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsFloatArray (GSRowrow,
int32_t column,
const float ** fieldValue,
size_t * size 
)
+
+ +

指定のFLOAT配列型フィールドの値を取得します。

+
Attention
フィールド値に含まれる可変長データを格納するために、指定のGSRowと関係するGSGridStoreインスタンス上で管理される一時的なメモリ領域を使用する場合があります。この領域は、指定のGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
+
Parameters
+ + + + + +
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[out]fieldValue対象フィールドの値を格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
[out]size対象フィールドの値の配列要素数を格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、0が格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • ポインタ型引数にNULLが指定された場合
  • +
  • 範囲外のカラム番号が指定された場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsGeometry (GSRowrow,
int32_t column,
const GSChar ** fieldValue 
)
+
+ +

指定のGEOMETRY型フィールドの値を取得します。

+
Attention
フィールド値に含まれる可変長データを格納するために、指定のGSRowと関係するGSGridStoreインスタンス上で管理される一時的なメモリ領域を使用する場合があります。この領域は、指定のGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
+
Parameters
+ + + + +
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[out]fieldValue対象フィールドの値を格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • ポインタ型引数にNULLが指定された場合
  • +
  • 範囲外のカラム番号が指定された場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsInteger (GSRowrow,
int32_t column,
int32_t * fieldValue 
)
+
+ +

指定のINTEGER型フィールドの値を取得します。

+
Parameters
+ + + + +
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[out]fieldValue対象フィールドの値を格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • ポインタ型引数にNULLが指定された場合
  • +
  • 範囲外のカラム番号が指定された場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsIntegerArray (GSRowrow,
int32_t column,
const int32_t ** fieldValue,
size_t * size 
)
+
+ +

指定のINTEGER配列型フィールドの値を取得します。

+
Attention
フィールド値に含まれる可変長データを格納するために、指定のGSRowと関係するGSGridStoreインスタンス上で管理される一時的なメモリ領域を使用する場合があります。この領域は、指定のGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
+
Parameters
+ + + + + +
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[out]fieldValue対象フィールドの値を格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
[out]size対象フィールドの値の配列要素数を格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、0が格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • ポインタ型引数にNULLが指定された場合
  • +
  • 範囲外のカラム番号が指定された場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsLong (GSRowrow,
int32_t column,
int64_t * fieldValue 
)
+
+ +

指定のLONG型フィールドの値を取得します。

+
Parameters
+ + + + +
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[out]fieldValue対象フィールドの値を格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • ポインタ型引数にNULLが指定された場合
  • +
  • 範囲外のカラム番号が指定された場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsLongArray (GSRowrow,
int32_t column,
const int64_t ** fieldValue,
size_t * size 
)
+
+ +

指定のLONG配列型フィールドの値を取得します。

+
Attention
フィールド値に含まれる可変長データを格納するために、指定のGSRowと関係するGSGridStoreインスタンス上で管理される一時的なメモリ領域を使用する場合があります。この領域は、指定のGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
+
Parameters
+ + + + + +
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[out]fieldValue対象フィールドの値を格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
[out]size対象フィールドの値の配列要素数を格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、0が格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • ポインタ型引数にNULLが指定された場合
  • +
  • 範囲外のカラム番号が指定された場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsPreciseTimestamp (GSRowrow,
int32_t column,
GSPreciseTimestampfieldValue 
)
+
+ +

指定の高精度のTIMESTAMP型フィールドの値を取得します。

+
Parameters
+ + + + +
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[out]fieldValue対象フィールドの値を格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • ポインタ型引数にNULLが指定された場合
  • +
  • 範囲外のカラム番号が指定された場合
  • +
  • 指定のカラム番号の型・精度種別と一致しない場合
  • +
+
+
Since
5.3
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsShort (GSRowrow,
int32_t column,
int16_t * fieldValue 
)
+
+ +

指定のSHORT型フィールドの値を取得します。

+
Parameters
+ + + + +
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[out]fieldValue対象フィールドの値を格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • ポインタ型引数にNULLが指定された場合
  • +
  • 範囲外のカラム番号が指定された場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsShortArray (GSRowrow,
int32_t column,
const int16_t ** fieldValue,
size_t * size 
)
+
+ +

指定のSHORT配列型フィールドの値を取得します。

+
Attention
フィールド値に含まれる可変長データを格納するために、指定のGSRowと関係するGSGridStoreインスタンス上で管理される一時的なメモリ領域を使用する場合があります。この領域は、指定のGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
+
Parameters
+ + + + + +
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[out]fieldValue対象フィールドの値を格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
[out]size対象フィールドの値の配列要素数を格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、0が格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • ポインタ型引数にNULLが指定された場合
  • +
  • 範囲外のカラム番号が指定された場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsString (GSRowrow,
int32_t column,
const GSChar ** fieldValue 
)
+
+ +

指定のSTRING型フィールドの値を取得します。

+
Attention
フィールド値に含まれる可変長データを格納するために、指定のGSRowと関係するGSGridStoreインスタンス上で管理される一時的なメモリ領域を使用する場合があります。この領域は、指定のGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
+
Parameters
+ + + + +
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[out]fieldValue対象フィールドの値を格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • ポインタ型引数にNULLが指定された場合
  • +
  • 範囲外のカラム番号が指定された場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsStringArray (GSRowrow,
int32_t column,
const GSChar *const ** fieldValue,
size_t * size 
)
+
+ +

指定のSTRING配列型フィールドの値を取得します。

+
Attention
フィールド値に含まれる可変長データを格納するために、指定のGSRowと関係するGSGridStoreインスタンス上で管理される一時的なメモリ領域を使用する場合があります。この領域は、指定のGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
+
Parameters
+ + + + + +
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[out]fieldValue対象フィールドの値を格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
[out]size対象フィールドの値の配列要素数を格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、0が格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • ポインタ型引数にNULLが指定された場合
  • +
  • 範囲外のカラム番号が指定された場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsTimestamp (GSRowrow,
int32_t column,
GSTimestampfieldValue 
)
+
+ +

指定の通常精度のTIMESTAMP型フィールドの値を取得します。

+
Parameters
+ + + + +
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[out]fieldValue対象フィールドの値を格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • ポインタ型引数にNULLが指定された場合
  • +
  • 範囲外のカラム番号が指定された場合
  • +
  • 指定のカラム番号の型・精度種別と一致しない場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldAsTimestampArray (GSRowrow,
int32_t column,
const GSTimestamp ** fieldValue,
size_t * size 
)
+
+ +

指定のTIMESTAMP配列型フィールドの値を取得します。

+
Attention
フィールド値に含まれる可変長データを格納するために、指定のGSRowと関係するGSGridStoreインスタンス上で管理される一時的なメモリ領域を使用する場合があります。この領域は、指定のGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
+
Parameters
+ + + + + +
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[out]fieldValue対象フィールドの値を格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
[out]size対象フィールドの値の配列要素数を格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、0が格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • ポインタ型引数にNULLが指定された場合
  • +
  • 範囲外のカラム番号が指定された場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldGeneral (GSRowrow,
int32_t column,
GSValuefieldValue,
GSTypetype 
)
+
+ +

指定のフィールドの値とその型を取得します。

+
Attention
フィールド値に含まれる可変長データを格納するために、指定のGSRowと関係するGSGridStoreインスタンス上で管理される一時的なメモリ領域を使用する場合があります。この領域は、指定のGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
+
Parameters
+ + + + + +
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[out]fieldValue対象フィールドの値を格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
[out]type対象フィールドの値の型を格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • ポインタ型引数にNULLが指定された場合
  • +
  • 範囲外のカラム番号が指定された場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowFieldNull (GSRowrow,
int32_t column,
GSBoolnullValue 
)
+
+ +

指定のフィールドにNULLが設定されているかどうかを返します。

+
NOT NULL制約の設定されたカラムが指定された場合、常にGS_FALSEを返します。
+
Parameters
+ + + + +
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[out]nullValueNULLが設定されているかどうか受け取る変数へのポインタ値
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • ポインタ型引数にNULLが指定された場合
  • +
  • 範囲外のカラム番号が指定された場合
  • +
+
+
Since
3.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GS_STATIC_HEADER_FUNC_SPECIFIER GSResult gsGetRowSchema (GSRowrow,
GSContainerInfoschemaInfo 
)
+
+ +

指定のロウに対応するスキーマを取得します。

+
ロウキーの有無を含むカラムレイアウトにする情報のみが設定されたGSContainerInfoが求まります。コンテナ名、コンテナ種別、索引設定、時系列構成オプションなどその他のコンテナ情報は含まれません。
+
Attention
カラム情報の列などの可変長データを格納するために、指定のGSRowと関係するGSGridStoreインスタンス上で管理される一時的なメモリ領域を使用します。この領域は、指定のGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
+
Parameters
+ + + +
[in]row処理対象のGSRow
[out]schemaInfoスキーマ情報を格納するためのGSContainerInfoへのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、GS_CONTAINER_INFO_INITIALIZERと同一の内容の初期値が格納されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • 引数にNULLが指定された場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByBlob (GSRowrow,
int32_t column,
const GSBlobfieldValue 
)
+
+ +

指定のBLOB型フィールドに値を設定します。

+
Parameters
+ + + + +
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[in]fieldValue対象フィールドの値
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • ポインタ型引数にNULLが指定された場合
  • +
  • 範囲外のカラム番号が指定された場合
  • +
  • 指定のカラム番号の型と一致しない場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByBool (GSRowrow,
int32_t column,
GSBool fieldValue 
)
+
+ +

指定のBOOL型フィールドに値を設定します。

+
Parameters
+ + + + +
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[in]fieldValue対象フィールドの値
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • ポインタ型引数にNULLが指定された場合
  • +
  • 範囲外のカラム番号が指定された場合
  • +
  • 指定のカラム番号の型と一致しない場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByBoolArray (GSRowrow,
int32_t column,
const GSBoolfieldValue,
size_t size 
)
+
+ +

指定のBOOL配列型フィールドに値を設定します。

+
Parameters
+ + + + + +
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[in]fieldValue対象フィールドの値
[in]size対象フィールドの値の配列要素数
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • ポインタ型引数にNULLが指定された場合
  • +
  • 範囲外のカラム番号が指定された場合
  • +
  • 指定のカラム番号の型と一致しない場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByByte (GSRowrow,
int32_t column,
int8_t fieldValue 
)
+
+ +

指定のBYTE型フィールドに値を設定します。

+
Parameters
+ + + + +
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[in]fieldValue対象フィールドの値
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • ポインタ型引数にNULLが指定された場合
  • +
  • 範囲外のカラム番号が指定された場合
  • +
  • 指定のカラム番号の型と一致しない場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByByteArray (GSRowrow,
int32_t column,
const int8_t * fieldValue,
size_t size 
)
+
+ +

指定のBYTE配列型フィールドに値を設定します。

+
Parameters
+ + + + + +
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[in]fieldValue対象フィールドの値
[in]size対象フィールドの値の配列要素数
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • ポインタ型引数にNULLが指定された場合
  • +
  • 範囲外のカラム番号が指定された場合
  • +
  • 指定のカラム番号の型と一致しない場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByDouble (GSRowrow,
int32_t column,
double fieldValue 
)
+
+ +

指定のDOUBLE型フィールドに値を設定します。

+
Parameters
+ + + + +
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[in]fieldValue対象フィールドの値
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • ポインタ型引数にNULLが指定された場合
  • +
  • 範囲外のカラム番号が指定された場合
  • +
  • 指定のカラム番号の型と一致しない場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByDoubleArray (GSRowrow,
int32_t column,
const double * fieldValue,
size_t size 
)
+
+ +

指定のDOUBLE配列型フィールドに値を設定します。

+
Parameters
+ + + + + +
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[in]fieldValue対象フィールドの値
[in]size対象フィールドの値の配列要素数
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • ポインタ型引数にNULLが指定された場合
  • +
  • 範囲外のカラム番号が指定された場合
  • +
  • 指定のカラム番号の型と一致しない場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByFloat (GSRowrow,
int32_t column,
float fieldValue 
)
+
+ +

指定のFLOAT型フィールドに値を設定します。

+
Parameters
+ + + + +
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[in]fieldValue対象フィールドの値
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • ポインタ型引数にNULLが指定された場合
  • +
  • 範囲外のカラム番号が指定された場合
  • +
  • 指定のカラム番号の型と一致しない場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByFloatArray (GSRowrow,
int32_t column,
const float * fieldValue,
size_t size 
)
+
+ +

指定のFLOAT配列型フィールドに値を設定します。

+
Parameters
+ + + + + +
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[in]fieldValue対象フィールドの値
[in]size対象フィールドの値の配列要素数
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • ポインタ型引数にNULLが指定された場合
  • +
  • 範囲外のカラム番号が指定された場合
  • +
  • 指定のカラム番号の型と一致しない場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByGeometry (GSRowrow,
int32_t column,
const GSCharfieldValue 
)
+
+ +

指定のGEOMETRY型フィールドに値を設定します。

+
Parameters
+ + + + +
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[in]fieldValue対象フィールドの値
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • ポインタ型引数にNULLが指定された場合
  • +
  • 範囲外のカラム番号が指定された場合
  • +
  • 指定のカラム番号の型と一致しない場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByInteger (GSRowrow,
int32_t column,
int32_t fieldValue 
)
+
+ +

指定のINTEGER型フィールドに値を設定します。

+
Parameters
+ + + + +
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[in]fieldValue対象フィールドの値
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • ポインタ型引数にNULLが指定された場合
  • +
  • 範囲外のカラム番号が指定された場合
  • +
  • 指定のカラム番号の型と一致しない場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByIntegerArray (GSRowrow,
int32_t column,
const int32_t * fieldValue,
size_t size 
)
+
+ +

指定のINTEGER配列型フィールドに値を設定します。

+
Parameters
+ + + + + +
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[in]fieldValue対象フィールドの値
[in]size対象フィールドの値の配列要素数
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • ポインタ型引数にNULLが指定された場合
  • +
  • 範囲外のカラム番号が指定された場合
  • +
  • 指定のカラム番号の型と一致しない場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByLong (GSRowrow,
int32_t column,
int64_t fieldValue 
)
+
+ +

指定のLONG型フィールドに値を設定します。

+
Parameters
+ + + + +
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[in]fieldValue対象フィールドの値
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • ポインタ型引数にNULLが指定された場合
  • +
  • 範囲外のカラム番号が指定された場合
  • +
  • 指定のカラム番号の型と一致しない場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByLongArray (GSRowrow,
int32_t column,
const int64_t * fieldValue,
size_t size 
)
+
+ +

指定のLONG配列型フィールドに値を設定します。

+
Parameters
+ + + + + +
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[in]fieldValue対象フィールドの値
[in]size対象フィールドの値の配列要素数
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • ポインタ型引数にNULLが指定された場合
  • +
  • 範囲外のカラム番号が指定された場合
  • +
  • 指定のカラム番号の型と一致しない場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByPreciseTimestamp (GSRowrow,
int32_t column,
const GSPreciseTimestampfieldValue 
)
+
+ +

指定の高精度のTIMESTAMP型フィールドに値を設定します。

+
Parameters
+ + + + +
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[in]fieldValue対象フィールドの値
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • ポインタ型引数にNULLが指定された場合
  • +
  • 範囲外のカラム番号が指定された場合
  • +
  • 指定のカラム番号の型・精度種別と一致しない場合
  • +
+
+
Since
5.3
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByShort (GSRowrow,
int32_t column,
int16_t fieldValue 
)
+
+ +

指定のSHORT型フィールドに値を設定します。

+
Parameters
+ + + + +
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[in]fieldValue対象フィールドの値
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • ポインタ型引数にNULLが指定された場合
  • +
  • 範囲外のカラム番号が指定された場合
  • +
  • 指定のカラム番号の型と一致しない場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByShortArray (GSRowrow,
int32_t column,
const int16_t * fieldValue,
size_t size 
)
+
+ +

指定のSHORT配列型フィールドに値を設定します。

+
Parameters
+ + + + + +
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[in]fieldValue対象フィールドの値
[in]size対象フィールドの値の配列要素数
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • ポインタ型引数にNULLが指定された場合
  • +
  • 範囲外のカラム番号が指定された場合
  • +
  • 指定のカラム番号の型と一致しない場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByString (GSRowrow,
int32_t column,
const GSCharfieldValue 
)
+
+ +

指定のSTRING型フィールドに値を設定します。

+
Parameters
+ + + + +
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[in]fieldValue対象フィールドの値
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • ポインタ型引数にNULLが指定された場合
  • +
  • 範囲外のカラム番号が指定された場合
  • +
  • 指定のカラム番号の型と一致しない場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByStringArray (GSRowrow,
int32_t column,
const GSChar *const * fieldValue,
size_t size 
)
+
+ +

指定のSTRING配列型フィールドに値を設定します。

+
Parameters
+ + + + + +
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[in]fieldValue対象フィールドの値
[in]size対象フィールドの値の配列要素数
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • ポインタ型引数にNULLが指定された場合
  • +
  • 範囲外のカラム番号が指定された場合
  • +
  • 指定のカラム番号の型と一致しない場合
  • +
  • 配列要素にNULLが含まれる場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByTimestamp (GSRowrow,
int32_t column,
GSTimestamp fieldValue 
)
+
+ +

指定の通常精度のTIMESTAMP型フィールドに値を設定します。

+
Parameters
+ + + + +
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[in]fieldValue対象フィールドの値
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • ポインタ型引数にNULLが指定された場合
  • +
  • 範囲外のカラム番号が指定された場合
  • +
  • 指定のカラム番号の型・精度種別と一致しない場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldByTimestampArray (GSRowrow,
int32_t column,
const GSTimestampfieldValue,
size_t size 
)
+
+ +

指定のTIMESTAMP配列型フィールドに値を設定します。

+
Parameters
+ + + + + +
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[in]fieldValue対象フィールドの値
[in]size対象フィールドの値の配列要素数
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • ポインタ型引数にNULLが指定された場合
  • +
  • 範囲外のカラム番号が指定された場合
  • +
  • 指定のカラム番号の型と一致しない場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldGeneral (GSRowrow,
int32_t column,
const GSValuefieldValue,
GSType type 
)
+
+ +

指定のフィールドに値を設定します。

+
Attention
対象フィールドの値とその型との対応が一致しない場合、この処理の動作は未定義です。アクセス違反により実行プロセスが異常終了する可能性があります。
+
Parameters
+ + + + + +
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
[in]fieldValue対象フィールドの値。typeとしてGS_TYPE_NULLが指定された場合は、指定の内容が参照されることはありません。ただし、NULL以外のポインタ値を指定する必要があります
[in]type対象フィールドの値の型
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • ポインタ型引数にNULLが指定された場合
  • +
  • 範囲外のカラム番号が指定された場合
  • +
  • NOT NULL制約の設定されたカラムに対して、フィールド値の型としてGS_TYPE_NULLが指定された場合
  • +
  • フィールドの値の構成要素のポインタ値としてNULLが含まれていた場合
  • +
  • フィールドの値がカラムの型と一致しない場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetRowFieldNull (GSRowrow,
int32_t column 
)
+
+ +

指定のフィールドにNULLを設定します。

+
Parameters
+ + + +
[in]row処理対象のGSRow
[in]column対象フィールドのカラム番号。0以上かつカラム数未満の値
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • ポインタ型引数にNULLが指定された場合
  • +
  • 範囲外のカラム番号が指定された場合
  • +
  • NOT NULL制約の設定されたカラムが指定された場合
  • +
+
+
Since
3.5
+ +
+
+
+
+
+
GSRowKeyPredicate
+
+
+ + + + + +

+Typedefs

typedef struct GSRowKeyPredicateTag GSRowKeyPredicate
 ロウキーの合致条件を表します。More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

GS_DLL_PUBLIC void GS_API_CALL gsCloseRowKeyPredicate (GSRowKeyPredicate **predicate)
 指定のGSRowKeyPredicateインスタンスを解放します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateKeyType (GSRowKeyPredicate *predicate, GSType *keyType)
 合致条件の評価対象とするロウキーの型を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateKeySchema (GSRowKeyPredicate *predicate, GSContainerInfo *info)
 合致条件の評価対象とするロウキーのスキーマを取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateStartGeneralKey (GSRowKeyPredicate *predicate, GSRowKey **keyObj)
 範囲条件の開始位置とするロウキーを取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateStartKeyGeneral (GSRowKeyPredicate *predicate, const GSValue **startKey)
 範囲条件の開始位置とする、単一カラムのロウキーの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateStartKeyAsString (GSRowKeyPredicate *predicate, const GSChar **startKey)
 範囲条件の開始位置とするSTRING型ロウキーの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateStartKeyAsInteger (GSRowKeyPredicate *predicate, const int32_t **startKey)
 範囲条件の開始位置とするINTEGER型ロウキーの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateStartKeyAsLong (GSRowKeyPredicate *predicate, const int64_t **startKey)
 範囲条件の開始位置とするLONG型ロウキーの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateStartKeyAsTimestamp (GSRowKeyPredicate *predicate, const GSTimestamp **startKey)
 範囲条件の開始位置とする通常精度のTIMESTAMP型ロウキーの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateStartKeyAsPreciseTimestamp (GSRowKeyPredicate *predicate, const GSPreciseTimestamp **startKey)
 範囲条件の開始位置とする高精度のTIMESTAMP型ロウキーの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateFinishGeneralKey (GSRowKeyPredicate *predicate, GSRowKey **keyObj)
 範囲条件の終了位置とするロウキーの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateFinishKeyGeneral (GSRowKeyPredicate *predicate, const GSValue **finishKey)
 範囲条件の終了位置とする、単一カラムのロウキーの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateFinishKeyAsString (GSRowKeyPredicate *predicate, const GSChar **finishKey)
 範囲条件の終了位置とするSTRING型ロウキーの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateFinishKeyAsInteger (GSRowKeyPredicate *predicate, const int32_t **finishKey)
 範囲条件の終了位置とするINTEGER型ロウキーの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateFinishKeyAsLong (GSRowKeyPredicate *predicate, const int64_t **finishKey)
 範囲条件の終了位置とするLONG型ロウキーの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateFinishKeyAsTimestamp (GSRowKeyPredicate *predicate, const GSTimestamp **finishKey)
 範囲条件の終了位置とする通常精度のTIMESTAMP型ロウキーの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateFinishKeyAsPreciseTimestamp (GSRowKeyPredicate *predicate, const GSPreciseTimestamp **finishKey)
 範囲条件の終了位置とする高精度のTIMESTAMP型ロウキーの値を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateDistinctGeneralKeys (GSRowKeyPredicate *predicate, GSRowKey *const **keyObjList, size_t *size)
 個別条件を構成するロウキーの集合を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateDistinctKeysGeneral (GSRowKeyPredicate *predicate, const GSValue **keyList, size_t *size)
 個別条件を構成する、単一カラムのロウキーの値の集合を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateDistinctKeysAsString (GSRowKeyPredicate *predicate, const GSChar *const **keyList, size_t *size)
 個別条件を構成するSTRING型ロウキーの値の集合を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateDistinctKeysAsInteger (GSRowKeyPredicate *predicate, const int32_t **keyList, size_t *size)
 個別条件を構成するINTEGER型ロウキーの値の集合を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateDistinctKeysAsLong (GSRowKeyPredicate *predicate, const int64_t **keyList, size_t *size)
 個別条件を構成するLONG型ロウキーの値の集合を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateDistinctKeysAsTimestamp (GSRowKeyPredicate *predicate, const GSTimestamp **keyList, size_t *size)
 個別条件を構成する通常精度のTIMESTAMP型ロウキーの値の集合を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateDistinctKeysAsPreciseTimestamp (GSRowKeyPredicate *predicate, const GSPreciseTimestamp **keyList, size_t *size)
 個別条件を構成する高精度のTIMESTAMP型ロウキーの値の集合を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetPredicateStartGeneralKey (GSRowKeyPredicate *predicate, GSRowKey *keyObj)
 範囲条件の開始位置とするロウキーの値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetPredicateStartKeyGeneral (GSRowKeyPredicate *predicate, const GSValue *startKey, GSType keyType)
 範囲条件の開始位置とする、単一カラムのロウキーの値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetPredicateStartKeyByString (GSRowKeyPredicate *predicate, const GSChar *startKey)
 範囲条件の開始位置とするSTRING型ロウキーの値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetPredicateStartKeyByInteger (GSRowKeyPredicate *predicate, const int32_t *startKey)
 範囲条件の開始位置とするINTEGER型ロウキーの値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetPredicateStartKeyByLong (GSRowKeyPredicate *predicate, const int64_t *startKey)
 範囲条件の開始位置とするLONG型ロウキーの値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetPredicateStartKeyByTimestamp (GSRowKeyPredicate *predicate, const GSTimestamp *startKey)
 範囲条件の開始位置とする通常精度のTIMESTAMP型ロウキーの値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetPredicateStartKeyByPreciseTimestamp (GSRowKeyPredicate *predicate, const GSPreciseTimestamp *startKey)
 範囲条件の開始位置とする高精度のTIMESTAMP型ロウキーの値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetPredicateFinishGeneralKey (GSRowKeyPredicate *predicate, GSRowKey *keyObj)
 範囲条件の終了位置とするロウキーの値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetPredicateFinishKeyGeneral (GSRowKeyPredicate *predicate, const GSValue *finishKey, GSType keyType)
 範囲条件の終了位置とする、単一カラムのロウキーの値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetPredicateFinishKeyByString (GSRowKeyPredicate *predicate, const GSChar *finishKey)
 範囲条件の終了位置とするSTRING型ロウキーの値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetPredicateFinishKeyByInteger (GSRowKeyPredicate *predicate, const int32_t *finishKey)
 範囲条件の終了位置とするINTEGER型ロウキーの値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetPredicateFinishKeyByLong (GSRowKeyPredicate *predicate, const int64_t *finishKey)
 範囲条件の終了位置とするLONG型ロウキーの値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetPredicateFinishKeyByTimestamp (GSRowKeyPredicate *predicate, const GSTimestamp *finishKey)
 範囲条件の終了位置とする通常精度のTIMESTAMP型ロウキーの値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetPredicateFinishKeyByPreciseTimestamp (GSRowKeyPredicate *predicate, const GSPreciseTimestamp *finishKey)
 範囲条件の終了位置とする高精度のTIMESTAMP型ロウキーの値を設定します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsAddPredicateGeneralKey (GSRowKeyPredicate *predicate, GSRowKey *keyObj)
 個別条件の要素の一つとするロウキーの値を追加します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsAddPredicateKeyGeneral (GSRowKeyPredicate *predicate, const GSValue *key, GSType keyType)
 個別条件の要素の一つとする、単一カラムのロウキーの値を追加します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsAddPredicateKeyByString (GSRowKeyPredicate *predicate, const GSChar *key)
 個別条件の要素の一つとするSTRING型ロウキーの値を追加します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsAddPredicateKeyByInteger (GSRowKeyPredicate *predicate, int32_t key)
 個別条件の要素の一つとするINTEGER型ロウキーの値を追加します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsAddPredicateKeyByLong (GSRowKeyPredicate *predicate, int64_t key)
 個別条件の要素の一つとするLONG型ロウキーの値を追加します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsAddPredicateKeyByTimestamp (GSRowKeyPredicate *predicate, GSTimestamp key)
 個別条件の要素の一つとする通常精度のTIMESTAMP型ロウキーの値を追加します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsAddPredicateKeyByPreciseTimestamp (GSRowKeyPredicate *predicate, const GSPreciseTimestamp *key)
 個別条件の要素の一つとする高精度のTIMESTAMP型ロウキーの値を追加します。More...
 
+

Detailed Description

+

Typedef Documentation

+ +
+
+ + + + +
typedef struct GSRowKeyPredicateTag GSRowKeyPredicate
+
+ +

ロウキーの合致条件を表します。

+
gsGetMultipleContainerRowsにおける取得条件を構成するために使用できます。
+
条件の種別として、範囲条件と個別条件の2つの種別があります。両方の種別の条件を共に指定することはできません。条件の内容を何も指定しない場合、対象とするすべてのロウキーに合致することを表します。
+
Since
1.5
+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsAddPredicateGeneralKey (GSRowKeyPredicatepredicate,
GSRowKeykeyObj 
)
+
+ +

個別条件の要素の一つとするロウキーの値を追加します。

+
追加された値と同一の値のロウキーは合致するものとみなされるようになります。
+
Parameters
+ + + +
[in]predicate処理対象のGSRowKeyPredicate
[in]keyObj個別条件の要素の一つとするロウキー
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • 引数にNULLが指定された場合
  • +
  • 個別条件がすでに設定されていた場合
  • +
  • 期待した型が合致条件の評価対象とするロウキーの型と異なる場合
  • +
+
+
Since
4.3
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsAddPredicateKeyByInteger (GSRowKeyPredicatepredicate,
int32_t key 
)
+
+ +

個別条件の要素の一つとするINTEGER型ロウキーの値を追加します。

+
追加された値と同一の値のロウキーは合致するものとみなされるようになります。
+
Parameters
+ + + +
[in]predicate処理対象のGSRowKeyPredicate
[in]key個別条件の要素の一つとするロウキーの値
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • ポインタ型引数にNULLが指定された場合
  • +
  • 個別条件がすでに設定されていた場合
  • +
  • 期待した型が合致条件の評価対象とするロウキーの型と異なる場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsAddPredicateKeyByLong (GSRowKeyPredicatepredicate,
int64_t key 
)
+
+ +

個別条件の要素の一つとするLONG型ロウキーの値を追加します。

+
追加された値と同一の値のロウキーは合致するものとみなされるようになります。
+
Parameters
+ + + +
[in]predicate処理対象のGSRowKeyPredicate
[in]key個別条件の要素の一つとするロウキーの値
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • ポインタ型引数にNULLが指定された場合
  • +
  • 個別条件がすでに設定されていた場合
  • +
  • 期待した型が合致条件の評価対象とするロウキーの型と異なる場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsAddPredicateKeyByPreciseTimestamp (GSRowKeyPredicatepredicate,
const GSPreciseTimestampkey 
)
+
+ +

個別条件の要素の一つとする高精度のTIMESTAMP型ロウキーの値を追加します。

+
追加された値と同一の値のロウキーは合致するものとみなされるようになります。
+
Parameters
+ + + +
[in]predicate処理対象のGSRowKeyPredicate
[in]key個別条件の要素の一つとするロウキーの値
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • ポインタ型引数にNULLが指定された場合
  • +
  • 個別条件がすでに設定されていた場合
  • +
  • 期待した型・精度種別が合致条件の評価対象とするロウキーのものと異なる場合
  • +
+
+
Since
5.3
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsAddPredicateKeyByString (GSRowKeyPredicatepredicate,
const GSCharkey 
)
+
+ +

個別条件の要素の一つとするSTRING型ロウキーの値を追加します。

+
追加された値と同一の値のロウキーは合致するものとみなされるようになります。
+
Parameters
+ + + +
[in]predicate処理対象のGSRowKeyPredicate
[in]key個別条件の要素の一つとするロウキーの値
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • ポインタ型引数にNULLが指定された場合
  • +
  • 個別条件がすでに設定されていた場合
  • +
  • 期待した型が合致条件の評価対象とするロウキーの型と異なる場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsAddPredicateKeyByTimestamp (GSRowKeyPredicatepredicate,
GSTimestamp key 
)
+
+ +

個別条件の要素の一つとする通常精度のTIMESTAMP型ロウキーの値を追加します。

+
追加された値と同一の値のロウキーは合致するものとみなされるようになります。
+
Parameters
+ + + +
[in]predicate処理対象のGSRowKeyPredicate
[in]key個別条件の要素の一つとするロウキーの値
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • ポインタ型引数にNULLが指定された場合
  • +
  • 個別条件がすでに設定されていた場合
  • +
  • 期待した型・精度種別が合致条件の評価対象とするロウキーのものと異なる場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsAddPredicateKeyGeneral (GSRowKeyPredicatepredicate,
const GSValuekey,
GSType keyType 
)
+
+ +

個別条件の要素の一つとする、単一カラムのロウキーの値を追加します。

+
追加された値と同一の値のロウキーは合致するものとみなされるようになります。
+
Attention
指定ロウキーの値とその型との対応が一致しない場合、この処理の動作は未定義です。アクセス違反により実行プロセスが異常終了する可能性があります。
+
Parameters
+ + + + +
[in]predicate処理対象のGSRowKeyPredicate
[in]key個別条件の要素の一つとするロウキー
[in]keyType個別条件の要素の一つとするロウキーの値の型
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • ポインタ型引数にNULLが指定された場合
  • +
  • 個別条件がすでに設定されていた場合
  • +
  • 期待した型が合致条件の評価対象とするロウキーの型と異なる場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + +
GS_DLL_PUBLIC void GS_API_CALL gsCloseRowKeyPredicate (GSRowKeyPredicate ** predicate)
+
+ +

指定のGSRowKeyPredicateインスタンスを解放します。

+
Parameters
+ + +
[in,out]predicateクローズ対象のGSRowKeyPredicateインスタンスを指しているポインタ変数へのポインタ値。クローズすると、ポインタ変数にNULLが設定されます。以後、解放したGSRowKeyPredicateインスタンスにアクセスしてはなりません。ポインタ値またはポインタ変数の値がNULLの場合は、クローズ処理を行いません。
+
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateDistinctGeneralKeys (GSRowKeyPredicatepredicate,
GSRowKey *const ** keyObjList,
size_t * size 
)
+
+ +

個別条件を構成するロウキーの集合を取得します。

+
Attention
ロウキーの列を格納する領域を確保するために、指定のGSRowKeyPredicateと関係するGSGridStoreインスタンス上で管理される一時的なメモリ領域を使用する場合があります。この領域は、指定のGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
+
Parameters
+ + + + +
[in]predicate処理対象のGSRowKeyPredicate
[out]keyObjList個別条件を構成するロウキーの集合を構成する配列のアドレスを格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
[out]size個別条件を構成するロウキーの集合の要素数を格納するための変数へのポインタ値。個別条件が設定されていない場合は0が格納されます。実行結果としてGS_RESULT_OK以外が返される場合、0が格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • 引数にNULLが指定された場合
  • +
+
+
Since
4.3
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateDistinctKeysAsInteger (GSRowKeyPredicatepredicate,
const int32_t ** keyList,
size_t * size 
)
+
+ +

個別条件を構成するINTEGER型ロウキーの値の集合を取得します。

+
Attention
値ならびにその列を格納する領域を確保するために、指定のGSRowKeyPredicateと関係するGSGridStoreインスタンス上で管理される一時的なメモリ領域を使用する場合があります。この領域は、指定のGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
+
Parameters
+ + + + +
[in]predicate処理対象のGSRowKeyPredicate
[out]keyList個別条件を構成するロウキーの値の集合を構成する配列のアドレスを格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
[out]size個別条件を構成するロウキーの値の集合の要素数を格納するための変数へのポインタ値。個別条件が設定されていない場合は0が格納されます。実行結果としてGS_RESULT_OK以外が返される場合、0が格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • 引数にNULLが指定された場合
  • +
  • 期待した型が合致条件の評価対象とするロウキーの型と異なる場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateDistinctKeysAsLong (GSRowKeyPredicatepredicate,
const int64_t ** keyList,
size_t * size 
)
+
+ +

個別条件を構成するLONG型ロウキーの値の集合を取得します。

+
Attention
値ならびにその列を格納する領域を確保するために、指定のGSRowKeyPredicateと関係するGSGridStoreインスタンス上で管理される一時的なメモリ領域を使用する場合があります。この領域は、指定のGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
+
Parameters
+ + + + +
[in]predicate処理対象のGSRowKeyPredicate
[out]keyList個別条件を構成するロウキーの値の集合を構成する配列のアドレスを格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
[out]size個別条件を構成するロウキーの値の集合の要素数を格納するための変数へのポインタ値。個別条件が設定されていない場合は0が格納されます。実行結果としてGS_RESULT_OK以外が返される場合、0が格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • 引数にNULLが指定された場合
  • +
  • 期待した型が合致条件の評価対象とするロウキーの型と異なる場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateDistinctKeysAsPreciseTimestamp (GSRowKeyPredicatepredicate,
const GSPreciseTimestamp ** keyList,
size_t * size 
)
+
+ +

個別条件を構成する高精度のTIMESTAMP型ロウキーの値の集合を取得します。

+
Attention
値ならびにその列を格納する領域を確保するために、指定のGSRowKeyPredicateと関係するGSGridStoreインスタンス上で管理される一時的なメモリ領域を使用する場合があります。この領域は、指定のGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
+
Parameters
+ + + + +
[in]predicate処理対象のGSRowKeyPredicate
[out]keyList個別条件を構成するロウキーの値の集合を構成する配列のアドレスを格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
[out]size個別条件を構成するロウキーの値の集合の要素数を格納するための変数へのポインタ値。個別条件が設定されていない場合は0が格納されます。実行結果としてGS_RESULT_OK以外が返される場合、0が格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • 引数にNULLが指定された場合
  • +
  • 期待した型・精度種別が合致条件の評価対象とするロウキーのものと異なる場合
  • +
+
+
Since
5.3
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateDistinctKeysAsString (GSRowKeyPredicatepredicate,
const GSChar *const ** keyList,
size_t * size 
)
+
+ +

個別条件を構成するSTRING型ロウキーの値の集合を取得します。

+
Attention
値ならびにその列を格納する領域を確保するために、指定のGSRowKeyPredicateと関係するGSGridStoreインスタンス上で管理される一時的なメモリ領域を使用する場合があります。この領域は、指定のGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
+
Parameters
+ + + + +
[in]predicate処理対象のGSRowKeyPredicate
[out]keyList個別条件を構成するロウキーの値の集合を構成する配列のアドレスを格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
[out]size個別条件を構成するロウキーの値の集合の要素数を格納するための変数へのポインタ値。個別条件が設定されていない場合は0が格納されます。実行結果としてGS_RESULT_OK以外が返される場合、0が格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • 引数にNULLが指定された場合
  • +
  • 期待した型が合致条件の評価対象とするロウキーの型と異なる場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateDistinctKeysAsTimestamp (GSRowKeyPredicatepredicate,
const GSTimestamp ** keyList,
size_t * size 
)
+
+ +

個別条件を構成する通常精度のTIMESTAMP型ロウキーの値の集合を取得します。

+
Attention
値ならびにその列を格納する領域を確保するために、指定のGSRowKeyPredicateと関係するGSGridStoreインスタンス上で管理される一時的なメモリ領域を使用する場合があります。この領域は、指定のGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
+
Parameters
+ + + + +
[in]predicate処理対象のGSRowKeyPredicate
[out]keyList個別条件を構成するロウキーの値の集合を構成する配列のアドレスを格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
[out]size個別条件を構成するロウキーの値の集合の要素数を格納するための変数へのポインタ値。個別条件が設定されていない場合は0が格納されます。実行結果としてGS_RESULT_OK以外が返される場合、0が格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • 引数にNULLが指定された場合
  • +
  • 期待した型・精度種別が合致条件の評価対象とするロウキーのものと異なる場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateDistinctKeysGeneral (GSRowKeyPredicatepredicate,
const GSValue ** keyList,
size_t * size 
)
+
+ +

個別条件を構成する、単一カラムのロウキーの値の集合を取得します。

+
Attention
値ならびにその列を格納する領域を確保するために、指定のGSRowKeyPredicateと関係するGSGridStoreインスタンス上で管理される一時的なメモリ領域を使用する場合があります。この領域は、指定のGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
+
Parameters
+ + + + +
[in]predicate処理対象のGSRowKeyPredicate
[out]keyList個別条件を構成するロウキーの値の集合を構成する配列のアドレスを格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
[out]size個別条件を構成するロウキーの値の集合の要素数を格納するための変数へのポインタ値。個別条件が設定されていない場合は0が格納されます。実行結果としてGS_RESULT_OK以外が返される場合、0が格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • 複合ロウキーについての合致条件が指定された場合
  • +
  • 引数にNULLが指定された場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateFinishGeneralKey (GSRowKeyPredicatepredicate,
GSRowKey ** keyObj 
)
+
+ +

範囲条件の終了位置とするロウキーの値を取得します。

+
Parameters
+ + + +
[in]predicate処理対象のGSRowKeyPredicate
[out]keyObj終了位置とするロウキーとして新たに作成されるGSRowKeyインスタンスを格納するための、ポインタ変数へのポインタ値。終了位置が設定されていない場合はNULLが格納されます。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • 引数にNULLが指定された場合
  • +
+
+
Since
4.3
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateFinishKeyAsInteger (GSRowKeyPredicatepredicate,
const int32_t ** finishKey 
)
+
+ +

範囲条件の終了位置とするINTEGER型ロウキーの値を取得します。

+
Attention
値を格納する領域を確保するために、指定のGSRowKeyPredicateと関係するGSGridStoreインスタンス上で管理される一時的なメモリ領域を使用する場合があります。この領域は、指定のGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
+
Parameters
+ + + +
[in]predicate処理対象のGSRowKeyPredicate
[out]finishKey終了位置とするロウキーの値を格納するための変数へのポインタ値。終了位置が設定されていない場合はNULLが格納されます。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • 引数にNULLが指定された場合
  • +
  • 期待した型が合致条件の評価対象とするロウキーの型と異なる場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateFinishKeyAsLong (GSRowKeyPredicatepredicate,
const int64_t ** finishKey 
)
+
+ +

範囲条件の終了位置とするLONG型ロウキーの値を取得します。

+
Attention
値を格納する領域を確保するために、指定のGSRowKeyPredicateと関係するGSGridStoreインスタンス上で管理される一時的なメモリ領域を使用する場合があります。この領域は、指定のGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
+
Parameters
+ + + +
[in]predicate処理対象のGSRowKeyPredicate
[out]finishKey終了位置とするロウキーの値を格納するための変数へのポインタ値。終了位置が設定されていない場合はNULLが格納されます。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • 引数にNULLが指定された場合
  • +
  • 期待した型が合致条件の評価対象とするロウキーの型と異なる場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateFinishKeyAsPreciseTimestamp (GSRowKeyPredicatepredicate,
const GSPreciseTimestamp ** finishKey 
)
+
+ +

範囲条件の終了位置とする高精度のTIMESTAMP型ロウキーの値を取得します。

+
Attention
値を格納する領域を確保するために、指定のGSRowKeyPredicateと関係するGSGridStoreインスタンス上で管理される一時的なメモリ領域を使用する場合があります。この領域は、指定のGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
+
Parameters
+ + + +
[in]predicate処理対象のGSRowKeyPredicate
[out]finishKey終了位置とするロウキーの値を格納するための変数へのポインタ値。終了位置が設定されていない場合はNULLが格納されます。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • 引数にNULLが指定された場合
  • +
  • 期待した型・精度種別が合致条件の評価対象とするロウキーのものと異なる場合
  • +
+
+
Since
5.3
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateFinishKeyAsString (GSRowKeyPredicatepredicate,
const GSChar ** finishKey 
)
+
+ +

範囲条件の終了位置とするSTRING型ロウキーの値を取得します。

+
Attention
値を格納する領域を確保するために、指定のGSRowKeyPredicateと関係するGSGridStoreインスタンス上で管理される一時的なメモリ領域を使用する場合があります。この領域は、指定のGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
+
Parameters
+ + + +
[in]predicate処理対象のGSRowKeyPredicate
[out]finishKey終了位置とするロウキーの値を格納するための変数へのポインタ値。終了位置が設定されていない場合はNULLが格納されます。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • 引数にNULLが指定された場合
  • +
  • 期待した型が合致条件の評価対象とするロウキーの型と異なる場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateFinishKeyAsTimestamp (GSRowKeyPredicatepredicate,
const GSTimestamp ** finishKey 
)
+
+ +

範囲条件の終了位置とする通常精度のTIMESTAMP型ロウキーの値を取得します。

+
Attention
値を格納する領域を確保するために、指定のGSRowKeyPredicateと関係するGSGridStoreインスタンス上で管理される一時的なメモリ領域を使用する場合があります。この領域は、指定のGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
+
Parameters
+ + + +
[in]predicate処理対象のGSRowKeyPredicate
[out]finishKey終了位置とするロウキーの値を格納するための変数へのポインタ値。終了位置が設定されていない場合はNULLが格納されます。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • 引数にNULLが指定された場合
  • +
  • 期待した型・精度種別が合致条件の評価対象とするロウキーのものと異なる場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateFinishKeyGeneral (GSRowKeyPredicatepredicate,
const GSValue ** finishKey 
)
+
+ +

範囲条件の終了位置とする、単一カラムのロウキーの値を取得します。

+
Attention
値を格納する領域を確保するために、指定のGSRowKeyPredicateと関係するGSGridStoreインスタンス上で管理される一時的なメモリ領域を使用する場合があります。この領域は、指定のGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
+
Parameters
+ + + +
[in]predicate処理対象のGSRowKeyPredicate
[out]finishKey終了位置とするロウキーの値を格納するための変数へのポインタ値。終了位置が設定されていない場合はNULLが格納されます。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • 複合ロウキーについての合致条件が指定された場合
  • +
  • 引数にNULLが指定された場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateKeySchema (GSRowKeyPredicatepredicate,
GSContainerInfoinfo 
)
+
+ +

合致条件の評価対象とするロウキーのスキーマを取得します。

+
この合致条件の作成に用いられた情報に、ロウキー以外のカラム情報やスキーマ以外のコンテナ情報が含まれていたとしても、返却されるスキーマ情報には含まれません。
+
Parameters
+ + + +
[in]predicate処理対象のGSRowKeyPredicate
[out]infoスキーマ情報を格納するためのGSContainerInfoへのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、GS_CONTAINER_INFO_INITIALIZERと同一の内容の初期値が格納されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • 引数にNULLが指定された場合
  • +
+
+
Since
4.3
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateKeyType (GSRowKeyPredicatepredicate,
GSTypekeyType 
)
+
+ +

合致条件の評価対象とするロウキーの型を取得します。

+
Parameters
+ + + +
[in]predicate処理対象のGSRowKeyPredicate
[out]keyType合致条件の評価対象とするロウキーの型を格納するための変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • 引数にNULLが指定された場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateStartGeneralKey (GSRowKeyPredicatepredicate,
GSRowKey ** keyObj 
)
+
+ +

範囲条件の開始位置とするロウキーを取得します。

+
Parameters
+ + + +
[in]predicate処理対象のGSRowKeyPredicate
[out]keyObj開始位置とするロウキーとして新たに作成されるGSRowKeyインスタンスを格納するための、ポインタ変数へのポインタ値。開始位置が設定されていない場合はNULLが格納されます。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • 引数にNULLが指定された場合
  • +
+
+
Since
4.3
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateStartKeyAsInteger (GSRowKeyPredicatepredicate,
const int32_t ** startKey 
)
+
+ +

範囲条件の開始位置とするINTEGER型ロウキーの値を取得します。

+
Attention
値を格納する領域を確保するために、指定のGSRowKeyPredicateと関係するGSGridStoreインスタンス上で管理される一時的なメモリ領域を使用する場合があります。この領域は、指定のGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
+
Parameters
+ + + +
[in]predicate処理対象のGSRowKeyPredicate
[out]startKey開始位置とするロウキーの値を格納するための変数へのポインタ値。開始位置が設定されていない場合はNULLが格納されます。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • 引数にNULLが指定された場合
  • +
  • 期待した型が合致条件の評価対象とするロウキーの型と異なる場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateStartKeyAsLong (GSRowKeyPredicatepredicate,
const int64_t ** startKey 
)
+
+ +

範囲条件の開始位置とするLONG型ロウキーの値を取得します。

+
Attention
値を格納する領域を確保するために、指定のGSRowKeyPredicateと関係するGSGridStoreインスタンス上で管理される一時的なメモリ領域を使用する場合があります。この領域は、指定のGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
+
Parameters
+ + + +
[in]predicate処理対象のGSRowKeyPredicate
[out]startKey開始位置とするロウキーの値を格納するための変数へのポインタ値。開始位置が設定されていない場合はNULLが格納されます。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • 引数にNULLが指定された場合
  • +
  • 期待した型が合致条件の評価対象とするロウキーの型と異なる場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateStartKeyAsPreciseTimestamp (GSRowKeyPredicatepredicate,
const GSPreciseTimestamp ** startKey 
)
+
+ +

範囲条件の開始位置とする高精度のTIMESTAMP型ロウキーの値を取得します。

+
Attention
値を格納する領域を確保するために、指定のGSRowKeyPredicateと関係するGSGridStoreインスタンス上で管理される一時的なメモリ領域を使用する場合があります。この領域は、指定のGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
+
Parameters
+ + + +
[in]predicate処理対象のGSRowKeyPredicate
[out]startKey開始位置とするロウキーの値を格納するための変数へのポインタ値。開始位置が設定されていない場合はNULLが格納されます。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • 引数にNULLが指定された場合
  • +
  • 期待した型・精度種別が合致条件の評価対象とするロウキーのものと異なる場合
  • +
+
+
Since
5.3
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateStartKeyAsString (GSRowKeyPredicatepredicate,
const GSChar ** startKey 
)
+
+ +

範囲条件の開始位置とするSTRING型ロウキーの値を取得します。

+
Attention
値を格納する領域を確保するために、指定のGSRowKeyPredicateと関係するGSGridStoreインスタンス上で管理される一時的なメモリ領域を使用する場合があります。この領域は、指定のGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
+
Parameters
+ + + +
[in]predicate処理対象のGSRowKeyPredicate
[out]startKey開始位置とするロウキーの値を格納するための変数へのポインタ値。開始位置が設定されていない場合はNULLが格納されます。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • 引数にNULLが指定された場合
  • +
  • 期待した型が合致条件の評価対象とするロウキーの型と異なる場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateStartKeyAsTimestamp (GSRowKeyPredicatepredicate,
const GSTimestamp ** startKey 
)
+
+ +

範囲条件の開始位置とする通常精度のTIMESTAMP型ロウキーの値を取得します。

+
Attention
値を格納する領域を確保するために、指定のGSRowKeyPredicateと関係するGSGridStoreインスタンス上で管理される一時的なメモリ領域を使用する場合があります。この領域は、指定のGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
+
Parameters
+ + + +
[in]predicate処理対象のGSRowKeyPredicate
[out]startKey開始位置とするロウキーの値を格納するための変数へのポインタ値。開始位置が設定されていない場合はNULLが格納されます。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • 引数にNULLが指定された場合
  • +
  • 期待した型・精度種別が合致条件の評価対象とするロウキーのものと異なる場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetPredicateStartKeyGeneral (GSRowKeyPredicatepredicate,
const GSValue ** startKey 
)
+
+ +

範囲条件の開始位置とする、単一カラムのロウキーの値を取得します。

+
Attention
値を格納する領域を確保するために、指定のGSRowKeyPredicateと関係するGSGridStoreインスタンス上で管理される一時的なメモリ領域を使用する場合があります。この領域は、指定のGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
+
Parameters
+ + + +
[in]predicate処理対象のGSRowKeyPredicate
[out]startKey開始位置とするロウキーの値を格納するための変数へのポインタ値。開始位置が設定されていない場合はNULLが格納されます。実行結果としてGS_RESULT_OK以外が返される場合、NULLが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • 複合ロウキーについての合致条件が指定された場合
  • +
  • 引数にNULLが指定された場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetPredicateFinishGeneralKey (GSRowKeyPredicatepredicate,
GSRowKeykeyObj 
)
+
+ +

範囲条件の終了位置とするロウキーの値を設定します。

+
設定された値より大きな値のロウキーは合致しないものとみなされるようになります。
+
STRING型のロウキーまたはその型を含む複合ロウキーのように、大小関係が定義されていないロウキーの場合、条件として設定はできるものの、実際の判定に用いることはできません。
+
Parameters
+ + + +
[in]predicate処理対象のGSRowKeyPredicate
[in]keyObj終了位置とするロウキー。NULLの場合、設定が解除されます
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • predicate引数にNULLが指定された場合
  • +
  • 個別条件がすでに設定されていた場合
  • +
  • 期待した型が合致条件の評価対象とするロウキーの型と異なる場合
  • +
+
+
Since
4.3
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetPredicateFinishKeyByInteger (GSRowKeyPredicatepredicate,
const int32_t * finishKey 
)
+
+ +

範囲条件の終了位置とするINTEGER型ロウキーの値を設定します。

+
設定された値より大きな値のロウキーは合致しないものとみなされるようになります。
+
STRING型のように大小関係の定義されていない型の場合、条件として設定はできるものの、実際の判定に用いることはできません。
+
Parameters
+ + + +
[in]predicate処理対象のGSRowKeyPredicate
[in]finishKey終了位置とするロウキーの値。NULLの場合、設定が解除されます
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • predicate引数にNULLが指定された場合
  • +
  • 個別条件がすでに設定されていた場合
  • +
  • 期待した型が合致条件の評価対象とするロウキーの型と異なる場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetPredicateFinishKeyByLong (GSRowKeyPredicatepredicate,
const int64_t * finishKey 
)
+
+ +

範囲条件の終了位置とするLONG型ロウキーの値を設定します。

+
設定された値より大きな値のロウキーは合致しないものとみなされるようになります。
+
STRING型のように大小関係の定義されていない型の場合、条件として設定はできるものの、実際の判定に用いることはできません。
+
Parameters
+ + + +
[in]predicate処理対象のGSRowKeyPredicate
[in]finishKey終了位置とするロウキーの値。NULLの場合、設定が解除されます
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • predicate引数にNULLが指定された場合
  • +
  • 個別条件がすでに設定されていた場合
  • +
  • 期待した型が合致条件の評価対象とするロウキーの型と異なる場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetPredicateFinishKeyByPreciseTimestamp (GSRowKeyPredicatepredicate,
const GSPreciseTimestampfinishKey 
)
+
+ +

範囲条件の終了位置とする高精度のTIMESTAMP型ロウキーの値を設定します。

+
設定された値より大きな値のロウキーは合致しないものとみなされるようになります。
+
STRING型のように大小関係の定義されていない型の場合、条件として設定はできるものの、実際の判定に用いることはできません。
+
Parameters
+ + + +
[in]predicate処理対象のGSRowKeyPredicate
[in]finishKey終了位置とするロウキーの値。NULLの場合、設定が解除されます
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • predicate引数にNULLが指定された場合
  • +
  • 個別条件がすでに設定されていた場合
  • +
  • 期待した型・精度種別が合致条件の評価対象とするロウキーのものと異なる場合
  • +
+
+
Since
5.3
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetPredicateFinishKeyByString (GSRowKeyPredicatepredicate,
const GSCharfinishKey 
)
+
+ +

範囲条件の終了位置とするSTRING型ロウキーの値を設定します。

+
設定された値より大きな値のロウキーは合致しないものとみなされるようになります。
+
STRING型では大小関係が定義されていないため、条件として設定はできるものの、実際の判定に用いることはできません。
+
Parameters
+ + + +
[in]predicate処理対象のGSRowKeyPredicate
[in]finishKey終了位置とするロウキーの値。NULLの場合、設定が解除されます
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • predicate引数にNULLが指定された場合
  • +
  • 個別条件がすでに設定されていた場合
  • +
  • 期待した型が合致条件の評価対象とするロウキーの型と異なる場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetPredicateFinishKeyByTimestamp (GSRowKeyPredicatepredicate,
const GSTimestampfinishKey 
)
+
+ +

範囲条件の終了位置とする通常精度のTIMESTAMP型ロウキーの値を設定します。

+
設定された値より大きな値のロウキーは合致しないものとみなされるようになります。
+
STRING型のように大小関係の定義されていない型の場合、条件として設定はできるものの、実際の判定に用いることはできません。
+
Parameters
+ + + +
[in]predicate処理対象のGSRowKeyPredicate
[in]finishKey終了位置とするロウキーの値。NULLの場合、設定が解除されます
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • predicate引数にNULLが指定された場合
  • +
  • 個別条件がすでに設定されていた場合
  • +
  • 期待した型・精度種別が合致条件の評価対象とするロウキーのものと異なる場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetPredicateFinishKeyGeneral (GSRowKeyPredicatepredicate,
const GSValuefinishKey,
GSType keyType 
)
+
+ +

範囲条件の終了位置とする、単一カラムのロウキーの値を設定します。

+
設定された値より大きな値のロウキーは合致しないものとみなされるようになります。
+
STRING型のように大小関係の定義されていない型の場合、条件として設定はできるものの、実際の判定に用いることはできません。
+
Attention
指定ロウキーの値とその型との対応が一致しない場合、この処理の動作は未定義です。アクセス違反により実行プロセスが異常終了する可能性があります。
+
Parameters
+ + + + +
[in]predicate処理対象のGSRowKeyPredicate
[in]finishKey終了位置とするロウキーの値。NULLの場合、設定が解除されます
[in]keyType終了位置とするロウキーの値の型
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • predicate引数にNULLが指定された場合
  • +
  • 個別条件がすでに設定されていた場合
  • +
  • 期待した型が合致条件の評価対象とするロウキーの型と異なる場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetPredicateStartGeneralKey (GSRowKeyPredicatepredicate,
GSRowKeykeyObj 
)
+
+ +

範囲条件の開始位置とするロウキーの値を設定します。

+
設定された値より小さな値のロウキーは合致しないものとみなされるようになります。
+
STRING型のロウキーまたはその型を含む複合ロウキーのように、大小関係が定義されていないロウキーの場合、条件として設定はできるものの、実際の判定に用いることはできません。
+
Parameters
+ + + +
[in]predicate処理対象のGSRowKeyPredicate
[in]keyObj開始位置とするロウキー。NULLの場合、設定が解除されます
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • predicate引数にNULLが指定された場合
  • +
  • 個別条件がすでに設定されていた場合
  • +
  • 期待した型が合致条件の評価対象とするロウキーの型と異なる場合
  • +
+
+
Since
4.3
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetPredicateStartKeyByInteger (GSRowKeyPredicatepredicate,
const int32_t * startKey 
)
+
+ +

範囲条件の開始位置とするINTEGER型ロウキーの値を設定します。

+
設定された値より小さな値のロウキーは合致しないものとみなされるようになります。
+
STRING型のように大小関係の定義されていない型の場合、条件として設定はできるものの、実際の判定に用いることはできません。
+
Parameters
+ + + +
[in]predicate処理対象のGSRowKeyPredicate
[in]startKey開始位置とするロウキーの値。NULLの場合、設定が解除されます
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • predicate引数にNULLが指定された場合
  • +
  • 個別条件がすでに設定されていた場合
  • +
  • 期待した型が合致条件の評価対象とするロウキーの型と異なる場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetPredicateStartKeyByLong (GSRowKeyPredicatepredicate,
const int64_t * startKey 
)
+
+ +

範囲条件の開始位置とするLONG型ロウキーの値を設定します。

+
設定された値より小さな値のロウキーは合致しないものとみなされるようになります。
+
STRING型のように大小関係の定義されていない型の場合、条件として設定はできるものの、実際の判定に用いることはできません。
+
Parameters
+ + + +
[in]predicate処理対象のGSRowKeyPredicate
[in]startKey開始位置とするロウキーの値。NULLの場合、設定が解除されます
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • predicate引数にNULLが指定された場合
  • +
  • 個別条件がすでに設定されていた場合
  • +
  • 期待した型が合致条件の評価対象とするロウキーの型と異なる場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetPredicateStartKeyByPreciseTimestamp (GSRowKeyPredicatepredicate,
const GSPreciseTimestampstartKey 
)
+
+ +

範囲条件の開始位置とする高精度のTIMESTAMP型ロウキーの値を設定します。

+
設定された値より小さな値のロウキーは合致しないものとみなされるようになります。
+
STRING型のように大小関係の定義されていない型の場合、条件として設定はできるものの、実際の判定に用いることはできません。
+
Parameters
+ + + +
[in]predicate処理対象のGSRowKeyPredicate
[in]startKey開始位置とするロウキーの値。NULLの場合、設定が解除されます
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • predicate引数にNULLが指定された場合
  • +
  • 個別条件がすでに設定されていた場合
  • +
  • 期待した型・精度種別が合致条件の評価対象とするロウキーのものと異なる場合
  • +
+
+
Since
5.3
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetPredicateStartKeyByString (GSRowKeyPredicatepredicate,
const GSCharstartKey 
)
+
+ +

範囲条件の開始位置とするSTRING型ロウキーの値を設定します。

+
設定された値より小さな値のロウキーは合致しないものとみなされるようになります。
+
STRING型では大小関係が定義されていないため、条件として設定はできるものの、実際の判定に用いることはできません。
+
Parameters
+ + + +
[in]predicate処理対象のGSRowKeyPredicate
[in]startKey開始位置とするロウキーの値。NULLの場合、設定が解除されます
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • predicate引数にNULLが指定された場合
  • +
  • 個別条件がすでに設定されていた場合
  • +
  • 期待した型が合致条件の評価対象とするロウキーの型と異なる場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetPredicateStartKeyByTimestamp (GSRowKeyPredicatepredicate,
const GSTimestampstartKey 
)
+
+ +

範囲条件の開始位置とする通常精度のTIMESTAMP型ロウキーの値を設定します。

+
設定された値より小さな値のロウキーは合致しないものとみなされるようになります。
+
STRING型のように大小関係の定義されていない型の場合、条件として設定はできるものの、実際の判定に用いることはできません。
+
Parameters
+ + + +
[in]predicate処理対象のGSRowKeyPredicate
[in]startKey開始位置とするロウキーの値。NULLの場合、設定が解除されます
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • predicate引数にNULLが指定された場合
  • +
  • 個別条件がすでに設定されていた場合
  • +
  • 期待した型・精度種別が合致条件の評価対象とするロウキーのものと異なる場合
  • +
+
+
Since
1.5
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsSetPredicateStartKeyGeneral (GSRowKeyPredicatepredicate,
const GSValuestartKey,
GSType keyType 
)
+
+ +

範囲条件の開始位置とする、単一カラムのロウキーの値を設定します。

+
設定された値より小さな値のロウキーは合致しないものとみなされるようになります。
+
STRING型のように大小関係の定義されていない型の場合、条件として設定はできるものの、実際の判定に用いることはできません。
+
Attention
指定ロウキーの値とその型との対応が一致しない場合、この処理の動作は未定義です。アクセス違反により実行プロセスが異常終了する可能性があります。
+
Parameters
+ + + + +
[in]predicate処理対象のGSRowKeyPredicate
[in]startKey開始位置とするロウキーの値。NULLの場合、設定が解除されます
[in]keyType開始位置とするロウキーの値の型
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • predicate引数にNULLが指定された場合
  • +
  • 個別条件がすでに設定されていた場合
  • +
  • 期待した型が合致条件の評価対象とするロウキーの型と異なる場合
  • +
+
+
Since
1.5
+ +
+
+
+
+
+
GSRowSet
+
+
+ + + + + +

+Classes

struct  GSQueryAnalysisEntryTag
 クエリプランならびにクエリ処理解析結果を構成する一連の情報の一つを示します。More...
 
+ + + + +

+Macros

+#define GS_QUERY_ANALYSIS_ENTRY_INITIALIZER   { 0, 0, NULL, NULL, NULL, NULL }
 GSQueryAnalysisEntryの初期化子です。
 
+ + + + + + + + + +

+Typedefs

typedef struct GSRowSetTag GSRowSet
 クエリ実行より求めたロウの集合を管理します。More...
 
typedef GSEnum GSRowSetType
 
typedef struct
+GSQueryAnalysisEntryTag 
GSQueryAnalysisEntry
 クエリプランならびにクエリ処理解析結果を構成する一連の情報の一つを示します。More...
 
+ + + + +

+Enumerations

enum  GSRowSetTypeTag { GS_ROW_SET_CONTAINER_ROWS, +GS_ROW_SET_AGGREGATION_RESULT, +GS_ROW_SET_QUERY_ANALYSIS + }
 GSRowSetから取り出すことのできる内容の種別です。More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

GS_DLL_PUBLIC void GS_API_CALL gsCloseRowSet (GSRowSet **rowSet)
 指定のGSRowSetインスタンスを解放します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsDeleteCurrentRow (GSRowSet *rowSet)
 現在のカーソル位置のロウを削除します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetNextRow (GSRowSet *rowSet, void *rowObj)
 ロウ集合内の後続のロウにカーソル移動し、移動後の位置にあるロウオブジェクトを取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetNextAggregation (GSRowSet *rowSet, GSAggregationResult **aggregationResult)
 ロウ集合内の後続のロウにカーソル移動し、移動後の位置にある集計結果を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetNextQueryAnalysis (GSRowSet *rowSet, GSQueryAnalysisEntry *queryAnalysis)
 ロウ集合内の後続のロウにカーソル移動し、移動後の位置にあるクエリ解析結果エントリを取得します。More...
 
GS_DLL_PUBLIC GSRowSetType
+GS_API_CALL 
gsGetRowSetType (GSRowSet *rowSet)
 ロウ集合の種別を取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowSetSchema (GSRowSet *rowSet, GSContainerInfo *schemaInfo, GSBool *exists)
 このロウ集合に対応するスキーマを取得します。More...
 
GS_DLL_PUBLIC int32_t GS_API_CALL gsGetRowSetSize (GSRowSet *rowSet)
 ロウ集合のサイズ、すなわちロウ集合作成時点におけるロウの数を返します。More...
 
GS_DLL_PUBLIC GSBool GS_API_CALL gsHasNextRow (GSRowSet *rowSet)
 現在のカーソル位置を基準として、ロウ集合内に後続のロウが存在するかどうかを返します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsUpdateCurrentRow (GSRowSet *rowSet, const void *rowObj)
 現在のカーソル位置のロウについて、指定のロウオブジェクトを使用してロウキー以外の値を更新します。More...
 
+

Detailed Description

+

Typedef Documentation

+ +
+
+ + + + +
typedef struct GSQueryAnalysisEntryTag GSQueryAnalysisEntry
+
+ +

クエリプランならびにクエリ処理解析結果を構成する一連の情報の一つを示します。

+
TQLのEXPLAIN文ならびEXPLAIN ANALYZE文の実行結果を保持するために使用します。1つの実行結果は、このエントリの列により表現されます。
+ +
+
+ +
+
+ + + + +
typedef struct GSRowSetTag GSRowSet
+
+ +

クエリ実行より求めたロウの集合を管理します。

+
ロウ単位・ロウフィールド単位での操作機能を持ち、対象とするロウを指し示すためのカーソル状態を保持します。初期状態のカーソルは、ロウ集合の先頭より手前に位置しています。
+ +
+
+ +
+
+ + + + +
typedef GSEnum GSRowSetType
+
+
See Also
GSRowSetTypeTag
+ +
+
+

Enumeration Type Documentation

+ +
+
+ + + + +
enum GSRowSetTypeTag
+
+ +

GSRowSetから取り出すことのできる内容の種別です。

+ + + + +
Enumerator
GS_ROW_SET_CONTAINER_ROWS  +

クエリ実行対象のコンテナと対応する型のロウデータからなるGSRowSetであることを示します。

+
GS_ROW_SET_AGGREGATION_RESULT  +

集計演算からなるGSRowSetであることを示します。

+
See Also
GSAggregationResult
+
GS_ROW_SET_QUERY_ANALYSIS  +

EXPLAIN文ならびEXPLAIN ANALYZE文の実行結果エントリからなるGSRowSetであることを示します。

+
See Also
GSQueryAnalysisEntry
+
+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + +
GS_DLL_PUBLIC void GS_API_CALL gsCloseRowSet (GSRowSet ** rowSet)
+
+ +

指定のGSRowSetインスタンスを解放します。

+
Parameters
+ + +
[in,out]rowSetクローズ対象のGSRowSetインスタンスを指しているポインタ変数へのポインタ値。クローズすると、ポインタ変数にNULLが設定されます。以後、解放したGSRowSetインスタンスにアクセスしてはなりません。ポインタ値またはポインタ変数の値がNULLの場合は、クローズ処理を行いません。
+
+
+ +
+
+ +
+
+ + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsDeleteCurrentRow (GSRowSetrowSet)
+
+ +

現在のカーソル位置のロウを削除します。

+
ロックを有効にして取得したGSRowSetに対してのみ使用できます。また、gsDeleteRowと同様、コンテナの種別ならびに設定によっては、さらに制限が設けられています。
+
Parameters
+ + +
[in]rowSet処理対象のGSRowSet
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • 指定のロウ集合の種別がGS_ROW_SET_CONTAINER_ROWS以外の場合
  • +
  • 対象位置のロウが存在しない場合
  • +
  • ロックを有効にせずに取得したGSRowSetに対して呼び出された場合
  • +
  • この処理または関連するトランザクションのタイムアウト、対応するコンテナの削除もしくはスキーマ変更、接続障害が発生した場合、または対応するコンテナのクローズ後に呼び出された場合
  • +
  • 引数にNULLが指定された場合
  • +
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetNextAggregation (GSRowSetrowSet,
GSAggregationResult ** aggregationResult 
)
+
+ +

ロウ集合内の後続のロウにカーソル移動し、移動後の位置にある集計結果を取得します。

+
Parameters
+ + + +
[in]rowSet処理対象のGSRowSet
[out]aggregationResult集計結果をGSAggregationResultとして格納するためのポインタ変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、このポインタ値がNULL以外の値であれば、対応するポインタ変数にNULLが格納されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • 指定のロウ集合の種別がGS_ROW_SET_AGGREGATION_RESULT以外の場合
  • +
  • 対象位置の集計結果が存在しない場合
  • +
  • 引数にNULLが指定された場合
  • +
  • 対応するGSContainerのクローズ後に呼び出された場合
  • +
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetNextQueryAnalysis (GSRowSetrowSet,
GSQueryAnalysisEntryqueryAnalysis 
)
+
+ +

ロウ集合内の後続のロウにカーソル移動し、移動後の位置にあるクエリ解析結果エントリを取得します。

+
Parameters
+ + + +
[in]rowSet処理対象のGSRowSet
[out]queryAnalysisクエリ解析結果エントリの内容を格納するためのGSQueryAnalysisEntry。実行結果としてGS_RESULT_OK以外が返される場合、このポインタ値がNULL以外の値であれば、GS_QUERY_ANALYSIS_ENTRY_INITIALIZERと同一の内容の初期値が格納されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • 指定のロウ集合の種別がGS_ROW_SET_QUERY_ANALYSIS以外の場合
  • +
  • 対象位置のエントリが存在しない場合
  • +
  • 引数にNULLが指定された場合
  • +
  • 対応するGSContainerのクローズ後に呼び出された場合
  • +
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetNextRow (GSRowSetrowSet,
void * rowObj 
)
+
+ +

ロウ集合内の後続のロウにカーソル移動し、移動後の位置にあるロウオブジェクトを取得します。

+
GS_FETCH_PARTIAL_EXECUTIONが有効に設定されていた場合、クエリ実行処理の続きを行う場合があります。
+
Attention
対応するGSContainerにバインドされたロウオブジェクトの型と指定のロウオブジェクトの型とが一致しない場合、この処理の動作は未定義です。アクセス違反により実行プロセスが異常終了する可能性があります。
+
+文字列や配列などの可変長のデータを格納するために、指定のGSRowSetと対応するGSGridStoreインスタンス上で管理される、一時的なメモリ領域を使用します。この領域は、対応するGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
+
Parameters
+ + + +
[in]rowSet処理対象のGSRowSet
[out]rowObj取得対象のロウの内容を格納するためのロウオブジェクト。実行結果としてGS_RESULT_OK以外が返される場合、ロウオブジェクトのフィールドのうち一部またはすべてが変更されることがあります。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • 指定のロウ集合の種別がGS_ROW_SET_CONTAINER_ROWS以外の場合
  • +
  • 対象位置のロウが存在しない場合
  • +
  • 引数にNULLが指定された場合
  • +
  • この処理または関連するトランザクションのタイムアウト、対応するコンテナの削除もしくはスキーマ変更、接続障害が発生した場合
  • +
  • 対応するGSContainerのクローズ後に呼び出された場合
  • +
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowSetSchema (GSRowSetrowSet,
GSContainerInfoschemaInfo,
GSBoolexists 
)
+
+ +

このロウ集合に対応するスキーマを取得します。

+
ロウキーの有無を含むカラムレイアウトにする情報のみが設定されたGSContainerInfoが求まります。コンテナ名、コンテナ種別、索引設定、時系列構成オプションなどその他のコンテナ情報は含まれません。
+
このロウ集合の種別がGS_ROW_SET_AGGREGATION_RESULTであり、かつ、1件もロウを含まない場合、現バージョンではスキーマを取得しません。
+
Parameters
+ + + + +
[in]rowSet処理対象のGSRowSet
[out]schemaInfoスキーマ情報を格納するためのGSContainerInfoへのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、GS_CONTAINER_INFO_INITIALIZERと同一の内容の初期値が格納されます。
[out]exists取得可能なスキーマが存在したかどうかを格納するための、ブール型変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、GS_FALSEが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • exists引数にNULLが指定された場合
  • +
+
+
Since
5.3
+ +
+
+ +
+
+ + + + + + + + +
GS_DLL_PUBLIC int32_t GS_API_CALL gsGetRowSetSize (GSRowSetrowSet)
+
+ +

ロウ集合のサイズ、すなわちロウ集合作成時点におけるロウの数を返します。

+
GS_FETCH_PARTIAL_EXECUTIONが有効に設定されていた場合、クエリ実行処理の進行状況によらず、結果を求めることはできません。
+
Parameters
+ + +
[in]rowSet処理対象のGSRowSet
+
+
+
Returns
ロウ集合のサイズ。ただし、rowSetNULLが指定された場合、またはオプション設定の影響によりロウの数を取得できない場合は-1
+ +
+
+ +
+
+ + + + + + + + +
GS_DLL_PUBLIC GSRowSetType GS_API_CALL gsGetRowSetType (GSRowSetrowSet)
+
+ +

ロウ集合の種別を取得します。

+
ロウ集合の種別に応じて、それぞれ次の取得機能が使用できます。 + + + + + + + + +
ロウ集合の種別使用できる取得機能
GS_ROW_SET_CONTAINER_ROWS gsGetNextRow
GS_ROW_SET_AGGREGATION_RESULT gsGetNextAggregation
GS_ROW_SET_QUERY_ANALYSIS gsGetNextQueryAnalysis
+
+
Parameters
+ + +
[in]rowSet処理対象のGSRowSet
+
+
+
Returns
ロウ集合の種別。ただし、rowSetNULLが指定された場合は-1
+ +
+
+ +
+
+ + + + + + + + +
GS_DLL_PUBLIC GSBool GS_API_CALL gsHasNextRow (GSRowSetrowSet)
+
+ +

現在のカーソル位置を基準として、ロウ集合内に後続のロウが存在するかどうかを返します。

+
Parameters
+ + +
[in]rowSet処理対象のGSRowSet
+
+
+
Returns
後続のロウが存在するかどうか。ただし、rowSetNULLが指定された場合はGS_FALSE
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsUpdateCurrentRow (GSRowSetrowSet,
const void * rowObj 
)
+
+ +

現在のカーソル位置のロウについて、指定のロウオブジェクトを使用してロウキー以外の値を更新します。

+
Attention
対応するGSContainerにバインドされたロウオブジェクトの型と指定のロウオブジェクトの型とが一致しない場合、この処理の動作は未定義です。アクセス違反により実行プロセスが異常終了する可能性があります。
+
ロックを有効にして取得したGSRowSetに対してのみ使用できます。また、gsPutRowと同様、コンテナの種別ならびに設定によっては、さらに制限が設けられています。
+
Parameters
+ + + +
[in]rowSet処理対象のGSRowSet
[in]rowObj更新するロウの内容と対応するロウオブジェクト。ロウキーの内容は無視されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • 指定のロウ集合の種別がGS_ROW_SET_CONTAINER_ROWS以外の場合
  • +
  • 対象位置のロウが存在しない場合
  • +
  • ロックを有効にせずに取得したGSRowSetに対して呼び出された場合
  • +
  • この処理または関連するトランザクションのタイムアウト、対応するコンテナの削除もしくはスキーマ変更、接続障害が発生した場合、または対応するコンテナのクローズ後に呼び出された場合。また、指定のロウオブジェクト内のロウキー以外のフィールドについて、文字列など可変長サイズのデータへのポインタ値にNULLが含まれていた場合
  • +
  • 引数にNULLが指定された場合
  • +
+
+ +
+
+
+
+
+
GSTimeSeries
+
+
+ + + + + + + + +

+Classes

struct  GSColumnCompressionTag
 特定のカラムの圧縮設定を表します。More...
 
struct  GSTimeSeriesPropertiesTag
 時系列を新規作成または変更する際に使用される、オプションの構成情報を表します。More...
 
+ + + + + + + +

+Macros

+#define GS_COLUMN_COMPRESSION_INITIALIZER   { NULL, GS_FALSE, 0, 0, 0 }
 GSColumnCompressionの初期化子です。
 
#define GS_TIME_SERIES_PROPERTIES_INITIALIZER
 GSTimeSeriesPropertiesの初期化子です。More...
 
+ + + + + + + + + + + + + + + + + + +

+Typedefs

typedef GSContainer GSTimeSeries
 時刻をロウキーとする、時系列処理に特化したコンテナです。More...
 
typedef GSEnum GSAggregation
 
typedef GSEnum GSInterpolationMode
 
typedef GSEnum GSTimeOperator
 
typedef GSEnum GSCompressionMethod
 
typedef struct
+GSColumnCompressionTag 
GSColumnCompression
 特定のカラムの圧縮設定を表します。More...
 
typedef struct
+GSTimeSeriesPropertiesTag 
GSTimeSeriesProperties
 時系列を新規作成または変更する際に使用される、オプションの構成情報を表します。More...
 
+ + + + + + + + + + + + + +

+Enumerations

enum  GSAggregationTag {
+  GS_AGGREGATION_MINIMUM, +GS_AGGREGATION_MAXIMUM, +GS_AGGREGATION_TOTAL, +GS_AGGREGATION_AVERAGE, +
+  GS_AGGREGATION_VARIANCE, +GS_AGGREGATION_STANDARD_DEVIATION, +GS_AGGREGATION_COUNT, +GS_AGGREGATION_WEIGHTED_AVERAGE +
+ }
 ロウ集合またはその特定のカラムに対する、集計演算の方法を示します。More...
 
enum  GSInterpolationModeTag { GS_INTERPOLATION_LINEAR_OR_PREVIOUS, +GS_INTERPOLATION_EMPTY + }
 ロウの補間方法の種別を表します。More...
 
enum  GSTimeOperatorTag { GS_TIME_OPERATOR_PREVIOUS, +GS_TIME_OPERATOR_PREVIOUS_ONLY, +GS_TIME_OPERATOR_NEXT, +GS_TIME_OPERATOR_NEXT_ONLY + }
 GSTimeSeriesのキー時刻に基づく、ロウの特定方法を表します。More...
 
enum  GSCompressionMethodTag { GS_COMPRESSION_NO, +GS_COMPRESSION_SS, +GS_COMPRESSION_HI + }
 圧縮方式の種別を表します。More...
 
+ + + + + + + + + + + + + + + + + + + + + + +

+Functions

GS_DLL_PUBLIC GSResult GS_API_CALL gsAggregateTimeSeries (GSTimeSeries *timeSeries, GSTimestamp start, GSTimestamp end, const GSChar *column, GSAggregation aggregation, GSAggregationResult **aggregationResult)
 開始・終了時刻を指定して、ロウ集合またはその特定のカラムに対し集計演算を行います。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsAppendTimeSeriesRow (GSTimeSeries *timeSeries, const void *rowObj, GSBool *exists)
 GridDB上の現在時刻をロウキーとして、ロウを新規作成または更新します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowByBaseTime (GSTimeSeries *timeSeries, GSTimestamp base, GSTimeOperator timeOp, void *rowObj, GSBool *exists)
 指定の時刻を基準として、関係する1つのロウを取得します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsInterpolateTimeSeriesRow (GSTimeSeries *timeSeries, GSTimestamp base, const GSChar *column, void *rowObj, GSBool *exists)
 指定時刻に相当するロウオブジェクトについて、線形補間などを行い生成します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsQueryByTimeSeriesRange (GSTimeSeries *timeSeries, GSTimestamp start, GSTimestamp end, GSQuery **query)
 開始時刻・終了時刻を指定して、特定範囲のロウ集合を求めるクエリを作成します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsQueryByTimeSeriesOrderedRange (GSTimeSeries *timeSeries, const GSTimestamp *start, const GSTimestamp *end, GSQueryOrder order, GSQuery **query)
 開始時刻・終了時刻・順序を指定して、特定範囲のロウ集合を求めるクエリを作成します。More...
 
GS_DLL_PUBLIC GSResult GS_API_CALL gsQueryByTimeSeriesSampling (GSTimeSeries *timeSeries, GSTimestamp start, GSTimestamp end, const GSChar *const *columnSet, size_t columnCount, GSInterpolationMode mode, int32_t interval, GSTimeUnit intervalUnit, GSQuery **query)
 特定範囲のロウ集合をサンプリングするクエリを作成します。More...
 
+

Detailed Description

+

Macro Definition Documentation

+ +
+
+ + + + +
#define GS_TIME_SERIES_PROPERTIES_INITIALIZER
+
+ +

GSTimeSeriesPropertiesの初期化子です。

+
ロウの有効期限ならびに圧縮ロウの間引き連続制限は無効、時系列圧縮方式は無圧縮に設定されます。
+ +
+
+

Typedef Documentation

+ +
+
+ + + + +
typedef GSEnum GSAggregation
+
+
See Also
GSAggregationTag
+ +
+
+ +
+
+ + + + +
typedef struct GSColumnCompressionTag GSColumnCompression
+
+ +

特定のカラムの圧縮設定を表します。

+
時系列を対象とした誤差あり間引き圧縮のカラム別設定に使用します。
+ +
+
+ +
+
+ + + + +
typedef GSEnum GSCompressionMethod
+
+
+ +
+
+ + + + +
typedef GSEnum GSInterpolationMode
+
+
+ +
+
+ + + + +
typedef GSEnum GSTimeOperator
+
+
See Also
GSTimeOperatorTag
+ +
+
+ +
+
+ + + + +
typedef GSContainer GSTimeSeries
+
+ +

時刻をロウキーとする、時系列処理に特化したコンテナです。

+
一般的に、範囲取得や集計演算といった処理は、GSCollectionよりも効率的な実装が選択されます。
+
ロウ操作については、GSCollectionと異なり一部制限が設けられています。GSTimeSeriesPropertiesに基づき圧縮オプションが設定されている場合、次のロウ操作を行えません。
    +
  • 指定ロウの更新
  • +
  • 指定ロウの削除
  • +
  • 指定時刻より新しい時刻のロウが存在する場合の、ロウの新規作成
  • +
+
+
gsQueryもしくはgsGetMultipleContainerRowsなどより複数のロウの内容を一度に取得する場合、特に指定がなければ、返却されるロウの順序はロウキーの時刻を基準としてGS_ORDER_ASCENDING相当の順序に整列されます。
+
ロック粒度は、1つ以上のロウ集合をひとまとまりとする内部格納単位となります。したがって、特定ロウについてロックする際、そのロウが属する内部格納単位上の他のロウも同時にロックしようとします。
+ +
+
+ +
+
+ +

時系列を新規作成または変更する際に使用される、オプションの構成情報を表します。

+
カラム名の表記、もしくは、個別に圧縮設定できるカラム数の上限などの内容の妥当性について、必ずしも検査するとは限りません。
+ +
+
+

Enumeration Type Documentation

+ +
+
+ + + + +
enum GSAggregationTag
+
+ +

ロウ集合またはその特定のカラムに対する、集計演算の方法を示します。

+
現バージョンでは、GSTimeSeriesに対してのみ使用できます。
+
重み付きの演算の場合、キーの値に基づき重み付け値を決定します。GSTimeSeriesに対する重み付きの演算の場合、前後それぞれの時刻のロウとの中間時刻間の期間を特定の単位で換算したものを、重み付け値として使用します。ただし、前後いずれかの時刻のロウのみが存在しない場合は、存在しないロウの代わりに重み付け対象のロウを用いて求めた重み付け値を使用します。前後いずれの時刻のロウも存在しない場合は、重み付け値として1 (単位は前後いずれかのロウが存在する場合と同一)を使用します。
+
演算の内部処理にてオーバーフローが発生した場合、浮動小数点数型では負または正の無限大、整数型では未定義の値が求まります。また、浮動小数点数型にて演算対象に非数(NaN)が含まれていた場合、非数が求まります。
+ + + + + + + + + +
Enumerator
GS_AGGREGATION_MINIMUM  +

最小値を求める演算です。

+
大小比較できる型、すなわち数値型や時刻型のカラムに対してのみ使用できます。演算結果の型は、対象のカラムと同一の型となります。対象となるロウが1つも存在しない場合、演算結果は設定されません。
+
GS_AGGREGATION_MAXIMUM  +

最大値を求める演算です。

+
大小比較できる型、すなわち数値型や時刻型のカラムに対してのみ使用できます。演算結果の型は、対象のカラムと同一の型となります。対象となるロウが1つも存在しない場合、演算結果は設定されません。
+
GS_AGGREGATION_TOTAL  +

合計を求める演算です。

+
数値型のカラムに対してのみ使用できます。演算結果の型は、対象のカラムが整数型の場合LONG、浮動小数点型の場合DOUBLEとなります。対象となるロウが1つも存在しない場合、演算結果は設定されません。
+
GS_AGGREGATION_AVERAGE  +

平均を求める演算です。

+
数値型のカラムに対してのみ使用できます。演算結果の型は常にDOUBLEとなります。対象となるロウが1つも存在しない場合、演算結果は設定されません。
+
GS_AGGREGATION_VARIANCE  +

分散を求める演算です。

+
数値型のカラムに対してのみ使用できます。演算結果の型は常にDOUBLEとなります。対象となるロウが1つも存在しない場合、演算結果は設定されません。
+
GS_AGGREGATION_STANDARD_DEVIATION  +

標準偏差を求める演算です。

+
数値型のカラムに対してのみ使用できます。演算結果の型は常にDOUBLEとなります。対象となるロウが1つも存在しない場合、演算結果は設定されません。
+
GS_AGGREGATION_COUNT  +

標本数、すなわちロウ数を求める演算です。

+
任意のカラムに対して使用できます。演算結果の型は常にLONGとなります。対象となるロウが1つも存在しない場合、演算結果の値は0となります。
+
GS_AGGREGATION_WEIGHTED_AVERAGE  +

重み付きで平均を求める演算です。

+
各標本値と重み付け値との積の合計を、各重み付け値の合計で割ることにより求めます。重み付け値の計算方法は、GSAggregationTagの説明を参照してください。
+
この演算は、数値型のカラムに対してのみ使用できます。演算結果の型は常にDOUBLEとなります。対象となるロウが1つも存在しない場合、演算結果は設定されません。
+
+ +
+
+ +
+
+ + + + +
enum GSCompressionMethodTag
+
+ +

圧縮方式の種別を表します。

+
時系列圧縮設定を行う際に使用します。
+ + + + +
Enumerator
GS_COMPRESSION_NO  +

無圧縮であることを示します。

+
GS_COMPRESSION_SS  +

誤差なし間引き圧縮方式であることを示します。

+
誤差なし間引き圧縮では、直前及び直後に登録したロウと同じデータを持つロウは省かれます。省かれたデータはinterpolateやsample処理の際に、誤差を発生することなく復元されます。
+
GS_COMPRESSION_HI  +

誤差あり間引き圧縮方式であることを示します。

+
誤差あり間引き圧縮では、前回まで及び直後に登録したデータと同じ傾斜を表すロウは省かれます。同じ傾斜かを判定する条件はユーザが指定できます。指定されたカラムが条件を満たし、それ以外のカラムの値が前回のデータと同じ場合のみ省かれます。省かれたデータはinterpolateやsample処理の際に、指定された誤差の範囲内で復元されます。
+
+ +
+
+ +
+
+ + + + +
enum GSInterpolationModeTag
+
+ +

ロウの補間方法の種別を表します。

+
時系列ロウの補間機能で使用されます。
+ + + +
Enumerator
GS_INTERPOLATION_LINEAR_OR_PREVIOUS  +

カラムに応じて線形補間または直前ロウの値による補間を行うことを示します。

+
補間機能にて指定されたカラムについては、補間対象時刻の前後時刻のロウの値により線形補間を行います。対象とするカラムの型は数値型でなければなりません。
+
補間機能にて特に指定されていないカラムについては、補間対象時刻と隣接する直前の時刻のロウの値を補間値として使用します。対象とするカラムの型に制限はありません。
+
GS_INTERPOLATION_EMPTY  +

空の値を補間値として用いることを示します。

+
ロウキーを除くすべてのロウフィールドについて、GSContainerにて定義されている空の値を補間値として用いることを示します。
+
+ +
+
+ +
+
+ + + + +
enum GSTimeOperatorTag
+
+ +

GSTimeSeriesのキー時刻に基づく、ロウの特定方法を表します。

+
別途指定する時刻と組み合わせることで、最も近い時刻のキーを持つロウなどを特定できます。該当するロウが存在しない場合の扱いは、この列挙型を使用するそれぞれの機能により異なります。
+ + + + + +
Enumerator
GS_TIME_OPERATOR_PREVIOUS  +

指定時刻と同一またはより前の時刻のロウのうち、最も新しいものを求めます。

+
GS_TIME_OPERATOR_PREVIOUS_ONLY  +

指定より前の時刻のロウのうち、最も新しいものを求めます。

+
GS_TIME_OPERATOR_NEXT  +

指定時刻同一またはより後の時刻のロウのうち、最も古いものを求めます。

+
GS_TIME_OPERATOR_NEXT_ONLY  +

指定時刻より後の時刻のロウのうち、最も古いものを求めます。

+
+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsAggregateTimeSeries (GSTimeSeriestimeSeries,
GSTimestamp start,
GSTimestamp end,
const GSCharcolumn,
GSAggregation aggregation,
GSAggregationResult ** aggregationResult 
)
+
+ +

開始・終了時刻を指定して、ロウ集合またはその特定のカラムに対し集計演算を行います。

+
columnaggregation次第で無視されることがあります。演算対象には、開始・終了時刻と合致する境界上のロウも含まれます。終了時刻より新しい開始時刻を指定した場合、すべてのロウが対象外となります。
+
Parameters
+ + + + + + + +
[in]timeSeries処理対象のGSTimeSeries
[in]start開始時刻
[in]end終了時刻
[in]column集計対象のカラム名。合計演算のように、特定のカラムを対象としない場合はNULL
[in]aggregation集計方法
[out]aggregationResult集計結果をGSAggregationResultとして格納するためのポインタ変数へのポインタ値。対象時系列の内容と集計方法によっては、NULLが設定されることもあります。詳細はGSAggregationの定義を参照してください。実行結果としてGS_RESULT_OK以外が返される場合、このポインタ値がNULL以外の値であれば、対応するポインタ変数にNULLが格納されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • 指定のコンテナの種別が時系列ではない場合
  • +
  • 指定の演算方法で許可されていない型のカラムを指定した場合
  • +
  • 対応する名前のカラムが存在しない場合
  • +
  • この処理またはトランザクションのタイムアウト、指定のコンテナの削除もしくはスキーマ変更、接続障害が発生した場合
  • +
  • ポインタ型引数にNULLが指定された場合
  • +
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsAppendTimeSeriesRow (GSTimeSeriestimeSeries,
const void * rowObj,
GSBoolexists 
)
+
+ +

GridDB上の現在時刻をロウキーとして、ロウを新規作成または更新します。

+
GridDB上の現在時刻に相当するTIMESTAMP値をロウキーとする点を除き、gsPutRowと同様に振る舞います。指定のロウオブジェクト内のロウキーは無視されます。
+
圧縮オプションが設定された状態の時系列に対しては、GridDB上の現在時刻より新しい時刻のロウが存在しない場合のみ使用できます。最も新しい時刻を持つ既存ロウの時刻が現在時刻と一致する場合、何も変更は行わず既存ロウの内容を保持します。
+
手動コミットモードの場合、対象のロウがロックされます。また、内部格納単位が同一の他のロウもロックされます。
+
Attention
指定のGSTimeSeriesにバインドされたロウオブジェクトの型と指定のロウオブジェクトの型とが一致しない場合、この処理の動作は未定義です。アクセス違反により実行プロセスが異常終了する可能性があります。
+
Parameters
+ + + + +
[in]timeSeries処理対象のGSTimeSeries
[in]rowObj新規作成または更新するロウの内容と対応するロウオブジェクト
[out]existsGridDB上の現在時刻と一致するロウが存在したかどうかを格納するための、ブール型変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、GS_FALSEが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • 指定の時系列について圧縮オプションが設定されており、現在時刻より新しい時刻のロウが存在した場合
  • +
  • この処理またはトランザクションのタイムアウト、指定のコンテナの削除もしくはスキーマ変更、接続障害が発生した場合
  • +
  • サポート範囲外の値がロウオブジェクトに含まれていた場合
  • +
  • exists以外の引数にNULLが指定された場合。また、指定のロウオブジェクトについて、文字列など可変長サイズのデータへのポインタ値にNULLが含まれていた場合
  • +
+
+
See Also
gsPutRow
+
+GSTimeSeriesPropertiesTag::compressionMethod
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsGetRowByBaseTime (GSTimeSeriestimeSeries,
GSTimestamp base,
GSTimeOperator timeOp,
void * rowObj,
GSBoolexists 
)
+
+ +

指定の時刻を基準として、関係する1つのロウを取得します。

+
Attention
指定のGSTimeSeriesにバインドされたロウオブジェクトの型と指定のロウオブジェクトの型とが一致しない場合、この処理の動作は未定義です。アクセス違反により実行プロセスが異常終了する可能性があります。
+
+文字列や配列などの可変長のデータを格納するために、指定のGSTimeSeriesと対応するGSGridStoreインスタンス上で管理される、一時的なメモリ領域を使用します。この領域は、対応するGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
+
Parameters
+ + + + + + +
[in]timeSeries処理対象のGSTimeSeries
[in]base基準となる時刻
[in]timeOp取得方法
[out]rowObj取得対象のロウの内容を格納するためのロウオブジェクト。取得対象のロウが存在しない場合、ロウオブジェクトの内容は何も変更されません。実行結果としてGS_RESULT_OK以外が返される場合、ロウオブジェクトのフィールドのうち一部またはすべてが変更されることがあります。
[out]exists条件に一致するロウが存在したかどうかを格納するためのブール型変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、GS_FALSEが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • この処理またはトランザクションのタイムアウト、指定のコンテナの削除もしくはスキーマ変更、接続障害が発生した場合
  • +
  • サポート範囲外の値が基準時刻として指定された場合
  • +
  • exists以外のポインタ型引数にNULLが指定された場合
  • +
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsInterpolateTimeSeriesRow (GSTimeSeriestimeSeries,
GSTimestamp base,
const GSCharcolumn,
void * rowObj,
GSBoolexists 
)
+
+ +

指定時刻に相当するロウオブジェクトについて、線形補間などを行い生成します。

+
一致する時系列ロウの指定のカラムの値、もしくは、前後時刻のロウの指定カラムの値を線形補間して得られた値を基にロウオブジェクトを生成します。前後時刻のロウの少なくともいずれか、もしくは、一致するロウが存在しない場合は生成されません。
+
補間対象として指定できるカラムの型は、数値型のみです。指定のカラムならびにロウキー以外のフィールドには、指定時刻と同一またはより前の時刻のロウのうち、最も新しい時刻を持つロウのフィールドの値が設定されます。
+
Attention
指定のGSTimeSeriesにバインドされたロウオブジェクトの型と指定のロウオブジェクトの型とが一致しない場合、この処理の動作は未定義です。アクセス違反により実行プロセスが異常終了する可能性があります。
+
+文字列や配列などの可変長のデータを格納するために、指定のGSTimeSeriesと対応するGSGridStoreインスタンス上で管理される、一時的なメモリ領域を使用します。この領域は、対応するGSGridStoreもしくはその関連リソースに対し、この関数もしくは同様に一時的なメモリ領域を使用する関数が再び実行されるまで有効です。無効になった領域にアクセスしようとした場合の動作は未定義です。
+
Parameters
+ + + + + + +
[in]timeSeries処理対象のGSTimeSeries
[in]base基準となる時刻
[in]column線形補間対象のカラム
[out]rowObj生成結果を格納するためのロウオブジェクト。生成のために必要とするロウが存在しない場合、ロウオブジェクトの内容は何も変更されません。実行結果としてGS_RESULT_OK以外が返される場合、ロウオブジェクトのフィールドのうち一部またはすべてが変更されることがあります。
[out]exists生成のために必要とするロウが存在したかどうかを格納するための、ブール型変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、GS_FALSEが格納されます。ポインタ値がNULLの場合、この格納処理が省略されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • 対応する名前のカラムが存在しない場合。また、サポートされていない型のカラムが指定された場合
  • +
  • この処理またはトランザクションのタイムアウト、指定のコンテナの削除もしくはスキーマ変更、接続障害が発生した場合
  • +
  • サポート範囲外の値が基準時刻として指定された場合
  • +
  • exists以外のポインタ型引数にNULLが指定された場合
  • +
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsQueryByTimeSeriesOrderedRange (GSTimeSeriestimeSeries,
const GSTimestampstart,
const GSTimestampend,
GSQueryOrder order,
GSQuery ** query 
)
+
+ +

開始時刻・終了時刻・順序を指定して、特定範囲のロウ集合を求めるクエリを作成します。

+
取得対象には、開始・終了時刻と合致する境界上のロウも含まれます。終了時刻より新しい開始時刻を指定した場合、すべてのロウが対象外となります。
+
gsFetchを通じてロウ集合を求める際、更新用ロックのオプションを有効にすることもできます。
+
Parameters
+ + + + + + +
[in]timeSeries処理対象のGSTimeSeries
[in]start開始時刻またはNULLNULLの場合、指定の時系列上の最も古いロウの時刻が開始時刻として指定されたものとみなします。
[in]end終了時刻またはNULLNULLの場合、指定の時系列上の最も新しいロウの時刻が終了時刻として指定されたものとみなします。
[in]order取得するロウ集合の時刻順序。GS_ORDER_ASCENDINGの場合は古い時刻から新しい時刻の順、GS_ORDER_DESCENDINGの場合は新しい時刻から古い時刻の順となります。
[out]queryGSQueryインスタンスを格納するためのポインタ変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、このポインタ値がNULL以外の値であれば、対応するポインタ変数にNULLが設定されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • 指定のコンテナの種別が時系列ではない場合
  • +
  • startend以外のポインタ型引数にNULLが指定された場合
  • +
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsQueryByTimeSeriesRange (GSTimeSeriestimeSeries,
GSTimestamp start,
GSTimestamp end,
GSQuery ** query 
)
+
+ +

開始時刻・終了時刻を指定して、特定範囲のロウ集合を求めるクエリを作成します。

+
取得対象には、開始・終了時刻と合致する境界上のロウも含まれます。終了時刻より新しい開始時刻を指定した場合、すべてのロウが対象外となります。要求するロウ集合は昇順、すなわち古い時刻から新しい時刻の順となります。
+
gsFetchを通じてロウ集合を求める際、更新用ロックのオプションを有効にすることもできます。
+
Parameters
+ + + + + +
[in]timeSeries処理対象のGSTimeSeries
[in]start開始時刻
[in]end終了時刻
[out]queryGSQueryインスタンスを格納するためのポインタ変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、このポインタ値がNULL以外の値であれば、対応するポインタ変数にNULLが設定されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • 指定のコンテナの種別が時系列ではない場合
  • +
  • ポインタ型引数にNULLが指定された場合
  • +
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSResult GS_API_CALL gsQueryByTimeSeriesSampling (GSTimeSeriestimeSeries,
GSTimestamp start,
GSTimestamp end,
const GSChar *const * columnSet,
size_t columnCount,
GSInterpolationMode mode,
int32_t interval,
GSTimeUnit intervalUnit,
GSQuery ** query 
)
+
+ +

特定範囲のロウ集合をサンプリングするクエリを作成します。

+
サンプリング対象の時刻は、開始時刻に対し非負整数倍のサンプリング間隔を加えた時刻のうち、終了時刻と同じかそれ以前のもののみです。終了時刻より新しい開始時刻を指定した場合、すべてのロウが対象外となります。
+
作成したクエリを実行すると、各サンプリング位置の時刻と一致するロウが存在する場合は該当ロウの値を、存在しない場合はcolumnSetmode引数の指定に従い補間された値を使用しロウ集合を生成します。個別の補間方法については、GSInterpolationModeの定義を参照してください。
+
補間のために参照する必要のあるロウが存在しない場合、該当するサンプリング時刻のロウは生成されず、該当箇所の数だけ結果件数が減少します。サンプリング間隔をより短く設定すると、補間方法次第では異なるサンプリング時刻であっても同一のロウの内容が使用される可能性が高まります。
+
gsFetchを通じてロウ集合を求める際、更新用ロックのオプションを有効にすることはできません。
+
Parameters
+ + + + + + + + + + +
[in]timeSeries処理対象のGSTimeSeries
[in]start開始時刻
[in]end終了時刻
[in]columnSetmodeに基づき特定の補間処理を適用するカラムの名前の集合。文字列ポインタの配列より構成されます。空集合の場合は、適用対象のカラムを何も指定しないことを示します。NULLの場合は、空集合を指定した場合と同様です。
[in]columnCountmodeに基づき特定の補間処理を適用するカラムの個数
[in]mode補間方法
[in]intervalサンプリング間隔。0および負の値は指定できません
[in]intervalUnitサンプリング間隔の時間単位。GS_TIME_UNIT_YEARGS_TIME_UNIT_MONTHは指定できません
[out]queryGSQueryインスタンスを格納するためのポインタ変数へのポインタ値。実行結果としてGS_RESULT_OK以外が返される場合、このポインタ値がNULL以外の値であれば、対応するポインタ変数にNULLが格納されます。
+
+
+
Returns
実行結果のコード番号。次の場合、GS_RESULT_OK以外の値を返します。
    +
  • 指定のコンテナの種別が時系列ではない場合
  • +
  • columnSet以外のポインタ型引数にNULLが指定された場合
  • +
+
+ +
+
+
+
+
+
GSTimestamp
+
+
+ + + + + + + + + + + +

+Classes

struct  GSPreciseTimestampTag
 GridDB上の高精度のTIMESTAMP型と対応する時刻型です。現バージョンではナノ秒単位までの時刻を保持します。More...
 
struct  GSTimeZoneTag
 タイムゾーン情報を表します。More...
 
struct  GSTimestampFormatOptionTag
 日時フォーマットに関するオプション情報を表します。More...
 
+ + + + + + + + + + + + + + + + + + + +

+Macros

#define GS_PRECISE_TIMESTAMP_INITIALIZER   { 0, 0 }
 GSPreciseTimestampの初期化子です。More...
 
#define GS_TIME_ZONE_INITIALIZER   { { 0 } }
 GSTimeZoneの初期化子です。More...
 
#define GS_TIMESTAMP_DEFAULT   0
 時刻1970-01-01T00:00:00Zに相当するGSTimestamp値です。More...
 
#define GS_TIMESAMP_FORMAT_OPTION_INITIALIZER   { NULL }
 GSTimestampFormatOptionの初期化子です。More...
 
#define GS_TIME_STRING_SIZE_MAX   GS_INTERNAL_TIME_STRING_SIZE_MAX
 TIMESTAMP型値の文字列表現を格納するための文字列バッファにおける、終端文字を含むバイト単位での最大サイズです。More...
 
#define GS_TIME_ZONE_STRING_SIZE_MAX   8
 GSTimeZone値の文字列表現を格納するための文字列バッファにおける、終端文字を含むバイト単位での最大サイズです。More...
 
+ + + + + + + + + + + + + + + +

+Typedefs

typedef int64_t GSTimestamp
 GridDB上の通常精度のTIMESTAMP型と対応する時刻型です。ミリ秒単位のUNIX時刻を保持します。More...
 
typedef struct
+GSPreciseTimestampTag 
GSPreciseTimestamp
 GridDB上の高精度のTIMESTAMP型と対応する時刻型です。現バージョンではナノ秒単位までの時刻を保持します。More...
 
typedef GSEnum GSTimeUnit
 
typedef struct GSTimeZoneTag GSTimeZone
 タイムゾーン情報を表します。More...
 
typedef struct
+GSTimestampFormatOptionTag 
GSTimestampFormatOption
 日時フォーマットに関するオプション情報を表します。More...
 
+ + + + +

+Enumerations

enum  GSTimeUnitTag {
+  GS_TIME_UNIT_YEAR, +GS_TIME_UNIT_MONTH, +GS_TIME_UNIT_DAY, +GS_TIME_UNIT_HOUR, +
+  GS_TIME_UNIT_MINUTE, +GS_TIME_UNIT_SECOND, +GS_TIME_UNIT_MILLISECOND +
+ }
 時系列処理で用いる時間の単位を示します。More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

GS_DLL_PUBLIC GSTimestamp
+GS_API_CALL 
gsCurrentTime ()
 現在時刻を求めます。More...
 
GS_DLL_PUBLIC int64_t GS_API_CALL gsGetTimeField (GSTimestamp timestamp, GSTimeUnit timeUnit)
 GSTimestampを構成するフィールド値の一つを取得します。More...
 
GS_DLL_PUBLIC int64_t GS_API_CALL gsGetZonedTimeField (GSTimestamp timestamp, GSTimeUnit timeUnit, const GSTimeZone *zone)
 指定のタイムゾーン設定を用い、GSTimestampを構成するフィールド値の一つを取得します。More...
 
GS_DLL_PUBLIC GSBool GS_API_CALL gsSetTimeField (GSTimestamp *timestamp, int64_t field, GSTimeUnit timeUnit)
 GSTimestampを構成するフィールド値の一つを設定します。More...
 
GS_DLL_PUBLIC GSBool GS_API_CALL gsSetZonedTimeField (GSTimestamp *timestamp, int64_t field, GSTimeUnit timeUnit, const GSTimeZone *zone)
 指定のタイムゾーン設定を用い、GSTimestampを構成するフィールド値の一つを設定します。More...
 
GS_STATIC_HEADER_FUNC_SPECIFIER
+GSTimestamp 
gsAddTime (GSTimestamp timestamp, int64_t amount, GSTimeUnit timeUnit)
 時刻に一定の値を加算します。More...
 
GS_DLL_PUBLIC GSTimestamp
+GS_API_CALL 
gsAddZonedTime (GSTimestamp timestamp, int64_t amount, GSTimeUnit timeUnit, const GSTimeZone *zone)
 指定のタイムゾーン設定を用い、時刻に一定の値を加算します。More...
 
GS_DLL_PUBLIC int64_t GS_API_CALL gsGetTimeDiff (GSTimestamp timestamp1, GSTimestamp timestamp2, GSTimeUnit timeUnit)
 二つの時刻間の差分値を求めます。More...
 
GS_DLL_PUBLIC int64_t GS_API_CALL gsGetZonedTimeDiff (GSTimestamp timestamp1, GSTimestamp timestamp2, GSTimeUnit timeUnit, const GSTimeZone *zone)
 指定のタイムゾーン設定を用い、二つの時刻間の差分値を求めます。More...
 
GS_DLL_PUBLIC size_t GS_API_CALL gsFormatTime (GSTimestamp timestamp, GSChar *strBuf, size_t bufSize)
 TQLのTIMESTAMP値表記に従い、時刻の文字列表現を求めます。More...
 
GS_DLL_PUBLIC size_t GS_API_CALL gsFormatZonedTime (GSTimestamp timestamp, GSChar *strBuf, size_t bufSize, const GSTimeZone *zone)
 指定のタイムゾーン設定を用い、TQLのTIMESTAMP値表記に従って時刻の文字列表現を求めます。More...
 
GS_DLL_PUBLIC size_t GS_API_CALL gsFormatPreciseTime (const GSPreciseTimestamp *timestamp, GSChar *strBuf, size_t bufSize, const GSTimestampFormatOption *option)
 指定のオプション設定を用い、高精度のTIMESTAMP値表記に従って時刻の文字列表現を求めます。More...
 
GS_DLL_PUBLIC GSBool GS_API_CALL gsParseTime (const GSChar *str, GSTimestamp *timestamp)
 TQLのTIMESTAMP値表記に従い、指定の文字列に対応するGSTimestamp値を求めます。More...
 
GS_DLL_PUBLIC GSBool GS_API_CALL gsParsePreciseTime (const GSChar *str, GSPreciseTimestamp *timestamp, const GSTimestampFormatOption *option)
 通常精度もしくは高精度のTIMESTAMP値表記に従い、指定の文字列に対応するGSPreciseTimestamp値を求めます。More...
 
GS_DLL_PUBLIC int64_t GS_API_CALL gsGetTimeZoneOffset (const GSTimeZone *zone, GSTimeUnit timeUnit)
 指定のタイムゾーンのオフセット値を取得します。More...
 
GS_DLL_PUBLIC GSBool GS_API_CALL gsSetTimeZoneOffset (GSTimeZone *zone, int64_t offset, GSTimeUnit timeUnit)
 指定のタイムゾーンのオフセット値を設定します。More...
 
GS_DLL_PUBLIC size_t gsFormatTimeZone (const GSTimeZone *zone, GSChar *strBuf, size_t bufSize)
 TQLのTIMESTAMP値表記に従い、タイムゾーン情報の文字列表現を求めます。More...
 
GS_DLL_PUBLIC GSBool GS_API_CALL gsParseTimeZone (const GSChar *str, GSTimeZone *zone)
 TQLのTIMESTAMP値表記に従い、指定のタイムゾーン文字列に対応するGSTimeZone値を求めます。More...
 
+

Detailed Description

+

Macro Definition Documentation

+ +
+
+ + + + +
#define GS_PRECISE_TIMESTAMP_INITIALIZER   { 0, 0 }
+
+ +

GSPreciseTimestampの初期化子です。

+
Since
5.3
+ +
+
+ +
+
+ + + + +
#define GS_TIME_STRING_SIZE_MAX   GS_INTERNAL_TIME_STRING_SIZE_MAX
+
+ +

TIMESTAMP型値の文字列表現を格納するための文字列バッファにおける、終端文字を含むバイト単位での最大サイズです。

+
See Also
gsFormatTime
+ +
+
+ +
+
+ + + + +
#define GS_TIME_ZONE_INITIALIZER   { { 0 } }
+
+ +

GSTimeZoneの初期化子です。

+
Since
4.3
+ +
+
+ +
+
+ + + + +
#define GS_TIME_ZONE_STRING_SIZE_MAX   8
+
+ +

GSTimeZone値の文字列表現を格納するための文字列バッファにおける、終端文字を含むバイト単位での最大サイズです。

+
See Also
gsFormatTimeZone
+
Since
4.3
+ +
+
+ +
+
+ + + + +
#define GS_TIMESAMP_FORMAT_OPTION_INITIALIZER   { NULL }
+
+ +

GSTimestampFormatOptionの初期化子です。

+
Since
5.3
+ +
+
+ +
+
+ + + + +
#define GS_TIMESTAMP_DEFAULT   0
+
+ +

時刻1970-01-01T00:00:00Zに相当するGSTimestamp値です。

+
Since
4.3
+ +
+
+

Typedef Documentation

+ +
+
+ + + + +
typedef struct GSPreciseTimestampTag GSPreciseTimestamp
+
+ +

GridDB上の高精度のTIMESTAMP型と対応する時刻型です。現バージョンではナノ秒単位までの時刻を保持します。

+
See Also
GS_TYPE_OPTION_TIME_MICRO
+
+GS_TYPE_OPTION_TIME_NANO
+
Since
5.3
+ +
+
+ +
+
+ + + + +
typedef int64_t GSTimestamp
+
+ +

GridDB上の通常精度のTIMESTAMP型と対応する時刻型です。ミリ秒単位のUNIX時刻を保持します。

+
See Also
GS_TYPE_OPTION_TIME_MILLI
+ +
+
+ +
+
+ +

日時フォーマットに関するオプション情報を表します。

+
Note
使用する関数によっては、オプション情報を一部またはすべて参照しない場合があります。
+
Since
5.3
+ +
+
+ +
+
+ + + + +
typedef GSEnum GSTimeUnit
+
+
See Also
GSTimeUnitTag
+ +
+
+ +
+
+ + + + +
typedef struct GSTimeZoneTag GSTimeZone
+
+ +

タイムゾーン情報を表します。

+
Since
4.3
+ +
+
+

Enumeration Type Documentation

+ +
+
+ + + + +
enum GSTimeUnitTag
+
+ +

時系列処理で用いる時間の単位を示します。

+ + + + + + + + +
Enumerator
GS_TIME_UNIT_YEAR  +

年の単位です。

+
GS_TIME_UNIT_MONTH  +

月の単位です。

+
GS_TIME_UNIT_DAY  +

日の単位です。

+
GS_TIME_UNIT_HOUR  +

時の単位です。

+
GS_TIME_UNIT_MINUTE  +

分の単位です。

+
GS_TIME_UNIT_SECOND  +

秒の単位です。

+
GS_TIME_UNIT_MILLISECOND  +

ミリ秒の単位です。

+
+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GS_STATIC_HEADER_FUNC_SPECIFIER GSTimestamp gsAddTime (GSTimestamp timestamp,
int64_t amount,
GSTimeUnit timeUnit 
)
+
+ +

時刻に一定の値を加算します。

+
amountに負の値を指定することで、指定の時刻より前の時刻を求めることができます。
+
現バージョンでは、算出の際に使用されるタイムゾーンはUTCです。
+
Parameters
+ + + + +
[in]timestamp対象とする時刻
[in]amount加算する値
[in]timeUnit加算する値の単位
+
+
+
Returns
加算後のGSTimestamp。次の場合は-1
    +
  • サポート範囲外の時刻や単位が指定された場合
  • +
  • 加算結果がサポート範囲外の時刻となりうる場合
  • +
+
+
See Also
gsAddZonedTime
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSTimestamp GS_API_CALL gsAddZonedTime (GSTimestamp timestamp,
int64_t amount,
GSTimeUnit timeUnit,
const GSTimeZonezone 
)
+
+ +

指定のタイムゾーン設定を用い、時刻に一定の値を加算します。

+
amountに負の値を指定することで、指定の時刻より前の時刻を求めることができます。
+
演算に用いる時間の単位によっては、タイムゾーン設定の影響を受けない場合があります。
+
Parameters
+ + + + + +
[in]timestamp対象とする時刻
[in]amount加算する値
[in]timeUnit加算する値の単位
[in]zoneタイムゾーン設定情報へのポインタ値。NULLの場合はgsAddTimeと同様に振る舞います。
+
+
+
Returns
加算後のGSTimestamp。次の場合は-1
    +
  • サポート範囲外の時刻や単位が指定された場合
  • +
  • 加算結果がサポート範囲外の時刻となりうる場合
  • +
  • 初期化誤りなど正しくないタイムゾーン情報が指定されたことを検知した場合
  • +
+
+
See Also
gsAddZonedTime
+
Since
4.3
+ +
+
+ +
+
+ + + + + + + +
GS_DLL_PUBLIC GSTimestamp GS_API_CALL gsCurrentTime ()
+
+ +

現在時刻を求めます。

+
Note
取得分解能はLinux/Windowsともにおおむね1msです(Windows上ではV5.8より)。
+
Returns
現在時刻に相当するGSTimestamp。内部のシステムコールに失敗した場合、-1
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC size_t GS_API_CALL gsFormatPreciseTime (const GSPreciseTimestamptimestamp,
GSCharstrBuf,
size_t bufSize,
const GSTimestampFormatOptionoption 
)
+
+ +

指定のオプション設定を用い、高精度のTIMESTAMP値表記に従って時刻の文字列表現を求めます。

+
Parameters
+ + + + + +
[in]timestamp対象とする時刻
[out]strBuf出力先の文字列バッファ。bufSizeを超えない範囲で終端文字を含む文字列を出力します。bufSize1以上であり、出力に必要とするサイズに満たない場合、終端文字をバッファ範囲内の最終位置に設定し、残りの領域に可能な限り文字列を出力します。strBufNULLまたはbufSize0の場合、文字列は出力されません。
[in]bufSize出力先の文字列バッファについての、終端文字を含んだバイト単位のサイズ
[in]optionオプション設定情報へのポインタ値。NULLの場合はgsFormatTimeと同様に振る舞います。タイムゾーンが指定された場合、指定のタイムゾーン設定を用います。
+
+
+
Returns
終端文字を含んだ、出力に必要とする文字列バッファのバイト単位の最低サイズ。ただし次の場合は、空文字列のサイズに相当する1
    +
  • サポート範囲外の時刻が指定された場合
  • +
  • 初期化誤りなど正しくないタイムゾーン情報が指定されたことを検知した場合
  • +
+
+
See Also
GS_TIME_STRING_SIZE_MAX
+
Since
5.3
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC size_t GS_API_CALL gsFormatTime (GSTimestamp timestamp,
GSCharstrBuf,
size_t bufSize 
)
+
+ +

TQLのTIMESTAMP値表記に従い、時刻の文字列表現を求めます。

+
現バージョンでは、変換の際に使用されるタイムゾーンはUTCです。
+
Parameters
+ + + + +
[in]timestamp対象とする時刻
[out]strBuf出力先の文字列バッファ。bufSizeを超えない範囲で終端文字を含む文字列を出力します。bufSize1以上であり、出力に必要とするサイズに満たない場合、終端文字をバッファ範囲内の最終位置に設定し、残りの領域に可能な限り文字列を出力します。strBufNULLまたはbufSize0の場合、文字列は出力されません。
[in]bufSize出力先の文字列バッファについての、終端文字を含んだバイト単位のサイズ
+
+
+
Returns
終端文字を含んだ、出力に必要とする文字列バッファのバイト単位の最低サイズ。ただし次の場合は、空文字列のサイズに相当する1
    +
  • サポート範囲外の時刻が指定された場合
  • +
+
+
See Also
GS_TIME_STRING_SIZE_MAX
+
+gsFormatZonedTime
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC size_t gsFormatTimeZone (const GSTimeZonezone,
GSCharstrBuf,
size_t bufSize 
)
+
+ +

TQLのTIMESTAMP値表記に従い、タイムゾーン情報の文字列表現を求めます。

+
Parameters
+ + + + +
[out]zone対象とするタイムゾーン情報
[out]strBuf出力先の文字列バッファ。bufSizeを超えない範囲で終端文字を含む文字列を出力します。bufSize1以上であり、出力に必要とするサイズに満たない場合、終端文字をバッファ範囲内の最終位置に設定し、残りの領域に可能な限り文字列を出力します。strBufNULLまたはbufSize0の場合、文字列は出力されません。
[in]bufSize出力先の文字列バッファについての、終端文字を含んだバイト単位のサイズ
+
+
+
Returns
終端文字を含んだ、出力に必要とする文字列バッファのバイト単位の最低サイズ。ただし次の場合は、空文字列のサイズに相当する1
    +
  • 初期化誤りなど正しくないタイムゾーン情報が指定されたことを検知した場合
  • +
+
+
See Also
GS_TIME_ZONE_STRING_SIZE_MAX
+
Since
4.3
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC size_t GS_API_CALL gsFormatZonedTime (GSTimestamp timestamp,
GSCharstrBuf,
size_t bufSize,
const GSTimeZonezone 
)
+
+ +

指定のタイムゾーン設定を用い、TQLのTIMESTAMP値表記に従って時刻の文字列表現を求めます。

+
Parameters
+ + + + + +
[in]timestamp対象とする時刻
[out]strBuf出力先の文字列バッファ。bufSizeを超えない範囲で終端文字を含む文字列を出力します。bufSize1以上であり、出力に必要とするサイズに満たない場合、終端文字をバッファ範囲内の最終位置に設定し、残りの領域に可能な限り文字列を出力します。strBufNULLまたはbufSize0の場合、文字列は出力されません。
[in]bufSize出力先の文字列バッファについての、終端文字を含んだバイト単位のサイズ
[in]zoneタイムゾーン設定情報へのポインタ値。NULLの場合はgsFormatTimeと同様に振る舞います。
+
+
+
Returns
終端文字を含んだ、出力に必要とする文字列バッファのバイト単位の最低サイズ。ただし次の場合は、空文字列のサイズに相当する1
    +
  • サポート範囲外の時刻が指定された場合
  • +
  • 初期化誤りなど正しくないタイムゾーン情報が指定されたことを検知した場合
  • +
+
+
See Also
GS_TIME_STRING_SIZE_MAX
+
Since
4.3
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC int64_t GS_API_CALL gsGetTimeDiff (GSTimestamp timestamp1,
GSTimestamp timestamp2,
GSTimeUnit timeUnit 
)
+
+ +

二つの時刻間の差分値を求めます。

+
timestamp1に対して、timestamp2で減じた値を求めます。
+
現バージョンでは、算出の際に使用されるタイムゾーンはUTCです。
+
Parameters
+ + + + +
[in]timestamp1対象とする一つ目の時刻
[in]timestamp2対象とする二つ目の時刻
[in]timeUnit求める差分値の単位
+
+
+
Returns
差分値。次の場合はint64_t型の値として取りうる範囲の最小値
    +
  • サポート範囲外の時刻や単位が指定された場合
  • +
+
+
See Also
gsGetZonedTimeDiff
+
Since
4.3
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC int64_t GS_API_CALL gsGetTimeField (GSTimestamp timestamp,
GSTimeUnit timeUnit 
)
+
+ +

GSTimestampを構成するフィールド値の一つを取得します。

+
現バージョンでは、取得の際に使用されるタイムゾーンはUTCです。
+
Parameters
+ + + +
[in]timestamp対象とする時刻
[in]timeUnit取得するフィールド値の単位
+
+
+
Returns
指定の条件に合致するフィールド値。次の場合は-1
    +
  • サポート範囲外の時刻や単位が指定された場合
  • +
+
+
See Also
gsGetZonedTimeField
+
Since
4.3
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC int64_t GS_API_CALL gsGetTimeZoneOffset (const GSTimeZonezone,
GSTimeUnit timeUnit 
)
+
+ +

指定のタイムゾーンのオフセット値を取得します。

+
Parameters
+ + + +
[in]zone対象とするタイムゾーン情報
[in]timeUnit求めるオフセット値の単位
+
+
+
Returns
差分値。次の場合はint64_t型の値として取りうる範囲の最小値
    +
  • サポート外の単位が指定された場合
  • +
  • 初期化誤りなど正しくないタイムゾーン情報が指定されたことを検知した場合
  • +
+
+
Since
4.3
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC int64_t GS_API_CALL gsGetZonedTimeDiff (GSTimestamp timestamp1,
GSTimestamp timestamp2,
GSTimeUnit timeUnit,
const GSTimeZonezone 
)
+
+ +

指定のタイムゾーン設定を用い、二つの時刻間の差分値を求めます。

+
timestamp1に対して、timestamp2で減じた値を求めます。
+
演算に用いる時間の単位によっては、タイムゾーン設定の影響を受けない場合があります。
+
Parameters
+ + + + + +
[in]timestamp1対象とする一つ目の時刻
[in]timestamp2対象とする二つ目の時刻
[in]timeUnit求める差分値の単位
[in]zoneタイムゾーン設定情報へのポインタ値。NULLの場合はgsGetTimeDiffと同様に振る舞います。
+
+
+
Returns
差分値。次の場合はint64_t型の値として取りうる範囲の最小値
    +
  • サポート範囲外の時刻や単位が指定された場合
  • +
  • 初期化誤りなど正しくないタイムゾーン情報が指定されたことを検知した場合
  • +
+
+
Since
4.3
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC int64_t GS_API_CALL gsGetZonedTimeField (GSTimestamp timestamp,
GSTimeUnit timeUnit,
const GSTimeZonezone 
)
+
+ +

指定のタイムゾーン設定を用い、GSTimestampを構成するフィールド値の一つを取得します。

+
演算に用いる時間の単位によっては、タイムゾーン設定の影響を受けない場合があります。
+
Parameters
+ + + + +
[in]timestamp対象とする時刻
[in]timeUnit取得するフィールド値の単位
[in]zoneタイムゾーン設定情報へのポインタ値。NULLの場合はgsGetTimeFieldと同様に振る舞います。
+
+
+
Returns
指定の条件に合致するフィールド値。次の場合は-1
    +
  • サポート範囲外の時刻や単位が指定された場合
  • +
  • 初期化誤りなど正しくないタイムゾーン情報が指定されたことを検知した場合
  • +
+
+
Since
4.3
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSBool GS_API_CALL gsParsePreciseTime (const GSCharstr,
GSPreciseTimestamptimestamp,
const GSTimestampFormatOptionoption 
)
+
+ +

通常精度もしくは高精度のTIMESTAMP値表記に従い、指定の文字列に対応するGSPreciseTimestamp値を求めます。

+
TIMESTAMP値表記に含まれるタイムゾーン設定を使用します。
+
Parameters
+ + + + +
[in]str対象とする時刻を表す文字列
[out]timestamp変換した値を格納するための変数へのポインタ値。戻り値がGS_FALSEとなる場合、このポインタ値がNULLではない限り-1が格納されます。
[in]optionオプション設定情報へのポインタ値。現バージョンでは、使用されません。
+
+
+
Returns
GSTimestamp値への変換に成功し結果を格納できたかどうか。次の場合、GS_FALSEを返します。
    +
  • 時刻の文字列表記と一致しない文字列が指定された場合
  • +
  • サポート範囲外の時刻が指定された場合
  • +
  • 引数にNULLが指定された場合
  • +
+
+
Since
5.3
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSBool GS_API_CALL gsParseTime (const GSCharstr,
GSTimestamptimestamp 
)
+
+ +

TQLのTIMESTAMP値表記に従い、指定の文字列に対応するGSTimestamp値を求めます。

+
TIMESTAMP値表記に含まれるタイムゾーン設定を使用します。
+
Parameters
+ + + +
[in]str対象とする時刻を表す文字列
[out]timestamp変換した値を格納するための変数へのポインタ値。戻り値がGS_FALSEとなる場合、このポインタ値がNULLではない限り-1が格納されます。
+
+
+
Returns
GSTimestamp値への変換に成功し結果を格納できたかどうか。次の場合、GS_FALSEを返します。
    +
  • 時刻の文字列表記と一致しない文字列が指定された場合
  • +
  • サポート範囲外の時刻が指定された場合
  • +
  • 引数にNULLが指定された場合
  • +
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSBool GS_API_CALL gsParseTimeZone (const GSCharstr,
GSTimeZonezone 
)
+
+ +

TQLのTIMESTAMP値表記に従い、指定のタイムゾーン文字列に対応するGSTimeZone値を求めます。

+
Parameters
+ + + +
[in]str対象とするタイムゾーン文字列
[out]zone変換した値を格納するための変数へのポインタ値。戻り値がGS_FALSEとなる場合、このポインタ値がNULLではない限りGS_TIME_ZONE_INITIALIZERと同一の内容の初期値が格納されます。
+
+
+
Returns
GSTimeZone値への変換に成功し結果を格納できたかどうか。次の場合、GS_FALSEを返します。
    +
  • タイムゾーン情報の文字列表記と一致しない文字列が指定された場合
  • +
  • サポート範囲外のタイムゾーンが指定された場合
  • +
  • 引数にNULLが指定された場合
  • +
+
+
Since
4.3
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSBool GS_API_CALL gsSetTimeField (GSTimestamptimestamp,
int64_t field,
GSTimeUnit timeUnit 
)
+
+ +

GSTimestampを構成するフィールド値の一つを設定します。

+
現バージョンでは、設定の際に使用されるタイムゾーンはUTCです。
+
Parameters
+ + + + +
[in,out]timestamp対象とする時刻
[in]field設定するフィールド値
[in]timeUnit設定するフィールド値の単位
+
+
+
Returns
フィールド値を設定できたかどうか。次の場合はGS_FALSE
    +
  • timestamp引数にNULLが指定された場合
  • +
  • サポート範囲外の時刻や単位、フィールド値が指定された場合
  • +
+
+
See Also
gsGetZonedTimeField
+
Since
4.3
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSBool GS_API_CALL gsSetTimeZoneOffset (GSTimeZonezone,
int64_t offset,
GSTimeUnit timeUnit 
)
+
+ +

指定のタイムゾーンのオフセット値を設定します。

+
Parameters
+ + + + +
[out]zone対象とするタイムゾーン情報
[in]offsetオフセット値
[in]timeUnitオフセット値の単位
+
+
+
Returns
オフセット値を設定できたかどうか。次の場合はGS_FALSE
    +
  • zone引数にNULLが指定された場合
  • +
  • サポート範囲外のオフセット値や単位が指定された場合
  • +
+
+
Since
4.3
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GS_DLL_PUBLIC GSBool GS_API_CALL gsSetZonedTimeField (GSTimestamptimestamp,
int64_t field,
GSTimeUnit timeUnit,
const GSTimeZonezone 
)
+
+ +

指定のタイムゾーン設定を用い、GSTimestampを構成するフィールド値の一つを設定します。

+
演算に用いる時間の単位によっては、タイムゾーン設定の影響を受けない場合があります。
+
Parameters
+ + + + + +
[in,out]timestamp対象とする時刻
[in]field設定するフィールド値
[in]timeUnit設定するフィールド値の単位
[in]zoneタイムゾーン設定情報へのポインタ値。NULLの場合はgsSetTimeFieldと同様に振る舞います。
+
+
+
Returns
フィールド値を設定できたかどうか。次の場合はGS_FALSE
    +
  • timestamp引数にNULLが指定された場合
  • +
  • サポート範囲外の時刻や単位、フィールド値が指定された場合
  • +
  • 初期化誤りなど正しくないタイムゾーン情報が指定されたことを検知した場合
  • +
+
+
Since
4.3
+ +
+
+
+
+
+
GSBindingTag Struct Reference
+
+
+ +

ロウオブジェクトとロウデータとの対応関係を表すバインディング情報です。 More...

+ +

#include <gridstore.h>

+

Detailed Description

+

ロウオブジェクトとロウデータとの対応関係を表すバインディング情報です。

+
+ +
+
+
+
GSBlobTag Struct Reference
+
+
+ +

ロウオブジェクトにおけるBLOB構造を表します。 More...

+ +

#include <gridstore.h>

+ + + + + + + + +

+Public Attributes

+size_t size
 BLOBデータのサイズです。
 
+const void * data
 BLOBデータの格納先ポインタです。
 
+

Detailed Description

+

ロウオブジェクトにおけるBLOB構造を表します。

+
+ +
+
+
+
GSCollectionPropertiesTag Struct Reference
+
+
+ +

コレクションの構成オプションを表します。 More...

+ +

#include <gridstore.h>

+

Detailed Description

+

コレクションの構成オプションを表します。

+
Note
現バージョンでは使用されておりません。
+
+ +
+
+
+
GSColumnCompressionTag Struct Reference
+
+
+ +

特定のカラムの圧縮設定を表します。 More...

+ +

#include <gridstore.h>

+ + + + + + + + + + + + + + + + + +

+Public Attributes

const GSCharcolumnName
 設定対象のカラムの名前です。More...
 
GSBool relative
 間引き圧縮における判定基準値として、相対誤差を適用するかどうかを示します。More...
 
double rate
 相対誤差あり間引き圧縮における、値がとりうる範囲を基準とした誤差境界値の比率です。More...
 
double span
 相対誤差あり間引き圧縮における、値がとりうる範囲の最大値と最小値の差です。More...
 
double width
 絶対誤差あり間引き圧縮における、誤差境界の幅です。More...
 
+

Detailed Description

+

特定のカラムの圧縮設定を表します。

+
時系列を対象とした誤差あり間引き圧縮のカラム別設定に使用します。
+

Member Data Documentation

+ +
+
+ + + + +
const GSChar* GSColumnCompressionTag::columnName
+
+ +

設定対象のカラムの名前です。

+
間引き圧縮方式(GS_COMPRESSION_HI)を選択し、次の型のカラムに対して指定した場合のみ、カラム別の圧縮設定として使用できます。 +
+ +
+
+ +
+
+ + + + +
double GSColumnCompressionTag::rate
+
+ +

相対誤差あり間引き圧縮における、値がとりうる範囲を基準とした誤差境界値の比率です。

+
値がとりうる範囲は、spanメンバと対応します。また、比率は0以上1以下でなければ、時系列を作成することができません。
+
誤差あり間引き圧縮方式(GS_COMPRESSION_HI)において、判定基準値として相対誤差を選択(GSColumnCompressionTag::relativeGS_TRUEを指定)した場合のみ有効です。
+ +
+
+ +
+
+ + + + +
GSBool GSColumnCompressionTag::relative
+
+ +

間引き圧縮における判定基準値として、相対誤差を適用するかどうかを示します。

+
間引き圧縮方式(GS_COMPRESSION_HI)以外を選択した場合は無視されます。
+ +
+
+ +
+
+ + + + +
double GSColumnCompressionTag::span
+
+ +

相対誤差あり間引き圧縮における、値がとりうる範囲の最大値と最小値の差です。

+
誤差あり間引き圧縮方式(GS_COMPRESSION_HI)において、判定基準値として相対誤差を選択(GSColumnCompressionTag::relativeGS_TRUEを指定)した場合のみ有効です。
+ +
+
+ +
+
+ + + + +
double GSColumnCompressionTag::width
+
+ +

絶対誤差あり間引き圧縮における、誤差境界の幅です。

+
誤差あり間引き圧縮方式(GS_COMPRESSION_HI)において、判定基準値として相対誤差を選択(GSColumnCompressionTag::relativeGS_TRUEを指定)した場合のみ有効です。
+ +
+
+ + +
+
+
+
GSColumnInfoTag Struct Reference
+
+
+ +

カラムのスキーマに関する情報を表します。 More...

+ +

#include <gridstore.h>

+ + + + + + + + + + + + + + +

+Public Attributes

+const GSCharname
 カラム名です。
 
+GSType type
 カラムの型、すなわち、カラムに対応する各フィールド値の型です。
 
GSIndexTypeFlags indexTypeFlags
 索引種別を示すフラグ値のビット和です。More...
 
GSTypeOption options
 カラムに関するオプション設定を示すフラグ値のビット和です。More...
 
+

Detailed Description

+

カラムのスキーマに関する情報を表します。

+

Member Data Documentation

+ +
+
+ + + + +
GSIndexTypeFlags GSColumnInfoTag::indexTypeFlags
+
+ +

索引種別を示すフラグ値のビット和です。

+
GS_INDEX_FLAG_DEFAULTは索引種別が未設定であることを示します。
+
Since
1.5
+ +
+
+ +
+
+ + + + +
GSTypeOption GSColumnInfoTag::options
+
+ +

カラムに関するオプション設定を示すフラグ値のビット和です。

+
現バージョンでは、NOT NULL制約または初期値に関連する、以下のフラグ値のみを含めることができます。 +
+
Since
3.5
+ +
+
+ + +
+
+
+
GSContainerInfoTag Struct Reference
+
+
+ +

特定のコンテナに関する情報を表します。 More...

+ +

#include <gridstore.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

+const GSCharname
 コンテナ名です。
 
+GSContainerType type
 コンテナの種別です。
 
+size_t columnCount
 カラム数です。
 
const GSColumnInfocolumnInfoList
 カラム情報のリストです。More...
 
GSBool rowKeyAssigned
 ロウキーに対応するカラムが設定されているかどうかを示す真偽値です。More...
 
GSBool columnOrderIgnorable
 カラム順序が無視できるかどうかを示す真偽値です。More...
 
const GSTimeSeriesPropertiestimeSeriesProperties
 時系列構成オプションです。More...
 
size_t triggerInfoCount
 トリガ情報のエントリ数です。More...
 
const GSTriggerInfotriggerInfoList
 トリガ情報の一覧です。More...
 
const GSChardataAffinity
 データ配置最適化のために用いられる、コンテナ間の類似性(データアフィニティ)を示す文字列です。More...
 
size_t indexInfoCount
 索引情報のエントリ数です。More...
 
const GSIndexInfoindexInfoList
 索引情報の一覧です。More...
 
size_t rowKeyColumnCount
 ロウキーを構成するカラム列についての、カラム数です。More...
 
const int32_t * rowKeyColumnList
 ロウキーを構成するカラム列についての、0から始まるカラム番号一覧です。More...
 
+

Detailed Description

+

特定のコンテナに関する情報を表します。

+

Member Data Documentation

+ +
+
+ + + + +
const GSColumnInfo* GSContainerInfoTag::columnInfoList
+
+ +

カラム情報のリストです。

+
カラム数と同一の長さのGSColumnInfoの配列です。各要素はカラムの定義順と対応します。
+ +
+
+ +
+
+ + + + +
GSBool GSContainerInfoTag::columnOrderIgnorable
+
+ +

カラム順序が無視できるかどうかを示す真偽値です。

+
See Also
gsPutContainerGeneral
+
Since
1.5
+ +
+
+ +
+
+ + + + +
const GSChar* GSContainerInfoTag::dataAffinity
+
+ +

データ配置最適化のために用いられる、コンテナ間の類似性(データアフィニティ)を示す文字列です。

+
同一クラスタノード上の同一管理領域内に格納されるコンテナについて、配置先を最適化するために使用されます。
+
データアフィニティが同一のコンテナの内容は、近接する配置先に格納される可能性が高くなります。また、解放期限が設定され、近接する配置先に格納された時系列について、登録頻度などの変更パターンが類似している場合、解放期限に到達したロウの解放処理が効率的に行われる可能性が高くなります。
+
コンテナの定義において使用できるデータアフィニティ文字列の文字種や長さには制限があります。具体的には、GridDB機能リファレンスを参照してください。ただし、文字列を設定した時点で必ずしもすべての制限を検査するとは限りません。特に記載のない限り、データアフィニティ文字列が使用される操作では、ASCIIの大文字・小文字表記の違いが区別されます。
+
値がNULLの場合、標準設定を優先することを示します。
+
Since
2.1
+ +
+
+ +
+
+ + + + +
size_t GSContainerInfoTag::indexInfoCount
+
+ +

索引情報のエントリ数です。

+
Since
3.5
+ +
+
+ +
+
+ + + + +
const GSIndexInfo* GSContainerInfoTag::indexInfoList
+
+ +

索引情報の一覧です。

+
Since
3.5
+ +
+
+ +
+
+ + + + +
GSBool GSContainerInfoTag::rowKeyAssigned
+
+ +

ロウキーに対応するカラムが設定されているかどうかを示す真偽値です。

+
現バージョンでは、コンテナが単一カラムからなるロウキーを持つ場合、対応するカラム番号は0となります。
+
任意のロウキー構成を扱うには、GSContainerInfo::rowKeyColumnListを使用します。
+ +
+
+ +
+
+ + + + +
size_t GSContainerInfoTag::rowKeyColumnCount
+
+ +

ロウキーを構成するカラム列についての、カラム数です。

+
Since
4.3
+ +
+
+ +
+
+ + + + +
const int32_t* GSContainerInfoTag::rowKeyColumnList
+
+ +

ロウキーを構成するカラム列についての、0から始まるカラム番号一覧です。

+
Since
4.3
+ +
+
+ +
+
+ + + + +
const GSTimeSeriesProperties* GSContainerInfoTag::timeSeriesProperties
+
+ +

時系列構成オプションです。

+
Since
1.5
+ +
+
+ +
+
+ + + + +
size_t GSContainerInfoTag::triggerInfoCount
+
+ +

トリガ情報のエントリ数です。

+
Since
1.5
+ +
+
+ +
+
+ + + + +
const GSTriggerInfo* GSContainerInfoTag::triggerInfoList
+
+ +

トリガ情報の一覧です。

+
Since
1.5
+ +
+
+ + +
+
+
+
GSContainerRowEntryTag Struct Reference
+
+
+ +

複数のコンテナの複数のロウを一括して操作する場合に用いる、コンテナ別のロウ内容エントリです。 More...

+ +

#include <gridstore.h>

+ + + + + + + + + + + +

+Public Attributes

+const GSCharcontainerName
 コンテナ名です。
 
void *const * rowList
 ロウオブジェクトへのアドレスのリストです。More...
 
+size_t rowCount
 ロウオブジェクトの個数です。
 
+

Detailed Description

+

複数のコンテナの複数のロウを一括して操作する場合に用いる、コンテナ別のロウ内容エントリです。

+
Since
1.5
+

Member Data Documentation

+ +
+
+ + + + +
void* const* GSContainerRowEntryTag::rowList
+
+ +

ロウオブジェクトへのアドレスのリストです。

+
現バージョンでは、GSRowのアドレスのみを要素として含めることができます。
+ +
+
+ + +
+
+
+
GSIndexInfoTag Struct Reference
+
+
+ +

索引の設定内容を表します。 More...

+ +

#include <gridstore.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

const GSCharname
 索引名です。More...
 
GSIndexTypeFlags type
 索引種別を示すフラグ値です。More...
 
int32_t column
 索引に対応するカラムのカラム番号です。More...
 
const GSCharcolumnName
 索引に対応するカラムのカラム名です。More...
 
size_t columnCount
 索引に対応する任意個数のカラムのカラム番号の列のカラム数です。More...
 
const int32_t * columnList
 索引に対応する任意個数のカラムのカラム番号の列です。More...
 
size_t columnNameCount
 索引に対応する任意個数のカラムのカラム名の列のカラム数です。More...
 
const GSChar *const * columnNameList
 索引に対応する任意個数のカラムのカラム名の列です。More...
 
+

Detailed Description

+

索引の設定内容を表します。

+
Since
3.5
+

Member Data Documentation

+ +
+
+ + + + +
int32_t GSIndexInfoTag::column
+
+ +

索引に対応するカラムのカラム番号です。

+
単一のカラムからなるカラム番号の列が設定された場合と同等であるとみなされます。
+
Since
3.5
+ +
+
+ +
+
+ + + + +
size_t GSIndexInfoTag::columnCount
+
+ +

索引に対応する任意個数のカラムのカラム番号の列のカラム数です。

+
Since
4.3
+ +
+
+ +
+
+ + + + +
const int32_t* GSIndexInfoTag::columnList
+
+ +

索引に対応する任意個数のカラムのカラム番号の列です。

+
Since
4.3
+ +
+
+ +
+
+ + + + +
const GSChar* GSIndexInfoTag::columnName
+
+ +

索引に対応するカラムのカラム名です。

+
単一のカラムからなるカラム名の列が設定された場合と同等であるとみなされます。
+
Since
3.5
+ +
+
+ +
+
+ + + + +
size_t GSIndexInfoTag::columnNameCount
+
+ +

索引に対応する任意個数のカラムのカラム名の列のカラム数です。

+
Since
4.3
+ +
+
+ +
+
+ + + + +
const GSChar* const* GSIndexInfoTag::columnNameList
+
+ +

索引に対応する任意個数のカラムのカラム名の列です。

+
Since
4.3
+ +
+
+ +
+
+ + + + +
const GSChar* GSIndexInfoTag::name
+
+ +

索引名です。

+
Since
3.5
+ +
+
+ +
+
+ + + + +
GSIndexTypeFlags GSIndexInfoTag::type
+
+ +

索引種別を示すフラグ値です。

+
デフォルトまたは任意個数の索引種別を含めることができます。複数個の索引種別を含める場合は、各種別のフラグ値のビット和により表現します。コンテナ情報の一部として得られた索引情報では、デフォルトを除くいずれか一つの索引種別のみが設定されます。
+
Since
3.5
+ +
+
+ + +
+
+
+
GSPreciseTimestampTag Struct Reference
+
+
+ +

GridDB上の高精度のTIMESTAMP型と対応する時刻型です。現バージョンではナノ秒単位までの時刻を保持します。 More...

+ +

#include <gridstore.h>

+ + + + + + + + +

+Public Attributes

+GSTimestamp base
 通常精度のTIMESTAMP値を表します。
 
uint32_t nanos
 ミリ秒未満の桁の値について、ナノ秒単位で表します。More...
 
+

Detailed Description

+

GridDB上の高精度のTIMESTAMP型と対応する時刻型です。現バージョンではナノ秒単位までの時刻を保持します。

+
See Also
GS_TYPE_OPTION_TIME_MICRO
+
+GS_TYPE_OPTION_TIME_NANO
+
Since
5.3
+

Member Data Documentation

+ +
+
+ + + + +
uint32_t GSPreciseTimestampTag::nanos
+
+ +

ミリ秒未満の桁の値について、ナノ秒単位で表します。

+
有効な値の範囲は0から999999までです。
+ +
+
+ + +
+
+
+
GSPropertyEntryTag Struct Reference
+
+
+ +

プロパティの構成エントリです。 More...

+ +

#include <gridstore.h>

+ + + + + + + + +

+Public Attributes

+const GSCharname
 プロパティエントリの名前です。
 
+const GSCharvalue
 プロパティエントリの値です。
 
+

Detailed Description

+

プロパティの構成エントリです。

+
+ +
+
+
+
GSQueryAnalysisEntryTag Struct Reference
+
+
+ +

クエリプランならびにクエリ処理解析結果を構成する一連の情報の一つを示します。 More...

+ +

#include <gridstore.h>

+ + + + + + + + + + + + + + + + + + + + +

+Public Attributes

int32_t id
 一連のエントリ列における、このエントリの位置を示すIDです。More...
 
int32_t depth
 他のエントリとの関係を表すための、深さです。More...
 
const GSChartype
 このエントリが示す情報の種別です。More...
 
const GSCharvalueType
 このエントリが示す情報に対応付けられた値の型名です。More...
 
+const GSCharvalue
 このエントリが示す情報に対応付けられた値の文字列表現です。
 
+const GSCharstatement
 このエントリが示す情報に対応するTQL文の一部です。
 
+

Detailed Description

+

クエリプランならびにクエリ処理解析結果を構成する一連の情報の一つを示します。

+
TQLのEXPLAIN文ならびEXPLAIN ANALYZE文の実行結果を保持するために使用します。1つの実行結果は、このエントリの列により表現されます。
+

Member Data Documentation

+ +
+
+ + + + +
int32_t GSQueryAnalysisEntryTag::depth
+
+ +

他のエントリとの関係を表すための、深さです。

+
このエントリより小さな値のIDを順にたどり、このエントリの深さより1だけ浅いエントリが存在した場合、このエントリは、該当するエントリの内容をより詳しく説明するためのものであることを意味します。
+ +
+
+ +
+
+ + + + +
int32_t GSQueryAnalysisEntryTag::id
+
+ +

一連のエントリ列における、このエントリの位置を示すIDです。

+
TQLを実行した結果を受け取る場合、IDは1から順に割り当てられます。
+ +
+
+ +
+
+ + + + +
const GSChar* GSQueryAnalysisEntryTag::type
+
+ +

このエントリが示す情報の種別です。

+
実行時間といった解析結果の種別、クエリプランの構成要素の種別などを表します。
+ +
+
+ +
+
+ + + + +
const GSChar* GSQueryAnalysisEntryTag::valueType
+
+ +

このエントリが示す情報に対応付けられた値の型名です。

+
実行時間といった解析結果などに対応する値の型名です。型の名称は、TQLで定義された基本型のうち次のものです。
    +
  • STRING
  • +
  • BOOL
  • +
  • BYTE
  • +
  • SHORT
  • +
  • INTEGER
  • +
  • LONG
  • +
  • FLOAT
  • +
  • DOUBLE
  • +
+
+ +
+
+ + +
+
+
+
GSRowKeyPredicateEntryTag Struct Reference
+
+
+ +

複数のコンテナに対する取得条件を表すための、コンテナ別の合致条件エントリです。 More...

+ +

#include <gridstore.h>

+ + + + + + + + +

+Public Attributes

+const GSCharcontainerName
 コンテナ名です。
 
+GSRowKeyPredicatepredicate
 コンテナのロウキーについての合致条件です。
 
+

Detailed Description

+

複数のコンテナに対する取得条件を表すための、コンテナ別の合致条件エントリです。

+
Since
1.5
+
+ +
+
+
+
GSTimeSeriesPropertiesTag Struct Reference
+
+
+ +

時系列を新規作成または変更する際に使用される、オプションの構成情報を表します。 More...

+ +

#include <gridstore.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

int32_t rowExpirationTime
 ロウの有効期限の基準となる経過期間です。More...
 
GSTimeUnit rowExpirationTimeUnit
 ロウの有効期限の基準とする経過時間の単位です。More...
 
int32_t compressionWindowSize
 間引き圧縮において連続して間引きされるロウの最大期間です。More...
 
GSTimeUnit compressionWindowSizeUnit
 間引き圧縮において連続して間引きされるロウの最大期間の単位です。More...
 
+GSCompressionMethod compressionMethod
 時系列圧縮方式の種別です。
 
size_t compressionListSize
 カラム別圧縮設定(compressionList)のエントリ数です。More...
 
GSColumnCompressioncompressionList
 カラム別の圧縮設定です。More...
 
int32_t expirationDivisionCount
 期限に到達したロウデータの解放単位と対応する、有効期間に対しての分割数です。More...
 
+

Detailed Description

+

時系列を新規作成または変更する際に使用される、オプションの構成情報を表します。

+
カラム名の表記、もしくは、個別に圧縮設定できるカラム数の上限などの内容の妥当性について、必ずしも検査するとは限りません。
+

Member Data Documentation

+ +
+
+ + + + +
GSColumnCompression* GSTimeSeriesPropertiesTag::compressionList
+
+ +

カラム別の圧縮設定です。

+
エントリ数が0の場合、時系列を新規作成または更新する際に無視されます。
+ +
+
+ +
+
+ + + + +
size_t GSTimeSeriesPropertiesTag::compressionListSize
+
+ +

カラム別圧縮設定(compressionList)のエントリ数です。

+
1つの時系列に対してパラメータ設定できるカラムの上限数については、GridDB機能リファレンスを参照してください。上限を超えたオプションを指定して時系列を作成することはできません。
+ +
+
+ +
+
+ + + + +
int32_t GSTimeSeriesPropertiesTag::compressionWindowSize
+
+ +

間引き圧縮において連続して間引きされるロウの最大期間です。

+
この期間が設定された時系列のロウについて、前方のロウと指定の期間以上時刻が離れていた場合、間引き圧縮として間引き可能な条件を満たしていたとしても、間引かれなくなります。
+
時系列圧縮方式としてGS_COMPRESSION_NOが設定されていた場合、この期間の設定は無視されます。
+
時系列圧縮方式としてGS_COMPRESSION_HIまたはGS_COMPRESSION_SSが設定されており、この期間として0以下の値が設定された場合、TIMESTAMP型の取りうる値の範囲全体が期間として設定されたとみなされます。
+
前方のロウと指定の期間以上時刻が離れておらず、かつ、間引き圧縮として間引き可能な条件を満たしていたとしても、格納先の内部の配置などによっては間引かれない場合があります。
+ +
+
+ +
+
+ + + + +
GSTimeUnit GSTimeSeriesPropertiesTag::compressionWindowSizeUnit
+
+ +

間引き圧縮において連続して間引きされるロウの最大期間の単位です。

+
最大期間の値が明示的に設定されていた場合、GS_TIME_UNIT_YEARまたはGS_TIME_UNIT_MONTHが設定されたオプションを指定して、時系列を作成することはできません。
+ +
+
+ +
+
+ + + + +
int32_t GSTimeSeriesPropertiesTag::expirationDivisionCount
+
+ +

期限に到達したロウデータの解放単位と対応する、有効期間に対しての分割数です。

+
分割数を設定すると、期限に到達したロウデータの管理領域を解放するための条件を制御できます。期限に到達したロウデータが分割数に相当する期間だけ集まった時点で解放しようとします。
+
分割数の上限については、GridDB機能リファレンスを参照してください。上限を超えたオプションを指定して時系列を作成することはできません。
+
値が負の場合、分割数が設定されていないことを示します。0が設定されたオプションを指定して時系列を作成することはできません。
+
ロウの有効期限の基準となる経過期間の設定がない場合、この分割数の設定は無視されます。一方、ロウの有効期限の基準となる経過期間の設定がある場合にこの分割数の設定を省略すると、作成される時系列にはGridDBクラスタ上のデフォルトの分割数が設定されます。
+
Since
2.0
+ +
+
+ +
+
+ + + + +
int32_t GSTimeSeriesPropertiesTag::rowExpirationTime
+
+ +

ロウの有効期限の基準となる経過期間です。

+
ロウの有効期限の時刻は、ロウキーの時刻から指定の経過期間を加算することで求まります。有効期限の時刻がGridDB上の現在時刻よりも古いロウは、有効期限の切れたロウとみなされます。期限切れのロウは、検索や更新といったロウ操作の対象から外れ、存在しないものとみなされます。対応するGridDB上の内部データは、随時削除されます。
+
Attention
有効期限超過の判定に使用される現在時刻は、GridDBの各ノードの実行環境に依存します。したがって、ネットワークの遅延や実行環境の時刻設定のずれなどにより、このプロセスの実行環境の現在時刻より前に期限切れ前のロウにアクセスできなくなる場合や、この現在時刻より後に期限切れロウにアクセスできる場合があります。意図しないロウの喪失を避けるために、最低限必要な期間よりも大きな値を設定することを推奨します。
+
作成済みの時系列の設定を変更することはできません。
+
値が負の場合、有効期限はないものとみなされ、明示的に削除操作を行わない限りロウが削除されなくなります。0が設定されたオプションを指定して時系列を作成することはできません。
+ +
+
+ +
+
+ + + + +
GSTimeUnit GSTimeSeriesPropertiesTag::rowExpirationTimeUnit
+
+ +

ロウの有効期限の基準とする経過時間の単位です。

+
有効期限の期間値が設定されていた場合、GS_TIME_UNIT_YEARまたはGS_TIME_UNIT_MONTHが設定されたオプションを指定して、時系列を作成することはできません。
+ +
+
+ + +
+
+
+
GSTimeZoneTag Struct Reference
+
+
+ +

タイムゾーン情報を表します。 More...

+ +

#include <gridstore.h>

+

Detailed Description

+

タイムゾーン情報を表します。

+
Since
4.3
+
+ +
+
+
+
GSTimestampFormatOptionTag Struct Reference
+
+
+ +

日時フォーマットに関するオプション情報を表します。 More...

+ +

#include <gridstore.h>

+ + + + + +

+Public Attributes

const GSTimeZonetimeZone
 日時フォーマットに用いるタイムゾーンのオプションです。More...
 
+

Detailed Description

+

日時フォーマットに関するオプション情報を表します。

+
Note
使用する関数によっては、オプション情報を一部またはすべて参照しない場合があります。
+
Since
5.3
+

Member Data Documentation

+ +
+
+ + + + +
const GSTimeZone* GSTimestampFormatOptionTag::timeZone
+
+ +

日時フォーマットに用いるタイムゾーンのオプションです。

+
NULLの場合、タイムゾーンが指定されなかったものとみなされます。
+ +
+
+ + +
+
+
+
GSTriggerInfoTag Struct Reference
+
+
+ +

トリガに関する情報を表します。 More...

+ +

#include <gridstore.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

+const GSCharname
 トリガ名です。
 
+GSTriggerType type
 トリガ種別です。
 
+const GSCharuri
 通知先URIです。
 
+GSTriggerEventTypeFlags eventTypeFlags
 監視対象とする更新操作種別です。
 
+const GSChar *const * columnSet
 通知対象とするカラム名の集合です。
 
+size_t columnCount
 通知対象とするカラム名の数です。
 
+const GSCharjmsDestinationType
 JMS通知で使用するJMSデスティネーション種別です。
 
+const GSCharjmsDestinationName
 JMS通知で使用するJMSデスティネーション名です。
 
+const GSCharuser
 通知先サーバに接続する際のユーザ名です。
 
+const GSCharpassword
 通知先サーバに接続する際のパスワードです。
 
+

Detailed Description

+

トリガに関する情報を表します。

+
Since
1.5
+
+ +
+
+
+
GSValueTag Union Reference
+
+
+ +

ロウフィールドに格納できるいずれかの型の値です。 More...

+ +

#include <gridstore.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

+const GSCharasString
 STRING型のロウフィールドに対応する値です。
 
+GSBool asBool
 BOOL型のロウフィールドに対応する値です。
 
+int8_t asByte
 BYTE型のロウフィールドに対応する値です。
 
+int16_t asShort
 SHORT型のロウフィールドに対応する値です。
 
+int32_t asInteger
 INTEGER型のロウフィールドに対応する値です。
 
+int64_t asLong
 LONG型のロウフィールドに対応する値です。
 
+float asFloat
 FLOAT型のロウフィールドに対応する値です。
 
+double asDouble
 DOUBLE型のロウフィールドに対応する値です。
 
GSTimestamp asTimestamp
 通常精度のTIMESTAMP型のロウフィールドに対応する値です。More...
 
GSPreciseTimestamp asPreciseTimestamp
 高精度のTIMESTAMP型のロウフィールドに対応する値です。More...
 
+const GSCharasGeometry
 GEOMETRY型のロウフィールドに対応する値です。
 
+GSBlob asBlob
 BLOB型のロウフィールドに対応する値です。
 
+struct {
   size_t   length
 配列の要素数です。
 
   union {
      const void *   data
 配列の要素列へのアドレスです。
 
      const GSChar *const *   asString
 STRING型配列の要素列へのアドレスです。
 
      const GSBool *   asBool
 BOOL型配列の要素列へのアドレスです。
 
      const int8_t *   asByte
 BYTE型配列の要素列へのアドレスです。
 
      const int16_t *   asShort
 SHORT型配列の要素列へのアドレスです。
 
      const int32_t *   asInteger
 INTEGER型配列の要素列へのアドレスです。
 
      const int64_t *   asLong
 LONG型配列の要素列へのアドレスです。
 
      const float *   asFloat
 FLOAT型配列の要素列へのアドレスです。
 
      const double *   asDouble
 DOUBLE型配列の要素列へのアドレスです。
 
      const GSTimestamp *   asTimestamp
 TIMESTAMP型配列の要素列へのアドレスです。
 
   }   elements
 配列の要素です。
 
asArray
 配列型のロウフィールドに対応する値です。
 
+

Detailed Description

+

ロウフィールドに格納できるいずれかの型の値です。

+
Since
1.5
+

Member Data Documentation

+ +
+
+ + + + +
GSPreciseTimestamp GSValueTag::asPreciseTimestamp
+
+ +

高精度のTIMESTAMP型のロウフィールドに対応する値です。

+
GSValueを用いてフィールド値を設定・取得する場合、値の型はGS_TYPE_PRECISE_TIMESTAMPによって識別します。
+
Since
5.3
+ +
+
+ +
+
+ + + + +
GSTimestamp GSValueTag::asTimestamp
+
+ +

通常精度のTIMESTAMP型のロウフィールドに対応する値です。

+
GSValueを用いてフィールド値を設定・取得する場合、値の型はGS_TYPE_TIMESTAMPによって識別します。
+ +
+
+ + +
+
+ + +
+ +
+ +
+

1.2 APIサンプル

+
+ + + +
+ +
+

1.2.1 基本: コレクション操作のサンプル

+
#include "gridstore.h"
+#include <stdlib.h>
+#include <stdio.h>
+
+typedef struct {
+	const GSChar *name;
+	GSBool status;
+	uint64_t count;
+	const int8_t *lob;
+	size_t lobSize;
+} Person;
+
+GS_STRUCT_BINDING(Person,
+	GS_STRUCT_BINDING_KEY(name, GS_TYPE_STRING)
+	GS_STRUCT_BINDING_ELEMENT(status, GS_TYPE_BOOL)
+	GS_STRUCT_BINDING_ELEMENT(count, GS_TYPE_LONG)
+	GS_STRUCT_BINDING_ARRAY(lob, lobSize, GS_TYPE_BYTE));
+
+// コレクションデータの操作
+int sample1(const char *args[5]) {
+	static const int8_t personLob[] = { 65, 66, 67, 68, 69, 70, 71, 72, 73, 74 };
+	static const GSBool update = GS_TRUE;
+
+	GSGridStore *store;
+	GSCollection *col;
+	GSQuery *query;
+	GSRowSet *rs;
+	Person person;
+	GSResult ret;
+
+	const GSPropertyEntry props[] = {
+			{ "notificationAddress", args[0] },
+			{ "notificationPort", args[1] },
+			{ "clusterName", args[2] },
+			{ "user", args[3] },
+			{ "password", args[4] } };
+	const size_t propCount = sizeof(props) / sizeof(*props);
+
+	// GridStoreインスタンスの取得
+	gsGetGridStore(gsGetDefaultFactory(), props, propCount, &store);
+
+	// コレクションの作成
+	gsPutCollection(store, "col01",
+			GS_GET_STRUCT_BINDING(Person), NULL, GS_FALSE, &col);
+
+	// カラムに索引を設定
+	gsCreateIndex(col, "count", GS_INDEX_FLAG_DEFAULT);
+
+	// 自動コミットモードをオフ
+	gsSetAutoCommit(col, GS_FALSE);
+
+	// Rowのデータを用意
+	person.name = "name01";
+	person.status = GS_FALSE;
+	person.count = 1;
+	person.lob = personLob;
+	person.lobSize = sizeof(personLob);
+
+	// KV形式でRowを操作: RowKeyは"name01"
+	gsPutRow(col, NULL, &person, NULL);	// 登録
+	gsGetRowForUpdate(col, &person.name, &person, NULL);	// 取得(更新用にロック)
+	gsDeleteRow(col, &person.name, NULL);	// 削除
+
+	// KV形式でRowを操作: RowKeyは"name02"
+	gsPutRowByString(col, "name02", &person, NULL);	// 登録(RowKeyを指定)
+
+	// トランザクションの確定(ロック解除)
+	gsCommit(col);
+
+	// コレクション内のRowを検索(クエリ使用)
+	gsQuery(col, "select * where name = 'name02'", &query);
+
+	// 検索したRowの取得と更新
+	gsFetch(query, update, &rs);
+	while (gsHasNextRow(rs)) {
+		size_t i;
+
+		// 検索したRowの更新
+		gsGetNextRow(rs, &person);
+		person.count += 1;
+		ret = gsUpdateCurrentRow(rs, &person);
+		if (!GS_SUCCEEDED(ret)) break;
+
+		printf("Person:");
+		printf(" name=%s", person.name);
+		printf(" status=%s", person.status ? "true" : "false");
+		printf(" count=%d", (int) person.count);
+		printf(" lob=[");
+		for (i = 0; i < person.lobSize; i++) {
+			if (i > 0) printf(", ");
+			printf("%d", (int) person.lob[i]);
+		}
+		printf("]\n");
+	}
+
+	// トランザクションの確定
+	ret = gsCommit(col);
+
+	// リソースの解放
+	gsCloseGridStore(&store, GS_TRUE);
+
+	return (GS_SUCCEEDED(ret) ? EXIT_SUCCESS : EXIT_FAILURE);
+}
+
+ + +
+ +
+ +
+

1.2.2 基本: 時系列操作のサンプル ― 登録・範囲取得

+
#include "gridstore.h"
+#include <stdlib.h>
+#include <stdio.h>
+
+typedef struct {
+	GSTimestamp timestamp;
+	GSBool active;
+	double voltage;
+} Point;
+
+GS_STRUCT_BINDING(Point,
+	GS_STRUCT_BINDING_KEY(timestamp, GS_TYPE_TIMESTAMP)
+	GS_STRUCT_BINDING_ELEMENT(active, GS_TYPE_BOOL)
+	GS_STRUCT_BINDING_ELEMENT(voltage, GS_TYPE_DOUBLE));
+
+// 時系列データの登録と範囲取得
+int sample2(const char *args[5]) {
+	GSGridStore *store;
+	GSTimeSeries *ts;
+	Point point;
+	GSTimestamp now;
+	GSTimestamp before;
+	GSQuery *query;
+	GSRowSet *rs;
+	GSResult ret = !GS_RESULT_OK;
+
+	const GSPropertyEntry props[] = {
+			{ "notificationAddress", args[0] },
+			{ "notificationPort", args[1] },
+			{ "clusterName", args[2] },
+			{ "user", args[3] },
+			{ "password", args[4] } };
+	const size_t propCount = sizeof(props) / sizeof(*props);
+
+	// GridStoreインスタンスの取得
+	gsGetGridStore(gsGetDefaultFactory(), props, propCount, &store);
+
+	// 時系列の作成 (既存の場合は取得のみ)
+	gsPutTimeSeries(store, "point01",
+			GS_GET_STRUCT_BINDING(Point), NULL, GS_FALSE, &ts);
+
+	// 時系列要素のデータを用意
+	point.active = GS_FALSE;
+	point.voltage = 100;
+
+	// 時系列要素の登録(グリッドストア側で時刻設定)
+	gsAppendTimeSeriesRow(ts, &point, NULL);
+
+	// 指定区間の時系列の取得: 6時間前から直近まで
+	now = gsCurrentTime();
+	before = gsAddTime(now, -6, GS_TIME_UNIT_HOUR);
+
+	gsQueryByTimeSeriesRange(ts, before, now, &query);
+	ret = gsFetch(query, GS_FALSE, &rs);
+	while (gsHasNextRow(rs)) {
+		GSChar timeStr[GS_TIME_STRING_SIZE_MAX];
+
+		ret = gsGetNextRow(rs, &point);
+		if (!GS_SUCCEEDED(ret)) break;
+
+		gsFormatTime(point.timestamp, timeStr, sizeof(timeStr));
+		printf("Time=%s", timeStr);
+		printf(" Active=%s", point.active ? "true" : "false");
+		printf(" Voltage=%.1lf\n", point.voltage);
+	}
+
+	// リソースの解放
+	gsCloseGridStore(&store, GS_TRUE);
+
+	return (GS_SUCCEEDED(ret) ? EXIT_SUCCESS : EXIT_FAILURE);
+}
+
+ + +
+ +
+ +
+

1.2.3 基本: 時系列操作のサンプル ― 検索・集計

+
#include "gridstore.h"
+#include <stdlib.h>
+#include <stdio.h>
+
+typedef struct {
+	GSTimestamp timestamp;
+	GSBool active;
+	double voltage;
+} Point;
+
+GS_STRUCT_BINDING(Point,
+	GS_STRUCT_BINDING_KEY(timestamp, GS_TYPE_TIMESTAMP)
+	GS_STRUCT_BINDING_ELEMENT(active, GS_TYPE_BOOL)
+	GS_STRUCT_BINDING_ELEMENT(voltage, GS_TYPE_DOUBLE));
+
+// 時系列データの検索と集計
+int sample3(const char *args[5]) {
+	GSGridStore *store;
+	GSTimeSeries *ts;
+	GSQuery *query;
+	GSRowSet *rs;
+	GSResult ret = !GS_RESULT_OK;
+
+	// 読み取りのみなので、一貫性レベルを緩和(デフォルトはIMMEDIATE)
+	const GSPropertyEntry props[] = {
+			{ "notificationAddress", args[0] },
+			{ "notificationPort", args[1] },
+			{ "clusterName", args[2] },
+			{ "user", args[3] },
+			{ "password", args[4] },
+			{ "consistency", "EVENTUAL" } };
+	const size_t propCount = sizeof(props) / sizeof(*props);
+
+	// GridStoreインスタンスの取得
+	gsGetGridStore(gsGetDefaultFactory(), props, propCount, &store);
+
+	// 時系列の取得(既存の場合は取得のみ)
+	// ※sample2と同じPoint構造体を使用
+	gsGetTimeSeries(store, "point01", GS_GET_STRUCT_BINDING(Point), &ts);
+
+	// 停止中にもかかわらず電圧が基準値以上の箇所を検索
+	gsQuery(ts,
+			"select * from point01"
+			" where not active and voltage > 50", &query);
+	gsFetch(query, GS_FALSE, &rs);
+
+	while (gsHasNextRow(rs)) {
+		// 各異常ポイントについて調査
+
+		GSTimestamp hot;
+		Point hotPoint;
+		GSTimestamp start;
+		Point startPoint;
+		GSTimestamp end;
+		GSAggregationResult *avg;
+		double avgValue;
+		GSChar hotStr[GS_TIME_STRING_SIZE_MAX];
+
+		ret = gsGetNextRow(rs, &hotPoint);
+		if (!GS_SUCCEEDED(ret)) break;
+		hot = hotPoint.timestamp;
+
+		// 10分前付近のデータを取得
+		start = gsAddTime(hot, -10, GS_TIME_UNIT_MINUTE);
+		gsGetRowByBaseTime(
+				ts, start, GS_TIME_OPERATOR_NEXT, &startPoint, NULL);
+
+		// 前後10分間の平均値を計算
+		end = gsAddTime(hot, 10, GS_TIME_UNIT_MINUTE);
+		gsAggregateTimeSeries(
+				ts, start, end, "voltage", GS_AGGREGATION_AVERAGE, &avg);
+
+		ret = gsGetAggregationValueAsDouble(avg, &avgValue, NULL);
+		if (!GS_SUCCEEDED(ret)) break;
+
+		gsFormatTime(hot, hotStr, sizeof(hotStr));
+
+		printf("[Alert] %s", hotStr);
+		printf(" start=%.1lf", startPoint.voltage);
+		printf(" hot=%.1lf", hotPoint.voltage);
+		printf(" avg=%.1lf\n", avgValue);
+	}
+
+	// リソースの解放
+	gsCloseGridStore(&store, GS_TRUE);
+
+	return (GS_SUCCEEDED(ret) ? EXIT_SUCCESS : EXIT_FAILURE);
+}
+
+ + +
+ +
+ +
+

1.2.4 応用: コレクション操作のサンプル ― コンテナ情報を用いてスキーマ定義

+
#include "gridstore.h"
+#include <stdlib.h>
+#include <stdio.h>
+
+// コンテナ情報を用いてスキーマ定義
+int sample4(const char *args[5]) {
+	static const int8_t personLob[] = { 65, 66, 67, 68, 69, 70, 71, 72, 73, 74 };
+	static const GSBool update = GS_TRUE;
+
+	GSGridStore *store;
+	GSContainer *container;
+	GSContainerInfo info = GS_CONTAINER_INFO_INITIALIZER;
+	GSColumnInfo columnInfo = GS_COLUMN_INFO_INITIALIZER;
+	GSColumnInfo columnInfoList[4];
+	GSRow *row;
+	GSQuery *query;
+	GSRowSet *rs;
+	GSResult ret;
+
+	const GSPropertyEntry props[] = {
+			{ "notificationAddress", args[0] },
+			{ "notificationPort", args[1] },
+			{ "clusterName", args[2] },
+			{ "user", args[3] },
+			{ "password", args[4] } };
+	const size_t propCount = sizeof(props) / sizeof(*props);
+
+	// GridStoreインスタンスの取得
+	gsGetGridStore(gsGetDefaultFactory(), props, propCount, &store);
+
+	// コンテナ情報を作成
+	columnInfo.name = "name";
+	columnInfo.type = GS_TYPE_STRING;
+	columnInfoList[0] = columnInfo;
+
+	columnInfo.name = "status";
+	columnInfo.type = GS_TYPE_BOOL;
+	columnInfoList[1] = columnInfo;
+
+	columnInfo.name = "count";
+	columnInfo.type = GS_TYPE_LONG;
+	columnInfoList[2] = columnInfo;
+
+	columnInfo.name = "lob";
+	columnInfo.type = GS_TYPE_BYTE_ARRAY;
+	columnInfoList[3] = columnInfo;
+
+	info.type = GS_CONTAINER_COLLECTION;
+	info.name = "col01";
+	info.columnCount = sizeof(columnInfoList) / sizeof(*columnInfoList);
+	info.columnInfoList = columnInfoList;
+	info.rowKeyAssigned = GS_TRUE;
+
+	// コレクションの作成
+	gsPutContainerGeneral(store, NULL, &info, GS_FALSE, &container);
+
+	// カラムに索引を設定
+	gsCreateIndex(container, "count", GS_INDEX_FLAG_DEFAULT);
+
+	// 自動コミットモードをオフ
+	gsSetAutoCommit(container, GS_FALSE);
+
+	// Rowのデータを用意
+	{
+		const GSChar *name = "name01";
+		GSBool status = GS_FALSE;
+		int64_t count = 1;
+		const int8_t *lobData = personLob;
+		size_t lobSize = sizeof(personLob);
+
+		gsCreateRowByStore(store, &info, &row);
+		gsSetRowFieldByString(row, 0, name);
+		gsSetRowFieldByBool(row, 1, status);
+		gsSetRowFieldByLong(row, 2, count);
+		gsSetRowFieldByByteArray(row, 3, lobData, lobSize);
+	}
+
+	// KV形式でRowを操作: RowKeyは"name01"
+	gsPutRow(container, NULL, row, NULL);	// 登録
+	gsGetRowByString(container, "name01", row, update, NULL);	// 取得(更新用にロック)
+	gsDeleteRowByString(container, "name01", NULL);	// 削除
+
+	// KV形式でRowを操作: RowKeyは"name02"
+	gsPutRowByString(container, "name02", row, NULL);	// 登録(RowKeyを指定)
+
+	// 不要ロウオブジェクトの解放
+	gsCloseRow(&row);
+
+	// トランザクションの確定(ロック解除)
+	gsCommit(container);
+
+	// コレクション内のRowを検索(クエリ使用)
+	gsQuery(container, "select * where name = 'name02'", &query);
+
+	// 検索したRowの取得と更新
+	gsFetch(query, update, &rs);
+	while (gsHasNextRow(rs)) {
+		const GSChar *name;
+		GSBool status;
+		int64_t count;
+		const int8_t *lobData;
+		size_t lobSize;
+		size_t i;
+
+		gsCreateRowByContainer(container, &row);
+
+		// 検索したRowの更新
+		gsGetNextRow(rs, row);
+		gsGetRowFieldAsString(row, 0, &name);
+		gsGetRowFieldAsBool(row, 1, &status);
+		gsGetRowFieldAsLong(row, 2, &count);
+		gsGetRowFieldAsByteArray(row, 3, &lobData, &lobSize);
+		count += 1;
+		ret = gsUpdateCurrentRow(rs, row);
+		if (!GS_SUCCEEDED(ret) || name == NULL) break;
+
+		printf("Person:");
+		printf(" name=%s", name);
+		printf(" status=%s", status ? "true" : "false");
+		printf(" count=%d", (int) count);
+		printf(" lob=[");
+		for (i = 0; i < lobSize; i++) {
+			if (i > 0) {
+				printf(", ");
+			}
+			printf("%d", (int) lobData[i]);
+		}
+		printf("]\n");
+	}
+
+	// トランザクションの確定
+	ret = gsCommit(container);
+
+	// コレクションの削除
+	gsDropContainer(store, info.name);
+
+	// リソースの解放
+	gsCloseGridStore(&store, GS_TRUE);
+
+	return (GS_SUCCEEDED(ret) ? EXIT_SUCCESS : EXIT_FAILURE);
+}
+
+ + +
+ +
+ +
+

1.2.5 応用: コレクション操作のサンプル ― 複数コンテナ一括操作

+
#include "gridstore.h"
+#include <stdlib.h>
+#include <stdio.h>
+
+#define SAMPLE5_CONTAINER_COUNT 5
+#define SAMPLE5_ROW_COUNT 2
+
+// 複数コンテナ一括操作
+int sample5(const char *args[5]) {
+	static const int8_t personLob[] = { 65, 66, 67, 68, 69, 70, 71, 72, 73, 74 };
+
+	static const GSChar *const containerNameList[SAMPLE5_CONTAINER_COUNT] = {
+			"col01", "col02", "col03", "col04", "col05"
+	};
+	static const GSChar *const keyList[SAMPLE5_ROW_COUNT] = {
+			"name01", "name02"
+	};
+
+	static const size_t containerCount = SAMPLE5_CONTAINER_COUNT;
+	static const size_t rowCount = SAMPLE5_ROW_COUNT;
+
+	GSGridStore *store;
+	GSContainer *containerList[SAMPLE5_CONTAINER_COUNT];
+	GSContainerInfo info = GS_CONTAINER_INFO_INITIALIZER;
+	GSColumnInfo columnInfo = GS_COLUMN_INFO_INITIALIZER;
+	GSColumnInfo columnInfoList[4];
+	GSResult ret;
+	int failed = 0;
+	size_t i, j;
+
+	const GSPropertyEntry props[] = {
+			{ "notificationAddress", args[0] },
+			{ "notificationPort", args[1] },
+			{ "clusterName", args[2] },
+			{ "user", args[3] },
+			{ "password", args[4] } };
+	const size_t propCount = sizeof(props) / sizeof(*props);
+
+	// GridStoreインスタンスの取得
+	gsGetGridStore(gsGetDefaultFactory(), props, propCount, &store);
+
+	//コンテナ定義情報を作成
+	columnInfo.name = "name";
+	columnInfo.type = GS_TYPE_STRING;
+	columnInfoList[0] = columnInfo;
+
+	columnInfo.name = "status";
+	columnInfo.type = GS_TYPE_BOOL;
+	columnInfoList[1] = columnInfo;
+
+	columnInfo.name = "count";
+	columnInfo.type = GS_TYPE_LONG;
+	columnInfoList[2] = columnInfo;
+
+	columnInfo.name = "lob";
+	columnInfo.type = GS_TYPE_BYTE_ARRAY;
+	columnInfoList[3] = columnInfo;
+
+	info.type = GS_CONTAINER_COLLECTION;
+	info.columnCount = sizeof(columnInfoList) / sizeof(*columnInfoList);
+	info.columnInfoList = columnInfoList;
+	info.rowKeyAssigned = GS_TRUE;
+
+	// コレクションの作成
+	for (i = 0; i < containerCount; i++) {
+		const GSChar *name = containerNameList[i];
+		gsPutContainerGeneral(store, name, &info, GS_FALSE, &containerList[i]);
+	}
+
+	// 複数コレクションのRowを一括登録
+	{
+		void *allRowList[SAMPLE5_CONTAINER_COUNT][SAMPLE5_ROW_COUNT];
+		GSContainerRowEntry inEntry = GS_CONTAINER_ROW_ENTRY_INITIALIZER;
+		GSContainerRowEntry inEntryList[SAMPLE5_CONTAINER_COUNT];
+
+		GSBool status = GS_FALSE;
+		int64_t count = 1;
+		const int8_t *lobData = personLob;
+		size_t lobSize = sizeof(personLob);
+
+		for (i = 0; i < containerCount; i++) {
+			for (j = 0; j < rowCount; j++) {
+				GSRow *row;
+				const GSChar *name = keyList[j];
+
+				gsCreateRowByStore(store, &info, &row);
+				gsSetRowFieldByString(row, 0, name);
+				gsSetRowFieldByBool(row, 1, status);
+				gsSetRowFieldByLong(row, 2, count);
+				gsSetRowFieldByByteArray(row, 3, lobData, lobSize);
+				count++;
+
+				allRowList[i][j] = row;
+			}
+			inEntry.containerName = containerNameList[i];
+			inEntry.rowList = allRowList[i];
+			inEntry.rowCount = rowCount;
+			inEntryList[i] = inEntry;
+		}
+
+		ret = gsPutMultipleContainerRows(store, inEntryList, containerCount);
+		failed |= !GS_SUCCEEDED(ret);
+
+		for (i = 0; i < containerCount; i++) {
+			for (j = 0; j < rowCount; j++) {
+				GSRow *row = allRowList[i][j];
+				gsCloseRow(&row);
+			}
+		}
+	}
+
+	// 複数コレクションのRowを一括取得
+	{
+		GSRowKeyPredicateEntry predEntry =
+				GS_ROW_KEY_PREDICATE_ENTRY_INITIALIZER;
+		GSRowKeyPredicateEntry predEntryValueList[SAMPLE5_CONTAINER_COUNT];
+		const GSRowKeyPredicateEntry *predEntryList[SAMPLE5_CONTAINER_COUNT];
+		const GSContainerRowEntry *outEntryList;
+		size_t outEntryCount;
+		GSRow *allRowList[SAMPLE5_CONTAINER_COUNT][SAMPLE5_ROW_COUNT];
+
+		// 取得条件を構築
+		for (i = 0; i < containerCount; i++) {
+			GSRowKeyPredicate *predicate;
+
+			gsCreateRowKeyPredicate(store, GS_TYPE_STRING, &predicate);
+			for (j = 0; j < rowCount; j++) {
+				gsAddPredicateKeyByString(predicate, keyList[j]);
+			}
+
+			predEntry.containerName = containerNameList[i];
+			predEntry.predicate = predicate;
+			predEntryValueList[i] = predEntry;
+			predEntryList[i] = &predEntryValueList[i];
+		}
+
+		ret = gsGetMultipleContainerRows(
+				store, predEntryList, containerCount,
+				&outEntryList, &outEntryCount);
+		failed |= !GS_SUCCEEDED(ret);
+
+		// 取得結果ロウ列をコピー
+		for (i = 0; i < containerCount || i < outEntryCount; i++) {
+			GSContainerRowEntry outEntry = GS_CONTAINER_ROW_ENTRY_INITIALIZER;
+			if (i < outEntryCount) {
+				outEntry = outEntryList[i];
+			}
+			for (j = 0; j < rowCount || j < outEntry.rowCount; j++) {
+				GSRow *row = NULL;
+				if (j < outEntry.rowCount) {
+					row = (GSRow*) outEntry.rowList[j];
+				}
+				if (i < containerCount && j < rowCount) {
+					allRowList[i][j] = row;
+				}
+				else {
+					gsCloseRow(&row);
+				}
+			}
+		}
+
+		// 取得結果を出力
+		for (i = 0; i < containerCount; i++) {
+			for (j = 0; j < rowCount; j++) {
+				GSRow *row = allRowList[i][j];
+				const GSChar *name;
+				int64_t count;
+
+				gsGetRowFieldAsString(row, 0, &name);
+				gsGetRowFieldAsLong(row, 2, &count);
+
+				failed |= (name == NULL);
+				if (failed) break;
+
+				printf("Person[%d]:", (int) i);
+				printf(" name=%s", name);
+				printf(" count=%d\n", (int) count);
+
+				gsCloseRow(&row);
+			}
+			gsCloseRowKeyPredicate(&predEntryValueList[i].predicate);
+		}
+	}
+
+	// 複数コレクションのRowを一括検索(クエリ使用)
+	{
+		GSQuery *queryList[SAMPLE5_CONTAINER_COUNT];
+
+		for (i = 0; i < containerCount; i++) {
+			const GSChar *tql = "select * where count >= 0";
+			gsQuery(containerList[i], tql, &queryList[i]);
+		}
+
+		ret = gsFetchAll(store, queryList, containerCount);
+		failed |= !GS_SUCCEEDED(ret);
+
+		for (i = 0; i < containerCount; i++) {
+			GSRowSet *rs;
+			GSRow *row;
+
+			gsCreateRowByContainer(containerList[i], &row);
+			gsGetRowSet(queryList[i], &rs);
+
+			while (gsHasNextRow(rs)) {
+				const GSChar *name;
+				GSBool status;
+				int64_t count;
+				const int8_t *lobData;
+				size_t lobSize;
+
+				ret = gsGetNextRow(rs, row);
+				failed |= !GS_SUCCEEDED(ret);
+				if (failed) break;
+
+				gsGetRowFieldAsString(row, 0, &name);
+				gsGetRowFieldAsBool(row, 1, &status);
+				gsGetRowFieldAsLong(row, 2, &count);
+				gsGetRowFieldAsByteArray(row, 3, &lobData, &lobSize);
+				count += 1;
+
+				failed |= (name == NULL);
+				if (failed) break;
+
+				printf("Person[%d]:", (int) i);
+				printf(" name=%s", name);
+				printf(" status=%s", status ? "true" : "false");
+				printf(" count=%d", (int) count);
+				printf(" lob=[");
+				for (j = 0; j < lobSize; j++) {
+					if (j > 0) {
+						printf(", ");
+					}
+					printf("%d", (int) lobData[j]);
+				}
+				printf("]\n");
+			}
+
+			gsCloseRow(&row);
+			gsCloseRowSet(&rs);
+			gsCloseQuery(&queryList[i]);
+		}
+	}
+
+	// コレクションの削除
+	for (i = 0; i < containerCount; i++) {
+		const GSChar *name = containerNameList[i];
+		gsDropContainer(store, name);
+	}
+
+	// リソースの解放
+	gsCloseGridStore(&store, GS_TRUE);
+
+	return (failed ? EXIT_FAILURE : EXIT_SUCCESS);
+}
+
+ + +
+
+
+ +
+ +
+

2 付録

+
+ + + +
+ +
+

2.1 値の範囲

+
+ + +

+値の上限などの値の範囲を説明します。 +システムの制限値については、GridDB機能リファレンスを参照してください。 +

+ +
+ +
+

2.1.1 基本型の取りうる値

+
+ +

以下の基本型の取りうる値は、次の通りです。 +

+ + +
+ + + ++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
取りうる値
ブール(BOOL)型真または偽
BYTE型-27から27-1
SHORT型-215から215-1
INTEGER型-231から231-1
LONG型-263から263-1
FLOAT型IEEE754準拠
DOUBLE型IEEE754準拠
時刻(TIMESTAMP)型西暦1970年1月1日のはじめから西暦9999年12月31日の終わりまで(UTC相当)。うるう秒は扱わない。ミリ秒、マイクロ秒、ナノ秒のいずれかの精度を設定可能。
+ + + + +
+ +

+空間(GEOMETRY)型でTQL演算に使用できる値はST_GeomFromText関数が返す任意の値です。このうちコンテナに格納できる値はQUADRATICSURFACE構造を除いたものです。 +

+

+APIを通じて基本型とマッピングされるオブジェクトの表現範囲は、上記の範囲と異なる場合があります。上記の範囲を超えた値を持つオブジェクトの内容をコンテナに格納することはできませんが、検索条件の構築など、その他操作の可否を規定するものではありません。たとえば、Java APIにて時刻型にマッピングされるjava.util.Dateオブジェクトでは、コンテナに格納できない西暦1970年より前の年の時刻も表現でき、その値をロウキーの条件としてRowKeyPredicateオブジェクトや時系列のサンプリングクエリに含めることができます。しかし、その条件でロウを取得しようとした時点でエラーが検出される可能性があります。マッピングされるオブジェクトの具体的な表現範囲は、個々のオブジェクトの型の定義を参照してください。 +

+
+
+
+ +
+ +
+

3 商標

+
+ + +
    +
  • +GridDBは日本国内における東芝デジタルソリューションズ株式会社の登録商標です。 +
  • +
  • +OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国における登録商標です。文中の社名、商品名等は各社の商標または登録商標である場合があります。 +
  • +
  • +その他製品名は、それぞれの所有者の商標または登録商標です。 + +

    +Copyright (c) 2023 Toshiba Digital Solutions Corporation +

  • +
+
+
+
+
+
+ + diff --git a/manuals/GridDB_FeaturesReference/img/add_column.png b/manuals/md_reference_feature/img/add_column.png similarity index 100% rename from manuals/GridDB_FeaturesReference/img/add_column.png rename to manuals/md_reference_feature/img/add_column.png diff --git a/manuals/GridDB_FeaturesReference/img/arc_DataModel.png b/manuals/md_reference_feature/img/arc_DataModel.png similarity index 100% rename from manuals/GridDB_FeaturesReference/img/arc_DataModel.png rename to manuals/md_reference_feature/img/arc_DataModel.png diff --git a/manuals/md_reference_feature/img/arc_DataPieces.png b/manuals/md_reference_feature/img/arc_DataPieces.png new file mode 100644 index 0000000..00e8d3f Binary files /dev/null and b/manuals/md_reference_feature/img/arc_DataPieces.png differ diff --git a/manuals/md_reference_feature/img/arc_DatabaseFile.png b/manuals/md_reference_feature/img/arc_DatabaseFile.png new file mode 100644 index 0000000..d3d3471 Binary files /dev/null and b/manuals/md_reference_feature/img/arc_DatabaseFile.png differ diff --git a/manuals/GridDB_FeaturesReference/img/arc_NodeStatus.png b/manuals/md_reference_feature/img/arc_NodeStatus.png similarity index 100% rename from manuals/GridDB_FeaturesReference/img/arc_NodeStatus.png rename to manuals/md_reference_feature/img/arc_NodeStatus.png diff --git a/manuals/GridDB_FeaturesReference/img/arc_clusterConfigration.png b/manuals/md_reference_feature/img/arc_clusterConfigration.png similarity index 100% rename from manuals/GridDB_FeaturesReference/img/arc_clusterConfigration.png rename to manuals/md_reference_feature/img/arc_clusterConfigration.png diff --git a/manuals/GridDB_FeaturesReference/img/arc_clusterNameCount.png b/manuals/md_reference_feature/img/arc_clusterNameCount.png similarity index 100% rename from manuals/GridDB_FeaturesReference/img/arc_clusterNameCount.png rename to manuals/md_reference_feature/img/arc_clusterNameCount.png diff --git a/manuals/GridDB_FeaturesReference/img/arc_clusterStatus.png b/manuals/md_reference_feature/img/arc_clusterStatus.png similarity index 100% rename from manuals/GridDB_FeaturesReference/img/arc_clusterStatus.png rename to manuals/md_reference_feature/img/arc_clusterStatus.png diff --git a/manuals/md_reference_feature/img/audit_log_management.png b/manuals/md_reference_feature/img/audit_log_management.png new file mode 100644 index 0000000..991c668 Binary files /dev/null and b/manuals/md_reference_feature/img/audit_log_management.png differ diff --git a/manuals/md_reference_feature/img/audit_system_configuration.png b/manuals/md_reference_feature/img/audit_system_configuration.png new file mode 100644 index 0000000..06ac6e1 Binary files /dev/null and b/manuals/md_reference_feature/img/audit_system_configuration.png differ diff --git a/manuals/md_reference_feature/img/backup_autolog.png b/manuals/md_reference_feature/img/backup_autolog.png new file mode 100644 index 0000000..d957b94 Binary files /dev/null and b/manuals/md_reference_feature/img/backup_autolog.png differ diff --git a/manuals/md_reference_feature/img/backup_cumulative.png b/manuals/md_reference_feature/img/backup_cumulative.png new file mode 100644 index 0000000..50fbdbc Binary files /dev/null and b/manuals/md_reference_feature/img/backup_cumulative.png differ diff --git a/manuals/md_reference_feature/img/backup_full.png b/manuals/md_reference_feature/img/backup_full.png new file mode 100644 index 0000000..314c904 Binary files /dev/null and b/manuals/md_reference_feature/img/backup_full.png differ diff --git a/manuals/md_reference_feature/img/checkpoint_thread.png b/manuals/md_reference_feature/img/checkpoint_thread.png new file mode 100644 index 0000000..08ffe91 Binary files /dev/null and b/manuals/md_reference_feature/img/checkpoint_thread.png differ diff --git a/manuals/md_reference_feature/img/cluster_connection_01.png b/manuals/md_reference_feature/img/cluster_connection_01.png new file mode 100644 index 0000000..8bceac6 Binary files /dev/null and b/manuals/md_reference_feature/img/cluster_connection_01.png differ diff --git a/manuals/md_reference_feature/img/cluster_connection_02.png b/manuals/md_reference_feature/img/cluster_connection_02.png new file mode 100644 index 0000000..e5eb1a5 Binary files /dev/null and b/manuals/md_reference_feature/img/cluster_connection_02.png differ diff --git a/manuals/md_reference_feature/img/cluster_discovery_02.png b/manuals/md_reference_feature/img/cluster_discovery_02.png new file mode 100644 index 0000000..e5f850e Binary files /dev/null and b/manuals/md_reference_feature/img/cluster_discovery_02.png differ diff --git a/manuals/md_reference_feature/img/cluster_rackzone_01.png b/manuals/md_reference_feature/img/cluster_rackzone_01.png new file mode 100644 index 0000000..c79afa2 Binary files /dev/null and b/manuals/md_reference_feature/img/cluster_rackzone_01.png differ diff --git a/manuals/md_reference_feature/img/cluster_replication_allm.png b/manuals/md_reference_feature/img/cluster_replication_allm.png new file mode 100644 index 0000000..c672502 Binary files /dev/null and b/manuals/md_reference_feature/img/cluster_replication_allm.png differ diff --git a/manuals/md_reference_feature/img/cluster_replication_operation_1m.png b/manuals/md_reference_feature/img/cluster_replication_operation_1m.png new file mode 100644 index 0000000..959a1d2 Binary files /dev/null and b/manuals/md_reference_feature/img/cluster_replication_operation_1m.png differ diff --git a/manuals/md_reference_feature/img/cluster_replication_operation_2m.png b/manuals/md_reference_feature/img/cluster_replication_operation_2m.png new file mode 100644 index 0000000..fe8b8d4 Binary files /dev/null and b/manuals/md_reference_feature/img/cluster_replication_operation_2m.png differ diff --git a/manuals/md_reference_feature/img/cluster_replication_operation_3m.png b/manuals/md_reference_feature/img/cluster_replication_operation_3m.png new file mode 100644 index 0000000..48da34a Binary files /dev/null and b/manuals/md_reference_feature/img/cluster_replication_operation_3m.png differ diff --git a/manuals/md_reference_feature/img/cluster_replication_operation_4m.png b/manuals/md_reference_feature/img/cluster_replication_operation_4m.png new file mode 100644 index 0000000..902a13f Binary files /dev/null and b/manuals/md_reference_feature/img/cluster_replication_operation_4m.png differ diff --git a/manuals/md_reference_feature/img/data_affinity_independent.png b/manuals/md_reference_feature/img/data_affinity_independent.png new file mode 100644 index 0000000..7a1b6a1 Binary files /dev/null and b/manuals/md_reference_feature/img/data_affinity_independent.png differ diff --git a/manuals/md_reference_feature/img/expimp.png b/manuals/md_reference_feature/img/expimp.png new file mode 100644 index 0000000..386ca9d Binary files /dev/null and b/manuals/md_reference_feature/img/expimp.png differ diff --git a/manuals/md_reference_feature/img/feature_architecture.png b/manuals/md_reference_feature/img/feature_architecture.png new file mode 100644 index 0000000..e300186 Binary files /dev/null and b/manuals/md_reference_feature/img/feature_architecture.png differ diff --git a/manuals/md_reference_feature/img/feature_client_access.png b/manuals/md_reference_feature/img/feature_client_access.png new file mode 100644 index 0000000..8fee6c8 Binary files /dev/null and b/manuals/md_reference_feature/img/feature_client_access.png differ diff --git a/manuals/GridDB_FeaturesReference/img/feature_data_afinity.png b/manuals/md_reference_feature/img/feature_data_afinity.png similarity index 100% rename from manuals/GridDB_FeaturesReference/img/feature_data_afinity.png rename to manuals/md_reference_feature/img/feature_data_afinity.png diff --git a/manuals/md_reference_feature/img/feature_data_model.png b/manuals/md_reference_feature/img/feature_data_model.png new file mode 100644 index 0000000..ada0812 Binary files /dev/null and b/manuals/md_reference_feature/img/feature_data_model.png differ diff --git a/manuals/md_reference_feature/img/feature_disk_and_memory.png b/manuals/md_reference_feature/img/feature_disk_and_memory.png new file mode 100644 index 0000000..909d07b Binary files /dev/null and b/manuals/md_reference_feature/img/feature_disk_and_memory.png differ diff --git a/manuals/md_reference_feature/img/feature_durability.png b/manuals/md_reference_feature/img/feature_durability.png new file mode 100644 index 0000000..bf12d5f Binary files /dev/null and b/manuals/md_reference_feature/img/feature_durability.png differ diff --git a/manuals/md_reference_feature/img/feature_rackzone.png b/manuals/md_reference_feature/img/feature_rackzone.png new file mode 100644 index 0000000..48927d7 Binary files /dev/null and b/manuals/md_reference_feature/img/feature_rackzone.png differ diff --git a/manuals/md_reference_feature/img/feature_scale_up.png b/manuals/md_reference_feature/img/feature_scale_up.png new file mode 100644 index 0000000..6024bd5 Binary files /dev/null and b/manuals/md_reference_feature/img/feature_scale_up.png differ diff --git a/manuals/GridDB_FeaturesReference/img/func_MVCC.png b/manuals/md_reference_feature/img/func_MVCC.png similarity index 100% rename from manuals/GridDB_FeaturesReference/img/func_MVCC.png rename to manuals/md_reference_feature/img/func_MVCC.png diff --git a/manuals/GridDB_FeaturesReference/img/func_Node_Affinity.png b/manuals/md_reference_feature/img/func_Node_Affinity.png similarity index 100% rename from manuals/GridDB_FeaturesReference/img/func_Node_Affinity.png rename to manuals/md_reference_feature/img/func_Node_Affinity.png diff --git a/manuals/GridDB_FeaturesReference/img/func_TIME_AVG.png b/manuals/md_reference_feature/img/func_TIME_AVG.png similarity index 100% rename from manuals/GridDB_FeaturesReference/img/func_TIME_AVG.png rename to manuals/md_reference_feature/img/func_TIME_AVG.png diff --git a/manuals/GridDB_FeaturesReference/img/func_TimeseriseCompression.png b/manuals/md_reference_feature/img/func_TimeseriseCompression.png similarity index 100% rename from manuals/GridDB_FeaturesReference/img/func_TimeseriseCompression.png rename to manuals/md_reference_feature/img/func_TimeseriseCompression.png diff --git a/manuals/md_reference_feature/img/func_checkpnt.png b/manuals/md_reference_feature/img/func_checkpnt.png new file mode 100644 index 0000000..cb7be61 Binary files /dev/null and b/manuals/md_reference_feature/img/func_checkpnt.png differ diff --git a/manuals/md_reference_feature/img/func_cumulative_backup.png b/manuals/md_reference_feature/img/func_cumulative_backup.png new file mode 100644 index 0000000..59da4d7 Binary files /dev/null and b/manuals/md_reference_feature/img/func_cumulative_backup.png differ diff --git a/manuals/GridDB_FeaturesReference/img/func_database.png b/manuals/md_reference_feature/img/func_database.png similarity index 100% rename from manuals/GridDB_FeaturesReference/img/func_database.png rename to manuals/md_reference_feature/img/func_database.png diff --git a/manuals/GridDB_FeaturesReference/img/func_expiration.png b/manuals/md_reference_feature/img/func_expiration.png similarity index 100% rename from manuals/GridDB_FeaturesReference/img/func_expiration.png rename to manuals/md_reference_feature/img/func_expiration.png diff --git a/manuals/GridDB_FeaturesReference/img/func_expiration_partition.png b/manuals/md_reference_feature/img/func_expiration_partition.png similarity index 100% rename from manuals/GridDB_FeaturesReference/img/func_expiration_partition.png rename to manuals/md_reference_feature/img/func_expiration_partition.png diff --git a/manuals/GridDB_FeaturesReference/img/func_expiration_row.png b/manuals/md_reference_feature/img/func_expiration_row.png similarity index 100% rename from manuals/GridDB_FeaturesReference/img/func_expiration_row.png rename to manuals/md_reference_feature/img/func_expiration_row.png diff --git a/manuals/md_reference_feature/img/func_gs_admin-main.png b/manuals/md_reference_feature/img/func_gs_admin-main.png new file mode 100644 index 0000000..a4ecbc3 Binary files /dev/null and b/manuals/md_reference_feature/img/func_gs_admin-main.png differ diff --git a/manuals/GridDB_FeaturesReference/img/func_multiget.png b/manuals/md_reference_feature/img/func_multiget.png similarity index 100% rename from manuals/GridDB_FeaturesReference/img/func_multiget.png rename to manuals/md_reference_feature/img/func_multiget.png diff --git a/manuals/GridDB_FeaturesReference/img/func_multiput.png b/manuals/md_reference_feature/img/func_multiput.png similarity index 100% rename from manuals/GridDB_FeaturesReference/img/func_multiput.png rename to manuals/md_reference_feature/img/func_multiput.png diff --git a/manuals/GridDB_FeaturesReference/img/func_multiquery.png b/manuals/md_reference_feature/img/func_multiquery.png similarity index 100% rename from manuals/GridDB_FeaturesReference/img/func_multiquery.png rename to manuals/md_reference_feature/img/func_multiquery.png diff --git a/manuals/GridDB_FeaturesReference/img/func_partitioning.png b/manuals/md_reference_feature/img/func_partitioning.png similarity index 100% rename from manuals/GridDB_FeaturesReference/img/func_partitioning.png rename to manuals/md_reference_feature/img/func_partitioning.png diff --git a/manuals/GridDB_FeaturesReference/img/func_partitioning2.png b/manuals/md_reference_feature/img/func_partitioning2.png similarity index 100% rename from manuals/GridDB_FeaturesReference/img/func_partitioning2.png rename to manuals/md_reference_feature/img/func_partitioning2.png diff --git a/manuals/GridDB_FeaturesReference/img/func_partitioning3.png b/manuals/md_reference_feature/img/func_partitioning3.png similarity index 100% rename from manuals/GridDB_FeaturesReference/img/func_partitioning3.png rename to manuals/md_reference_feature/img/func_partitioning3.png diff --git a/manuals/GridDB_FeaturesReference/img/func_partitioning4.png b/manuals/md_reference_feature/img/func_partitioning4.png similarity index 100% rename from manuals/GridDB_FeaturesReference/img/func_partitioning4.png rename to manuals/md_reference_feature/img/func_partitioning4.png diff --git a/manuals/GridDB_FeaturesReference/img/func_partitioning_hash.png b/manuals/md_reference_feature/img/func_partitioning_hash.png similarity index 100% rename from manuals/GridDB_FeaturesReference/img/func_partitioning_hash.png rename to manuals/md_reference_feature/img/func_partitioning_hash.png diff --git a/manuals/GridDB_FeaturesReference/img/func_partitioning_hash2.png b/manuals/md_reference_feature/img/func_partitioning_hash2.png similarity index 100% rename from manuals/GridDB_FeaturesReference/img/func_partitioning_hash2.png rename to manuals/md_reference_feature/img/func_partitioning_hash2.png diff --git a/manuals/GridDB_FeaturesReference/img/func_partitioning_hash3.png b/manuals/md_reference_feature/img/func_partitioning_hash3.png similarity index 100% rename from manuals/GridDB_FeaturesReference/img/func_partitioning_hash3.png rename to manuals/md_reference_feature/img/func_partitioning_hash3.png diff --git a/manuals/GridDB_FeaturesReference/img/func_partitioning_interval.png b/manuals/md_reference_feature/img/func_partitioning_interval.png similarity index 100% rename from manuals/GridDB_FeaturesReference/img/func_partitioning_interval.png rename to manuals/md_reference_feature/img/func_partitioning_interval.png diff --git a/manuals/GridDB_FeaturesReference/img/func_partitioning_interval2.png b/manuals/md_reference_feature/img/func_partitioning_interval2.png similarity index 100% rename from manuals/GridDB_FeaturesReference/img/func_partitioning_interval2.png rename to manuals/md_reference_feature/img/func_partitioning_interval2.png diff --git a/manuals/GridDB_FeaturesReference/img/func_partitioning_interval3.png b/manuals/md_reference_feature/img/func_partitioning_interval3.png similarity index 100% rename from manuals/GridDB_FeaturesReference/img/func_partitioning_interval3.png rename to manuals/md_reference_feature/img/func_partitioning_interval3.png diff --git a/manuals/GridDB_FeaturesReference/img/func_partitioning_interval4.png b/manuals/md_reference_feature/img/func_partitioning_interval4.png similarity index 100% rename from manuals/GridDB_FeaturesReference/img/func_partitioning_interval4.png rename to manuals/md_reference_feature/img/func_partitioning_interval4.png diff --git a/manuals/GridDB_FeaturesReference/img/func_partitioning_interval_hash.png b/manuals/md_reference_feature/img/func_partitioning_interval_hash.png similarity index 100% rename from manuals/GridDB_FeaturesReference/img/func_partitioning_interval_hash.png rename to manuals/md_reference_feature/img/func_partitioning_interval_hash.png diff --git a/manuals/GridDB_FeaturesReference/img/func_partitioning_interval_hash2.png b/manuals/md_reference_feature/img/func_partitioning_interval_hash2.png similarity index 100% rename from manuals/GridDB_FeaturesReference/img/func_partitioning_interval_hash2.png rename to manuals/md_reference_feature/img/func_partitioning_interval_hash2.png diff --git a/manuals/md_reference_feature/img/func_partitioning_interval_user_specify01.png b/manuals/md_reference_feature/img/func_partitioning_interval_user_specify01.png new file mode 100644 index 0000000..86d6349 Binary files /dev/null and b/manuals/md_reference_feature/img/func_partitioning_interval_user_specify01.png differ diff --git a/manuals/md_reference_feature/img/func_partitioning_interval_user_specify02.png b/manuals/md_reference_feature/img/func_partitioning_interval_user_specify02.png new file mode 100644 index 0000000..bbf7cde Binary files /dev/null and b/manuals/md_reference_feature/img/func_partitioning_interval_user_specify02.png differ diff --git a/manuals/md_reference_feature/img/func_partitioning_interval_user_specify03.png b/manuals/md_reference_feature/img/func_partitioning_interval_user_specify03.png new file mode 100644 index 0000000..1e8749c Binary files /dev/null and b/manuals/md_reference_feature/img/func_partitioning_interval_user_specify03.png differ diff --git a/manuals/GridDB_FeaturesReference/img/func_trigger.png b/manuals/md_reference_feature/img/func_trigger.png similarity index 100% rename from manuals/GridDB_FeaturesReference/img/func_trigger.png rename to manuals/md_reference_feature/img/func_trigger.png diff --git a/manuals/GridDB_FeaturesReference/img/func_user.png b/manuals/md_reference_feature/img/func_user.png similarity index 100% rename from manuals/GridDB_FeaturesReference/img/func_user.png rename to manuals/md_reference_feature/img/func_user.png diff --git a/manuals/md_reference_feature/img/gssvc-overview.png b/manuals/md_reference_feature/img/gssvc-overview.png new file mode 100644 index 0000000..6ba882a Binary files /dev/null and b/manuals/md_reference_feature/img/gssvc-overview.png differ diff --git a/manuals/md_reference_feature/img/long_archive_archive_file.png b/manuals/md_reference_feature/img/long_archive_archive_file.png new file mode 100644 index 0000000..f79fe00 Binary files /dev/null and b/manuals/md_reference_feature/img/long_archive_archive_file.png differ diff --git a/manuals/md_reference_feature/img/long_archive_cold_data.png b/manuals/md_reference_feature/img/long_archive_cold_data.png new file mode 100644 index 0000000..40c96e9 Binary files /dev/null and b/manuals/md_reference_feature/img/long_archive_cold_data.png differ diff --git a/manuals/md_reference_feature/img/long_archive_overview.png b/manuals/md_reference_feature/img/long_archive_overview.png new file mode 100644 index 0000000..08e03df Binary files /dev/null and b/manuals/md_reference_feature/img/long_archive_overview.png differ diff --git a/manuals/md_reference_feature/img/long_archive_print.png b/manuals/md_reference_feature/img/long_archive_print.png new file mode 100644 index 0000000..24797fb Binary files /dev/null and b/manuals/md_reference_feature/img/long_archive_print.png differ diff --git a/manuals/md_reference_feature/img/operation_tool.png b/manuals/md_reference_feature/img/operation_tool.png new file mode 100644 index 0000000..a7558de Binary files /dev/null and b/manuals/md_reference_feature/img/operation_tool.png differ diff --git a/manuals/md_reference_feature/img/process_summary.png b/manuals/md_reference_feature/img/process_summary.png new file mode 100644 index 0000000..0323a92 Binary files /dev/null and b/manuals/md_reference_feature/img/process_summary.png differ diff --git a/manuals/md_reference_feature/img/process_summary1.png b/manuals/md_reference_feature/img/process_summary1.png new file mode 100644 index 0000000..280e6ed Binary files /dev/null and b/manuals/md_reference_feature/img/process_summary1.png differ diff --git a/manuals/md_reference_feature/img/process_summary2.png b/manuals/md_reference_feature/img/process_summary2.png new file mode 100644 index 0000000..9bdc412 Binary files /dev/null and b/manuals/md_reference_feature/img/process_summary2.png differ diff --git a/manuals/md_reference_feature/img/product_NoSQL_NewSQL.png b/manuals/md_reference_feature/img/product_NoSQL_NewSQL.png new file mode 100644 index 0000000..78463cc Binary files /dev/null and b/manuals/md_reference_feature/img/product_NoSQL_NewSQL.png differ diff --git a/manuals/md_reference_feature/img/product_position.png b/manuals/md_reference_feature/img/product_position.png new file mode 100644 index 0000000..89af8e3 Binary files /dev/null and b/manuals/md_reference_feature/img/product_position.png differ diff --git a/manuals/md_reference_feature/img/rackzone_01.png b/manuals/md_reference_feature/img/rackzone_01.png new file mode 100644 index 0000000..1f0020c Binary files /dev/null and b/manuals/md_reference_feature/img/rackzone_01.png differ diff --git a/manuals/md_reference_feature/img/rackzone_02.png b/manuals/md_reference_feature/img/rackzone_02.png new file mode 100644 index 0000000..ccd063d Binary files /dev/null and b/manuals/md_reference_feature/img/rackzone_02.png differ diff --git a/manuals/md_reference_feature/img/rackzone_03.png b/manuals/md_reference_feature/img/rackzone_03.png new file mode 100644 index 0000000..3359823 Binary files /dev/null and b/manuals/md_reference_feature/img/rackzone_03.png differ diff --git a/manuals/md_reference_feature/img/rackzone_04.png b/manuals/md_reference_feature/img/rackzone_04.png new file mode 100644 index 0000000..e197d83 Binary files /dev/null and b/manuals/md_reference_feature/img/rackzone_04.png differ diff --git a/manuals/md_reference_feature/img/rollingupgrade.png b/manuals/md_reference_feature/img/rollingupgrade.png new file mode 100644 index 0000000..59709a6 Binary files /dev/null and b/manuals/md_reference_feature/img/rollingupgrade.png differ diff --git a/manuals/md_reference_feature/md_reference_feature.md b/manuals/md_reference_feature/md_reference_feature.md new file mode 100644 index 0000000..3e3f74a --- /dev/null +++ b/manuals/md_reference_feature/md_reference_feature.md @@ -0,0 +1,7052 @@ +はじめに +======== + +本書の目的と構成 +---------------- + +**本書では、GridDBの機能について説明します。** + +本書は、GridDBを用いたシステム設計・開発を行う設計・開発者およびGridDBの運用管理を行う管理者の方を対象としています。 + +本書は、以下のような構成となっています。 + +- GridDBとは + - GridDBの特長やGridDBの適用例を説明します。 +- GridDBの仕組み + - GridDBのクラスタ動作の仕組みについて説明します。 +- GridDBのデータモデル + - GridDBのデータモデルについて説明します。 +- GridDBが提供する機能 + - GridDBが提供するデータ管理の機能や、運用機能について説明します。 +- パラメータ + - GridDBの動作を制御するパラメータについて説明します。 + + +>#### 注意 +>- GridDB Community Editionではシングル構成のみであり、複数ノードによるクラスタ構成は GridDB Enterprise Edition のみ限定となっています。 +>- OSユーザ(gsadm)はパッケージを使ってGridDBをインストールした場合に作成されます。 +>- ODBCはEnterprise Edition限定です。 + +GridDBとは +========== + +GridDBは、キーと複数の値からなるデータ(ロウと呼ばれる)の集合を管理する、分散NoSQL型データベースです。 データをすべてメモリに配置するインメモリデータベースとしての構成に加え、ディスク(SSDも含む)とメモリの利用を併用したハイブリッド構成も取ることができます。ハイブリッド構成を用いることで、小規模、小メモリシステムでも活用可能です。 + +GridDBはビッグデータソリューションで必要となる3つのV(Volume,Variety,Velocity)に加え、データの信頼性/可用性を備えています。また、自律的なノード監視と負荷バランシング機能により、クラスタ運用の省力化が実現できます。 + + + +GridDBの特徴 +------------ + +### 大容量データ(Volume)【EE限定】 + +システムの規模拡大とともに扱うデータの容量は増大し、大容量データを素早く処理するためにはシステムの拡張が必要になります。 + +システムの拡張のアプローチには、大きく分けてスケールアップ(垂直スケーラビリティ)とスケールアウト(水平スケーラビリティ)の2つのアプローチがあります。 + +- スケールアップ(垂直スケーラビリティ)とは + + 動作するマシンへのメモリ追加、ディスクのSSD化、プロセッサの追加などの方法でシステムを増強するアプローチです。一般的に、1つ1つの処理時間を短縮してシステムを高速化するという効果があります。その反面、複数台マシンを用いたクラスタ運用ではないため、スケールアップ時には一旦ノードを停止する必要があり、障害発生時には障害回復に時間がかかるなどの欠点があります。 + +- スケールアウト(水平スケーラビリティ)とは + + システムを構成するノードの台数を増やして処理能力を向上させるアプローチです。一般的に、複数のノードを連携して動作させることになるため、メンテナンスや障害発生時でもサービスを完全に停止させる必要がない点が利点となります。その反面、ノード台数が増えるために運用管理の手間が増大するなどの欠点があります。並列度の高い処理を行うのに向いたアーキテクチャです。 + +GridDBでは、動作するノードをスケールアップしてシステム増強する方法に加え、システムに新たなノードを追加し、稼働するクラスタに組み込むスケールアウトでシステムを拡張することもできます。 + +GridDBは、インメモリ処理データベースとしてもスケールアウトモデルで大容量化が可能です。GridDBでは、複数ノードで構成されるクラスタ内のノードにデータを分散配置します。複数ノードのメモリを1つの大きなメモリ空間として利用することで、大規模なメモリデータベースを提供できます。 + +また、メモリの利用だけでなく、ディスクを併用したハイブリッド構成のデータ管理も可能であるため、単体のノードで動作させた場合も、メモリサイズを超えたデータを保持して、アクセスができます。メモリサイズに制限されない大容量化も実現できます。 + +
+インメモリ/ディスクの併用 +
インメモリ/ディスクの併用
+
+ + +スケールアウトでのシステム拡張は、オンラインで行うことができます。そのため、運用中のシステムを停止することなく、システムの成長とともに増大するデータに対応できます。 + +スケールアウトでシステムに追加したノードには、システムの負荷に応じて適切にデータが配置されます。GridDBが負荷バランスを最適化するため、運用管理者がデータ配置を気にする必要はありません。このような運用を自動化する仕組みが組み込まれており、運用も容易です。 + +
+スケールアウトモデル +
スケールアウトモデル
+
+ +### さまざまなデータ(Variety) + +GridDBのデータは、Key-Valueを発展させたKey-Container型のデータモデルです。コンテナというRDBのテーブルに相当する器にデータを格納します。 (コンテナをRDBのテーブルとして考えるとわかりやすいです。) + +GridDBのデータアクセスでは、Key-Valueデータベース構造のため、Keyで絞り込みができるモデルが最も高速に処理できます。管理する実体に対応して、キーとなるコンテナを用意するという設計が必要です。 + +
+データモデル +
データモデル
+
+ +コンテナには、センサ等の時々刻々発生する時間と値のペアになった大量の時系列のデータを扱うのに適したコンテナ(時系列コンテナ)に加え、位置情報などの空間データを登録し、空間固有の演算(空間の交差)を行うこともできます。配列型のデータやBLOBなどの非定型なデータにも対応しているため、さまざまなデータを扱うことができます。 + +### 高速処理(Velocity) + +GridDBには、さまざまなアーキテクチャ上の工夫が組み込まれ、高速化を実現しています。 + +#### できるだけメモリ上で処理をする + +全てのデータがメモリに配置されてインメモリで動作するシステムの場合、ディスクへのアクセスのオーバヘッドをあまり気にする必要がありません。しかし、メモリ上に保持できないほどの大量のデータを処理するためには、アプリケーションがアクセスするデータを局所化して、ディスクに配置されたデータへのアクセスをできるだけ少なくする必要があります。 + +GridDBでは、アプリケーションからのデータアクセスを局所化するために、関連のあるデータをできるだけ同じブロックに配置する機能を提供します。データにヒント情報を与えることで、ヒントに従ったデータブロックにデータを集約し、データアクセス時のメモリ内ヒット率を高め、データアクセス時間を高速化します。アプリケーションでのアクセス頻度やアクセスパターンに応じて、メモリ集約のヒントを設定することで、限られたメモリ領域を有効活用して動作させることができます(アフィニティ機能)。 + + +#### オーバヘッドを減らす + +データベースに対して並列にアクセスする時のロックやラッチなどによる、データベースの実行処理待ちとなる時間をできるだけ少なくするために、GridDBでは、CPUコア・スレッドごとに占有するメモリとデータベースファイルを割り当て、排他、同期処理の待ちをなくしています。 + +
+アーキテクチャ +
アーキテクチャ
+
+ +また、GridDBでは、クライアントライブラリ側で初回アクセス時にデータ配置をキャッシュすることで、クライアントとノード間は直接アクセス可能です。データ配置やクラスタの動作状況を管理するマスタノードを介さず、直接目的とするデータにアクセスできるので、マスタノードへのアクセス集中や、通信コストを大幅に削減できます。 + +
+クライアントからのアクセス +
クライアントからのアクセス
+
+ +#### 並列に処理をする + +GridDBでは、1つの巨大なデータを複数ノードに分散配置(パーティショニング)したノード間、およびノード内での並列処理と、少ないリソースで多くの要求を処理できるイベント駆動エンジンで、高速化を実現しています。 + +### 信頼性/可用性【EE限定】 + +クラスタ内ではデータを複製して、複数のノード上にデータ(レプリカ)を多重配置しています。レプリカの中で、マスタのデータをオーナ、複製したデータをバックアップと呼びます。クラスタを構成するいずれかのノードに障害が発生した場合でも、レプリカを使用することで処理を継続できます。ノード障害発生後のデータ再配置もシステムが自動的に行うため(自律的データ配置)、特別な運用操作は不要です。障害対象のノードに配置されていたデータはレプリカから復旧され、自動的に設定されたレプリカ数となるようにデータは再配置されます。 + +レプリカは、可用性の要求に応じて2重化、3重化など多重度の設定ができます。 + +各ノードはディスクを使用してデータ更新情報の永続化を行っています。クラスタシステムに障害が発生しても、ディスクに問題がなければ、それまで登録・更新したデータを失わずに復元することができます。 + +また、クライアントでもデータ配置管理情報のキャッシュを保有しているため、ノードの障害を検知すると自動的にフェイルオーバーし、レプリカを用いたデータアクセスを継続できます。 + +
+高可用性 +
高可用性
+
+ + +GridDBの製品 +------------ + +GridDBには、以下の製品があります。 + +- GridDB Community Edition (CE) +- GridDB Enterprise Edition (EE) + +上記製品は[GridDBの特徴](#griddb_features)で説明した特徴で説明した特徴に加え、 +以下の2つの特徴を持ちます。 + +- NewSQL インターフェース + - SQL92に準拠したSQLとともに、標準仕様に準拠したアプリケーションインターフェースであるODBC(C言語インターフェース)とJDBC(Javaインターフェース)を利用できます。 + - ODBC/JDBCを利用することで、BI(Business Intelligence)ツールやETL(Extract Transfer Load)ツールからデータベースに直接アクセスすることもできます。 + - コンテナをテーブルとみなして操作できます。 +- テーブルパーティショニング機能 + - 巨大なテーブルを高速にアクセスするためのパーティショニング機能です。 + - データを複数の部分に分割し、複数のノードに分散配置するため、テーブルから条件にマッチするデータを検索する処理やデータを取り出す処理の並列化を行い、データアクセスの高速化が実現できます。 + +
+製品構成 +
製品構成
+
+ +各インターフェースの特徴は以下のとおりです。 + +- NoSQLインターフェース(NoSQL I/F) + - NoSQL I/FのクライアントAPI(C言語、Java)は、ビッグデータを高速に一括処理する機能に重点を置いています。 + - データ収集やKey-Valueデータの高速なアクセス、TQLを用いた簡単な集計演算などを行う場合に利用します。 +- NewSQLインターフェース(NewSQL I/F) + - NewSQL I/FのODBCやJDBCは、既存アプリケーションとの連携やSQLを用いた開発生産性の向上に重点を置いています。 + - BIツールなどを用いて収集したデータを分類し分析する場合に利用します。 + +GridDBでは、NoSQL I/FとNewSQL I/Fの両方を用途によって使い分けることができます。 + +
+製品位置づけ +
製品位置づけ
+
+ + +同一メジャーバージョン内(マイナーバージョンアップ時)では、GridDBのデータベースおよびNoSQL/NewSQLインターフェースの互換性があります。 バージョンの表記は、以下の通りです。 + +- GridDBのバージョンは「X.Y\[.Z\]」で表され、それぞれ以下を表します。 + - メジャーバージョン(X): 大幅な機能強化の場合に変更します。 + - マイナーバージョン(Y): 機能強化・追加などの場合に変更します。 + - リビジョン(Z): 不具合修正などの場合に変更します。 + +NoSQL I/FとNewSQL I/Fを併用する場合は以下の仕様をあらかじめ理解してください。 + +- NoSQL I/Fで作成したコンテナは、テーブルとしてNewSQL I/Fで操作できます。 また、NewSQL I/Fで操作したテーブルは、コンテナとしてNoSQL I/Fで操作できます。 +- コンテナおよびテーブルの名称は、一意の名称である必要があります。 作成するテーブルと同じ名前のコンテナが既に存在するとエラーになります。 + + +# 用語一覧 + +GridDBで利用する用語を一覧で解説します。 + +| 用語 | 意味 | +|--------------------------------|------------------------------------------------------------------------| +| ノード | GridDBでデータ管理を行う個々のサーバプロセスを指します。 | +| クラスタ | 一体となってデータ管理を行う、1つ、もしくは複数のノードの集合を指します。 | +| マスタノード | クラスタ管理処理を行うノードです。 | +| フォロワノード | クラスタに参加している、マスタノード以外のノードです。 | +| 構成ノード数 | GridDBクラスタを構成するノード数を指定します。GridDBが初回に起動する際に、クラスタが成立する閾値として用いられます。(構成ノード数のノードがクラスタに参加することでクラスタサービスが開始されます。) | +| 有効ノード数 | GridDBクラスタを構成するノードの内、クラスタに組み込まれた稼働中のノードの数です。 | +| ブロック | ブロックとは、ディスクへのデータ永続化処理(以降、チェックポイントと呼びます)のデータ単位であり、GridDBの物理的なデータ管理の最小単位です。ブロックには複数のコンテナのデータが配置されます。ブロックサイズは、GridDBの初期起動前に定義ファイル(クラスタ定義ファイル)で設定します。 | +| パーティション | コンテナを配置するデータ管理の単位で、データをディスクに永続化する際のファイルシステム上のデータファイルに相当します。1つのパーティションに1つのデータファイルが対応します。また、クラスタ間でのデータ配置の最小単位であり、ノード間の負荷バランスを調整するため(リバランス)や、障害発生時のデータ多重化(レプリカ)管理のためのデータ移動や複製の単位です。 | +| ロウ | コンテナ(テーブル)に登録される1行のデータを指します。コンテナ(テーブル)には複数のロウが登録されます。ロウは、コンテナ(テーブル)のスキーマ定義に対応したカラムの値から構成されます。 | +| コンテナ(テーブル) | ロウの集合を管理する入れ物です。NoSQL I/Fで操作する場合はコンテナ、NewSQL I/Fで操作する場合はテーブルと呼ぶ場合があります。呼び方が異なるだけで、実体は同じオブジェクトです。コンテナには、コレクションと時系列コンテナの2種類のデータタイプが存在します。 | +| コレクション(テーブル) | 一般の型のキーを持つロウを管理するコンテナ(テーブル)の1種です。 | +| 時系列コンテナ(時系列テーブル) | 時刻型のキーを持つロウを管理するコンテナ(テーブル)の1種です。時系列のデータを扱う専用の機能を持ちます。 | +| データベースファイル |クラスタを構成するノードの保有するデータをディスクやSSDに書き込み、永続化したファイル群です。データベースファイルは、データファイル、チェックポイントログファイル、トランザクションログファイルの総称です。 | +| データファイル | パーティションのデータが書き込まれたファイルです。 ノード定義ファイルのサイクル(/checkpoint/checkpointInterval)でメモリ上の更新情報が反映されます。 | +| チェックポイントログファイル | パーティションのブロック管理情報を格納するファイルです。ノード定義ファイルのサイクル(/checkpoint/checkpointInterval)で、ブロック管理情報の書き込みを分割で行います。 | +| トランザクションログファイル | トランザクションの更新情報がログとして逐次保存されるファイルです。 | +| LSN(Log Sequence Number) | パーティションごとに割り当てられる、トランザクションでの更新時の更新ログシーケンス番号です。クラスタ構成のマスタノードは、各ノードが保持している全パーティションのLSNのうちの最大数(MAXLSN)を保持しています。 | +| レプリカ | 複数のノードにパーティションを多重化配置することを指します。レプリカには更新されるマスタデータであるオーナと参照に利用されるバックアップがあります。 | +| オーナノード | パーティション内のコンテナに対して更新操作ができるノードです。複製されたコンテナのうち、マスタとなるコンテナを記録しているノードです。 | +| バックアップノード | 複製されたコンテナのうち、バックアップのためのデータを記録しているノードです。 | +| 定義ファイル | クラスタを構成する際のパラメータファイル(gs_cluster.json:以降クラスタ定義ファイルと呼ぶ)とクラスタ内でのノードの動作やリソースを設定するパラメータファイル(gs_node.json:以降ノード定義ファイルと呼ぶ)の2つがあります。また、GridDBの管理ユーザのユーザ定義ファイルもあります。 | +| イベントログファイル | GridDBサーバのイベントログが保管されるファイルです。エラーや警告などのメッセージが含まれます。 | +| 監査ログファイル | GridDBサーバの監査ログが保管されるファイルです。 | +| OSユーザ(gsadm) | GridDBの運用機能を実行できる権限を持つユーザです。GridDBインストール時にgsadmというOSのユーザが作成されます。 | +| 管理ユーザ | GridDBの運用操作を行うために用意されたGridDBのユーザです。 | +| 一般ユーザ | アプリケーションシステムで利用するユーザです。 | +| ユーザ定義ファイル | 管理ユーザが登録されるファイルです。初期インストールではsystem,adminの2つの管理ユーザが登録されています。 | +| クラスタデータベース | GridDBのクラスタシステムでアクセスできるデータベース全体を総称します。 | +| データベース | クラスタデータベースに作成される、論理的なデータ管理の単位です。クラスタデータベース内にデフォルトではpublicというデータベースが作成されています。新規にデータベースを作成し、一般ユーザに利用権限をあたえることで、ユーザ毎のデータ分離が実現できます。 | +| フルバックアップ | 現在利用中のクラスタデータベースをノード定義ファイルで指定したバックアップディレクトリにオンラインでバックアップします。 | +| 差分・増分バックアップ | 現在利用中のクラスタデータベースをノード定義ファイルで指定したバックアップディレクトリにオンラインでバックアップし、以降のバックアップでは、バックアップ後の更新ブロックの差分増分のみをバックアップします。 | +| 自動ログバックアップ | 現在利用中のクラスタデータベースをオンラインで指定したディレクトリにバックアップするとともに、トランザクションログファイルの書き込みと同じタイミングでトランザクションログも自動で採取します。トランザクションログファイルの書き込みタイミングは、ノード定義ファイルの/dataStore/logWriteModeの値に従います。 | +| フェイルオーバ― | 稼働中のクラスタに障害が発生した際に、バックアップノードがその機能を自動的に引き継ぎ、処理を続行する仕組みです。 | +| クライアントフェイルオーバー | 稼働中のクラスタに障害が発生した際、クライアント側のAPIで障害時のリトライ処理としてバックアップノードに自動的に接続し直し、処理を続行する仕組みです。 | +| テーブルパーティショニング | データ登録数が多い巨大なテーブルのデータを複数のノードに分散配置することで、複数ノードのメモリを有効に利用し、かつ複数ノードのプロセッサの並列実行を可能とし、巨大テーブルのアクセスを高速化するための機能です。 | +| データパーティション | テーブルパーティショニングによって分割されたデータを格納する入れ物を総称します。テーブルパーティショニングされた1つのテーブルに対して、データパーティションは複数作成されます。データパーティションは、通常のコンテナと同様に各ノードに分散配置されます。データパーティションの数や格納するデータの範囲は、テーブルパーティショニングの種類(ハッシュ、インターバル、インターバル-ハッシュ)によって異なります。 | +| データアフィニティ | 関連の強いコンテナのデータを同じブロックに配置し、データアクセスの局所化を図ることでメモリヒット率を高めるための機能です。 | +| ノードアフィニティ | 関連の強いコンテナを同じノードに配置し、データアクセス時のネットワーク負荷を減少させるための機能です。 | + + +GridDBの仕組み +============== + +GridDBのクラスタ動作の仕組みについて説明します。 + + +クラスタの構成 +-------------- + +GridDBは複数ノードで構成されるクラスタで動作します。アプリケーションシステムからデータベースにアクセスするにはノードが起動されており、かつクラスタが構成(クラスタサービスが実行)されている必要があります。 + +クラスタは、ユーザが指定した構成ノード数のノードがクラスタへ参加することで構成され、クラスタサービスが開始されます。構成ノード数のノードがクラスタに参加するまでクラスタサービスは開始されず、アプリケーションからはアクセスできません。 + +ノード1台で動作させる場合にも、クラスタを構成する必要があります。この場合構成ノード数を1台でクラスタを構成することになります。ノード1台で動作させる構成をシングル構成と呼びます。 + +
+クラスタ名と構成ノード数 +
クラスタ名と構成ノード数
+
+ + +ネットワーク上にあるGridDBの多数のノードを用いて、正しく(意図したノードを用いて)クラスタが構成できるよう、クラスタ名を使って複数のクラスタを区別します。これにより、同じネットワーク上に複数のGridDBクラスタが構成できます。 +クラスタは、クラスタ名、構成ノード数、接続方式の設定が等しいノードで構成されます。クラスタ名は、クラスタを構成するノード毎に保有するクラスタ定義ファイルに設定するとともに、クラスタ構成する際のパラメータでも指定します。 + +マルチキャストを用いてクラスタを構成する方式をマルチキャスト方式と呼びます。クラスタ構成方式については、[クラスタ構成の検討](#cluster_configuration_methods)を参照してください。 + +以下にクラスタ構成の操作の流れを示します。 + +
+ クラスタ構成の動作 +
クラスタ構成の動作
+
+ +ノードの起動、クラスタの構成には、[運用コマンド](#operating_commands)のgs_startnode/gs_joinclusterコマンドや[gs_sh](#label_gs_sh)を用います。また、OS起動と同時にノードを起動し、クラスタを構成するサービス制御機能もあります。 + + +クラスタを構成するには、クラスタに参加させるノードの数(構成ノード数)とクラスタ名をすべての参加ノードで一致させる必要があります。 + +クラスタサービスは、クラスタでの運用開始後に構成するノードに障害がありクラスタからノードが切り離された場合でも、過半数のノードが参加している限りサービスは継続します。 + +過半数以上のノードさえ動作していればクラスタ運用は継続できるので、クラスタ運用中にメンテナンス等のために、オンラインでノード切り離したり、メンテナンス完了後にノードを組込む操作ができます。さらには、システムを増強するためにノードを追加することもオンラインでできます。 + +### ノードのステータス + +ノードには、ノードの状態を表す複数の種類のステータスがあります。ユーザのコマンド実行やノードの内部処理によってステータスが遷移します。[クラスタのステータス](#status_of_cluster)は、クラスタに属する複数のノードのノードステータスによって決まります。 + +ノードステータスの種類と遷移、確認方法を説明します。 + +- ノードステータスの種類 + + | ノードステータス | 説明 | + |-----------|----------------------------------------------| + | STOP | ノードでGridDBサーバが起動されていない状態です。 | + | STARTING | ノードでGridDBサーバが起動処理中の状態です。前回の運転状態に応じて、データベースのリカバリ処理などの起動時の処理が行われます。クライアントからアクセスできるのは、gs_statコマンドやgs_shコマンドでのシステムの状態確認のみです。アプリケーションからのアクセスはできません。 | + | STARTED | ノードでGridDBサーバが起動されている状態です。ただし、クラスタには参加していないため、引き続きアプリケーションからのアクセスはできません。クラスタを構成するには、gs_joinclusterやgs_shのクラスタ操作コマンドでクラスタへの参加を指示します。 | + | WAIT | クラスタ構成待ちの状態です。ノードはクラスタへの参加を通知しているが、構成ノード数のノードが足りておらず、ノード数が構成ノード数になるまで待ち状態となります。また、クラスタを構成するノードが過半数以下になり、クラスタのサービスが停止した際のノード状態もWAIT状態になります。 | + | SERVICING | クラスタが構成されており、アプリケーションからのアクセスが可能な状態です。ただし、ノード停止時の障害後の再起動などでパーティションのクラスタ間での同期処理が発生した場合、アクセスが遅延することがあります。 | + | STOPPING | ノードを停止指示後、停止するまでの中間ステータスです。 | + | ABNORMAL | SERVICING状態もしくは、状態遷移の途中でノードがエラーを検出した際のステータスです。ABNORMAL状態となったノードは、自動的にクラスタから切り離されます。システムの動作情報を採取してから、ABNORMAL状態のノードを強制停止・再起動する必要があります。再起動することで、リカバリ処理が自動的に行われます。| + +- ノードステータスの遷移 + +
+ ノードステータス +
ノードステータス
+
+ + | ステータス遷移 | 状態遷移事象 | 説明 | + |----------------|-------------|-----------------------------------------------------------------------| + |    ① | コマンド実行 | ノード起動(gs_startnodeコマンド、gs_sh、サービス起動などのコマンド実行) | + |    ② | システム | リカバリ処理やデータベースファイルのロードが完了すると、状態は自動遷移 | + |    ③ | コマンド実行 | クラスタ参加(gs_joincluster/gs_appendclusterコマンド、gs_sh、サービス起動などのコマンド実行) | + |    ④ | システム | 構成ノード数のノードがクラスタに参加すると状態は自動遷移 | + |    ⑤ | システム | クラスタを構成する他のノードが障害等によりサービスから切り離され、構成ノード数が設定値の過半数を下回った時に、状態が自動遷移 | + |    ⑥ | コマンド実行 | ノードをクラスタから切り離す(gs_leaveclusterコマンドやgs_shなどのコマンド実行) | + |    ⑦ | コマンド実行 | ノードをクラスタから切り離す(gs_leavecluster/gs_stopclusterコマンドやgs_shなどのコマンド実行) | + |    ⑧ | コマンド実行 | ノード停止(gs_stopnodeコマンド、gs_sh、サービス停止などのコマンド実行) | + |    ⑨ | システム | 終了処理が完了次第、サーバプロセスを停止 | + |    ⑩ | システム | システム障害により切り離された状態。この状態では一度ノードを強制的に停止する必要がある。 | + + +- ノードステータスの確認方法 + + ノードステータスは、ノードの稼働状況とノードの役割の2つの状態の組み合わせによって決まります。 + + ノードのステータスは[gs_sh](#label_gs_sh)や[gs_admin](#integrated_operation_control)で確認できます。 + + ノードの稼働状況とノードの役割は、gs_statコマンドを実行した結果のjson形式のデータから確認できます。(ノードの稼働状況:/cluster/nodeStatusの値、ノードの役割:/cluster/clusterStatusの値) + + ノードステータスと、ノードの稼働状況とノードの役割の2つの状態の組み合わせを以下に示します。 + + | ノードステータス | ノードの稼働状況
(/cluster/nodeStatus) | ノードの役割
(/cluster/clusterStatus) | + |------------|------------------------------|------------------------| + | STOP | -(gs_statの接続エラー) | -(gs_statの接続エラー) | + | STARTING | INACTIVE | SUB_CLUSTER | + | STARTED | INACTIVE | SUB_CLUSTER | + | WAIT | ACTIVE | SUB_CLUSTER | + | SERVICING | ACTIVE | MASTERまたはFOLLOWER | + | STOPPING | NORMAL_SHUTDOWN | SUB_CLUSTER | + | ABNORMAL | ABNORMAL | SUB_CLUSTER | + + - ノードの稼働状況 + + ノードの稼働状況を表します。gs_statコマンドの/cluster/nodeStatusの値で確認できます。 + + | ノードの稼働状況 | 説明 | + |------------------|------------------------| + | ACTIVE | アクティブ状態 | + | ACTIVATING | アクティブ状態に遷移中 | + | INACTIVE | 非アクティブ状態 | + | DEACTIVATING | 非アクティブ状態に遷移中 | + | NORMAL_SHUTDOWN | シャットダウン処理中 | + | ABNORMAL | 異常状態 | + + - ノードの役割 + + ノードの役割を表します。gs_statコマンドの/cluster/clusterStatusの値で確認できます。 + + ノードには「マスタ」と「フォロワ」という二つの役割があります。 + クラスタが開始する時には、クラスタを構成するノードのひとつが必ず「マスタ」になります。マスタはクラスタ全体の管理を行います。 + マスタ以外のノードはすべて「フォロワ」になります。フォロワは、マスタからの指示に基づいて同期などのクラスタ処理を行います。 + + | ノードの役割 | 説明 | + |-----------------------------|-----------| + | MASTER | マスタ | + | FOLLOWER | フォロワ | + | SUB_CLUSTER/SUB_MASTER | 役割未定 | + + + +### クラスタのステータス + +クラスタの稼働ステータスは各ノードの状態で決まり、そのステータスには稼働/中断/停止の3つの種類があります。 + +クラスタのサービスは、システムの初回構築時においては、ユーザが指定したクラスタ構成するノード数(構成ノード数)のノードがすべてクラスタに参加した時点で開始されます。 + +初回のクラスタ構築時、クラスタを構成するノードがすべてクラスタに組み入れられておらず、クラスタ構成待ちの状態が【INIT_WAIT】状態です。構成ノード数のノードがクラスタに参加完了した時点で状態は自動遷移し稼働状態となります。 + +稼働状態には【STABLE】と【UNSTABLE】の2つの状態があります。 + +- 【STABLE】状態 + - 構成ノード数で指定したノードの数でクラスタが構成されており、サービスが提供できている安定した状態。 +- 【UNSTABLE】状態 + - 構成ノード数に満たない状態で、かつ、構成ノード数の過半数が稼働している状態 + - 構成ノード数の過半数が稼働している限り、クラスタのサービスは継続します。 + +メンテナンスなどでノードをクラスタより切り離しても、構成ノード数の過半数が動作している限りクラスタは【UNSTABLE】状態で運用できます。 + +クラスタを構成するノードが、構成ノード数の半数以下となった場合、スプリットブレイン発生を防ぐためにクラスタは自動的にサービスを中断します。クラスタのステータスは【WAIT】状態となります。 + +- スプリットブレインとは、 + + 複数のノードを相互接続して1台のサーバのように動作させる密結合クラスタシステムにおいて、ハードウェアやネットワークの障害によりシステムが分断されたことを契機に、同じ処理を行う複数のクラスタシステムが同時にサービスを提供してしまう動作をいいます。この状態で運用を継続した場合、複数のクラスタでレプリカとして保有するデータをマスタデータとして動作してしまい、データの一貫性が取れない状態となってしまいます。 + +【WAIT】状態からクラスタサービスを再開するには、エラーの回復したノードや新規のノードをノード追加操作でクラスタへ追加していきます。 再び構成ノード数のノードがクラスタに参加完了した時点で状態は【STABLE】状態となり、サービスが再開されます。 + +ノードの障害等でクラスタを構成するノード数が半数以下となり、クラスタのサービスが中断した場合でも、ノード追加操作でエラーの回復したノードや新規のノードをクラスタへ追加していき過半数のノードがクラスタに参加した時点で自動的にクラスタのサービスは再開されます。 + +
+クラスタステータス +
クラスタステータス
+
+ +STABLE状態はgs_statの示すjsonのパラメータである、/cluster/activeCountと/cluster/designatedCountの値が等しい状態です。(出力される内容はバージョンによって異なります。) + +``` example +$ gs_stat -u admin/admin +{ + "checkpoint": { +     : +     : + }, + "cluster": { + "activeCount":4,            ★ クラスタ内で稼働中のノード + "clusterName": "test-cluster", + "clusterStatus": "MASTER", + "designatedCount": 4, ★ 構成ノード数 + "loadBalancer": "ACTIVE", + "master": { + "address": "192.168.0.1", + "port": 10040 + }, + "nodeList": [             ★ クラスタを構成するマシンリスト + { + "address": "192.168.0.1", + "port": 10040 + }, + { + "address": "192.168.0.2", + "port": 10040 + }, + { + "address": "192.168.0.3", + "port": 10040 + }, + { + "address": "192.168.0.4", + "port": 10040 + }, + + ], + : + : +``` + +クラスタのステータスは、[gs_sh](#label_gs_sh)や[gs_admin](#integrated_operation_control)で確認できます。以下にgs_shでのクラスタステータスの確認例を示します。 + +``` example +$ gs_sh +gs> setuser admin admin gsadm //接続ユーザの設定 +gs> setnode node1 192.168.0.1 10040 //クラスタを構成するノードの定義 +gs> setnode node2 192.168.0.2 10040 +gs> setnode node3 192.168.0.3 10040 +gs> setnode node4 192.168.0.4 10040 +gs> setcluster cluster1 test150 239.0.0.5 31999 $node1 $node2 $node3 $node4  //クラスタの定義 +gs> startnode $cluster1 //クラスタを構成する全ノードの起動 +gs> startcluster $cluster1 //クラスタ構成を指示 +クラスタの開始を待っています。 +クラスタが開始しました。 +gs> configcluster $cluster1 ★クラスタのステータスを確認 +Name : cluster1 +ClusterName : test-cluster +Designated Node Count : 4 +Active Node Count : 4 +ClusterStatus : SERVICE_STABLE      ★安定状態 + +Nodes: + Name Role Host:Port Status +------------------------------------------------- + node1 M 192.168.0.1:10040 SERVICING + node2 F 192.168.0.2:10040 SERVICING + node3 F 192.168.0.3:10040 SERVICING + node4 F 192.168.0.4:10040 SERVICING + +gs> leavecluster $node2 +ノードがクラスタから離脱するのを待っています。 +ノードがクラスタから離脱しました。 +gs> configcluster $cluster1 +Name : cluster1 +ClusterName : test150 +Designated Node Count : 4 +Active Node Count : 3 +ClusterStatus : SERVICE_UNSTABLE     ★不安定な状態 + +Nodes: + Name Role Host:Port Status +------------------------------------------------- + node1 M 192.168.0.1:10040 SERVICING    //マスタノード + node2 - 192.168.0.2:10040 STARTED      + node3 F 192.168.0.3:10040 SERVICING    //フォロワノード + node4 F 192.168.0.4:10040 SERVICING    //フォロワノード +``` + +### パーティションのステータス + +パーティションステータスは、クラスタ上のパーティション全体の状態を表します。 +クラスタステータスが稼働状態の時に、パーティションにアクセスできる状態か、パーティションに偏りが無いかなどを表すステータスです。 + +| パーティションステータス | 説明 | +|--------------|----------------| +| NORMAL | すべてのパーティションがデータ配置目標と同一の正常な状態 | +| NOT_BALANCE | レプリカロスやオーナロスは発生していないが、パーティションの配置が偏っている状態 | +| REPLICA_LOSS | レプリカのデータが欠損しているパーティションが存在する状態
(該当パーティションの可用性が落ちている・ノード離脱できない) | +| OWNER_LOSS | オーナのデータが欠損しているパーティションが存在する状態
(該当パーティションのデータにはアクセスできない) | +| INITIAL | クラスタ構成に参加していない初期状態 | + +パーティションステータスは、マスタノードへのgs_statコマンドの実行で確認できます。(/cluster/partitionStatusの値) + +```example +$ gs_stat -u admin/admin +{ +  : +  : +"cluster": { + : + "nodeStatus": "ACTIVE", + "notificationMode": "MULTICAST", + "partitionStatus": "NORMAL", + : +``` + +[メモ] +- マスタノード以外の/cluster/partitionStatusの値は、正しくない場合があります。必ずマスタノードの値を確認してください。 + + + +クラスタ構成の検討 +---------------- + +クラスタ構成を行う際には以下の検討が必要となります。 + - クラスタを構成するノード間および、クラスタとクライアント間の構成方式を決定します。接続方式は、マルチキャスト方式、固定リスト方式、プロバイダ方式の3つの方式から選択します。 + - クラスタとクライアント間の通信において、複数通信経路が必要かどうかを決定し、必要に応じて設定します。 + - 可用性レベルに応じてクラスタのレプリカ数を設定します。アベイラビリティゾーン単位での障害耐性が必要な場合はラックゾーンアウェアネス機能を有効にします。 + +### クラスタ構成方式 + +クラスタ構成方式とは、クラスタを構成するノード間、およびクラスタとクライアント間の通信において、それぞれのアドレスリストを認識して通信を行うための構成方式であり、以下の3つが提供されます。 + +- マルチキャスト方式 + - マルチキャストを用いてクラスタを構成するノードのディスカバリを行うことで、アドレスリストを認識する方式です。 +- 固定リスト方式 + - クラスタ定義ファイルにクラスタを構成する固定のアドレスリストを指定して起動することで、アドレスリストを認識する方式です。 +- プロバイダ方式 + - アドレスプロバイダが提供するアドレスリストに従ってアドレスリストを認識する方式です。 + - アドレスプロバイダはWebサービスとして構成するか、静的コンテンツとして構成することができます。 + +
+クラスタ構成方式2 +
+ +クラスタ構成方式の比較は以下のとおりです。 + +| 項目 | マルチキャスト方式 | 固定リスト方式 | プロバイダ方式 | +|--------------|------------------------------------|-----------------------------------------------|-----------------------| +| 設定 | ・マルチキャストアドレス、ポート | ・全ノードのIPアドレス、ポート番号のリスト | ・プロバイダURL | +| 利用ケース | ・マルチキャストが利用できる。 | ・マルチキャストが利用できない。
・正確にシステム規模の見積りが行える | ・マルチキャストが利用できない。
・システム規模が見積もれない。 | +| クラスタ動作 | ・一定時間間隔でノードの自動ディスカバリを行う。 | ・全ノードに同一のアドレスリストを設定する。
・ノード起動時に1度だけそのリストを読み込む。 | ・アドレスプロバイダから一定時間間隔でアドレスリストを取得する。 | +| メリット | ・ノード追加のためのクラスタ再起動不要。 | ・リストの整合性チェックが行われるため、間違いが無い。
現在のクラスタ構成ノードの把握が容易。| ・ノード追加のためのクラスタ再起動不要。 | +| デメリット | ・クラウド環境でマルチキャスト利用不可の場合が多い。
セグメントを超えた通信が行えない。 | ・ノード追加にクラスタ再起動が必要。
・アプリ側の接続設定の更新も必要。 | ・アドレスプロバイダの可用性確保が必要。 | + + +### 複数通信経路 + +GridDBクラスタはクライアントに対する複数の通信経路を設定することができます。デフォルトのクラスタ-クライアント間の通信経路は、クラスタノード間の通信経路と共通のものとなりますが、複数通信経路設定を行うと、これとは別の通信経路を用いた接続が可能となります。この通信経路を外部通信経路と呼びます。 +クライアントはどちらの通信経路を利用するかを個別に指定することが可能となります。 + +
+複数通信経路 +
+ +このような複数通信経路を用いたネットワーク構成は以下のような場合に用いられます。 +- クラウド外にあるユーザのオンプレミス環境から、クラウド上で提供されるGridDBサービスを外部通信経路を用いて直接参照、操作を行うことにより、利便性を向上させたい。 +- クラウド外にあるユーザのオンプレミス環境からの利用だけでなく、クラウド内の環境からデフォルトの通信経路を利用した高速なアプリケーション処理を実現したい。 + +### ラックゾーンアウェアネス + +GridDBは、ラックやアベイラビリティゾーンなどの物理的な構成グループ単位の障害が発生した場合の可用性を向上させる、ラックゾーンアウェアネス機能を提供します。 +あるデータのオーナとバックアップがともに同じ構成グループに配置されていると、そのグループに障害が発生した場合にはそのデータへのアクセスができなくなります。 +ラックゾーンアウェアネス機能を利用すると、クラスタのノードが属するグループを事前に定義しておくことができ、GridDBは、その定義を参照し、オーナとバックアップを別グループに配置するように制御します。 +これにより、あるグループに障害が発生した場合でも、別のグループにデータのバックアップがあるため、データへのアクセスが可能になります。 +また、この際、オーナとバックアップが各グループ、各ノードにできるだけ均等に配置されるような割り当てが行われます。 + +ラックゾーンアウェネス機能は、ラックやアベイラビリティゾーンなどの構成グループを利用できる場合に、効果的に可用性を高める機能です。 +一般的に可用性を向上させるにはレプリカ数を多く設定する必要がありますが、レプリカ数を増やすとトランザクション性能が劣化するトレードオフ関係が発生します。 +ラックゾーンアウェアネス機能はグループ単位での障害に備えて配置を優先して計算します。 +そのため、構成グループを利用できる場合には、レプリカ数を抑えつつ(トランザクション性能を維持しつつ)可用性を向上することができます。 +この機能を利用するには、設定ファイルにラックゾーンに関する設定を行う必要があります。これ以外の特別な運用操作は必要ありません。 + +ノード数=6, グループ数=3,パーティション数=6, レプリカ数=2でクラスタを構成した場合のデータ配置の違いを説明します。 +(下図ではクラウドのアベイラビリティゾーン(AZ)を使用した例を示しています。) +下図の左側がラックゾーンアウェネス機能を利用した場合、右側がラックゾーンアウェネス機能を利用しない通常のデータ配置です。 + +
+ラックゾーン1 +
+ +右側のラックゾーンアウェアネス機能なしの場合、データのオーナとバックアップが同一AZ内に配置されることがありえます。 +例えば、AZ1のGridDB2には、クラスタパーティション4のデータのオーナ(青)が配置されています。 +同時に、このクラスタパーティション4のデータのバックアップ(橙)は、同じAZ1のGridDB1に配置されています。 +このようなデータ配置では、AZ1に障害が発生した場合、このクラスタパーティション4のデータにアクセスできなくなります。 +一方、左側のラックゾーンアウェアネス機能ありの場合は、このような配置にならないことを保証します。 +例えば、クラスタパーティション4のデータのオーナ(青)はAZ1に配置されています。 +同時に、このデータのバックアップ(橙)は、AZ1とは別のAZ2に配置されています。他のクラスタパーティションのデータについても同様です。 + +このように、ラックゾーンアウェアネス機能は、全てのクラスタパーティションデータのオーナとバックアップを別々のAZに配置することで、 +どのAZに障害が発生したとしても、全てのクラスタパーティションのデータにアクセスできるようにします。 +ただし、同一ラックゾーンに対する配置を抑制するため、各ノードのオーナ、バックアップの割当て個数には若干偏りが生じる場合があります。 +また、障害発生からクラスタ安定状態(データ同期処理が発生する時間)になるまでの時間も若干増加する傾向がありますが、 +GridDBではこれらデータ偏りや安定状態までの時間をできるだけラックゾーンアウェアネス無の場合と大きな違いがないように最適化します。 + +【メモ】 +ラックゾーンアウェアネス機能はクラスタパーティションの割付規則を決定する機能であり、同様の機能を持つ、6.11.1 生成規則の指定と6.11.2 配置表の固定化指定と併用利用することができません。用途に応じていずれかを使い分けるようにしてください。 + +### 設定方法 + +#### クラスタ構成方法 + + クラスタ構成方法として、マルチキャスト方式、固定リスト方式、プロバイダ方式の3つの方式があり、これらをクラスタを構成するノード間、クラスタとクライアント間の個別に設定することになりますが、以下は前者の設定のみを記載します。後者の設定は、各種クライアントのAPIリファレンスを参照してください。 + +##### マルチキャスト方式 + + マルチキャストアドレスを与えてノードを起動することで、マルチキャストを利用したクラスタを構成します。マルチキャストはクラスタ、トランザクション、SQLの3つのサービスに対して定義しますが、クラスタサービスとしてマルチキャストを選択した場合は、トランザクション、SQLサービスも必ずマルチキャスト方式にする必要があります。 + + マルチキャスト方式でクラスタを構成する場合は、クラスタ定義ファイルのパラメータを設定します。 + +**クラスタ定義ファイル** + +| パラメータ | データ型 | 意味 | +|-----------------------------|----------|--------------------------------------------------------------------------| +| /cluster/notificationAddress | string | クラスタ構成に必要なマルチキャストのIPアドレスを指定します。 | +| /cluster/notificationPort | int | クラスタ構成に必要なマルチキャストのポート番号を指定します。 | +| /transaction/notificationAddress | string | クライアントとのトランザクション処理に必要なマルチキャストのIPアドレスを指定します。 | +| /transaction/notificationPort | int | クライアントとのトランザクション処理に必要なマルチキャストのポート番号を指定します。 | +| /sql/notificationAddress | string | クライアントとのSQL処理に必要なマルチキャストのIPアドレスを指定します。 | +| /sql/notificationPort | int | クライアントとのSQL処理に必要なマルチキャストのポート番号を指定します。 | +  + + マルチキャストが利用できない場合は固定リスト、もしくはプロバイダ方式を利用して下さい。 + +``` example +{ + : + : + "cluster":{ + "clusterName":"yourClusterName", + "replicationNum":2, + "heartbeatInterval":"5s", + "loadbalanceCheckInterval":"180s", + "notificationAddress":"239.0.0.1", + "notificationPort":20000 + }, + "transaction":{ + "notificationAddress":"239.0.0.1", + "notificationPort":31999 + }, + "sql":{ + "notificationAddress":"239.0.0.1", + "notificationPort":41999 + } + : + : +} +``` + +##### 固定リスト方式 + +固定のアドレスリストを与えてノードを起動することで、そのリストを利用してクラスタを構成します。 + +固定リスト方式でクラスタを構成する場合は、クラスタ定義ファイルのパラメータを設定します。 + +**クラスタ定義ファイル** + +| パラメータ | データ型 | 意味 | +|-----------------------------|----------|--------------------------------------------------------------------------| +| /cluster/notificationMember | string | クラスタ構成方式を固定リスト方式にする際に、アドレスリストを指定します。 | + +/cluster/notificationMemberの要素は各サービスごとに以下を記述します。 + "サービス名":{"address"}:"IPアドレス","port":ポート番号 + + /cluster/notificationMember中の要素は以下の通りとなります。 + 複数接続経路を用いる場合、 transactionPublicおよびsqlPublicの項目を追加して、それぞれの外部接続用IPアドレス、ポート番号を記述します。 + これらIPアドレスはノード起動時にノード定義ファイルで設定するtransaction/sqlのpublicServiceAddressと同じにする必要があります。また、ポート番号はtransaction/sqlのservicePortと同じにする必要があります。 + + | パラメータ | データ型 | 意味 | + |-----------------------------|----------|--------------------------------------------------------------------------| + | /cluster/address | string | クラスタサービス通信用のIPアドレスを指定します。 | + | /cluster/port | int | 上記のポート番号を指定します。 | + | /sync/address | string | シンクサービス通信用のIPアドレスを指定します。 | + | /sync/port | int | 上記のポート番号を指定します。 | + | /system/address | string | システムサービス通信用のIPアドレスを指定します。 | + | /system/port | int | 上記のポート番号を指定します。 | + | /transaction/address | string | デフォルト通信経路となるトランザクションサービス通信用のIPアドレスを指定します。 | + | /transaction/port | int | 上記のポート番号を指定します。 | + | /sql/address | string | デフォルト通信経路となるSQLサービス通信用のIPアドレスを指定します。 | + | /sql/port | int | 上記のポート番号を指定します。 | + | /transactionPublic/address | string | 外部通信経路となるトランザクションサービス通信用のIPアドレスを指定します。 | + | /transactionPublic/port | int | 上記のポート番号を指定します。 | + | /sqlPublic/address | string | 外部通信経路となるSQLサービス通信用のIPアドレスを指定します。 | + | /sqlPublic/port | int | 上記のポート番号を指定します。 | + +デフォルトの通信経路を用いる場合のクラスタ定義ファイルの設定例は以下のとおりです。 + +``` example +{ + : + : + "cluster":{ + "clusterName":"yourClusterName", + "replicationNum":2, + "heartbeatInterval":"5s", + "loadbalanceCheckInterval":"180s", + "notificationMember": [ + { + "cluster": {"address":"172.17.0.44", "port":10010}, + "sync": {"address":"172.17.0.44", "port":10020}, + "system": {"address":"172.17.0.44", "port":10040}, + "transaction": {"address":"172.17.0.44", "port":10001}, + "sql": {"address":"172.17.0.44", "port":20001} + }, + { + "cluster": {"address":"172.17.0.45", "port":10010}, + "sync": {"address":"172.17.0.45", "port":10020}, + "system": {"address":"172.17.0.45", "port":10040}, + "transaction": {"address":"172.17.0.45", "port":10001}, + "sql": {"address":"172.17.0.45", "port":20001} + }, + { + "cluster": {"address":"172.17.0.46", "port":10010}, + "sync": {"address":"172.17.0.46", "port":10020}, + "system": {"address":"172.17.0.46", "port":10040}, + "transaction": {"address":"172.17.0.46", "port":10001}, + "sql": {"address":"172.17.0.46", "port":20001} + } + ] + }, + : + : +} +``` + + + +##### プロバイダ方式【EE限定】 + +アドレスプロバイダが提供するアドレスリストを取得してクラスタ構成を行います。 + +プロバイダ方式でクラスタを構成する場合は、クラスタ定義ファイルのパラメータを設定します。 + +**クラスタ定義ファイル** + +| パラメータ | データ型 | 意味 | +|----------------------------------------------|----------|---------------| +| /cluster/notificationProvider/url | string | クラスタ構成方式をプロバイダ方式にする際に、アドレスプロバイダのURLを指定します。 | +| /cluster/notificationProvider/updateInterval | string | アドレスプロバイダからリストを取得する間隔を指定します。1s以上、231s未満の値を指定します。 | + +プロバイダが返却するノードリストの書式は固定リストの規則と同じになります。 + +クラスタ定義ファイルの設定例は以下のとおりです。 + +``` example +{ + : + : + "cluster":{ + "clusterName":"yourClusterName", + "replicationNum":2, + "heartbeatInterval":"5s", + "loadbalanceCheckInterval":"180s", + "notificationProvider":{ + "url":"http://example.com/notification/provider", + "updateInterval":"30s" + } + }, + : + : +} +``` + +アドレスプロバイダはWebサービスとして構成するか、静的コンテンツとして構成することができます。 アドレスプロバイダは以下の仕様を満たす必要があります。 + +- GETメソッドに対応。 +- URLにアクセスすると、そのURLが書かれたクラスタ定義ファイルを持つクラスタのノードのアドレスリストをレスポンスとして返す。 + - レスポンスボディ:固定リスト方式において指定するノードリストの内容と同等のJSON + - レスポンスヘッダ:Content-Type:application/jsonを含む + +アドレスプロバイダからのレスポンスの例は以下のとおりです。複数通信経路を設定した場合は、transactionPublicおよびsqlPublicの記載も必要となります。 + +``` example +$ curl http://example.com/notification/provider +[ + { + "cluster": {"address":"172.17.0.44", "port":10010}, + "sync": {"address":"172.17.0.44", "port":10020}, + "system": {"address":"172.17.0.44", "port":10040}, + "transaction": {"address":"172.17.0.44", "port":10001}, + "sql": {"address":"172.17.0.44", "port":20001} + }, + { + "cluster": {"address":"172.17.0.45", "port":10010}, + "sync": {"address":"172.17.0.45", "port":10020}, + "system": {"address":"172.17.0.45", "port":10040}, + "transaction": {"address":"172.17.0.45", "port":10001}, + "sql": {"address":"172.17.0.45", "port":20001} + }, + { + "cluster": {"address":"172.17.0.46", "port":10010}, + "sync": {"address":"172.17.0.46", "port":10020}, + "system": {"address":"172.17.0.46", "port":10040}, + "transaction": {"address":"172.17.0.46", "port":10001}, + "sql": {"address":"172.17.0.46", "port":20001} + } +] +``` + +【メモ】 +- クラスタ定義ファイルの/cluster/notificationAddress、/cluster/notificationMember、/cluster/notificationProviderは、使用するクラスタ構成方式に合わせていずれか1つを設定してください。 + +#### 複数通信経路 + + GridDBクラスタにおいて複数通信経路を有効にするには、クラスタを構成する各ノードにおけるノード定義ファイルで外部通信経路のIPアドレスを指定してクラスタを構成します。ポート番号はservicePortに記載した値と共通のものになるため新たな記載は必要ありません。 + +**ノード定義ファイル** + +| パラメータ | データ型 | 意味 | +|----------------------------------------------|----------|---------------| +| /transaction/publicServiceAddress | string | トランザクションサービス外部通信経路に対応するIPアドレスを指定します。 | +| /sql/publicServiceAddress | string | SQLサービス外部通信経路に対応するIPアドレスを指定します。 | + + +ノード定義ファイルの設定例は以下のとおりです。 + +``` example +{ + : + : + + "transaction":{ + "serviceAddress":"172.17.0.44", + "publicServiceAddress":"10.45.1.10", + "servicePort":10001 + }, + "sql":{ + "serviceAddress":"172.17.0.44", + "publicServiceAddress":"10.45.1.10", + "servicePort":20001 + }, + : + : +``` + +複数通信経路を有効にする場合のノードリストのサンプルは以下になります。 + +``` example +{ + : + : + "cluster":{ + "clusterName":"yourClusterName", + "replicationNum":2, + "heartbeatInterval":"5s", + "loadbalanceCheckInterval":"180s", + "notificationMember": [ + { + "cluster": {"address":"172.17.0.44", "port":10010}, + "sync": {"address":"172.17.0.44", "port":10020}, + "system": {"address":"172.17.0.44", "port":10040}, + "transaction": {"address":"172.17.0.44", "port":10001}, + "sql": {"address":"172.17.0.44", "port":20001}, + "transactionPublic": {"address":"10.45.1.10", "port":10001}, + "sqlPublic": {"address":"10.45.1.10", "port":20001} + }, + { + "cluster": {"address":"172.17.0.45", "port":10010}, + "sync": {"address":"172.17.0.45", "port":10020}, + "system": {"address":"172.17.0.45", "port":10040}, + "transaction": {"address":"172.17.0.45", "port":10001}, + "sql": {"address":"172.17.0.45", "port":20001}, + "transactionPublic": {"address":"10.45.1.11", "port":10001}, + "sqlPublic": {"address":"10.45.1.11", "port":20001} + }, + { + "cluster": {"address":"172.17.0.46", "port":10010}, + "sync": {"address":"172.17.0.46", "port":10020}, + "system": {"address":"172.17.0.46", "port":10040}, + "transaction": {"address":"172.17.0.46", "port":10001}, + "sql": {"address":"172.17.0.46", "port":20001}, + "transactionPublic": {"address":"10.45.1.12", "port":10001}, + "sqlPublic": {"address":"10.45.1.12", "port":20001} + } + ] + }, + : + : +} +``` + +#### ラックゾーンアウェアネス + +**クラスタ定義ファイル** + +| パラメータ | データ型 | 意味 | +|-----------------------------|----------|--------------------------------------------------------------------------| +| /cluster/rackZoneAwareness | bool | ラックゾーンアウェイアウェアネス機能を利用したデータ配置戦略を行うかどうかを指定します。利用する場合はtrueとしてrackZoneIdを必ず指定してください。| +| /cluster/rackZoneId | string | ラックゾーンアウェアネス機能で必要となる、グルーピング単位に付与する識別子です。1以上64文字以内の英数字となります。| + +ノード定義ファイルの設定の例は以下の通りです。 + +``` example +{ + : + : + "cluster":{ + "servicePort":10010 + "rackZoneAwareness":true, + "rackZoneId":"zone-01", + }, + : + : +} +``` + + +# データモデル + +GridDBは、Key-Valueに似た独自のKey-Container型データモデルです。以下の特徴があります。 +- Key-Valueをグループ化するコンテナというRDBのテーブルに似た概念を導入 +- コンテナに対してデータ型を定義するスキーマ設定が可能。カラムにインデックスを設定可能。 +- コンテナ内のロウ単位でトランザクション操作が可能。また、コンテナ単位でACIDを保証します。 + +
+データモデル +
データモデル
+
+ +GridDBのデータは、ブロック、コンテナ、テーブル、ロウ、パーティションという単位でデータ管理されています。 + + +- ブロック + + ブロックとは、ディスクへのデータ永続化処理(以降、チェックポイントと呼びます)のデータ単位であり、GridDBの物理的なデータ管理の最小単位です。 + ブロックには複数のコンテナのデータが配置されます。ブロックサイズは、GridDBの初期起動前に定義ファイル(クラスタ定義ファイル)で設定します。 + + GridDBは、システムの初期起動とともにデータベースファイルが作成されるため、初期起動以降ブロックサイズの変更はできません。 + +- コンテナ(テーブル) + + 利用者とのI/Fとなるデータ構造です。 複数のブロックで構成されます。 NoSQL I/Fで操作する場合はコンテナ、NewSQL I/Fで操作する場合はテーブルと呼びます。コンテナ(テーブル)には、コレクション(テーブル)と時系列コンテナ(時系列テーブル)の2種類のデータタイプが存在します。 + + アプリケーションでデータを登録する前には、必ずコンテナ(テーブル)を作成しておく必要があります。 + +- ロウ + + ロウは、コンテナやテーブルに登録される1行のデータを指します。コンテナやテーブルには複数のロウが登録されますが、データは同じブロックに配置されるわけではありません。登録・更新されるタイミングに応じて、パーティション内の適切なブロックに配置されます。 + + ロウは複数のデータ型のカラムから構成されます。 + +- パーティション + + パーティションは、1つ以上のコンテナやテーブルを含むデータ管理の単位です。 + + パーティションはクラスタ間でのデータ配置の単位であり、ノード間の負荷バランスを調整するためのデータ移動や、障害発生に備えたデータ多重化(レプリカ)管理のための単位です。データのレプリカはパーティション単位にクラスタを構成するノードに配置されます。 + + パーティション内のコンテナに対して更新操作ができるノードはオーナノードと呼ばれ、1つのパーティションに対して1つのノードが割り当てられます。オーナノード以外でレプリカを保持するノードは、バックアップノードとなります。パーティションには、レプリカの数の設定値に応じてマスタデータと複数のバックアップデータがあります。 + + コンテナとパーティションの関連は恒久的なもので、コンテナ作成時に、所属するパーティションが決定した後は変わりません。パーティションとノードの関連は一時的なもので、自律的データ配置によってパーティションが別のノード上に移動する場合があります。 + + また、パーティションの保持するデータがOSのディスクに保存される物理的なデータベースファイルとなります。 + +
+ データ管理の単位 +
データ管理の単位
+
+ +  + + +## コンテナ + +GridDBにデータを登録し、検索するには、データを格納するコンテナ(テーブル)を作成する必要があります。 NoSQL I/Fで操作する場合はコンテナ、NewSQL I/Fで操作する場合はテーブルと呼びます。 + +コンテナ(テーブル)もデータベースと同様の命名規則があります。 +- 指定可能な文字列は、英数字およびアンダースコア\_、ハイフン-、ドット.、スラッシュ/、イコール=です。ただし、先頭文字に数字は指定できません。 +- 命名時の大文字・小文字は保持されますが、大文字小文字を同一視した場合に同一名となるコンテナ(テーブル)は作成できません。 + + +[メモ] +- 同一のデータベースの中で、[ビュー](#label_view)と同じ名前のコンテナは作成できません。 + + + +### 種別 + +コンテナ(テーブル)には、2つのデータタイプがあります。 +時々刻々発生するデータを発生した時刻とともに管理するのに適したデータタイプである **時系列コンテナ(時系列テーブル)** とさまざまなデータを管理する **コレクション(テーブル)** です。 + + +### データ型 + +コンテナ(テーブル)にはスキーマを設定できます。登録できるデータ型には、基本的なデータ型である **基本型** と **配列型** があります。 + +#### 基本型 + +登録できる基本型のデータを説明します。基本型とは、他の型の組み合わせで表現できない、基本的な型です。 + +| データ型 | 説明 | +|-------------|--------------------------------------------------------------------------------------------------| +| BOOL型 | 真または偽のいずれかの値 | +| STRING型 | Unicodeコードポイントを文字とする、任意個数の文字の列より構成 | +| BYTE型 | -27から27-1 (8ビット)の整数値 | +| SHORT型 | -215から215-1 (16ビット)の整数値 | +| INTEGER型 | -231から231-1 (32ビット)の整数値 | +| LONG型 | -263から263-1 (64ビット) の整数値 | +| FLOAT型 | IEEE754で定められた単精度型(32ビット)浮動小数点数 | +| DOUBLE型 | IEEE754で定められた倍精度型(64ビット)浮動小数点数 | +| TIMESTAMP型 | 年月日ならびに時分秒からなる時刻を表す型。データベースに保持されるデータ形式はUTCで、精度はミリ秒 | +| GEOMETRY型 | 空間構造を表すためのデータ型 | +| BLOB型 | 画像や音声などのバイナリデータのためのデータ型 | + +STRING型、GEOMETRY型、BLOB型は管理できるデータのサイズに以下の制限があります。制限値は、GridDBの定義ファイル(gs_node.json)のデータベースの入出力単位であるブロックサイズに応じて値が異なります。 + +| 型 | ブロックサイズ(64KB) | ブロックサイズ (1MB~32MB) | +|------------|--------------------------------|---------------------------------| +| STRING型 | 最大31KB (UTF-8エンコード相当) | 最大128KB (UTF-8エンコード相当) | +| GEOMETRY型 | 最大31KB (内部格納形式相当) | 最大128KB (内部格納形式相当) | +| BLOB型 | 最大1GB - 1Byte | 最大1GB - 1Byte | + + +**GEOMETRY型(空間型)** + +GEOMETRY型(空間型)のデータは地図情報システムなどでよく利用されています。空間型のデータは、NoSQLインターフェースでのみ使用できます。NewSQLインターフェースでは未サポートです。 + +GEOMETRY型のデータは、WKT(Well-known text)を用いて記述します。WKTは、地理空間に関する情報の標準化などを推進している非営利団体OGC(Open Geospatial Consortium)にて策定されています。GridDBでは、コンテナのカラムをGEOMETRY型に設定することで、WKTで記述された空間情報をカラムに格納できます。 + +GEOMETRY型では以下のWKT形式をサポートします。 + +- POINT + - 2次元または3次元の座標により生成される点。 + - 記述例: POINT(0 10 10) +- LINESTRING + - 2つ以上の点により表現される、2次元または3次元空間上の直線の集合。 + - 記述例: LINESTRING(0 10 10, 10 10 10, 10 10 0) +- POLYGON + - 直線の集合により表現される、2次元または3次元空間上の閉じた領域。POLYGONの頂点は反時計回りに指定します。POLYGON内に島をつくる場合、内部の点は時計回りで指定します。 + - 記述例: POLYGON((0 0,10 0,10 10,0 10,0 0))、POLYGON ((35 10, 45 45, 15 40, 10 20, 35 10),(20 30, 35 35, 30 20, 20 30)) +- POLYHEDRALSURFACE + - 2次元または3次元の座標により生成される点 + - 記述例: POLYHEDRALSURFACE (((0 0 0, 0 1 0, 1 1 0, 1 0 0, 0 0 0)), ((0 0 0, 0 1 0, 0 1 1, 0 0 1, 0 0 0)),((0 0 0, 1 0 0, 1 0 1, 0 0 1, 0 0 0)), ((1 1 1, 1 0 1, 0 0 1, 0 1 1, 1 1 1)),((1 1 1, 1 0 1, 1 0 0, 1 1 0, 1 1 1)),((1 1 1, 1 1 0, 0 1 0, 0 1 1, 1 1 1)) ) +- QUADRATICSURFACE + - 定義式f(X) = <AX, X> + BX + cにより表現される、3次元空間上の2次曲面。 + +ただし、空間構造QUADRATICSURFACEはコンテナに登録することはできず、検索条件としてのみ使用できます。 + +GEOMETRY型を利用した演算は、APIやTQLで実行できます。 + +TQLでは2次元、3次元の空間を定義する空間生成関数と空間型データ間での演算の関数を提供します。TQLではコンテナ内のGEOMETRY型のカラムと指定した空間データで演算を行いその結果を以下のようにして得ることができます。 + +``` example + SELECT * WHERE ST_MBRIntersects(geom, ST_GeomFromText('POLYGON((0 0,10 0,10 10,0 10,0 0))')) +``` + +TQLで提供する関数の詳細は『[GridDB TQL リファレンス](../md_reference_tql/md_reference_tql.md)』を参照ください。 + + +#### 複合型 + +コンテナに登録できる、基本型の組み合わせで構成される型を定義します。 現バージョンでは配列型のみです。 + +- 配列型 + + 値の列を表します。基本型のデータの内、GEOMETRY型とBLOB型を除く基本型を配列型として、データを保持することができます。配列で保持できるデータ量の制限は、データベースのブロックサイズに応じて値が異なります。 + + | 型 | ブロックサイズ(64KB) | ブロックサイズ (1MB~32MB) | + |--------|---------------------|----------------------| + | 配列数 | 4000 | 65000 | + +【メモ】 + +配列型カラムでは、TQLでの操作に以下の制約があります。 + +- 配列型カラムのi番目の値の比較はできますが、全要素に関する演算(集計演算)はできません。 + + - (例)columnAが配列型で定義されたとした場合 + - select \* where ELEMENT(0, columnA) > 0 のような配列内の要素を指定した比較はできます。ただし、ELEMENTの"0"の部分に変数は指定できません。 + + - select SUM(columnA) のような集計計算はできません。 + + + +### 主キー + +コンテナ(テーブル)には、主キーを設定できます。主キーによって、コンテナ(テーブル)のロウの一意性を保証します。また主キーを設定したカラムには、NULL値を許容しません。 + +主キーは、コンテナではROWKEY(ロウキー)、テーブルではPRIMARY KEY(プライマリキー)と呼びます。 + +- 時系列コンテナ(時系列テーブル)の場合 + - ROWKEY(PRIMARY KEY)は先頭カラムに設定できます。(GridDBではカラムを0番から数えるため、カラム番号0に設定します。) + - ROWKEY(PRIMARY KEY)は、TIMESTAMP型です。 + - 指定は必須です。 +- コレクション(テーブル)の場合 + - ROWKEY(PRIMARY KEY)は先頭カラムより連続した複数のカラムに設定できます。ロウキーを複数のカラムに設定した場合は、複合ロウキーと呼びます。設定できるカラム数の上限は16個です。 + - 例) 先頭カラムより連続したカラムであるstr1, str2, str3をロウキーに設定できます。 + ``` + CREATE TABLE sample_table1 + (str1 string, str2 string, str3 string, str4 string, str5 string, int1 integer, + PRIMARY KEY(str1, str2, str3)); + ``` + - 例) 連続していないカラムであるstr1, str3, str4をロウキーに設定することはできません。以下のSQLを実行するとエラーになります。 + ``` + CREATE TABLE sample_table2 + (str1 string, str2 string, str3 string, str4 string, str5 string, int1 integer, + PRIMARY KEY(str1, str3, str4)); + ``` + - ROWKEY(PRIMARY KEY)は、STRING、INTEGER、LONG、TIMESTAMPのいずれかの型のカラムです。 + - 指定は必須ではありません。 + +ROWKEY(PRIMARY KEY)に設定したカラムには、カラムの型に応じてあらかじめ既定された、デフォルトの索引が設定されます。 + +GridDBの現バージョンでは、ROWKEY(PRIMARY KEY)に指定できるSTRING、INTEGER、LONG、TIMESTAMPのすべての型のデフォルトの索引はTREE索引です。 + + + + + +## ビュー + +コンテナのデータを参照するためのビューを作成できます。 + +ビュー作成時に、コンテナに対する参照(SELECT文)を定義します。ビューはコンテナと似たオブジェクトですが実データを持ちません。ビューを含むクエリの実行時に、ビュー作成時に定義されたSELECT文を評価して結果を返します。 + +ビューは参照(SELECT)のみ可能です。ビューに対して、データの追加(INSERT)/更新(UPDATE)/削除(DELETE)を行うことはできません。 + + +[メモ] +- 同一のデータベースの中で、コンテナと同じ名前のビューは作成できません。 +- ビューの命名規則は、[コンテナの命名規則](#label_container)と同様です。 + +   + +# データベース機能 + +## リソースの管理 + +GridDBのクラスタを構成するリソースには、メモリ上のデータベースのほかにディスク上に永続化されるリソースがあります。 永続化リソースには、以下のものがあります。 + +- データベースファイル + + クラスタを構成するノードの保有するデータをディスクやSSDに書き込み、永続化したファイル群です。データベースファイルは、定期的にメモリ上のデータベースが書き込まれるデータファイル/チェックポイントログファイルと、データ更新の都度保存されるトランザクションログファイルを総称します。 + +
+データベースファイル群 +
データベースファイル群
+
+ +- データファイル + + パーティションがディスクに永続化されたファイルです。ノード定義ファイルのサイクル(/checkpoint/checkpointInterval)でメモリ上の更新情報が反映されます。 ファイルのサイズはデータ容量に応じて拡張します。一度拡張したデータファイルのサイズは、コンテナやロウなどのデータを削除しても減少しません。なお、データ削除後の空き領域は再利用されます。データファイルは複数に分割することも可能です。 + +- チェックポイントログファイル + + パーティションのブロック管理情報がディスクに永続化されたファイルです。ノード定義ファイルのサイクル(/checkpoint/checkpointInterval)でブロック管理情報の書き込みを分割で行います。 パーティションごとにファイルをデフォルトで最大10個作成します。ノード定義ファイルの分割数(/checkpoint/partialCheckpointInterval)で調整できます。 + +- トランザクションログファイル + + トランザクションの更新情報がログとしてシーケンシャルに保存されるファイルです。ひとつのファイルには、前回のチェックポイント開始から次のチェックポイント開始までに実行されたトランザクションログを格納します。パーティションごとにファイルをデフォルトで最大3個(現在のログファイルと過去2世代分のログファイル)作成します。 + +- 定義ファイル + + クラスタを構成する際のパラメータファイル(gs_cluster.json:以降、クラスタ定義ファイルと呼ぶ)と、クラスタ内でのノードの動作やリソースを設定するパラメータファイル(gs_node.json:以降、ノード定義ファイルと呼ぶ)の2つがあります。また、GridDBの管理ユーザのユーザ定義ファイルもあります。 + +- イベントログファイル + + GridDBサーバのイベントログが保存されます。イベントログにはエラーや警告などのメッセージが含まれます。 + +- 監査ログファイル + + GridDBサーバの監査ログが保存されます。監査ログにはアクセスログ、操作ログ、エラーログを記録したメッセージが含まれます。 + +- バックアップファイル + + GridDBのデータファイルのバックアップデータが保持されます。 + + +これらのリソースは、GridDBホーム(環境変数GS_HOMEで指定されるパス)で配置を定義します。 初期インストール状態では、/var/lib/gridstoreディレクトリがGridDBホームで、このディレクトリの下に各リソースの初期データが配置されます。 + +初期の配置状態は以下のとおりです。 + +``` example +/var/lib/gridstore/ # GridDBホームディレクトリ + admin/ # 統合運用管理機能ホームディレクトリ + backup/ # バックアップディレクトリ + conf/ # 定義ファイルディレクトリ + gs_cluster.json # クラスタ定義ファイル + gs_node.json # ノード定義ファイル + password # ユーザ定義ファイル + data/ # データファイル,チェックポイントログディレクトリ + txnlog/ # トランザクションログディレクトリ + expimp/ # Export/Importツールディレクトリ + log/ # サーバイベントログ・運用ツールログディレクトリ + audit/ # サーバ監査ログディレクトリ(監査ログ設定時のみ) +``` + +GridDBホームは、OSユーザgsadmの.bash_profileファイルの設定で変更できます。GridDBホームを変更する場合は、上記ディレクトリのリソースも適宜移動してください。 + +.bash_profileファイルには、環境変数GS_HOMEとGSLOGの2つの環境変数の設定がされています。 + +``` example +vi .bash_profile + +# GridStore specific environment variables +GS_LOG=/var/lib/gridstore/log +export GS_LOG +GS_HOME=/var/lib/gridstore          ★GridDBホームの変更 +export GS_HOME +``` + +データベースディレクトリやバックアップディレクトリ、サーバイベントログディレクトリ、サーバ監査ログディレクトリは、ノード定義ファイルの設定値を変更することで変更できます。 + +クラスタ定義ファイルやノード定義ファイルで設定できる内容に関しましては[パラメータ](#label_parameters)を参照してください。 + + +## データアクセス機能 + +GridDBのデータにアクセスするには、NoSQLインターフェースもしくはNewSQLインターフェースを用いてアプリケーションを開発する必要があります。データアクセスでは、コンテナやテーブルがクラスタデータベースのどこに配置されているかの位置情報を意識する必要はなく、GridDBのクラスタデータベースに接続するだけでアクセスができます。コンテナがクラスタを構成するどのノードに配置されているのかをアプリケーションシステムが意識する必要はありません。 + +GridDBのAPIでは、クラスタデータベースへの初期接続時に、ノード情報(パーティション)とともにコンテナの配置ヒント情報をクライアント側に保持(キャッシュ)します。 + +アプリケーションが利用するコンテナが切り替わる度に、配置されているノードを探す処理のためクラスタにアクセスする必要はなく、コンテナを保持するノードに直に接続して処理をするため、通信のオーバヘッドを最小限としています。 + +GridDBではリバランス処理により、コンテナ配置は動的に変わりますが、クライアントキャッシュは定期的に更新されるため、コンテナの位置は透過です。タイミングによってクライアントからのアクセスでノードがミスヒットした時でも、自動的に再配置情報を取得して処理を継続します。 + + +### TQLとSQL + +データベースのアクセス言語として、TQLとSQL-92準拠のSQLをサポートしています。 + +- TQLとは + + 簡易版SQLとして、コンテナを単位とした検索、集計演算などの機能をサポートします。TQLはNoSQLインターフェースから利用します。 + + TQLは、小規模なコンテナに対して少量ヒットするような検索に適しています。データ量・ヒット件数が少ない場合には、SQLより低いレイテンシで検索できることが特徴です。ヒット件数を少量にする手段の一つとして、TQL構文のLIMIT節の指定があります。 + + 大量データを含むコンテナを検索する場合は、SQLの利用を推奨します。 + + NewSQLインターフェースで作成したコンテナや、パーティショニングされたテーブルに対しても、TQLを利用することができます。パーティショニングされたテーブルに対するTQLについては、次の制限があります。 + + - 構文では、WHERE節の条件式によるフィルタリングが利用できます。集計演算、時系列データ選択・補間演算、最大値・最小値のロウ集合選択演算、ORDER BYなどは利用できません。 + + - 更新用ロックをかけることはできません。 + + TQLの詳細は『[GridDB TQL リファレンス](../md_reference_tql/md_reference_tql.md)』を参照ください。 + +- SQLとは + + ISOで言語仕様の標準化が行われており、GridDBではSQL-92に準拠したデータの操作や定義を行うためのインターフェースをサポートします。SQLはNewSQLインターフェースから利用します。 + + NoSQLインターフェースで作成したコンテナに対しても、SQLを利用することができます。 + + SQLの詳細は『[GridDB SQLリファレンス](../md_reference_sql/md_reference_sql.md)』を参照ください。 + + +### 複数コンテナへの一括処理機能 + +GridDBが提供するNoSQL I/Fでは、時々刻々発生するイベント情報を高速に処理するためのインターフェースを用意しています。 + +大量に発生するイベントを発生の都度データベースサーバに送信していると、ネットワークへの負荷が高くなりシステムのスループットがあがりません。通信回線帯域が狭い場合特に顕著な影響がでます。NoSQL I/Fでは複数のコンテナに対する複数のロウの登録や、複数のコンテナへの複数の問い合わせ(TQL)を1リクエストで処理するためのマルチ処理が用意されています。頻繁にデータベースサーバにアクセスしないため、システム全体のスループットがあがります。 + +以下に例を挙げます。 + +- マルチプット(multiput) + + - 複数のセンサのイベント情報をデータベースに登録する処理として、センサ名毎にコンテナを用意します。センサ名とセンサの時系列イベントのロウ配列を作り、複数のセンサ分まとめたリスト(Map)を作成します。このリストデータを1回のAPI呼び出しでGridDBのデータベースに登録します。 + + - マルチプットのAPIでは、複数クラスタからなるGridDBのノードに対して、1個以上のコンテナへの登録要求をまとめて行うことで通信処理を効率化します。また、マルチ登録処理では、トランザクション実行時のMVCCは行わず、高速に処理します。 + + - マルチプットでは、トランザクションのコミットは、autocommitとなります。1件単位にデータが確定されます。 + +
+multiput処理 +
multiput処理
+
+ + +- マルチクエリ(fetchAll) + + - センサのイベント情報を集計する処理などで、コンテナへのクエリ問い合わせを複数実行するのではなく、1つの問い合わせで実行することができます。たとえば、センサから取得したデータの一日の最大値、最小値、平均値などの集計結果の取得や、最大値や最小値をもつロウ集合や特定の条件に合致するロウ集合といったロウ集合のデータ取得を最適化します。 + +
+fetchAll処理 +
fetchAll処理
+
+ +- マルチゲット(multiget) + + - センサのイベント情報を取得する処理などで複数機器のRowkeyを指定した一括データ取得ができます。 RowKeyPredicateオブジェクトにデータ取得の条件を設定し、複数の機器のデータを一括で取得します。 + + - RowKeyPredicateオブジェクトでは以下の2形式のいずれかで取得条件を設定します。 + - 取得範囲の指定 + - 指定した個別の値 + +
+multiget処理 +
multiget処理
+
+ + +## 索引機能 + +コンテナ(テーブル)のカラムに対し索引を作成することで、条件付き検索が高速に処理できます。 + +索引タイプにはツリー索引(TREE)、空間索引(SPATIAL)の2種類があります。 +設定できる索引はコンテナ(テーブル)のタイプやカラムのデータ型に応じて異なります。 + +- ツリー索引(TREE) + - 等価検索、範囲(より大きい/等しい、より小さい/等しいなど)を含む参照に利用します。 + - 時系列コンテナ(時系列コレクション)のROWKEY(PRIMARY KEY)に対応するカラムを除く、任意種別のコンテナ(テーブル)における次に示す型のカラムに対して設定できます。 + - STRING + - BOOL + - BYTE + - SHORT + - INTEGER + - LONG + - FLOAT + - DOUBLE + - TIMESTAMP + - ツリー索引のみ、複数のカラムを指定した索引を作成できます。これを複合索引と呼びます。1つの複合索引に指定できるカラム数の上限は16個で、同じカラムを複数回指定することはできません。 +- 空間索引(SPATIAL) + - コレクションにおけるGEOMETRY型カラムに対してのみ設定できます。空間検索を高速に行う場合に指定します。 + +コンテナに作成できる索引の数に制限はありませんが、索引の作成は慎重に設計する必要があります。索引は、設定されたコンテナのロウに対して挿入、更新、または削除の各操作が実行されると更新されます。したがって、頻繁に更新されるロウのカラムに多数の索引を作成すると、挿入、更新、または削除の各操作でパフォーマンスに影響ができます。 + +索引は以下のようなカラムに作成します。 +- 頻繁に検索されたり、ソートされたりするカラム +- TQLのWHERE節の条件で頻繁に使用されるカラム +- カーディナリティの高い(重複した値があまり含まれない)カラム + +【メモ】 +- テーブル(時系列テーブル)のカラムには、ツリー索引のみ設定できます。 + + +## 時系列データ特有の機能 + +GridDBでは、高頻度で発生するセンサなどのデータ管理のために、メモリを最大限有効利用するデータ配置アルゴリズム(TDPA:Time Series Data Placement Algorithm)に従いデータ配置処理します。時系列コンテナ(時系列テーブル)では、内部データを周期性で分類しながらメモリ配置します。アフィニティ機能でヒント情報を与えるとさらに配置効率が上がります。また、データを必要に応じてディスクに追い出しながら、ほぼゼロコストで有効期限切れのデータを解放しています。 + +時系列コンテナ(時系列テーブル)は、TIMESTAMP型のROWKEY(PRIMARY KEY)を持ちます。 + +### TQLの演算機能 + +#### 集計演算 + +採取したデータの時間間隔でデータに重みをつけて計算します。つまり、時間間隔が長い場合、長時間その値が続いたことを想定した計算となります。 + +集計演算には以下の関数があります。 + +- TIME_AVG + + - 重み付きで平均を求める演算です。 + - 検索の条件に合致した各ロウについて、前後それぞれの時刻のロウとの中間時刻間の期間を特定の単位で換算したものを、重み付け値として使用します。条件で指定した時刻のロウのみが存在しない場合は、存在しないロウの代わりに条件に指定した時刻の直前、直後のロウを用いて重みづけ計算をします。 + - 計算の詳細イメージを図示します。 + +
+ 重みづけの集計演算(TIME_AVG) +
重みづけの集計演算(TIME_AVG)
+
+ +#### 選択・補間演算 + +時刻データは、収集されるデータの内容や収集タイミングにより想定した時刻より多少の時間のずれが発生することがあります。したがって時刻データをキーにして検索する際にも、指定した時刻周辺のデータが取得できる機能が必要です。 + +時系列コンテナ(時系列テーブル)を検索し、指定したロウを取得するための以下のような関数があります。 + +- TIME_NEXT(\*, timestamp) + + 指定の時刻と同一またはその直後の時刻を持つ1つのロウを選択します。 + +- TIME_NEXT_ONLY(\*, timestamp) + + 指定の時刻の直後の時刻を持つ1つのロウを選択します。 +- TIME_PREV(\*, timestamp) + + 指定の時刻と同一またはその直前の時刻を持つ1つのロウを選択します。 +- TIME_PREV_ONLY(\*, timestamp) + + 指定の時刻の直前の時刻を持つ1つのロウを選択します。 + +また、実体のロウのカラムの値を補間演算で計算するための以下のような関数があります。 + +- TIME_INTERPOLATED(column, timestamp) + + 指定の時刻に関して、一致するロウの指定のカラムの値、または、隣接する前後のロウの指定カラムの値を線形補間して得られた値を求めます。 + +- TIME_SAMPLING(\*|column, timestamp_start, timestamp_end, interval, DAY|HOUR|MINUTE|SECOND|MILLISECOND) + + 開始・終了時刻を指定して、特定範囲のロウ集合をサンプリングします。 + + サンプリング位置の時刻は、開始時刻に対し非負整数倍のサンプリング間隔を加えた時刻のうち、終了時刻と同じかそれ以前のもののみです。 + + 各サンプリング位置の時刻と一致するロウが存在する場合は該当ロウの値を使用します。存在しない場合は補間された値を使用します。 + +### 期限解放機能 + +期限解放とは、設定した保持期間を超えたロウデータを、検索や削除などの操作対象から外して参照不可とした後、DBから物理的に削除する機能です。 利用されなくなった古いデータを操作の対象から外して削除することで、DBサイズを一定に保ち、データベースサイズ肥大化によるパフォーマンス低下を防ぐことができます。 + +
+期限解放 +
期限解放
+
+ +保持期間はコンテナ単位に設定します。保持期間を越えたロウを「期限切れデータ」と呼びます。期限切れデータは参照不可となってAPIから操作できなくなるので、アプリケーションからはそのロウは存在しない状態になります。期限切れデータは、一定期間が経過すると、DBから物理的に削除する対象のデータになります。この削除対象となった期限切れデータを「コールドデータ」と呼びます。コールドデータは、そのまま自動的にDBから削除します。 + +#### 期限解放の設定 + +期限解放は、パーティショニングされたコンテナ(テーブル)で利用可能です。 + +- インターバル、インターバルハッシュでパーティショニングされた以下のテーブルに設定できます。 + - 時系列テーブル + - パーティショニングキーがTIMESTAMP型のコレクションテーブル +- 設定項目は、保持期間、保持期間の単位です。 +- 保持期間の単位として設定できるのは、日/時/分/秒/ミリ秒の単位です。年単位、月単位の指定はできません。 +- ロウの保持期限は、データパーティションのロウ格納期間の最終日時に保持期間を足した日時です。同じデータパーティションに格納されているロウは、全て同じ保持期限になります。 +- コールドデータになる単位は、データパーティションです。物理的データ削除はデータパーティション単位で行われます。 + +
+ パーティション期限解放 +
パーティション期限解放
+
+ +【メモ】 + +- 期限解放の設定は、テーブル作成時に行います。作成後に設定を変更することはできません。 +- 保持期限超過の判定に使用される現在時刻は、GridDBの各ノードの実行環境に依存します。したがって、ネットワークの遅延や実行環境の時刻設定のずれなどにより、クライアントの時刻よりGridDBのノードの時刻が進んでいる場合、期限切れ前のロウにアクセスできなくなる場合があります。逆にクライアントの時刻のみ進んでいる場合は、期限切れロウにアクセスできる場合があります。意図しないロウの喪失を避けるために、最低限必要な期間よりも大きな値を設定することを推奨します。 +- 期限切れのロウは、検索や更新といったロウ操作の対象から外れ、存在しないものとみなされます。期限切れのロウに対して行われた操作はエラーにはなりません。 + - 例) 保持期限が30日の設定の場合、現在から31日前の日時のロウを登録しても登録処理はエラーにはならず、かつ、テーブルにはそのロウは保存されません。 +- 期限解放を設定する場合は、必ずクラスタの全ノードの時刻を同期してください。時刻がずれていると、ノード間で期限解放されるタイミングが異なるなどの問題が生じる場合があります。 +- 期限切れデータからコールドデータになるまでの期間は、期限解放の保持期間の設定によって異なります。 + + | 保持期間 | 期限切れからコールドデータになるまでの最大期間 | + |--------------|------------------------------------------------| + | ~3日 | 約1.2時間 | + | 3日~12日 | 約5時間 | + | 12日~48日 | 約19時間 | + | 48日~192日 | 約3日 | + | 192日~768日 | 約13日 | + | 768日~ | 約50日 | + +#### コールドデータの自動削除 + +1秒間に1回、定期的にDBファイルの管理情報をスキャンして、その時点でコールドデータになっているロウを物理的に削除します。DBファイルの管理情報をスキャンする量は1回の実行につき2000ブロック分です。スキャンする量は、ノード定義ファイル(gs_node.json)の/dataStore/batchScanNumで設定できます。登録量が多いシステムなどでは、自動削除の速度が登録に追いつかずに、DBサイズが増加し続ける可能性があります。その場合はスキャンする量を増やしてください。 + + + +## テーブルパーティショニング機能 + +複数ノードで動作するGridDBのアプリケーションを高速化するには、処理するデータをできるだけメモリに配置することが重要です。 データ登録数が多い巨大なコンテナ(テーブル)では、テーブルのデータを分割してノードに分散配置することで、複数ノードのCPUやメモリリソースを効率的に活用した処理が可能です。分割したデータは、「データパーティション」という複数の内部コンテナに格納します。データをどのデータパーティションに格納するかは、テーブル作成時に指定された「パーティショニングキー」のカラムの値を基に決定します。 + +GridDBではテーブルパーティショニングの方法として、ハッシュパーティショニング、インターバルパーティショニング、インターバル-ハッシュパーティショニングの3種類があります。 + +テーブルの作成・削除はNewSQLインターフェースのみ、データの登録・更新・検索はNewSQL/NoSQLインターフェースで実行できます。(一部制限があります。詳細は[TQLとSQL](#tql_and_sql)を参照ください) + +- データ登録 + + テーブルにデータを登録すると、パーティショニングキーの値とパーティショニングの方法に応じて、適切なデータパーティションにデータが自動的に登録されます。データパーティションを直接指定してデータ登録することはできません。 + +- 索引 + + テーブルに索引を作成した場合、データパーティション単位でのローカル索引が作成されます。テーブル全体でのグローバル索引を作成することはできません。 + +- データ操作 + + パーティショニングキーに指定したカラムがプライマリキーである場合、パーティショニングキーに対するデータ更新操作は、エラーになります。データを削除してから再登録してください。 + + パーティショニングキーに指定したカラムがプライマリキーでない場合、NoSQL I/Fでのみ更新操作が可能です。 + +- 期限解放機能 + + インターバル、インターバルハッシュでパーティショニングされた以下のテーブルに期限解放を設定できます。 + - 時系列テーブル + - パーティショニングキーがTIMESTAMP型のコレクションテーブル + +- 注意点 + + V4.3より、プライマリキーが存在する場合に、プライマリキー以外のカラムをパーティショニングキーに指定すると、デフォルトではエラーとなります。指定可能とするにはクラスタ定義ファイル(gs_cluster.json)の/sql/partitioningRowkeyConstraintにfalseを設定する必要があります。 + + プライマリキー以外のカラムをパーティショニングキーに指定した場合、プライマリキーの制約は、データパーティションの単位では保証しますが、テーブル全体では保証しません。そのため、テーブル全体としては、プライマリキーに同じ値が重複して登録される場合があります。 + +
+テーブルパーティショニング +
テーブルパーティショニング
+
+ +### テーブルパーティショニングの利点 + +テーブルパーティショニングを利用して、大規模なデータを分割することで、メモリの効率的な利用や検索の処理対象データの絞込みによる性能向上の効果があります。 + +- メモリの効率的な利用 + + 登録や検索などの処理では、処理に必要なデータパーティションがメモリに読み込まれます。処理対象外のデータパーティションは読み込まれないため、処理対象のデータが局所的で一部のデータパーティションに集中する場合は、メモリ上に読み込むデータ量が少なくなります。メモリへのスワップイン/スワップアウトの頻度が低減して、パフォーマンスが向上します。 + +- 検索の処理対象データの絞込み + + 検索する際に、問合わせの絞込み条件に合致するデータパーティションのみを処理対象とします。必要ではないデータパーティショニングにはアクセスしません。この機能をプルーニングと呼びます。 処理対象となるデータ量が小さくなるため、パフォーマンスが向上します。プルーニングが有効になる問合せの絞込み条件は、パーティショニング種別ごとに異なります。 + +上記の点について、テーブルパーティショニングを利用しない場合と利用する場合の特徴を説明します。 + +テーブルパーティショニングを利用せずに大規模データをひとつのテーブルに格納する場合、処理に必要なデータをすべてメモリ上に載せることができず、メモリとデータベースファイル間でのスワップイン/スワップアウトが頻繁に発生してパフォーマンスが低下します。特に大規模テーブルのデータ量よりもGridDBノードのメモリが小さい場合に低下が顕著になります。また、テーブルに対するアクセスが1ノードに集中するため、並列度が低くなります。 + +
+テーブルパーティショニングを使用しない場合 +
テーブルパーティショニングを使用しない場合
+
+ +テーブルパーティショニングを利用した場合、大規模データを各データパーティションに分割して、複数ノードに分散配置します。 + +登録や検索などの処理の際には、処理に必要なデータパーティションがメモリに読み込まれます。処理対象外のデータパーティションは読み込まれないため、テーブルパーティショニングを使わない大規模テーブルと比較すると必要なデータ量は小さくなる場合が多く、メモリへのスワップイン/スワップアウトの頻度が低減します。各データパーティションにデータを偏りなく均等に分割した方が各ノードのCPUやメモリリソースを有効に活用することができます。 + +また、データパーティションはノードに分散配置されるため、データへの並列アクセスが可能になります。 + +
+テーブルパーティショニングを使用する場合 +
テーブルパーティショニングを使用する場合
+
+ +### ハッシュパーティショニング + +ハッシュパーティショニングでは、ハッシュ値 (HASH) に基づいてテーブルパーティションに均等にデータを分割して格納します。 + +高い頻度でデータ登録を行うアプリケーションシステムでの利用においては、テーブルの末尾にアクセスが集中し、待ち時間が発生する場合があります。ハッシュ分割を使用すると複数のテーブルが用意されるため、アクセス分散できます。 + +
+ハッシュパーティショニング +
ハッシュパーティショニング
+
+ +- データの分割 + + パーティショニングキーとハッシュの分割数Mを指定されることで、パーティショニングキーの値から1~Mの整数を返すハッシュ関数を定義し、その返値に基づいてデータ分割を行います。分割数Mの最大値は1024です。 + +- パーティショニングキー + + パーティショニングキーに指定できるカラムのデータ型に制限はありません。 + +- データパーティションの作成 + + テーブル作成時に、指定されたハッシュの分割数Mの数のデータパーティションを自動的に作成します。テーブル作成後は、データパーティションの数は変更できません。変更する場合は、テーブルの再作成が必要となります。 + +- データパーティションの削除 + + データパーティション単体を指定して削除することはできません。 + + テーブルの削除により、そのテーブルを構成するデータパーティションをすべて削除します。 + +- プルーニング + + ハッシュの場合は、パーティショニングキーの値一致検索を行う場合にプルーニングが適用され、条件に適したデータパーティションのみ処理対象とするため、処理速度の向上やメモリ使用量削減の効果があります。 + +### インターバルパーティショニング + +インターバルパーティショニングでは、指定された一定の値間隔でデータを分割して、データパーティションに格納します。各データパーティションに格納するデータの区間(下限値から上限値)は、指定された値間隔を基に自動的に決定します。 + +ある一定の範囲の値を持つデータを同じデータパーティション上に格納するので、登録するデータが連続値の場合や、特定期間の範囲の検索を行う場合などに、より少ないメモリで処理できます。 + +
+インターバルパーティショニング +
インターバルパーティショニング
+
+ +- データの分割 + + 値間隔の基準値(分割幅値)に基づいてデータ分割を行います。 パーティショニングキーの型によって、指定できる分割幅値の範囲が異なります。 + - BYTE型 : 1~27-1 + - SHORT型 : 1~215-1 + - INTEGER型 : 1~231-1 + - LONG型 : 1000~263-1 + - TIMESTAMP型 : 1以上 + + パーティショニングキーがTIMESTAMP型の場合は、単位に「DAY」を指定します。 + +- パーティショニングキー + + パーティショニングキーに指定できるデータ型は、BYTE型, SHORT型, INTEGER型, LONG型, TIMESTAMP型です。 パーティショニングキーはひとつのカラムで、NOT NULL制約を設定する必要があります。 + +- データパーティションの作成 + + テーブル作成時には、データパーティションを作成しません。データ登録時、該当するデータパーティションが存在しない場合に、データパーティションを自動的に作成します。 + + データパーティション数の上限値は10000個です。データパーティション数が上限値に達すると、新規のデータパーティションが必要なデータ登録はエラーになります。エラーが発生した場合は、不要なデータパーティションを削除して、データ登録を再実行してください。 + + テーブル作成時には、登録するデータの分布とデータパーティション上限数10000を考慮して、分割幅値を決定してください。分割幅値に対してデータの範囲が幅広く、データパーティションが大量に作成されるようなテーブルでは、データパーティション削除のメンテナンスが頻繁に必要になります。 + +- データパーティションの削除 + + データパーティション単体を削除できます。一度削除したデータパーティションは、再作成できません。 + 削除したデータパーティションに対する新規データ登録はすべてエラーとなります。 + データパーティションを削除する前には、メタテーブルで削除対象のデータパーティションが管理するデータの範囲を確認してください。 + メタテーブルの詳細は『[GridDB SQLリファレンス](../md_reference_sql/md_reference_sql.md)』をご参照ください。 + + テーブルを削除すると、そのテーブルを構成するデータパーティションをすべて削除します。 + + テーブル全体に対する検索を行った場合、すべてのデータパーティションが処理対象になるため、不要なデータパーティションはあらかじめ削除した方が効率的な検索ができます。 + +- データパーティションのメンテナンス + + データパーティション数が10000に達する場合、または、不要なデータパーティションがある場合は、データパーティションを削除してメンテナンスする必要があります。 + + - データパーティション数の確認方法 + + データパーティションの情報を管理しているメタテーブルを参照して確認します。詳細は『[GridDB SQLリファレンス](../md_reference_sql/md_reference_sql.md)』を参照ください。 + + - データパーティションの削除方法 + + テーブルパーティションの下限値を指定して削除を行います。詳細は『[GridDB SQLリファレンス](../md_reference_sql/md_reference_sql.md)』を参照ください。 + +
+インターバルパーティションテーブル作成・削除の例 +
インターバルパーティションテーブル作成・削除の例
+
+ +- プルーニング + + where句の条件にパーティショニングキーを指定した検索を行う場合、条件に適したデータパーティションのみ処理対象とするため、処理速度の向上やメモリ使用量削減の効果があります。 + +#### ユーザ指定データパーティション配置 + + 対象テーブルがインターバルパーティションで、パーティショニングキーがTIMESTAMP型の場合は、ユーザがデータパーティションの配置先を指定したテーブル生成を行うことができます。 + + 通常のテーブル生成SQLでは、データパーティションの配置先はサーバが独自の規則を用いて決定しますが、複数のインターバルパーティショニングテーブルに対して、特定の日付のデータパーティション配置先が競合する場合があります。下図はそれを示したもので、同一日時の配置先が競合により処理スレッドが競合するので、データ処理の同時実行性能が低下することがあります。 + +
+同一日時に対するデータパーティションの競合 +
同一日時に対するデータパーティションの競合の例
+
+ + テーブル生成時に区間グループ番号を指定することで、データパーティションの配置に規則性を設けて、グループ番号が異なるテーブル同士は同一日時において処理スレッドが競合しないような割付が行われます。以下にその例を示します。 + +
+ユーザ指定データ配置機能 +
テーブル生成時にユーザがデータパーティション配置先を指定する機能
+
+ +***注意点*** + 本機能を効果的に利用するには幾つか条件があり、それらを運用開始時点で検討する必要があります。 + + 1. クラスタを構成する全ノードの並列度を揃えておく必要があります。また、テーブル生成以降は並列度を変更すると十分な効果が得られなくなるため、開始時点の並列度を維持した運用が必要となります。 + + 2. 競合を回避したいテーブルの個数は基本的には並列度以下となるようにテーブルの設計を行います。これ以上の指定を行った場合は性能が劣化するケースがあります。 + + 3. 安定した性能を維持し続けるには、テーブル生成した時点のクラスタノード構成および各ノードのオーナ、バックアップなどのクラスタパーティション配置を運用によって維持し続ける必要があります。また、ノード増設なども変動要因になるため、できる限り固定的な環境での運用が推奨となります。 + +### インターバル-ハッシュパーティショニング + +インターバル-ハッシュパーティショニングは、インターバルパーティショニングとハッシュパーティショニングを組み合わせたものです。まずインターバルパーティショニングでデータを分割し、その分割されたデータに対して、さらにハッシュパーティショニングが行われます。 データパーティショニングの数は、インターバルパーティションニングによって分割した区間の数×ハッシュの分割数になります。 + +
+インターバル-ハッシュパーティショニング +
インターバル-ハッシュパーティショニング
+
+ +インターバルパーティショニングで分割したデータパーティションを、さらにハッシュによって適切にノードに分散することができます。一方で、データパーティション数が多くなることで、検索時のオーバヘッドが発生します。ノード分散と処理のオーバヘッドを考慮してご利用ください。 + +インターバル-ハッシュパーティショニングは、インターバルパーティショニングとハッシュパーティショニングを組み合わせたものなので、基本的な機能はそれぞれのパーティショニングの機能と同等です。インターバル-ハッシュパーティショニングに特有の点のみ説明します。 + +- データの分割 + + インターバル-ハッシュパーティショニングでの分割幅値は、LONGの場合のみインターバルパーティションと値の範囲が異なります。 + - BYTE型 : 1~27-1 + - SHORT型 : 1~215-1 + - INTEGER型 : 1~231-1 + - LONG型 : 1000×ハッシュの分割数~263-1 + - TIMESTAMP型 : 1以上 + +- データパーティションの数 + + ハッシュで分割された数も含めて、データパーティション数の上限値は10000個です。上限に達した場合の動作やメンテナンスが必要な点については、インターバルパーティショニングと同様です。 + +- データパーティションの削除 + + インターバルで分割した単位でデータパーティション群を削除できます。同じインターバル区間をハッシュ分割したデータパーティション単体の削除はできません。 + +### テーブルパーティショニング種別の選択基準 + +GridDBでは、テーブルパーティショニングの分割の種別として、ハッシュ、インターバル、インターバルハッシュをサポートします。 + +検索やデータアクセスの条件となるようなカラムを、テーブルを分割するためのパーティショニングキーとします。そのパーティショニングキーの値に対して、大量データを均等に分割するための範囲が決定できる場合にはインターバルパーティショニングもしくはインターバル-ハッシュパーティショニング、決定が困難な場合にはハッシュを選択します。 + +
+データの範囲 +
データの範囲
+
+ +- インターバルパーティショニング、インターバル-ハッシュパーティショニング + + データを均等に分割するための区間(分割幅値)が事前に決定できる場合には、インターバルパーティショニングを選択します。 インターバルパーティションへの問合せでは、プルーニングによって、条件に合致するデータパーティションのみにアクセスして結果を取得するため、パフォーマンスが改善します。また、検索だけでなく、特定の範囲にデータを連続登録する場合もパフォーマンスが改善します。 + +
+ インターバルパーティショニング +
インターバルパーティショニング
+
+ + 従って、インターバルパーティショニングを利用する場合は、アプリケーションで頻繁に登録・検索するデータ範囲を意識して分割幅値を決定することで、使用するメモリの削減が可能です。例えば、センサデータなどの時系列データで、かつ直近データに対する検索が多いシステムの場合には、検索対象の範囲をインターバルパーティショニングの分割幅値にすると、処理対象となるデータパーティションサイズのメモリで検索のパフォーマンスを保つことができます。 + +
+ インターバルパーティショニングの登録と検索処理の例 +
インターバルパーティショニングの登録と検索処理の例
+
+ + さらに、インターバル-ハッシュパーティショニングを利用して、インターバルパーティショニングで分割したデータパーティションをハッシュパーティショニングで均等分割してノードに分散配置することで、特定範囲のデータに対する並列アクセスも可能になります。 + +
+ インターバルハッシュパーティショニング +
インターバルハッシュパーティショニング
+
+ +- ハッシュパーティショニング + + 格納するデータの特徴が事前にわからない場合、また、データを均等に分割可能な区間をあらかじめ決めることが困難な場合には、ハッシュパーティショニングを選択します。パーティショニングキーにユニークな値のカラムを指定することで、自動的に大量データを均等分割することができます。 + +
+ ハッシュパーティショニング +
ハッシュパーティショニング
+
+ + ハッシュパーティショニングにより、テーブル全体への並列アクセス、および一致検索に限ってパーティションプルーニングが可能なため、システムのパフォーマンスを改善できます。ただし、高いパフォーマンスを得るためには、ノード毎に管理するテーブルパーティション全てを格納できるサイズのメモリが必要です。 + +
+ ハッシュパーティショニングの登録と検索処理の例 +
ハッシュパーティショニングの登録と検索処理の例
+
+ +## トランザクション機能 + +GridDBではコンテナ単位のトランザクション処理をサポートし、トランザクションの特性として一般的に言われるACID特性をサポートしています。以下にトランザクション処理でサポートしている機能の詳細を説明していきます。 + +### トランザクションの開始と終了 + +コンテナに対して、ロウの検索・更新などの操作を行ったときに新たなトランザクションが開始され、データの更新結果を確定(コミット)または破棄(アボート)した時にトランザクションが終了します。 + +【メモ】 +- コミットとは、処理中のトランザクションの情報を確定し、データを永続化させる処理です。 + - GridDBではコミット処理でトランザクションの更新したデータがトランザクションログとして保管され、保持していたロックが解放されます。 +- アボートとは、トランザクションの処理途中のデータをすべてロールバックする(処理を取り消す)処理です。 + - GridDBでは処理途中のデータはすべて破棄され、保持していたロックも解放されます。 + +トランザクションの初期の動作はautocommit(自動コミット)に設定されています。 + +autocommitでは、アプリケーションからのコンテナに対する更新(データの追加、削除、変更)操作開始毎に新たなトランザクションが開始され、操作終了とともに自動的にコミットされます。 autocommitをオフにすることで、アプリケーションからの要求に応じたタイミングでトランザクションのコミット、アボートを指示できます。 + +トランザクションのライフサイクルは、トランザクションのコミットやアボートによる完了とともにタイムアウトによるエラー終了があります。トランザクションがタイムアウトによりエラー終了した場合、そのトランザクションはアボートされます。トランザクションのタイムアウトは、トランザクションが開始してからの経過時間です。 トランザクションのタイムアウト時間は、アプリケーション単位にGridDBに接続する際のパラメータとして指定することができます。また、タイムアウト時間の上限値はノード定義ファイル(gs_node.json)に設定できます。 + +### トランザクションの一貫性レベル + +トランザクションの一貫性レベルにはimmediate consistencyとeventual consistencyの2種類があります。この指定はアプリケーションごとにGridDBに接続する際のパラメータとして指定することもできます。 デフォルトはimmediate consistencyです。 + +- immediate consistency + + - コンテナに対する他のクライアントからの更新結果は、該当トランザクションの完了後即座に反映されます。そのため、常に最新の内容を参照します。 + +- eventual consistency + + - コンテナに対する他のクライアントからの更新結果は、該当トランザクションが完了した後でも反映されていない場合があります。 そのため、古い内容を参照する能性があります。 + +immediate consistencyは更新操作、読み取り操作で有効です。 eventual consistencyは読み取り操作でのみ有効です。 常に最新の結果を読み取る必要のないアプリケーションではeventual consistencyを指定すると読み取り性能が向上します。 + +### トランザクションの隔離レベル + +データベースの内容は常に整合性が保たれている必要があります。 複数のトランザクションを同時実行させたとき、一般に以下の現象が課題として挙がります。 + +- ダーティリード + + トランザクションが書き込んだコミットされていないデータを、別のトランザクションで読み込んでしまう現象です。 + +- 反復不能読み取り + + トランザクション内で以前読み込んだデータを再読み込みできなくなる現象です。トランザクション内で以前読み込んだデータを再度読み込もうとしても、別のトランザクションがそのデータを更新、コミットしたために、以前のデータが読み込めなくなります(更新後の新しいデータを読み込むことになります) + +- ファントムリード + + トランザクション内で以前得られた問い合わせの結果が得られなくなる現象です。トランザクション内で以前実行した問い合わせを再実行しても、別のトランザクションがその問い合わせ条件を満たすデータを変更、追加し、コミットしたために、同じ条件で問い合わせを実行しても、以前の結果が得られなくなります(更新後のデータを得ることになります)。 + +GridDBでは、トランザクションの隔離レベルとして「READ_COMMITTED」をサポートしています。 READ_COMMITTEDでは、確定した最新データを常に読み取ります。 + +トランザクションを実行する場合、他のトランザクションからの影響を受けないように配慮する必要があります。隔離レベルは、実行トランザクションを他のトランザクションからどの程度隔離するか(どの程度整合性を保てるか)を示す指標であり、4つのレベルがあります。 + +4つの隔離レベルおよび、それに対して同時実行時の課題であげた現象が起こる可能性は以下のとおりです。 + +| 隔離レベル | ダーティリード | 反復不能読み取り | ファントムリード | +|----------------------------|------------------|------------------|------------------| +| READ_UNCOMMITTED | 発生の可能性あり | 発生の可能性あり | 発生の可能性あり | +| READ_COMMITTED | 安全 | 発生の可能性あり | 発生の可能性あり | +| REPEATABLE_READ | 安全 | 安全 | 発生の可能性あり | +| SERIALIZABLE | 安全 | 安全 | 安全 | + +READ_COMMITEDでは、以前読み込んだデータを再度読み込んだ場合に、以前のデータとは異なるデータを得たり、問い合わせを再実行した場合に、同じ検索条件で問い合わせを実行しても異なる結果を得てしまうことがあります。これは前回の読み込み後に、別のトランザクションによって更新、コミットが行われ、データが更新されたためです。 + +GridDBでは、MVCCによって、更新中のデータを隔離しています。 + +### MVCC + +GridDBでは、READ_COMMITTEDを実現するために「MVCC(Multi-Version Concurrency Control:多版型同時実行制御方式)」を採用しています。 + +MVCCとは、各トランザクションがデータベースに対して問い合わせるときに、別のトランザクションが更新中の最新のデータでなく、更新前のデータを参照して処理を行う方式です。更新前のデータを参照してトランザクションを並行実行できるため、システムのスルー プットが向上します。 + +実行中のトランザクションの処理がコミットすると、他のトランザクションも最新のデータを参照できます。 + +
+MVCC +
MVCC
+
+ +### ロック + +コンテナに対する複数トランザクションからの更新処理要求競合時の一貫性を保つため、データのロック機構があります。 + +ロックの粒度は、コンテナの種別に応じて異なります。またロックの範囲は、データベースへの操作の種別に応じて異なります。 + +#### ロックの粒度 + +コンテナの種別ごとのロックの粒度は次のとおりです。 + +- コレクション・・・ロウ単位でロックします。 +- 時系列コンテナ・・・ロウ集合でロックされます。 + - 時系列コンテナは、ブロックをいくつかに分割したデータ処理の単位に複数のロウを配置します。 このデータ処理の単位をロウ集合とよびます。コレクションでのロックの粒度よりもデータ粒度が荒いですが、大量に発生する時系列コンテナを高速に処理するためのデータの管理の単位です。 + +これらは、コンテナの種別ごとのユースケースの分析に基づいています。 + +- コレクションデータはRDBのテーブルと同様にデータを管理するため、既存のロウデータが更新されるケースがある +- 時系列コンテナは時々刻々発生するデータを保持するデータ構造であり、特定の時刻のデータが更新されるケースは少ない + +#### データベース操作によるロック範囲 + +コンテナへの操作にはデータの登録、削除のみならず、データ構造の変更に伴うスキーマ変更や、アクセス高速化のための索引作成などの操作があります。ロック範囲は、コンテナ全体への操作、またはコンテナのロウ単位の操作のいずれかによって異なります。 + +- コンテナ単位のロック + - 索引操作(createIndex/dropIndex) + - コンテナ削除 + - スキーマ変更 +- ロックの粒度に従ったロック + - put/update/remove + - get(forUpdate) + + ロウへのデータ操作ではロックの粒度に沿ったロックを確保します。 + +ロック確保で競合した場合、先行したトランザクションがコミットもしくはロールバック処理で実行が完了しロックを解放するまで、後続のトランザクションはロック確保待ちとなります。 + +ロック確保待ちは、トランザクションの実行完了以外では、タイムアウトでも解消されます。 + +### データ永続化 + +コンテナやテーブルに登録・更新されたデータは、ディスクやSSDに永続化され、ノード障害発生時のデータ消失から保護されます。メモリ上の更新データをブロック単位にデータファイル・チェックポイントログファイルに定期的に保存するチェックポイント処理と、データ更新に同期して更新データをシーケンシャルにトランザクションログファイルに書き込むトランザクションログ処理の2つの処理があります。 + +トランザクションログの書き込みには、以下のいずれかをノード定義ファイルに設定できます。 + +- 0: SYNC +- 1以上の整数値: DELAYED_SYNC + +"SYNC"では、更新トランザクションのコミット・アボートごとに、ログ書き込みを同期的に行います。"DELAYED_SYNC"では、更新時のログ書き込みを、更新タイミングとは関係なく、指定秒数毎に遅延して行います。デフォルト値は"1(DELAYED_SYNC 1秒)"です。 + +"SYNC"を指定するとノード障害発生時に最新の更新内容を消失する可能性が低くなりますが更新が多いシステムでは性能に影響します。 + +一方、"DELAYED_SYNC"を指定すると、更新性能は向上しますが、ノード障害発生時ディスクに書き込まれていない更新内容があるとそれらが失われます。 + +クラスタ構成でレプリカ数が2以上の場合は、他のノードにレプリカを持つため、"DELAYED_SYNC"設定でも1ノード障害時に最新の更新内容を失う可能性は低くなります。 更新頻度が高く、性能が要求される場合には、"DELAYED_SYNC"を設定することも考慮してください。 + +チェックポイントでは、更新ブロックをデータベースファイルに更新します。 チェックポイント処理は、ノード単位に設定したサイクルで動作します。チェックポイントのサイクルはノード定義ファイルのパラメータで設定します。初期値は、60秒です。 + +チェックポイントの実行サイクルの数値を上げることで、ディスクへの永続化を夜間に実施するなど比較的時間に余裕がある時間帯に設定することができます。一方サイクルを長くした場合に、システム処理外でノードを再起動した際にロールフォワードすべきトランザクションログファイルが増え、リカバリ時間が増えるという欠点もあります。 + +
+チェックポイント +
チェックポイント
+
+ +### タイムアウト処理 + +タイムアウト処理は、NoSQL I/F、NewSQL I/Fで設定できる内容が異なります。 + +#### NoSQL I/Fのタイムアウト処理 + +NoSQL I/Fでは、アプリケーション開発者に通知されるタイムアウトには2種類のタイムアウトがあります。アプリケーションの処理時間の制限に関するトランザクションタイムアウトと、障害発生時の回復処理のリトライ時間に関するフェイルオーバータイムアウトの2つです。 + +- トランザクションタイムアウト(transactionTimeout) + + 処理対象のコンテナにアクセスを開始してからタイマが開始され、指定した時間を超えるとタイムアウトが発生します。 + + 長時間更新ロックを保有するトランザクション(更新モードで検索し、ロックを保持したまま解放しないアプリケーション)や長時間大量の結果セットを保持するトランザクション(長時間、クラスタシステムのメモリを解放しないアプリケーション)などからロックやメモリを解放するために用意されたタイムアウト時間です。トランザクションタイムアウトに達したらアプリケーションはアボートされます。 + + トランザクションタイムアウトは、クラスタ接続時のパラメータとしてアプリケーションで指定できます。タイムアウト時間の上限値はノード定義ファイルで指定します。 タイムアウト時間の上限値の初期値は300秒です。処理に長時間かかるトランザクションの発生を監視をするためには、システムの要件に合わせてタイムアウト時間とその上限値を設定してください。 + +- フェイルオーバータイムアウト(failoverTimeout) + + クラスタを構成するノードに障害が発生したとき、ノードに接続しているクライアントが代替えノードに接続する際のエラーリトライ時のタイムアウト時間です。リトライ処理で新たな接続先が見つかった場合、クライアントアプリケーションにはエラーは通知されません。フェイルオーバータイムアウトは、初期接続時のタイムアウトにも利用されます。 + + フェイルオーバータイムアウトは、クラスタ接続時のパラメータとしてアプリケーションで指定できます。システムの要件に合わせてタイムアウト時間を設定してください。 + +トランザクションタイムアウト、フェイルオーバータイムアウトともに、Java APIやC APIでGridStoreオブジェクトを用いてクラスタに接続する際に設定できます。 +詳細は『[GridDB Java APIリファレンス](../md_reference_java_api/md_reference_java_api.html)』や『[GridDB C APIリファレンス](../md_reference_c_api/md_reference_c_api.html)』を参照ください。 + +  + +#### NewSQL I/Fのタイムアウト処理 + +NewSQL I/Fでは、ログイン(接続)タイムアウト、ネットワーク応答タイムアウト、クエリタイムアウトの3種類のタイムアウトがあります。 + +- ログイン(接続)タイムアウト + + クラスタに初期接続する際のタイムアウトです。初期設定は5分に設定されていますが、APIのDriverManagerで変更可能です。 + +- ネットワーク応答タイムアウト + + クライアントとクラスタ間の応答監視でのタイムアウトです。GridDBの現バージョンでは、タイムアウトは5分であり、タイムアウト時間の変更はできません。 + + クライアントからの通信で15秒間サーバが無応答の場合にはリトライし、5分間応答がない場合タイムアウトとなります。長時間のクエリ処理中にタイムアウトとなることはありません。 + +- クエリタイムアウト + + 実行するクエリ単位にタイムアウト時間を設定できます。初期設定ではタイムアウト時間は設定されていません。(長時間のクエリ実行を許容しています。)長時間クエリの監視をするために、システムの要件に合わせてタイムアウト時間を設定してください。設定は、APIのStatementで設定できます。 + + +## レプリケーション機能 + +クラスタを構成する複数のノード間では、ユーザが設定したレプリケーション数に従って、パーティション単位にデータのレプリカが作成されます。 + +データのレプリカを分散ノード間で保持することで、ノード障害が発生しても、ノンストップで処理を継続できます。クライアントAPIでは、ノードの障害を検出すると、自動的にレプリカを保持する別ノードにアクセスを切り替えます。 + +レプリケーション数のデフォルト値は2で、複数ノードのクラスタ構成で動作した場合、データが2重化されます。 + +コンテナに更新があると、多重化されたパーティションのうちオーナノード(レプリカのマスタを持つノード)が更新されます。 + +その後オーナノードから更新内容がバックアップノードに反映されますが、その方法は2つあります。 + +- 非同期レプリケーション + + 更新処理のタイミングと同期せずにレプリケーションを行います。準同期レプリケーションに対して更新性能に優れますが、可用性では劣ります。 + +- 準同期レプリケーション + + 更新処理のタイミングで同期的にレプリケーションを行いますが、レプリケーション完了の待ち合わせは行いません。可用性の面では優れますが、性能面では劣ります。 + +可用性よりも性能を重視する場合は非同期レプリケーションに、可用性を重視する場合は準同期レプリケーションに設定してください。 + +【メモ】 +- レプリケーション数の設定は、クラスタ定義ファイル(gs_cluster.json)の/cluster/replicationNumで設定します。 レプリケーションの同期設定は、クラスタ定義ファイル(gs_cluster.json)の/transaction/replicationModeで設定します。 + +## データ同期機能【EE限定】 + +ノードに障害が発生した場合システムは自動的にレプリカを復旧してデータを再配置します。この機能を「自律的データ配置機能」と呼びます。 +このレプリカ復旧にはデータ同期機能が用いられますが、これは以下の2通りのいずれかが用いられます。 + +A) 差分トランザクションログを用いた同期方法 + +B) オリジナルのデータファイルを用いた同期方法 + +多くの場合A)のほうが高速にデータ同期を行うことができますが、データ同期に必要な差分トランザクションログが削除された場合はB)の方法で実行されます。 +A)のデータ同期を優先的に行いたい場合は以下の設定を行ってください。 +障害発生から指定時間はデータ同期で利用するトランザクションログファイルが削除されにくくなります。 +ただし、保持するトランザクションログファイル数が増加するため、本機能を利用する際は十分なディスク空きがあることを確認してください。 + +| パラメータ| 初期値 |  パラメータの意味と制限値  | 変更 | +|------------|-------|------------------------|------| +| /sync/enableKeepLog | false | 本機能を利用する場合はtrueを設定します。 また配置表の固定化指定もあわせて有効とする必要があります(詳細は[配置表の固定化指定](#cluster_stable_goal)を参照)| オンライン| +| /sync/keepLogInterval | 1200s | 障害発生から指定時間トランザクションログファイルの削除をできる限り抑制します。|オンライン| + +## アフィニティ機能 + +アフィニティ機能とは、関連のあるデータを結びつける機能です。GridDBではアフィニティ機能として、データアフィニティとノードアフィニティの2種類を提供します。 + +### データアフィニティ + +データアフィニティには、複数のコンテナ(テーブル)をグループ化して別ブロックに配置する機能と、各コンテナ(テーブル)毎に別ブロックに配置する機能があります。 + +#### 複数のコンテナをグループ化して別ブロックに配置 + +同じパーティションに配置されたコンテナ(テーブル)を、ヒント情報を元にグルーピングして、それぞれ別ブロックに配置するための機能です。各ブロックに関連性の強いデータのみ格納することで、データアクセスの局所化を図り、メモリヒット率を高めることができます。 + +ヒント情報は、コンテナ(テーブル)作成時にプロパティとして与えます。使用できる文字列は、コンテナ(テーブル)名の命名規則と同様に制限があります。 + +同じヒント情報があるデータをできるだけ同じブロックに配置します。ヒント情報はデータの更新頻度や参照頻度に応じて設定します。 たとえば、分単位、日単位、月単位、年単位にデータをサンプリングや参照する監視システムに対して、以下のような利用方法でシステムのデータが登録・参照・更新される場合のデータ構造を考えます。 + +1. 監視機器から分単位のデータが送信され、監視機器単位に作成したコンテナにデータを保存 +2. 日単位のデータレポート作成のため、一日分のデータの集計を分単位データから行い、日単位コンテナ(テーブル)に保存 +3. 月単位のデータレポート作成のため、日単位コンテナ(テーブル)のデータの集計を行い、月単位コンテナ(テーブル)に保存 +4. 年単位のデータレポート作成のため、月単位コンテナ(テーブル)のデータの集計を行い、年単位コンテナ(テーブル)に保存 +5. カレントの使用量(分単位、日単位)は常に表示パネルに更新表示 + +GridDBでは、コンテナ単位にブロックを占有するのではなく、ブロックには時刻の近いデータが配置されます。したがって、2.の日単位コンテナ(テーブル)を参照し、月単位の集計を行い集計時間をROWKEY(PRIMARY KEY)とする3.のデータと、分単位の1.のデータが同一ブロックに保存される可能性があります。 + +メモリが小さく監視データがすべてメモリに収まらない大容量データで4.の年単位の集計処理を行う場合、ブロックが分断して配置された3.のデータをメモリに配置するために、常時必要な1.のデータがメモリから追い出されるなど、直近でないデータの読み込みにより監視したいデータがスワップアウトされる状況が発生します。 + +この場合、分単位、日単位、月単位などコンテナ(テーブル)のアクセス頻度に沿ったヒントを与えることで、アクセス頻度の低いデータと高いデータをデータ配置時に別ブロックに分離します。 + +このように、データアフィニティによってアプリケーションの利用シーンに合わせたデータ配置ができます。 + +
+Data Affinity +
複数のコンテナをグループ化して別ブロックに配置
+
+ +【注意】 +- データアフィニティは異なるパーティションに配置されたコンテナ(テーブル)に対して無効です。 +特定のコンテナ(テーブル)を同じパーティションに配置したい場合は、ノードアフィニティをご利用ください。 + +#### コンテナ単位で別ブロックに配置 + +各コンテナ(テーブル)毎にブロックを占有するための機能です。コンテナに対して固有のブロックを割り当てることで、コンテナ単位のスキャンや削除を高速化することができます。 + +ヒント情報として、特殊文字列「 **#unique** 」をコンテナ作成時にプロパティ情報へ設定してください。他のコンテナと完全に別のブロックにデータを配置します。 + +
+data affinity independent +
+
+
+ +【注意】 +- 複数コンテナアクセス時のメモリヒット率低下が発⽣する可能性があります。 + + +### ノードアフィニティ + +ノードアフィニティとは、関連の強いコンテナやテーブルを同じノードに配置し、データアクセス時のネットワーク負荷を減少させるための機能です。GridDBのSQLではテーブルのJOIN操作が記述できます。テーブルのJOIN操作時にクラスタの別ノードに配置されたテーブルのネットワークアクセスでの負荷を減少させることができます。また、複数ノードを用いた並列処理ができなくなるため、ターンアラウンド時間の短縮には効果がない反面、ネットワーク負荷の減少によりスループットが上がる可能性があります。 + +
+ノードアフィニティによるコンテナ/テーブルの配置 +
ノードアフィニティによるコンテナ/テーブルの配置
+
+ + +ノードアフィニティを利用するには、コンテナ(テーブル)作成時にコンテナ(テーブル)名にヒント情報を与えます。ヒント情報が同一のコンテナ(テーブル)は同一のパーティションに配置されます。 以下のように指定します。 + +- コンテナ(テーブル)名@ノードアフィニティヒント情報 + +ノードアフィニティのヒント情報の命名もコンテナ(テーブル)名の命名規則と同様です。 + +【注意】 +- テーブルパーティショニングを利用している場合は、本機能は利用できません。 + + + +## コンテナ(テーブル)の定義変更 + + +コンテナ作成後に、カラム追加などのコンテナ定義の変更を行うことができます。変更可能な操作と使用するインターフェースは以下の通りです。 + +| 操作 | NoSQL API | SQL | +|----------------------|-----------|------| +| カラム追加(末尾) | ○ | ○ | +| カラム追加(末尾以外) | ○(※1) | × | +| カラム削除 | ○(※1) | × | +| カラム名変更 | × | ○ | +- (※1)末尾以外へのカラム追加やカラム削除の操作は、内部的にコンテナ再作成の処理を行うため、データ量が多いコンテナは処理に時間がかかります。 +- 上記以外の操作(コンテナ名の変更など)はできません。 + +### カラム追加 + +コンテナに新しいカラムを追加します。 + +- NoSQL APIの場合 + - GridStore\#putContainerを用いてカラム追加します。 + - 既存コンテナからコンテナ情報情報ContainerInfoを取得し、コンテナ情報に新しいカラムをセットしてからputContainerを実行します。 + 詳細は『[GridDB Java APIリファレンス](../md_reference_java_api/md_reference_java_api.html)』をご参照ください。 + + - 【プログラム例】 + ```java + // コンテナ情報を取得 + ContainerInfo conInfo = store.getContainerInfo("table1"); + List newColumnList = new ArrayList(); + for ( int i = 0; i < conInfo.getColumnCount(); i++ ){ + newColumnList.add(conInfo.getColumnInfo(i)); + } + // 新しいカラムを末尾にセット + newColumnList.add(new ColumnInfo("NewColumn", GSType.INTEGER)); + conInfo.setColumnInfoList(newColumnList); + + // カラム追加 + store.putCollection("table1", conInfo, true); + ``` + +- SQLの場合 + - ALTER TABLE構文を用いてカラム追加します。 + - 末尾へのカラム追加の操作のみできます。詳細は『[GridDB SQLリファレンス](../md_reference_sql/md_reference_sql.md)』をご参照ください。 + +カラムを追加した後に既存ロウを取得した場合、追加カラムの値はカラムのデータ型ごとに定義されている「空の値」が返ります。 +空の値の詳細は『[GridDB Java APIリファレンス](../md_reference_java_api/md_reference_java_api.html)』のContainer<K,R>をご参照ください。 +(V4.1では、制限事項「カラム追加後に既存のロウを参照した時、NOT NULL制約が付いていないカラムはNULLが返る」があります。 + +
+カラム追加の例 +
カラム追加の例
+
+ +### カラム削除 + +コンテナのカラムを削除します。NoSQL APIのみで操作できます。 + +- NoSQL API + - GridStore\#putContainerを用いてカラム削除します。既存コンテナからコンテナ情報ContainerInfoを取得し、削除対象のカラム情報を除いてからputContainerを実行します。 + 詳細は『[GridDB Java APIリファレンス](../md_reference_java_api/md_reference_java_api.html)』をご参照ください。 + + +### カラム名変更 + +コンテナのカラム名を変更します。SQLのみで操作できます。 + +- SQL + - ALTER TABLE構文を用いてカラム名を変更します。詳細は『[GridDB SQLリファレンス](../md_reference_sql/md_reference_sql.md)』をご参照ください。 + +## データベース圧縮/解放機能 + + + +### データブロック圧縮 + +GridDBは、メモリ上のデータをデータベースファイルに書き込むことで、メモリサイズに依存しない大容量化を実現できますが、ストレージのコストは増加します。データブロック圧縮機能は、データベースファイル(データファイル)を圧縮することで、データ量に伴って増加するストレージコストの削減を支援する機能です。 特に、HDDと比べ容量単価が高いフラッシュメモリをより効率的に活用できます。 + +**圧縮方法** + +メモリ上のデータをデータベースファイル(データファイル)に書き出す際に、GridDBの書き出し単位であるブロック毎に圧縮操作を行います。圧縮により空いた領域は、Linuxのファイルブロック割り当て解除処理を行うため、ディスク使用量を削減できます。 + +**サポート環境** + +データブロック圧縮はLinuxの機能を利用しているため、Linuxカーネルバージョンとファイルシステムに依存します。データブロック圧縮のサポート環境は以下です。 +- OS: RHEL / CentOS 7.9以上, Ubuntu Server 20.04 +- ファイルシステム:XFS +- ファイルシステムのブロックサイズ:4KB + + ※上記以外の環境でデータブロック圧縮を有効にした場合、GridDBノードの起動に失敗します。 + +**圧縮アルゴリズム** + +データブロック圧縮は以下の2種類のアルゴリズムから選択することができます。 +- ZLIB圧縮: ZLIBライブラリによる圧縮 (V5.6より古いバージョンから使用できる圧縮アルゴリズム) +- ZSTD圧縮: ZSTD(Zstandard)ライブラリによる圧縮(V5.6から選択可能)。ZLIB圧縮より圧縮解凍速度や圧縮率で優れています。 + + +**設定方法** + +GridDBノードごとに圧縮機能を設定します。 + +ノード定義ファイル(gs_node.json)の/dataStore/storeCompressionModeに以下の文字列を設定します。 + +|設定する文字列|意味| +|--------------------------------|--------------| +|"NO_COMPRESSION" | 圧縮機能を無効にする(既定値) | +|"COMPRESSION_ZLIB" または "COMPRESSION" | ZLIB圧縮機能を有効にする | +|"COMPRESSION_ZSTD" | ZSTD圧縮機能を有効にする | + +- GridDBノード起動時(再起動時)に設定を適用します。 +- GridDBノードを再起動することで、圧縮機能の動作を有効/無効に変更することができます。 + +【注意】 +- データブロック圧縮の対象は、データファイルのみです。チェックポイントログファイル、トランザクションログファイル、バックアップファイル、およびGridDBのメモリ上のデータは圧縮しません。 +- データブロック圧縮により、データファイルはスパースファイルになります。 +- 圧縮機能を有効に変更しても、すでにデータファイルに書き込み済みのデータは圧縮できません。 +- ZSTD圧縮機能を一度でも有効にした場合、そのデータファイルはV5.6より古いバージョンのサーバではオープンできません。GridDBのバージョンアップ後、ZSTD圧縮機能を有効にする前にはデータベースのバックアップをとることを推奨します。 + + +### データブロック未使用領域解放 + +データブロック未使用領域解放機能は、データベースファイル(データファイル)の使用されていないブロック領域に対して、Linuxのファイルブロック割り当て解除処理を行い、データベースファイルのサイズ(実ディスク割当量)を縮小することができる機能です。 + +以下のようなケースにおいて、ディスク使用量を削減したい場合にご利用ください。 + +- データを大量に削除した場合 +- 今後データ更新の予定が無く、DBを長期保存するような場合 +- データ更新時にディスクフルになり、回避する暫定手段としてDBサイズ縮小が必要な場合 + +未使用領域を解放する処理や、本機能のサポート環境、実行方法について説明します。 + +**解放処理** + +GridDBノード起動時に、データベースファイル(データファイル)の未使用領域を解放します。 解放された領域は、新たなデータ更新が発生しない限りディスク領域は割り当てられません。 + +**サポート環境** + +サポート環境は、[データブロック圧縮](#block_data_compression)機能と同じです。 + +**実行方法** + +GridDBノード起動時に、gs_startnodeコマンドでデータブロック未使用領域解放オプション(--releaseUnusedFileBlocks)を指定します。 + +データベースファイル(データファイル)の未使用領域サイズとディスク割当サイズは、下記の方法で確認してください。 +- gs_statコマンドで表示される項目 + - storeTotalUse + + ノードがデータファイルで保有する全データ容量(バイト) + + - dataFileAllocateSize + + データファイルに割り当てられたブロックの総サイズ(バイト) + +データブロック未使用領域解放機能の実施目安としては、データブロック未使用領域が多い(上記の値の比較で、storeTotalUse ≪ dataFileAllocateSize) 場合です。 + +【注意】 + +- 本機能の対象は、データファイルのみです。チェックポイントログファイル、トランザクションログファイル、バックアップファイルの未使用領域は解放しません。 +- 本機能を実施すると、データファイルはスパースファイルになります。 +- データファイルのディスク使用量は削減できますが、スパースファイルになることでフラグメントが発生しやすくなり、性能面ではデメリットになる可能性があります。 +- 起動時に領域解放処理が行われるため、通常の起動処理より時間がかかる場合があります。 + + +## クラスタパーティション配置【EE限定】 + +GriDBは複数のノードにクラスタパーティションを多重化して配置します。クラスタパーティション内のコンテナに対して更新操作ができるノードが「オーナノード」、参照操作のみ可能なノードが「バックアップノード」であり、これら割付をクラスタ全体で決定したものを「クラスタパーティション配置表」と呼びます。 + +クラスタパーティション配置表はクラスタ構成時にサーバによって決定されますが、構成に関する以下の指定を行うことができます。 + +1. 生成規則の指定 + - クラスタパーティション配置表の生成規則(アルゴリズム)が指定できます。 + +2. 配置表の固定化指定 + - 現在のクラスタ構成をクラスタパーティション配置表ファイルとして出力し、それを用いて固定化することができます。 + +### 生成規則の指定 + +サーバが決定するクラスタパーティション配置表の生成規則として以下のいずれかを指定できます。 + +1. デフォルト規則(DEFAULT) + - その時点の各ノードのオーナ、バックアップの個数が均等になるように配置します。 + - その時点で保持しているデータ量を参照します。 + - 同じ構成であっても、その時点の状況により配置表が異なる場合があります。 + + +2. ラウンドロビン規則(ROUNDROBIN) + - その時点の各ノードのオーナ、バックアップの個数が均等になるように配置します。 + - オーナ、バックアップをできるだけ偏りなく、スレッド処理効率が良いように配置しますが、データ量は参照しません。 + - 同じ構成であっても、その時点の状況により配置表が異なる場合があります。 + +ラウンドロビン規則では以下の規則で配置表を作成します。 + + 1) クラスタを構成する各ノードの、ノードアドレス:ポート番号を文字列化して昇順に並べたノード順序を決定します。 + 2) クラスタパーティション番号の0番から昇順に、ノード順序に従いラウンドロビンでオーナを決定します。 + 3) クラスタパーティション番号の0番から2)で決定したオーナのノード番号+1を基点に、ラウンドロビンでレプリカ数分のバックアップを決定します。 + +4台クラスタ構成、クラスタパーティション数8のサンプルを以下に示します。 + +
+ ラウンドロビン +
ラウンドロビン
+
+ +(メモ) +- GridDBのバージョンV5.6以降の機能であり、V5.6以前は自動的にDEFAULTが適用されます。 + + ノード定義ファイル(gs_node.json)の以下のパラメータで設定します。 + +| 設定パラメータ| 初期値 |  パラメータの意味と制限値  | 変更 | +|------------|-------|------------------------|------| +| /cluster/goalAssignmentRule | DEFAULT | クラスタパーティション配置表の生成規則を指定します。
DEFAULT、ROUNDROBINのいずれかを指定します | 起動 | + + +### 配置表の固定化指定 + + + +初回に構成されるクラスタ構成をクラスタパーティション配置表ファイルとして出力し、それを用いてクラスタパーティションを固定化することができます。 +出力される配置表となるファイルは以下となります。 + + - ファイル名:gs_stable_goal.json + - 配置ディレクトリ:各種ノード起動ファイルと同じディレクトリ + - 形式 : json形式 + - 内容 : 各パーティションのオーナとバックアップを定義したもの + +サンプルを以下に示します。 + +``` example + [ + { + "backup": [{"address": "192.168.11.11","port": 10010}], + "owner": { + "address": "192.168.11.10", + "port": 10010 + }, + "pId": "0", + }, + : + ] +``` + +本機能を利用する場合は以下の手順を行ってください。 + +- gs_node.jsonの/cluster/enableStableGoalに値trueを追加します。 +- クラスタを初回構成する際は、gs_stable_goal.jsonがgs_node.jsonと同じディレクトリにあれば削除した後にクラスタ起動を行ってください。 + +本配置表の読み込みおよび生成されるタイミングは以下の通りです。 + +- 初回のクラスタ構成 +- ノード構成の変更時(増設/縮退) +- ノードの一時的な障害/復帰 + +配置表ファイルが指定フォルダに既に存在する場合は上記タイミングでも「上書き更新」は行われません。また、上記タイミングでの現在のノード構成が配置表ファイルに記載された構成と異なる場合は配置表ファイルを用いず、現在のノード構成において6.1.1で指定した生成規則に従った配置表が適用されます。 + +クラスタのノード増設やノード縮退を行う場合は操作前に配置表ファイルを削除した後にクラスタ操作を実行すると、自動的に新しい構成に従った配置表ファイルを生成することができます。 + +(メモ) +- GridDBのバージョンV5.6以降の機能となります。 + + ノード定義ファイル(gs_node.json)の以下のパラメータで設定します。 + +| 設定パラメータ| 初期値 |  パラメータの意味と制限値  | 変更 | +|------------|-------|------------------------|------| +| /cluster/enableStableGoal | false | クラスタパーティション配置表固定化の利用有無を指定します。| 起動 | + +クラスタパーティション数=8, ノード数=4、生成規則「ROUNDROBIN」を指定した場合のサンプルを以下に示します。初期クラスタ構成時に、4台構成のラウンドロビンに従った配置表となるgs_stable_goal.jsonが自動生成されます。障害発生時は、「ROUNDROBIN」規則による3台構成の配置となります。1ノード増設のタイミングで、gs_stable_goal.jsonを削除しておけば、5台構成のラウンドロビン配置表が新たに生成されます。 + +
+ パーティション割当サンプル +
パーティション割当サンプル
+
+ + + +# 運用機能 + +## サービス制御 + +OSの起動と同時にGridDBをサービスとして動作させるサービス制御機能があります。 + +GridDBのサービスは、パッケージのインストール直後からサービスが有効となっています。サービスが有効となっているため、OS起動と同時にGridDBのサーバが起動され、OS停止時はサーバが停止されます。 + +OSの監視やデータベースソフトウェアの動作を含めたミドルウェアやアプリケーションの運用を統合化したインターフェースを用いる場合、サービス制御の機能を用いるのか、もしくは運用コマンドを利用するのか、サービスの起動停止の他ミドルウェアとの依存性も検討する必要があります。 + +GridDBのサービスは、OS起動時に自動的に実行され、GridDBノード(以下、ノード)を起動し、 GridDBクラスタ(以下、クラスタ)へ参加します。OSのシャットダウン時には、クラスタから離脱し、ノードを停止します。 + +サービスにより、次のことができます。 +- ノードの起動、停止、再起動 +- ノードのプロセス状態確認 + +  + +ノード3台のクラスタに対するサービス操作の手順は以下の通りです。 + +- サービスを利用してクラスタを開始する場合 + + ノード3台が停止している状態から、サービスを利用してクラスタを開始します。 + + | ユーザの操作 | ノードAの状態 | ノードBの状態 | ノードCの状態 | + |--------------------------------|--------------|--------------|--------------| + | - | ノード停止 | ノード停止 | ノード停止 | + | ①ノードA/B/Cのサービス開始を実行 | ノード起動
クラスタに参加 | ノード起動
クラスタに参加 | ノード起動
クラスタに参加 | + + - サービス開始は、OS起動時には自動的に実行されます。 + - サービス開始によってクラスタを開始するためには、サービスの起動設定ファイルにクラスタの構成ノード数やクラスタ名を定義している必要があります。 + - 定義した構成ノード数のノードがクラスタに参加した時点で自動的にクラスタが開始されます。 + +  + +- サービスを利用してノードを1台停止する場合 + + クラスタ稼動している状態から、サービスを利用してノードを1台停止します。 + + | ユーザの操作 | ノードAの状態 | ノードBの状態 | ノードCの状態 | + |--------------|--------------|--------------|--------------| + | - | クラスタに参加 | クラスタに参加 | クラスタに参加 | + | ①ノードBのサービス停止を実行 | クラスタに参加 | クラスタから離脱
ノード停止 | クラスタに参加 | + +  + +- サービスを利用してクラスタを停止する場合 + + クラスタ稼動している状態から、サービスを利用してクラスタを停止します。 + + | ユーザの操作 | ノードAの状態 | ノードBの状態 | ノードCの状態 | + |-------------------------------|----------------|-----------------|-----------------| + | - | クラスタに参加 | クラスタに参加 | クラスタに参加 | + | ①クラスタ停止を実行(※注意) | クラスタから離脱 | クラスタから離脱 | クラスタから離脱 | + | ②ノードA/B/Cのサービス停止を実行 | ノード停止 | ノード停止 | ノード停止 | + + +【注意】 +- **クラスタ全体を停止する時は、必ずgs_stopclusterコマンドを実行してから、サービスのstopで各ノードを離脱・停止してください。** + gs_stopclusterコマンドでクラスタを停止しなかった場合、ノードの離脱のたびにデータ再配置が行われる可能性があります。 + データ再配置が頻繁に発生すると、ネットワークやディスクI/Oに負荷がかかる場合があります。 + クラスタを停止してからノードを離脱した場合はデータ再配置は行われません。不要なデータ再配置を防ぐために、必ずクラスタを停止してください。 + クラスタの停止は、運用コマンドgs_stopclusterや、統合運用管理gs_admin、gs_shなどを用いて実行してください。 + +  + +なお、サービス制御を使用しない場合、以下のようにすべてのランレベルでサービスを無効にします。 + +``` example +# /sbin/chkconfig gridstore off +``` + +## ユーザ管理機能 + +GridDBのユーザには、インストール時に作成されるOSユーザとGridDBの運用/開発を行うGridDBのユーザ(以降GridDBユーザと呼ぶ)の2種類があります。 + +### OSユーザ + +OSユーザは、GridDBの運用機能を実行できる権限を持つユーザであり、GridDBインストール時にgsadmというユーザが作成されます。以降このOSユーザをgsadmと呼びます。 + +GridDBのリソースはすべて、gsadmの所有物となります。また、GridDBの運用操作のコマンド実行はすべてgsadmで実行します。 + +運用操作では、GridDBサーバに接続し運用操作を実行できる権限を持ったユーザか否かの認証を行います。この認証は、GridDBユーザで行います。 + +### GridDBユーザ  + +- 管理ユーザと一般ユーザ + + GridDBのユーザには、管理ユーザと一般ユーザの2種類があり、利用できる機能に違いがあります。GridDBインストール直後には、デフォルトの管理ユーザとして、system、adminの2ユーザが登録されています。 + + 管理ユーザは、GridDBの運用操作を行うために用意されたユーザであり、一般ユーザはアプリケーションシステムで利用するユーザです。 + + セキュリティの面から、管理ユーザと一般ユーザは利用用途に応じて使い分ける必要があります。 + +- ユーザの作成 + + 管理ユーザは、gsadmが登録/削除することができ、その情報は、GridDBのリソースとして定義ファイルディレクトリのpasswordファイルに保存されます。管理ユーザは、OSのローカルファイルに保存/管理されるため、クラスタを構成する全ノードで同一の設定となるように、配置しておく必要があります。また、管理ユーザは、GridDBサーバ起動前に設定しておく必要があります。起動後に登録しても有効にはなりません。 + + 一般ユーザは、GridDBのクラスタ運用開始後に管理ユーザが作成します。クラスタサービス開始前に一般ユーザの登録はできません。一般ユーザはGridDBのクラスタ構成後に作成し、GridDBデータベース内の管理情報として保持するため、クラスタに対して運用コマンドを用いて登録するのみです。 + + 管理ユーザについては、クラスタ間での自動的な情報伝達は行われないため、定義ファイルのマスタ管理ノードを決めマスタ管理ノードからクラスタを構成する全ノードに配布管理するなどの運用管理を行い、全ノードで同じ設定とする必要があります。 + +
+ GridDBのユーザ +
GridDBのユーザ
+
+ + +- ユーザ作成時の規則 + + ユーザ名には命名規則があります。 + - 管理ユーザ:『gs\#』で始まるユーザを指定します。『gs\#』以降は英数字およびアンダースコアのみで構成します。大文字と小文字は同一として扱うため、gs\#managerとgs\#MANAGERは同時には登録できません。 + + - 一般ユーザ:英数字およびアンダースコアで指定します。ただし、先頭文字に数字は指定できません。また、大文字と小文字は同一として扱うため、userとUSERは同時には登録できません。管理ユーザのデフォルトユーザである、system,adminは作成できません。 + + - パスワード:指定できる文字に制限はありません。 + + なお、ユーザ名およびパスワードに指定できる文字列は、それぞれ64文字です。 + +### 利用できる機能 + +管理ユーザができる運用操作と一般ユーザが利用できる操作を以下に示します。運用操作のうちGridDBユーザを用いずに、gsadmで実行可能なコマンドは◎印で明記します。 + +| 操作 | 操作詳細 | 利用する運用ツール | gsadm | 管理ユーザ | 一般ユーザ | +|------------------------|-------------------------------------|--------------------------------------------|-------|------------|-----------------------| +| ノード操作 | ノードの起動 | gs_startnode/gs_sh | | ○ | × | +| | ノードの停止 | gs_stopnode/gs_sh | | ○ | × | +| クラスタ操作 | クラスタの構築 | gs_joincluster/gs_sh | | ○ | × | +| | クラスタへのノード増設 | gs_appendcluster/gs_sh【EE限定】 | | ○ | × | +| | クラスタからのノード離脱 | gs_leavecluster/gs_sh | | ○ | × | +| | クラスタの停止 | gs_stopcluster/gs_sh | | ○ | × | +| ユーザ管理 | 管理ユーザ登録 | gs_adduser | ◎ | × | × | +| | 管理ユーザの削除 | gs_deluser | ◎ | × | × | +| | 管理ユーザのパスワード変更 | gs_passwd | ◎ | × | × | +| | 一般ユーザの作成 | gs_sh | | ○ | × | +| | 一般ユーザの削除 | gs_sh | | ○ | × | +| | 一般ユーザのパスワード変更 | gs_sh | | ○ | ○:本人のみ | +| データベース管理 | データベースの作成・削除 | gs_sh | | ○ | × | +| | データベースへのユーザ割り当て/解除 | gs_sh | | ○ | × | +| データ操作 | コンテナやテーブルの作成・削除 | gs_sh | | ○ | ○:本人のDB内で更新操作が可能な場合のみ | +| | コンテナやテーブルへのデータ登録 | gs_sh | | ○ | ○:本人のDB内で更新操作が可能な場合のみ | +| | コンテナやテーブルの検索 | gs_sh | | ○ | ○:本人のDB内のみ | +| | コンテナやテーブルへの索引操作 | gs_sh | | ○ | ○:本人のDB内で更新操作が可能な場合のみ | +| バックアップ管理 | バックアップ作成 | gs_backup | | ○ | × | +| バックアップ管理 | バックアップリストア | gs_restore | ◎ | × | × | +| | バックアップリスト | gs_backuplist | | ○ | × | +| システムステータス管理 | システム情報の取得 | gs_stat | | ○ | × | +| | パラメータ変更 | gs_paramconf | | ○ | × | +| データインポート/ | データのインポート | gs_import | | ○ | ○:アクセスできる範囲 | +| エクスポート | データのエクスポート | gs_export | | ○ | ○:アクセスできる範囲 | + + +### データベースとユーザ + +GridDBのクラスタデータベース(以降クラスタデータベースと呼びます)を利用ユーザ単位にアクセスを分離することができます。分離する単位を **データベース** と呼びます。 データベースは、クラスタデータベースの初期状態では以下のデータベースがあります。 + +- public + - 管理ユーザ、一般ユーザのすべてがアクセスできるデータベースです。 + - 接続先データベースを指定せずに接続した場合はこのデータベースが利用されます。 + +データベースはクラスタデータベースに複数作成することができます。データベースの作成、削除、ユーザへの割り当ては管理ユーザが行います。 + +データベース作成時の規則は以下に示すとおりです。 + +- クラスタデータベースに作成できるユーザ数、データベース数の上限は各々128個までです。 +- データベース名に指定可能な文字列は、英数字およびアンダースコア\_、ハイフン-、ドット.、スラッシュ/、イコール=です。ただし、先頭文字に数字は指定できません。 +- データベース名に指定できる文字列は、64文字です。 +- データベース名命名時の大文字・小文字は保持されますが、大文字小文字同一視した場合に同一名となるデータベースは作成できません。例えば、databaseとDATABASEは同時には登録できません。 +- デフォルトデータベースである「public」および「information_schema」は指定できません。 + +データベースへ一般ユーザを割り当てる際、権限を指定します。権限は以下の種類があります。 +- ALL + - コンテナ作成やロウ登録、検索、索引作成などコンテナに関するすべての操作が可能 +- READ + - 検索の操作のみ可能 + +データベースにアクセスできるのは割り当てた一般ユーザと管理ユーザのみです。管理ユーザはすべてのデータベースにアクセスすることができます。 データベースへ一般ユーザを割り当てる際、以下規則があります。 +- 1データベースに複数の一般ユーザを割り当てることができる +- データベースに一般ユーザを割り当てる際、指定できる権限は1種類のみ +- 1データベースに複数の一般ユーザを割り当てる際、ユーザごとに異なる権限を指定することができる +- 1ユーザには複数のデータベースを割り当てることができる + +
+データベースとユーザ +
データベースとユーザ
+
+ +### 認証方式 + +GridDBの認証方式には、以下があります。 +- 内部認証 +- LDAP認証 + +各方式について、説明します。 + +#### 内部認証 + +GridDBの管理/一般ユーザのユーザ名、パスワード、および権限をGridDBで管理します。認証方式を指定しない場合、内部認証がデフォルトです。 + +管理ユーザは、運用コマンドのgs_adduser/gs_deluser/gs_passwdで管理します。 + +一般ユーザは、SQLのCREATE USER/DROP USER/SET PASSWORD文で管理します。また、一般ユーザのアクセス権は、SQLのGRANT/REVOKE文で管理します。 + +**ユーザキャッシュ設定** + +一般ユーザ情報のキャッシュの設定は、以下のノード定義ファイル(gs_node.json)を編集します。 + +【注意】 +- 変更内容を反映するには、再起動が必要です。 + + +| パラメータ | デフォルト | 設定値 | +|---------------------------------|------------|------------------------| +| /security/userCacheSize | 1000 | キャッシュする一般ユーザ/LDAPユーザエントリ数を指定。 | +| /security/userCacheUpdateInterval | 60 | キャッシュの更新間隔(秒)を指定。| + +#### LDAP認証【EE限定】 + +GridDBの一般ユーザをLDAPで管理します。また、LDAP内のユーザ名/グループ名と同じ名前のロールを作成し権限を操作することで、LDAPユーザの権限を管理します。また、認証処理の高速化のため、LDAPで管理するユーザ情報のキャッシュ機能を提供します。 + +【注意】 +- GridDBノードが稼働するサーバに、openldap2.4をインストールしてください。詳細は、openldapのマニュアルをご参照ください。 +- 管理ユーザはLDAPで管理できません。常に内部認証を利用します。 + + +**共通設定** + +LDAP認証を利用する場合は、以下、クラスタ定義ファイル(gs_cluster.json)を編集します。 + +| パラメータ | デフォルト | 設定値 | +|---------------------------------|------------|------------------------| +| /security/authentication | INTERNAL | 認証方式として、INTERNAL(内部認証) / LDAP(LDAP認証)のいずれかを指定。 | +| /security/ldapRoleManagement | USER | GridDBのロールとマッピングする対象として、USER(LDAPユーザ名でマッピング) / GROUP(LDAPグループ名でマッピング)のいずれかを指定。 | +| /security/ldapUrl | | LDAPサーバを次の形式で指定。ldap[s]://host[:port] | + + +【注意】 +- /security/ldapUrlに指定できるLDAPサーバは1台のみです。 +- サポートするLDAPサーバは以下です。 + - OpenLDAP 2.4以降 + - Active Directory スキーマバージョン87(Windows Server 2016以降) +- 変更内容を反映するには、再起動が必要です。 + + +**ロール管理** + +ロールは、SQLのCREATE ROLE / DROP ROLE文で管理します。/security/ldapRoleManagementが「USER」の場合はLDAPのユーザ名で、「GROUP」の場合はLDAPのグループ名でロールを作成します。作成したロールに対するアクセス権限は、SQLのGRANT/REVOKE文で管理します。 + +**LDAP認証モード設定** + +次に、LDAPユーザの認証方法として、単純モード(直接ユーザアカウントでバインド)またはサーチモード(LDAP管理ユーザでバインド後に、ユーザを検索/認証)を選択します。以下、クラスタ定義ファイル(gs_cluster.json)を編集します。 + +【注意】 +- 単純モードとサーチモードの同時指定はできません。 +- 変更内容を反映するには、再起動が必要です。 + +■単純モード + + +| パラメータ | デフォルト | 設定値 | +|---------------------------------|------------|------------------------| +| /security/ldapUserDNPrefix | | ユーザのDN(識別子)を生成するために、ユーザ名の前に連結する文字列を指定。 | +| /security/ldapUserDNSuffix | | ユーザのDN(識別子)を生成するために、ユーザ名の後に連結する文字列を指定。| + + +■サーチモード + + +| パラメータ | デフォルト | 設定値 | +|---------------------------------|------------|------------------------| +| /security/ldapBindDn | | LDAP管理ユーザのDNを指定。 | +| /security/ldapBindPassword | | LDAP管理ユーザのパスワードを指定。| +| /security/ldapBaseDn | | 検索を開始するルートDNを指定。| +| /security/ldapSearchAttribute | uid | 検索対象となる属性を指定。| +| /security/ldapMemberOfAttribute | memberof | ユーザが所属するグループDNが設定された属性を指定。(ldapRoleManagement=GROUPの場合に有効)| + +**ユーザキャッシュ設定** + +LDAPユーザ情報のキャッシュの設定は、以下のノード定義ファイル(gs_node.json)を編集します。 + +【注意】 +- 変更内容を反映するには、再起動が必要です。 + + +| パラメータ | デフォルト | 設定値 | +|---------------------------------|------------|------------------------| +| /security/userCacheSize | 1000 | キャッシュする一般ユーザ/LDAPユーザエントリ数を指定。 | +| /security/userCacheUpdateInterval | 60 | キャッシュの更新間隔(秒)を指定。| + +**設定例** + +以下に設定例を記載します。条件は以下です + +- Active Directory(host=192.168.1.100 port=636) +- ユーザDN (cn=TEST, ou=d1 ou=dev dc=example, dc=com) +- ユーザは、sampleDB内を検索のみ可能 +- GridDBロールは、ユーザ名でマッピング +- 単純モードで認証 + +■ロールの設定例(SQL文) +``` example + CREATE ROLE TEST + GRANT SELECT ON sampleDB to TEST +``` + +■サーバの設定例(gs_cluster.jsonの一部抜粋) +``` example + : +"security":{ + "authentication":"LDAP", + "ldapRoleManagement":"USER", + "ldapUrl":"ldaps://192.168.1.100:636", + "ldapUserDnPrefix":"CN=", + "ldapUserDnSuffix":",ou=d1,ou=dev,dc=example,dc=com", + "ldapSearchAttribute":"", + "ldapMemberOfAttribute": "" +}, + : +``` + + +## セキュリティ機能【EE限定】 + +### 通信の暗号化 + +GridDBでは、GridDBクラスタとクライアント間のSSL接続をサポートします。 + +【注意】 +- GridDBノードが稼働するサーバに、OpenSSL 3.0.7以上をインストールしてください。 + + +**設定** + +SSL接続を行うためには、以下、クラスタ定義ファイル(gs_cluster.json)、およびノード定義ファイル(gs_node.json)を編集します。 +そして、サーバ証明書および秘密鍵のファイルを適切なディレクトリに配置します。 + +【注意】 +- 変更内容を反映するには、再起動が必要です。 +- GridDBクラスタを構成するノード間のSSL接続は未サポートです。GridDBクラスタは外部から直接アクセスできない安全なネットワーク上への配置を推奨します。 +- サーバ証明書検証の実施は指定できますが、ホスト名検証の実施は未サポートです。中間者攻撃を防止するために、独自CAによる証明書の利用を推奨します。 +- 証明書失効リスト(CRL)による証明書失効確認は未サポートです。 + +■クラスタ定義ファイル(gs_cluster.json) + +| パラメータ | デフォルト | 設定値 | +|---------------------------------|------------|------------------------| +| /system/serverSslMode | DISABLED | SSL接続設定として、DISABLED(SSL無効)、PREFERRED(SSL有効、ただし非SSL接続も許容)、REQUIRED(SSL有効、非SSL接続は不可)のいずれかを指定。 | +| /system/sslProtocolMaxVersion | TLSv1.2 | TLSプロトコルバージョンとして、TLSv1.2, TLSv1.3のいずれかを指定。 | + +■ノード定義ファイル(gs_node.json) + +| パラメータ | デフォルト | 設定値 | +|---------------------------------|------------|------------------------| +| /system/securityPath | security | サーバ証明書、秘密鍵の配置ディレクトリをフルパスもしくは、相対パスで指定。 | +| /system/serviceSslPort | 10045 | 運用コマンド用待ち受けSSLポート | + +■サーバ証明書および秘密鍵 + +SSLを有効にする場合は、`/system/securityPath`に設定したディレクトリに、サーバ証明書および秘密鍵を +それぞれ次のファイル名で配置します。 + +- gs_node.crt: 証明書ファイル +- gs_node.key: 秘密鍵ファイル + + +**クライアント設定** + +クライアント側で、SSL接続、サーバ証明書検証の実施を指定できます。詳細は各ツール、およびAPIリファレンスをご参照ください。 + +## 障害処理機能【EE限定】 + +GridDBでは、クラスタを構成する各ノードでデータのレプリカを保持するため、単一点故障に対してのリカバリは不要です。 GridDBでは障害発生時には以下のような動作を行います。 + + +1. 障害発生時、障害ノードはクラスタから自動的に離脱する。 +2. 離脱した障害ノードに代わり、バックアップノードへのフェイルオーバーが行われる。 +3. 障害によりノード台数が減少するため、自律的にパーティションの再配置を行う(レプリカも配置する)。 + +障害の回復したノードはオンラインでクラスタ運用に組み込むことができます。障害によりUNSTABLEな状態となったクラスタには、gs_joinclusterコマンドを用いてノードを組み込めます。ノード組込みにより、自律的にパーティションの再配置が行われノードのデータ、負荷バランスが調整されます。 + +このように、単一点故障の場合にはリカバリのための事前の準備は不要ですが、シングル構成で運用する場合や、クラスタ構成においても複数の障害が重なった場合にはリカバリの操作が必要です。 + +クラウド環境で稼働させる場合、物理的なディスクの障害やプロセッサ障害で意図せずともクラスタを構成する複数ノードの障害、複数ノードでのデータベース障害といった多重障害となるケースがあります。 + +### 障害の種類と処置 + +発生する障害と対処方法の概要を以下の表に示します。 + +ノード障害とは、プロセッサ障害やGridDBのサーバプロセスのエラーによりノードが停止した状態、データベース障害とは、ディスクに配置したデータベースへのアクセスでエラーが発生した状態を指します。 + +| GridDBの構成 | 障害の種類 | 動作と処置 | +|--------------|----------------------|----------------------------------------------------------------------| +| シングル構成 | ノード障害 | アプリケーションからアクセスはできなくなりますが、ノードの障害要因を取り除き再起動するだけで、処理が完了したトランザクションのデータはリカバリされます。ノード障害が長期化した際は、別ノードでのリカバリを検討します。 | +| シングル構成 | データベース障害 | アプリケーションでエラーを検出するため、バックアップしたデータからデータベースファイルを復旧します。データはバックアップ時点に復旧されます。 | +| クラスタ構成 | 単一ノード障害 | アプリケーションにはエラーが隠ぺいされ、レプリカのあるノードで処理が継続できます。障害が発生したノードでのリカバリ操作は不要です。 | +| クラスタ構成 | 複数ノード障害 | レプリカのオーナ/バックアップの双方のパーティションが障害対象ノードに存在する場合、対象パーティションにアクセスができませんが、クラスタは正常に稼働します。ノードの障害要因を取り除き再起動するだけで、処理が完了したトランザクションのデータはリカバリされます。ノードの障害が長期化する場合は別ノードでのリカバリを検討します。 | +| クラスタ構成 | 単一データベース障害 | 単一ノードでのデータベース障害は、クラスタを構成する他のノードでデータアクセスが継続するため、異なるディスクにデータベース配置先を変更し、ノードを再起動するだけでリカバリされます。 | +| クラスタ構成 | 複数データベース障害 | レプリカで復旧できないパーティションは最新のバックアップデータからバックアップ採取時点にリカバリさせる必要があります。 | + + +### クライアントフェイルオーバー + +クラスタ構成で運用している際にノード障害が発生した場合、障害ノードに配置されているパーティション(コンテナ)にはアクセスできません。この時、クライアントAPI内で、自動的にバックアップノードに接続し直して処理を継続するクライアントフェイルオーバー機能が動作します。クライアントAPI内で自動的に障害対策を行うため、アプリケーション開発者はノードのエラー処理を意識する必要がありません。 + +しかし、複数のノードの同時障害やネットワーク障害などにより、アプリケーション操作対象にアクセスできずエラーになることもあります。 + +エラー発生後のリカバリではアクセス対象のデータに応じて以下の点を考慮する必要があります。 + +- 時系列コンテナやロウキーが定義されているコレクションの場合、失敗した操作またはトランザクションを再実行すればリカバリできます。 + +- ロウキーが定義されていないコレクションの場合データベースの内容チェックをした上で、再実行する必要があります。 + +【メモ】 +- アプリケーションでのエラー処理を単純化するためにコレクションを使う場合は、ロウキーの定義を推奨します。 単一のカラム値での一意化ができない場合で、複数のカラム値で一意化できる場合は、複数カラムの値を連結した値を持つカラムをロウキーにし、データを一意に識別できるようにすることを推奨します。 + +### 自動再起動機能 + +GridDBノードが異常終了した場合、またはノードプロセスが強制終了された場合、自動的にノードの再起動、およびクラスタ参加を実行します。 運用管理者が意識せずに、クラスタの状態を正常稼働に戻すことができます。 + +
+障害対策機能 +
障害対策機能
+
+ +【注意】 + +以下の場合は自動起動処理を実施しません。 +- ユーザが明示的に設定を無効にしたとき +- 回復不可能な障害が発生したとき (ノードステータス: ABNORMAL) +- 自動起動を5回以上試行したとき +- 障害発生前のノードがクラスタに参加していなかったとき + +**設定** + +障害対策機能の設定は以下になります。 + +| パラメータ | デフォルト | 設定値 | +|---------------------------------|------------|------------------------| +| SVC_ENABLE_AUTO_RESTART | true | true(有効)/false(無効) | +| GS_USER | admin | 適宜 | +| GS_PASSWORD | admin | 適宜 | + +パラメータを変更するには起動設定ファイル( `/etc/sysconfig/gridstore/gridstore.conf` )を編集します。 + +- SVC_ENABLE_AUTO_RESTART + - GridDBノードの起動時(再起動時)に設定が有効になります。 + - 別の監視システムで、GridDBの障害復旧の制御を行いたい場合は、本障害対応機能を無効にしてください。 + +- GS_USER/GS_PASSWORD + - GridDBの管理者ユーザ、およびパスワードを設定します。 + - ユーザ/パスワードは以下のケースで利用します。 + - サービスによる起動、停止、再起動する場合 + - gs_startnodeで、-uオプションが指定されていない場合 + +【注意】 +- 指定したGS_USER/GS_PASSWORDに誤りがある、もしくはユーザ/パスワードが指定されていない場合には、 GridDBノードの起動に失敗します。 + + + + +## エクスポート/インポート機能 + +GridDBのエクスポート/インポートでは、データベースの局所的な破壊に対して復旧を行う障害回復処理や、システム構成が変更された際のデータベースの移行(マイグレーション)処理などを実現するために、データベースやコンテナ単位での保存/復元機能を提供します。 + +GridDBクラスタでは、コンテナデータをクラスタ内のノードに自動的に配置します。利用者は、どのノードにデータが配置されているかを意識する必要はありません(データの位置透過)。 +エクスポート/インポートでも、データの取り出し・登録で配置位置を意識する必要はありません。エクスポート/インポートの構成は以下のとおりです。 + +
+エクスポート/インポートの構成 +
エクスポート/インポートの構成
+
+ +【エクスポート(export)】 + +① GridDBクラスタのコンテナおよびロウデータを、以下のファイルに保存します。コンテナ名を指定して特定コンテナのみエクスポートすることもできます。 +- **コンテナデータファイル** + - GridDBのコンテナ情報とロウデータを保存します。 + - コンテナ単位に保存する形式と複数コンテナをまとめて保存する形式の2種類があります。 +- **エクスポート実行情報ファイル** + - エクスポート実行時の情報を保存します。エクスポートしたデータを、そのままGridDBクラスタに復元するために必要です。 + +【インポート(import)】 + +② エクスポートデータを保存したコンテナデータファイルとエクスポート実行情報ファイルを読み込んで、コンテナおよびロウデータをGridDBに復元します。特定のコンテナデータを指定して、インポートすることもできます。 + +③ ユーザが作成したコンテナデータファイルを読み込んで、コンテナとロウデータを登録します。 + +【メモ】 +- エクスポートしたコンテナデータファイルとユーザが作成するコンテナデータファイルは同じフォーマットです。 +- エクスポート中のコンテナに対してデータの登録や更新を行うと、エクスポート結果に反映される場合があります。 + + + +## バックアップ/リストア機能 + +データベース障害やアプリケーションの誤動作によるデータ破壊に備えるために、定期的なバックアップの採取が必要です。バックアップ運用は、サービスレベルの要求やシステムのリソースに応じて対処方法を選択する必要があります。 + +バックアップ方式と、それぞれの方式について以下の項目を説明します。 + +- バックアップ運用 + - バックアップの種類とバックアップの利用方法について説明します。 +- 障害からのリカバリ + - 障害の検出と障害からのリカバリ方法を説明します。 + +### バックアップ方式 + +データベース障害やアプリケーションの誤動作によるデータ破壊に備えるために、定期的なバックアップの採取が必要です。 バックアップ運用は、障害発生時のリカバリの要件(いつの時点にリカバリするか)、クラスタとしての一貫性保持の必要性、バックアップにかかる時間、バックアップのために用意できるディスクの容量に応じて、バックアップの種別やバックアップの間隔を決定します。リカバリ保証のサービスレベルからの要求やシステムのリソースに応じて対処方法を選択する必要があります。 GridDBのバックアップ方式には、以下のものがあります。 + +| バックアップ方式 | 復旧時点 | 特徴 | | +|-----------------------------------------------------------------------|--------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----| +| オフラインバックアップ | クラスタ停止時点 | バックアップのコピー完了までクラスタ停止が必要です。 ノード間で復旧時点が異なることはありません。 | | +| オンラインバックアップ(フル+差分・増分) | バックアップ採取完了時点 | GridDBバックアップコマンドを利用します。バックアップの取得完了のタイミングにより、ノード間で復旧時点が異なることがあります。 | | +| オンラインバックアップ(自動ログ) | 障害直前の時点 | GridDBバックアップコマンドを利用します。トランザクションログから最新状態にリカバリするため、起動時間が長くなることがあります。 | | +| ファイルシステムレベルのオンラインバックアップ(クラスタスナップショット) | スナップショット取得時点 | クラスタスナップショット機能を用い、OSやストレージのスナップショットと連携してバックアップを取得します。 | | + + +オフラインバックアップを行うには、まずgs_stopclusterコマンドでクラスタを停止してから、クラスタを構成する全ノードを停止してください。 次に、各ノードのデータベースファイルの配置ディレクトリ(gs_node.jsonの/dataStore/dbPath、/dataStore/transactionLogPathで示すディレクトリ)下のデータをバックアップしてください。 + +GridDBのオンラインバックアップの機能については、[ノード単位のオンラインバックアップとリカバリ操作](#online_backup_and_recovery_operations)を参照ください。 + +GridDBのオンラインバックアップ機能を使用せず、ファイルシステムレベルのオンラインバックアップを行う場合は、[ファイルシステムレベルのオンラインバックアップとリカバリ操作(クラスタスナップショット機能の利用)](#file_system_level_backup_and_recovery_operations)を参照ください。 + + +【注意】 +- オンラインバックアップを実行する前に、複数コンテナにまたがった更新処理は停止してください。GridDBクラスタとして論理的に不整合な状態のバックアップ作成を防止できます。 +- クラスタスナップショットまたはオンラインバックアップ中にノード障害が発生した場合、オンラインバックアップを中断し、1台目から再実行してください。ノード障害後のパーティションの再配置(リバランス)により、必要なデータがバックアップされないことを防止できます。 +- ファイルシステムレベルのオンラインバックアップ(クラスタスナップショット)は、クラスタの一貫性を保持するため、クラスタスナップショット取得時点で全パーティションの状態がSTABLEであるときに実行することを推奨します。復元処理後クラスタ再構成しても同期処理が発生しません。 + + +**定義ファイルのバックアップ** + +バックアップでは、データベースファイルの定期的なバックアップに加え、定義ファイルのバックアップも必要です。 + +$GS_HOME/confディレクトリ(デフォルトでは、/var/lib/gridstore/conf)にあるノード定義ファイル(gs_node.json)、クラスタ定義ファイル(gs_cluster.json)、ユーザ定義ファイル(password)のバックアップをOSのコマンドを用いて採取しておいてください。 + +定義ファイルのバックアップは、設定変更やユーザ登録・変更した場合には、必ず実施してください。 + + + + + + +### ノード単位のオンラインバックアップとリカバリ操作 + +#### バックアップ運用 + +GridDBの障害に備えたバックアップ運用について説明します。 + +##### バックアップの種類 + +GridDBでは、ノード単位のオンラインバックアップが可能です。これをGridDBクラスタを構成する全ノードに対して順次行うことで、サービスを継続しながら、クラスタ全体としてオンラインバックアップが行えます。ただし、この方法でクラスタ全体としてのバックアップを取得した場合は、クラスタとしての一貫性保持はなされないため、バックアップから復元してクラスタを再構築したあとで同期処理が実行される可能性が高いです。クラスタとしての一貫性保持を優先する場合は「クラスタスナップショットによるオンラインバックアップ」の使用を検討してください。 + + GridDBの提供するオンラインバックアップの種類には以下のものがあります。 + +| バックアップ種別 | バックアップの動作 | 復旧時点 | | +|------------------------|--------------------------------|--------------------------------|-----| +| フルバックアップ | 現在利用中のクラスタデータベースをノード定義ファイルで指定したバックアップディレクトリにノード単位にオンラインでバックアップする。 | フルバックアップ採取時点 | +| 差分・増分バックアップ | 現在利用中のクラスタデータベースをノード定義ファイルで指定したバックアップディレクトリにノード単位にオンラインでバックアップし、以降のバックアップでは、バックアップ後の更新ブロックの差分増分のみをバックアップする。 | 差分増分バックアップ採取時点 | +| 自動ログバックアップ | 現在利用中のクラスタデータベースをノード定義ファイルで指定したバックアップディレクトリにノード単位にオンラインでバックアップするとともに、トランザクションログファイルの書き込みと同じタイミングでトランザクションログも自動で採取します。トランザクションログファイルの書き込みタイミングは、ノード定義ファイルの/dataStore/logWriteModeの値に従います。 | 最新トランザクションの更新時点 | + +利用するバックアップの種類に応じて復旧できる時点が異なります。 + +GridDBの提供する各バックアップの動作と、利用を推奨するシステムについて以下に示します + +- フルバックアップ + + 参照系のシステムでは、データ更新が行われる夜間バッチなどの後にフルバックアップを採取します。フルバックアップはすべてのデータベースファイルのデータをコピーするため、時間がかかります。また、バックアップ採取先のデータ容量としてデータベースファイルと同じ容量が必要です。 + + また、バックアップを何世代保持するのかに応じて、実データベースサイズの掛け算でバックアップディスク容量が必要です。 + +
+フルバックアップ +
フルバックアップ
+
+ + +- 差分・増分バックアップ + + フルバックアップで全データベースのバックアップを採取後、更新されたデータの差分のみをバックアップできます。 バックアップを短時間に行いたいシステムで、夜間のバッチ運用でバックアップを自動的に、月1回のフルバックアップ(ベースライン作成)、1週間に1回の差分(since)バックアップ、毎日増分バックアップ(incremental)などのように計画的な運用を行うシステムに向いています。 + + 増分バックアップは、更新データのみを用いたバックアップのため、フルバックアップや差分バックアップと比較して高速にバックアップが行えます。しかし障害発生時のリカバリではフルバックアップのデータに対して更新ブロックをロールフォワードする必要があるため、リカバリに時間がかかります。定期的なBaselineやSince指定での差分バックアップが必要です。 + +
+ 差分・増分バックアップ +
差分・増分バックアップ
+
+ + +- 自動ログバックアップ + + 自動ログバックアップ指定でのフルバックアップ(ベースライン作成)採取以降、更新ログがバックアップディレクトリに収集されます。自動的にトランザクションログが採取されるため、バックアップ操作は不要です。運用を省力化する場合やバックアップでシステムに負荷を与えたくない場合に指定します。ただし、定期的にBaselineを更新しない場合、障害発生時のリカバリで利用するトランザクションログファイルが増え、リカバリに時間がかかることになります。差分・増分バックアップでは、同じブロックのデータが更新された場合に1つのデータとしてバックアップされますが、自動ログバックアップでは更新の都度のログが採取されるため、障害回復時のリカバリには、差分・増分よりも時間がかかります。 + +
+自動ログバックアップ +
自動ログバックアップ
+
+ +【注意】 +- 差分・増分バックアップ、自動ログバックアップでも障害発生時のリカバリ時間を短縮するにはベースラインとなるフルバックアップを定期的に採取する必要があります。 + +バックアップの種別は、コマンドのオプションで指定します。 + +##### バックアップ関連パラメータの確認 + +バックアップ先は、ノード定義ファイルの /dataStore/backupPathで指定します。ディスクの物理障害を考慮して、バックアップ先とデータベースファイル(/dataStore/dbPath、/dataStore/transactionLogPath)は必ず異なる物理ディスクに配置するように設定してください。 + +トランザクションのログ永続化には2つのモードがあります。デフォルト値はNORMALです。 +- NORMAL:チェックポイントにより、不要になったトランザクションログファイルは削除されます。 +- KEEP_ALL_LOG:全てのトランザクションログファイルを残します。 + +KEEP_ALL_LOGは、他社のバックアップソフトウェアとの連携等でログファイルの削除を指示する運用を行うなど特別な用途の場合のみ指定しますが、通常は利用しません。 + +ノード定義ファイルの指定例を以下に示します。 + +``` example +$ cat /var/lib/gridstore/conf/gs_node.json # 設定の確認例 +{ + "dataStore":{ + "dbPath":"/var/lib/gridstore/data", + "transactionLogPath":"/var/lib/gridstore/txnlog", + "backupPath":"/mnt/gridstore/backup", # バックアップディレクトリ + "storeMemoryLimit":"1024", + "concurrency":2, + "logWriteMode":1, + "persistencyMode":"NORMAL" #永続化モード +      : +      : +} +``` + +##### バックアップの実行 + +フルバックアップ、差分・増分バックアップ、自動ログバックアップの各々の利用方法を説明します。 + +どのバックアップでも、バックアップ名(BACKUPNAME)を指定してバックアップを実行します。バックアップで作成されるデータは、ノード定義ファイルのbackupPathで指定したディレクトリ下にバックアップ名(BACKUPNAME)と同じ名前のディレクトリが作成され、配置されます。 + +BACKUPNAMEは、12文字以内の英数字で指定できます。 + +##### フルバックアップ + +障害発生時、フルバックアップの採取完了時点までリカバリできます。 フルバックアップをクラスタを構成するすべてのノードに対して実施します。バックアップデータはコマンドのBACKUPNAMEで示すディレクトリに配置されます。採取したバックアップデータをわかりやすく管理するためにBACKUPNAMEに日付を指定する運用をお勧めします。 + +以下のコマンドをクラスタ内の全ノードに対して実行します。 + +``` example +$ gs_backup -u admin/admin 20141025 +``` + +この例では、 +1. バックアップ名(BACKUPNAME)を「20141025」とすると、バックアップディレクトリ下に「20141025」というディレクトリが作成されます。 +2. 「20141025」ディレクトリに、バックアップ情報ファイル(gs_backup_info.json,gs_backup_info_digest.json)とLSN情報ファイル(gs_lsn_info.json)が作成されます。また、「data」ディレクトリにデータファイルとチェックポイントログファイル、「txnlog」ディレクトリにトランザクションログファイルが作成されます。 + +``` example +/var/lib/gridstore/backup/ + 20141025/ # バックアップディレクトリ + gs_backup_info.json # バックアップ情報ファイル + gs_backup_info_digest.json # バックアップ情報ファイル + gs_lsn_info.json # LSN情報ファイル + data/ + 0/ # パーティション番号0 + 0_part_0.dat # データファイルバックアップ + 0_117.cplog # チェックポイントログバックアップ + 0_118.cplog + ... + 1/ + 2/ + ... + txnlog/ + 0/ # パーティション番号0 + 0_120.xlog # トランザクションログバックアップ + 0_121.xlog + 1/ + 2/ + ... +``` + +バックアップコマンドは、バックアップの指示をサーバに通知するだけで、処理の完了は待ち合わせません。 + +バックアップ処理の完了は、gs_statコマンドのステータスで確認してください。 + +``` example + +$ gs_backup -u admin/admin 20141025 +$ gs_stat -u admin/admin --type backup +BackupStatus: Processing +``` + +- バックアップ状態(BackupStatus)は、以下のいずれかになります。 + - Processing : 実行中 + - \- : 完了もしくは未稼働 + +バックアップが正しく採取できたか否かは、gs_backuplistコマンドのステータスで確認できます。 + +``` example +$ gs_backuplist -u admin/admin + +BackupName Status StartTime EndTime +------------------------------------------------------------------------ + 20141025NO2 P 2014-10-25T06:37:10+0900 - + 20141025 NG 2014-10-25T02:13:34+0900 - + 20140925 OK 2014-09-25T05:30:02+0900 2014-09-25T05:59:03+0900 + 20140825 OK 2014-08-25T04:35:02+0900 2014-08-25T04:55:03+0900 +``` + +バックアップリストのStatusの記号を以下に示します。 +- P :バックアップ実行中 +- NG : バックアップ実行中にエラーが発生し、バックアップデータが異常 +- OK : 正常にバックアップが採取されている + +##### 差分・増分ブロックバックアップ + +障害発生時、ベースライン(基準点)となるフルバックアップとベースライン以降の差分・増分バックアップを用いて、最後の差分・増分バックアップ採取時点まで復旧できます。 差分・増分バックアップのベースラインとしてフルバックアップを取得し、以降差分・増分バックアップを指定します。 + +データの更新容量とリカバリにかかる時間のサービス目標に応じてバックアップの採取間隔は検討する必要がありますが、以下を目安として運用してください。 + +- ベースラインのフルバックアップ(baseline) : 一か月毎に実行 +- ベースライン以降の更新ブロックの差分バックアップ(since) : 一週間毎に実行 +- ベースラインや差分バックアップ以降の更新ブロックの増分バックアップ(incremental) : 毎日実行 + +フルバックアップのベースライン作成は、以下のように指定します。この例ではBACKUPNAMEは「201504」です。 + +``` example +$ gs_backup -u admin/admin --mode baseline 201504 +$ gs_stat -u admin/admin --type backup +BackupStatus: Processing(Baseline) +``` + +バックアップのベースラインとして、データディレクトリにあるデータベースファイルが、バックアップディレクトリ下にコピーされます。 + +ベースライン作成後の定期的な差分・増分ブロックのバックアップ(ベースラインのフルバックアップ以降に更新されたデータブロックのバックアップ)は、バックアップコマンド(gs_backup)のモードとしてincrementalやsinceを指定します。BACKUPNAMEには、ベースライン作成時のBACKUPNAMEと同じ値を指定します。この例ではBACKUPNAMEは『201504』です。 + +``` example +***** 増分バックアップの場合 +$ gs_backup -u admin/admin --mode incremental 201504 +$ gs_stat -u admin/admin --type backup +BackupStatus: Processing(Incremental) + +***** 差分バックアップの場合 +$ gs_backup -u admin/admin --mode since 201504 +$ gs_stat -u admin/admin --type backup +BackupStatus: Processing(Since) +``` + +バックアップが正しく採取できたか否かはgs_backuplistコマンドで確認できます。差分・増分バックアップは、複数のバックアップで1つのリカバリ単位となるため、BACKUPNAMEの一覧では1つとして扱われます。したがってステータスの詳細を見るには、バックアップ名を指定して詳細を確認します。 + +差分・増分バックアップであるというこことはBACKUPNAMEの先頭に"\*":アスタリスクがついていることで確認できます。差分・増分のバックアップのステータスは常に"--"です。 + +差分・増分バックアップのステータスは、gs_backuplistコマンドの引数にBACKUPNAMEを指定することで確認できます。 + +``` example +***** BACKUPNAMEの一覧を表示します +$ gs_backuplist -u admin/admin + +BackupName Status StartTime EndTime +------------------------------------------------------------------------ +*201504 -- 2015-04-01T05:20:00+0900 2015-04-24T06:10:55+0900 +*201503 -- 2015-03-01T05:20:00+0900 2015-04-24T06:05:32+0900 + : + 20141025NO2 OK 2014-10-25T06:37:10+0900 2014-10-25T06:37:10+0900 + +***** 個別のBACKUPNAMEを指定し、詳細情報を表示します +$ gs_backuplist -u admin/admin 201504 + +BackupName : 201504 + +BackupData Status StartTime EndTime +-------------------------------------------------------------------------------- +201504_lv0 OK 2015-04-01T05:20:00+0900 2015-04-01T06:10:55+0900 +201504_lv1_000_001 OK 2015-04-02T05:20:00+0900 2015-04-01T05:20:52+0900 +201504_lv1_000_002 OK 2015-04-03T05:20:00+0900 2015-04-01T05:20:25+0900 +201504_lv1_000_003 OK 2015-04-04T05:20:00+0900 2015-04-01T05:20:33+0900 +201504_lv1_000_004 OK 2015-04-05T05:20:00+0900 2015-04-01T05:21:15+0900 +201504_lv1_000_005 OK 2015-04-06T05:20:00+0900 2015-04-01T05:21:05+0900 +201504_lv1_001_000 OK 2015-04-07T05:20:00+0900 2015-04-01T05:22:11+0900 +201504_lv1_001_001 OK 2015-04-07T05:20:00+0900 2015-04-01T05:20:55+0900 +``` + +差分・増分のバックアップデータは、バックアップディレクトリに以下の規則でディレクトリが作成され、データが配置されます。 + +- BACKUPNAME_lv0 : 差分・増分バックアップのベースラインのバックアップデータが配置されます。lv0固定です。 +- BACKUPNAME_lv1_NNN_MMM : 差分・増分バックアップの差分(Since)と増分(Incremental)のバックアップデータが配置されます。 + - NNNは、差分バックアップ時に数字がカウントアップされます。 + - MMMは、差分バックアップ時に000にクリアされ、増分バックアップ時に数字がカウントアップされます。 + +バックアップリストのStatusの記号を以下に示します。 +- P :バックアップ実行中 +- NG : バックアップ実行中にエラーが発生し、バックアップデータが異常 +- OK : 正常にバックアップが採取されている + +差分・増分バックアップでは、BackupDataディレクトリ/dataディレクトリ/<パーティション番号>ディレクトリの下に、<パーティション番号>_n_incremental.cplogという名前で更新ブロックのログが出力されます。(※nは数値) + +差分・増分バックアップはフルバックアップと比較してバックアップ時間を削減できます。しかし障害発生時のリカバリにはフルバックアップのデータに更新ブロックをロールフォワードするため、リカバリには時間がかかります。 定期的なベースライン取得やSince指定によるベースラインからの差分バックアップを実施してください。 + +【注意】 +- クラスタ構成変更やシステムの負荷に応じてパーティションは自動配置されます(リバランス)。パーティションの配置が変更となった後に差分ログバックアップを指定すると、『パーティション状態変更によりログバックアップできない』というエラーが通知されます。この場合、必ずクラスタを構成する全ノードのバックアップ(baseline)を採取してください。パーティションの再配置(リバランス)は以下のようなクラスタ構成変更でも発生します。 + - ノード追加によるクラスタ構成台数の増加 + - 障害発生等で発生するノードの切り離しによるクラスタ構成台数の縮小 + +##### 自動ログバックアップ + +GridDBが自動的にトランザクションログをバックアップディレクトリに出力します。従って、常に最新の状態にリカバリすることができます。 自動的なバックアップ操作のため、『システムの利用時間の低い時間にあらかじめスケジューリングしてバックアップ処理をしたい』といったシステムの運用形態に応じた計画的なバックアップはできません。また、自動ログバックアップにより、通常運用中にも多少のシステム負荷が発生します。従って、システムのリソースに余裕がある場合にのみ本指定を用いることをお勧めします。 + +自動ログバックアップを利用するには次のように指定します。この例ではBACKUPNAMEは「201411252100」です。 + +``` example +$ gs_backup -u admin/admin --mode auto 201411252100 +$ gs_stat -u admin/admin --type backup +``` + +コマンドを実行するとBACKUPNAMEで示すディレクトリにバックアップを取得します。 +- 自動ログバックアップでは、バックアップ中のエラーに対する動作設定が、オプションmodeで指定できます。 + - auto :バックアップエラー時、ノードはABNORMAL状態となり停止する。 + - auto_nostop :バックアップエラーでバックアップは不完全な状態となるが、ノードは運用を継続する。 + +この例では、 +1. バックアップディレクトリ下に「201411252100」というディレクトリが作成されます。 +2. 「201411252100」ディレクトリに、バックアップ情報ファイル(gs_backup_info.json,gs_backup_info_digest.json)とLSN情報ファイル(gs_lsn_info.json)が作成されます。また、「data」ディレクトリにデータファイルとチェックポイントログファイル、「txnlog」ディレクトリにトランザクションログファイルが作成されます。 +3. 「201411252100/txnlog」ディレクトリの下にトランザクションの実行完了とともにトランザクションログファイルが作成されます。 + +自動ログバックアップで運用した場合、障害発生時のリカバリは、2)のフルバックアップデータに対して、3)のトランザクションログファイルをロールフォワードします。従ってリカバリに利用するログファイルが多数になるとリカバリ時間が増大しますので、定期的に、--mode autoを指定してフルバックアップを採取してください。 + +##### バックアップ動作の確認 + +現在実行しているバックアップのモードや実行状態の詳細はgs_statコマンドで取得できる情報でも確認できます。 + +``` example +$ gs_stat -u admin/admin + + "checkpoint": { + "backupOperation": 3, + "duplicateLog": 0, + "endTime": 0, + "mode": "INCREMENTAL_BACKUP_LEVEL_0", + "normalCheckpointOperation": 139, + "pendingPartition": 1, + "requestedCheckpointOperation": 0, + "startTime": 1429756253260 + }, + : + : +``` + +gs_statで出力されるバックアップ関連の各パラメータの意味は以下のとおりです。 +- backupOperation :システム起動後のバックアップ実行回数です。 +- duplicateLog : 自動ログバックアップが行われ、ログの2重出力が行われているか否かを示します。 + - 0:自動ログバックアップoff + - 1:自動ログバックアップon +- endtime :バックアップやチェックポイント実行中は、"0"です。処理が完了すると時刻が設定されます。 +- mode :バックアップやチェックポイントの処理名が表示されます。実行中もしくは最後に実行されたバックアップの処理名が表示されます。 + - BACKUP : フルバックアップや自動ログバックアップでのフルバックアップの実行 + - INCREMENTAL_BACKUP_LEVEL_0: 差分・増分バックアップのベースライン作成 + - INCREMENTAL_BACKUP_LEVEL_1_CUMULATIVE : ベースラインからの差分バックアップ + - INCREMENTAL_BACKUP_LEVEL_1_DIFFERENTIAL : 前回のバックアップからの増分バックアップ + +##### コンテナ情報の採取 + +データベース障害発生時には、どのコンテナがリカバリ対象なのかを把握してコンテナの使用者に連絡するなどの手立てが必要です。リカバリ対象のコンテナを検出するには、定期的に以下の情報を採取している必要があります。 +- パーティションに配置されているコンテナ一覧 + - コンテナはアプリケーションシステムの仕様に応じて、動的に作成されパーティションに配置されるため、gs_shコマンドで定期的にコンテナ一覧とパーティション配置の一覧を出力しておく必要があります。 + +コンテナ一覧を出力するgs_shのコマンドスクリプトを作成しておくことで運用の省力化が図れます。 + +以下の例では、gs_shのサブコマンドをlistContainer.gshというファイル名で作成します。 + +``` example +setnode node1 198.2.2.1 10040 +setnode node2 198.2.2.2 10040 +setnode node3 198.2.2.3 10040 +setcluster cl1 clusterSeller 239.0.0.20 31999 $node1 $node2 $node3 +setuser admin admin gstore +connect $cl1 +showcontainer +connect $cl1 db0 +showcontainer + : dbの数だけ繰り返す +quit +``` + +クラスタを構成するノードを示すnode1,node2,node3といったノード変数や、cl1というクラスタ変数、ユーザ設定やデータベース情報は適宜環境に合わせて変更してください。 + +gs_shのスクリプトファイルを以下のように実行することで、コンテナとパーティションの一覧が採取できます。 + +``` example +$ gs_sh listContainer.gsh>`date +%Y%m%d`Container.txt +``` + +20141001Container.txtには以下の形式で情報が保存されます。 + +``` example +Database : public +Name Type PartitionId +------------------------------------------------ +container_7 TIME_SERIES 0 +container_9 TIME_SERIES 7 +container_2 TIME_SERIES 15 +container_8 TIME_SERIES 17 +container_6 TIME_SERIES 22 +container_3 TIME_SERIES 25 +container_0 TIME_SERIES 35 +container_5 TIME_SERIES 44 +container_1 TIME_SERIES 53 +: + Total Count: 20 + +Database : db0 +Name Type PartitionId +--------------------------------------------- +CO_ALL1 COLLECTION 32 +COL1 COLLECTION 125 + Total Count: 2 +``` + + +#### リカバリ操作 + +障害発生時のリカバリ操作の概要は以下のとおりです。 +1. 障害の認識とリカバリ範囲の確認 +2. リカバリ操作とノード起動 +3. ノードのクラスタへの組込み +4. 復旧結果の確認と操作 + +##### 障害の認識とリカバリ範囲の確認 + +GridDB内で障害が発生すると、エラーが発生したノードのイベントログファイルに障害の原因が出力されるとともに、ノードの動作が継続不能と判断した際は、ノードがABNORMAL状態となり、クラスタサービスから切り離されます。 + +クラスタ構成では、通常複数レプリカが存在する運用を実施しているため、ノードがABNORMAL状態となってもクラスタサービスが停止することはありません。パーティションがレプリカも含めてすべて障害となった場合、データのリカバリが必要です。 + +データのリカバリが必要か否かは、マスタノードのステータスをgs_statで確認し、/cluster/partitionStatusの値が"OWNER_LOSS"の場合はリカバリが必要です。 + +``` example +$ gs_stat -u admin/admin -p 10041 +{ + "checkpoint": { + : + }, + "cluster": { + "activeCount": 2, + "clusterName": "clusterSeller", + "clusterStatus": "MASTER", + "designatedCount": 3, + "loadBalancer": "ACTIVE", + "master": { + "address": "192.168.0.1", + "port": 10011 + }, + "nodeList": [ + { + "address": "192.168.0.2", + "port": 10011 + }, + { + "address": "192.168.0.3", + "port": 10010 + } + ], + "nodeStatus": "ACTIVE", + "partitionStatus": "OWNER_LOSS", ★ + "startupTime": "2014-10-07T15:22:59+0900", + "syncCount": 4 + : +``` + +リカバリしなければならないデータは、gs_partitionコマンドで確認します。--lossオプションを指定してコマンドを実行することで問題のあるパーティションが確認できます。 + +以下の例では192.168.0.3のノードの問題によりパーティション68がエラーになっています。 + + +``` example +$ gs_partition -u admin/admin -p 10041 --loss + +[ + { + "all": [ + { + "address": "192.168.0.1", + "lsn": 0, + "port": 10011, + "status": "ACTIVE" + }, + : + : + , + { + "address": "192.168.0.3", + "lsn": 2004, + "port": 10012, + "status": "INACTIVE" <--- このノードのステータスがACTIVEでない + } + ], + "backup": [], + "catchup": [], + "maxLsn": 2004, + "owner": null, //クラスタ内でパーティションのオーナが不在の状態 + "pId": "68", //リカバリが必要なパーティションID + "status": "OFF" + }, + { + : + + } + ] +``` + +##### リカバリ操作とノード起動 + +###### バックアップデータからのリカバリ + +ディスク障害などで、利用しているシステムの問題でデータベースに問題が発生した場合、バックアップデータからリカバリします。リカバリ時は以下のことに注意する必要があります。 + +【注意】 +- クラスタ定義ファイルの、パーティション数と処理並列度のパラメータ値には注意してください。 バックアップしたノードの設定値とリストアするノードの設定値は同一にしてください。同一でないと正しくノードが起動できません。 +- データファイル分割を行う設定となっている場合はノード定義ファイルの分割数のパラメータ値に注意してください。バックアップしたノードの分割数とリストアするノードの分割数は同一にしてください。同一でないとリストアに失敗します。 +- 特定の時点にクラスタデータベースをリカバリしたい場合、バックアップ、リストアの作業をクラスタ全体で行う必要があります。 +- クラスタ運用で一部のノードをリストアした場合には、他のノードで保持するレプリカの方が有効となり(LSN情報が新しい場合に発生)、リストアしたバックアップデータベースの状態に戻すことができない場合があります。 +- 特に、バックアップを作成した時点からクラスタの構成が変化している場合には、リストアの効果がありません。そのノードをクラスタに参加させると自律的にデータを再配置するので、リストアしても高い確率でデータが無効になります。 +- バックアップ情報ファイルの情報が欠けている場合、または内容を改変した場合は、GridDBノードはサービスを開始できません。 + +GridDBノードにバックアップデータをリストアします。 + +バックアップしたデータからリストアする場合、以下の手順で操作を行います。 + +1. ノードが起動していないことを確認します。 + - クラスタ定義ファイルが、参加させるクラスタの他のノードと同一であることを確認します。 + +2. リカバリに利用するバックアップ名を確認します。この操作はノード上で実行します。 + - バックアップのステータスを確認し、正しくバックアップされているものを選択します。 + +3. ノードのデータベースファイルディレクトリ(デフォルトでは、/var/lib/gridstore/data, /var/lib/gridstore/txnlog)に過去のデータファイル、チェックポイントログファイル、トランザクションログファイルが残っていないことを確認します。 + - 不要であれば削除、必要であれば別のディレクトリに移動してください。 + +4. ノードを起動するマシン上で、リストアコマンドを実行します。 +5. ノードを起動します。 + +バックアップしたデータの確認には、以下のコマンドを用います。 + +- gs_backuplist -u ユーザ名/パスワード + +以下は、バックアップ名の一覧を表示する具体例です。 バックアップ名の一覧は、ノードの起動状態に関わらず表示できます。ノードが起動状態で、バックアップ処理中の場合はStatusは"P"(Processingの略)と表示されます。 + +バックアップのリスト表示では、最新のものから順に表示されます。以下の例の場合、201912のBACKUPNAMEが最新です。 + +``` example +$ gs_backuplist -u admin/admin + BackupName Status StartTime EndTime +------------------------------------------------------------------------- +*201912 -- 2019-12-01T05:20:00+09:00 2019-12-01T06:10:55+09:00 +*201911 -- 2019-11-01T05:20:00+09:00 2019-11-01T06:10:55+09:00 + : + 20191025NO2 OK 2019-10-25T06:37:10+09:00 2019-10-25T06:38:20+09:00 + 20191025 NG 2019-10-25T02:13:34+09:00 - + 20191018 OK 2019-10-18T02:10:00+09:00 2019-10-18T02:12:15+09:00 + +$ gs_backuplist -u admin/admin 201912 + +BackupName : 201912 + +BackupData Status StartTime EndTime +-------------------------------------------------------------------------------- +201912_lv0 OK 2019-12-01T05:20:00+09:00 2019-12-01T06:10:55+09:00 +201912_lv1_000_001 OK 2019-12-02T05:20:00+09:00 2019-12-02T05:20:52+09:00 +201912_lv1_000_002 OK 2019-12-03T05:20:00+09:00 2019-12-03T05:20:25+09:00 +201912_lv1_000_003 OK 2019-12-04T05:20:00+09:00 2019-12-04T05:20:33+09:00 +201912_lv1_000_004 OK 2019-12-05T05:20:00+09:00 2019-12-05T05:21:25+09:00 +201912_lv1_000_005 OK 2019-12-06T05:20:00+09:00 2019-12-06T05:21:05+09:00 +201912_lv1_001_000 OK 2019-12-07T05:20:00+09:00 2019-12-07T05:22:11+09:00 +201912_lv1_001_001 OK 2019-12-08T05:20:00+09:00 2019-12-08T05:20:55+09:00 + +``` + +【注意】 +- StatusがNGと表示される場合、そのバックアップファイルはファイルが破損している可能性があるため、リストアすることはできません。 + +この201912のバックアップデータのうちでリカバリに利用されるデータを確認します。gs_restoreの--testオプションではリカバリに利用する、差分・増分バックアップのデータが確認できます。--testオプションでは、リカバリに利用する情報の表示のみでデータのリストアは行いません。事前確認する際に利用してください。 + +上記例で出力された201912のBACKUPNAMEのリカバリでは、ベースラインの201912_lv0ディレクトリのデータ、および差分(Since)の201912_lv1_001_000ディレクトリ、増分(Incremental)の201912_lv1_001_001ディレクトリのデータがリカバリに利用されることを示しています。 + +``` example + +-bash-4.2$ gs_restore --test 201912 + +BackupName : 201912 +BackupFolder : /var/lib/gridstore/backup + +RestoreData Status StartTime EndTime +-------------------------------------------------------------------------------- +201912_lv0 OK 2019-09-06T11:39:28+09:00 2019-09-06T11:39:28+09:00 +201912_lv1_001_000 OK 2019-09-06T20:01:00+09:00 2019-09-06T20:01:00+09:00 +201912_lv1_001_001 OK 2019-09-06T20:04:42+09:00 2019-09-06T20:04:43+09:00 + +``` + +なお、特定のパーティションの障害の場合、そのパーティションの最新データがどこに保持されているのかを確認する必要があります。 + +クラスタを構成するすべてのノード上で、gs_backuplistコマンドを用い、--partitionIdオプションに確認したいパーティションIDを指定して実行します。最も数値の大きいLSNを含むノードのバックアップを利用してリカバリします。 + +``` example +**** クラスタを構成する各ノードで実行します。 + +$ gs_backuplist -u admin/admin --partitionId=68 + BackupName ID LSN +---------------------------------------------------------- + 20191018 68 1534 +*201911 68 2349 +*201912 68 11512 +``` + +"\*"は、差分・増分バックアップのBACKUPNAMEの場合に付与されます。 + +以下は、バックアップデータをリストアする実行例です。リストアはノードを停止した状態で実行します。 + +``` example +$ mv ${GS_HOME}/data/* ${GS_HOME}/temp/data # データファイル、チェックポイントログファイルの移動 +$ mv ${GS_HOME}/txnlog/* ${GS_HOME}/temp/txnlog # トランザクションログファイルの移動 +$ gs_restore 201912 # リストア +``` + +gs_restoreコマンドの実行により、以下のような処理が実行されます。 + +- バックアップディレクトリ(ノード定義ファイルの /dataStore/backupPath)の下にある、201912_lv0および201912_lv1_001_001ディレクトリから、バックアップファイル群をデータベースディレクトリ(ノード定義ファイルの /dataStore/dbPath, /dataStore/transactionLogPath)にコピーする。 + +リストア後はノードを起動します。起動後の処理は、*ノード起動後の操作*を参照してください。 + +``` example +$ gs_startnode -u admin/admin -w +``` + +###### ノード障害からのリカバリ + +ノード障害でノードの状態がABNORMAL状態になったり、ノードが異常終了した際は、イベントログファイルでエラー原因を特定する必要があります。 + +データベースファイルに障害がない場合、ノードの障害原因を除去し、ノードを起動するだけでデータベースファイルのデータはリカバリできます。 + +ノードの状態がABNORMAL状態になったときは、一旦ノードを強制終了させ、エラー原因を調査後再起動します。 + +強制的にノードを停止します。 + +``` example +$ gs_stopnode -f -u admin/admin -w +``` + +エラー原因を特定し、データベースの障害ではないと判断した場合、ノードを起動します。ノードを起動することで、トランザクションログのロールフォワードが行われ、最新の状態にデータがリカバリされます。 + +``` example +$ gs_startnode -u admin/admin -w +``` + +起動後の処理は、*ノード起動後の操作*を参照してください。 + + + +##### ノード起動後の操作 + +ノード起動後には以下の操作を行います。 + +1. ノードをクラスタに組み込む +2. データ一貫性の確認とフェイルオーバー操作 + +###### ノードをクラスタに組み込む + +ノードを起動後、回復したノードをクラスタに組み込むには、gs_joinclusterコマンドを **待合せオプション(-w)を指定して** 実行します。 + +``` example +$ gs_joincluster -u admin/admin -c clusterSeller -n 5 -w +``` + + +###### データ一貫性の確認とフェイルオーバー操作 + +ノードをクラスタに組み込んだ後、パーティションのリカバリ状態を確認します。オンラインで動作しているクラスタに対して、データベースファイルのリカバリをバックアップから実施した場合、オンラインで保持しているパーティションのLSNに一致しない場合があります。 以下のコマンドでパーティションの詳細情報を調べ、*コンテナ情報の採取*で採取した情報と照らし合わせることで、ロスト対象に含まれるコンテナがわかります。 + +gs_partitionコマンドを用いてパーティションの欠損情報を取得します。パーティションの欠損が発生している場合は、欠損が発生しているパーティションのみが表示されます。表示されなければ、データの一貫性に問題はありません。 + +``` example +$ gs_partition -u admin/admin --loss + [ + { + "all": [ + { + "address": "192.168.0.1", + "lsn": 0, + "port": 10040, + "status": "ACTIVE" + }, + { + "address": "192.168.0.2", + "lsn": 1207, + "port": 10040, + "status": "ACTIVE" + }, + { + "address": "192.168.0.3", + "lsn": 0, + "port": 10040, + "status": "ACTIVE" + }, + ], + "backup": [], + "catchup": [], + "maxLsn": 1408, + "owner": null, + "pId": "1", + "status": "OFF" + }, +: +] +``` + +LSNがマスタノードが保持するMAXLSNと異なる場合パーティション欠損と判断されます。 クラスタを構成するノードのstatusはACTIVEですが、パーティションのstatusはOFF状態です。 このままシステムに組み込むにはgs_failoverclusterコマンドを実行します。 + +``` example +$ gs_failovercluster -u admin/admin --repair +``` + +フェイルオーバーの完了は、マスタノードに対するgs_statコマンドの実行で/cluster/partitionStatusがNORMALになっていること、 gs_partitionコマンドでパーティションの欠損が発生していないことで確認します。 + + +##### リカバリ完了後の操作 + +リカバリ完了後は、クラスタを構成する全ノードでフルバックアップを採取してください。 + + + + + + + + + +### ファイルシステムレベルのオンラインバックアップとリカバリ操作(クラスタスナップショット機能の利用) + +クラスタの一貫性を保ってバックアップを行いたい場合、クラスタスナップショット機能を使用してファイルシステムレベルのオンラインバックアップを取得します。この方法では、LVMやストレージのスナップショット機能を利用したり、ファイルを直接コピーすることで、データディレクトリのバックアップを取得します。 + +また、GridDBの自動ログバックアップ機能と組み合わせることで、この方法で取得したバックアップをベースラインとして、最新データまでリカバリすることも可能です。ただし、この場合クラスタ全体の一貫性保持はなされないため、ノード単位で復元してクラスタを再構築した後で同期処理が発生する可能性があります。自動ログバックアップ機能については、[オンラインバックアップ](#online_backup_and_recovery_operations)を参照ください。 + + +#### クラスタスナップショットによるオンラインバックアップ + +クラスタスナップショット機能は、クラスタ全体で静止点を作成し、一貫性のある状態を保持したバックアップを可能にする機能です。 +この機能を利用することにより、LVMスナップショットやストレージのスナップショット機能を用いてオンラインバックアップを実行できます。バックアップに要する時間を大幅に短縮できるほか、クラスタの各ノードの復旧時点を揃えることができ、復元後すぐに安定運用が可能になります。 + +以下の手順で操作を行います。 + +1. クラスタのノードリバランス処理を一時停止します。 +2. クラスタの全ノードに対して定期チェックポイント処理を一時停止します。 +3. クラスタの全ノードに対して手動チェックポイント処理を実行し、完了を待ち合わせます。 +4. クラスタスナップショット復元情報ファイル作成コマンドを任意のノードから実行します。 + - ※この時点が復元ポイントとなります +5. クラスタの全ノードに対して、データベースファイルディレクトリを含むスナップショットを取得します。 + - ※このスナップショット取得の手順は、各ノードで個別に実行します。同時刻に開始する必要はありません。 + - ※スナップショットを取得できない環境の場合、ここでOSのコピーコマンドによりデータをコピーします。はじめにトランザクションログファイルをコピーし、その後、データファイルとチェックポイントログファイルをコピーする順序で行います。(この場合、以下8.の手順は不要です。) +6. クラスタの全ノードに対して定期チェックポイント処理を再開します。 +7. クラスタのノードリバランス処理を再開します。 +8. クラスタの全ノードに対して、取得したスナップショットからデータベースファイルディレクトリをコピーします。 + - ※必要に応じて、不要となったスナップショットを削除してください。 + +取得したバックアップのおおよその復旧時点は、クラスタスナップショット復元情報ファイル作成コマンド実行時点となります。 + +【注意】 +- スナップショット作成中のCopy on write処理のため、DB性能低下を招く可能性があります。性能については、十分に事前検証を行ってください。 + + +以下では、手順の具体例を説明します。 + +クラスタのデータのリバランス処理(ノード間のデータの再配置)を一時停止します。以下のコマンドを実行すると、クラスタ全体で新たなリバランス処理を停止します。バックアップ作成中にデータの配置が変更されないようにするためです。 +``` example +$ gs_loadbalance -u admin/admin --cluster --off +``` + +次に、チェックポイント制御コマンドを実行し、定期チェックポイント処理を一時停止します。これにより、データベースファイルへの新たな書き込みを停止し、静止状態にします。 +``` example +$ gs_checkpoint -u admin/admin --off +``` + +その後、手動チェックポイント処理を待合せオプション(-w)を指定して実行します。これにより、GridDBのストアメモリ中のデータをデータベースファイルに書き込み、永続化します。 + +``` example +$ gs_checkpoint -u admin/admin --manual -w +``` + +手動チェックポイント処理完了後(上記コマンドの応答後)、クラスタスナップショット復元情報ファイル作成コマンドを任意のノードから実行します。この際、ファイルを作成するディレクトリを指定します(以下例では/mnt/backup/202208010300/snapshotinfo)(※1)。1度の実行でクラスタの全てのノードについてのファイルが作成されます。 +クラスタスナップショット復元情報ファイルは、スナップショット作成した時点を記録しています。クラスタスナップショット機能を用いたバックアップから、データベースを復元する際に使用します。 +``` example +$ gs_clustersnapshotinfo -u admin/admin -d /mnt/backup/202208010300/snapshotinfo +``` + +この状態で、スナップショット取得を実行しバックアップを作成します。具体的な手順は環境に依存するため、個別に確認する必要があります。 + +上記の手順が完了したら、通常のデータベースの更新処理に戻すため、定期チェックポイント処理を再開します。 +``` example +$ gs_checkpoint -u admin/admin --on +``` + +最後に、停止していたクラスタのリバランス処理を再開します。以下のコマンドを実行するとクラスタ全体でリバランス処理を再開します。 +``` example +$ gs_loadbalance -u admin/admin --cluster --on +``` + +この時点で、通常のGridDBクラスタの状態に戻ります。 + +通常の状態に戻った後、クラスタの全ノードに対して、取得したスナップショットからデータベースファイルディレクトリをコピーします。 +必要に応じて、不要となったスナップショットを削除してください。これらの具体的な手順は環境に依存するため、個別に確認する必要があります。 + + +【注意】 +- クラスタスナップショット取得時点で、いずれか1つでもパーティションの状態が"STABLE"以外だった場合、クラスタスナップショットから復元してクラスタを再構築した後で同期処理が実行される場合があります。 + + +#### リカバリ操作とノードの起動 + +スナップショットやファイルコピーによってバックアップしたデータからリストアする場合、以下の手順で操作を行います。 + +1. ノードが起動していないことを確認します。 + - クラスタ定義ファイルが、参加させるクラスタの他のノードと同一であることを確認します。 + +2. ノードのデータベースファイルディレクトリ(デフォルトでは、/var/lib/gridstore/data, /var/lib/gridstore/txnlog)に過去のデータファイル、チェックポイントログファイル、トランザクションログファイルが残っていないことを確認します。 + - 不要であれば削除、必要であれば別のディレクトリに移動してください。 + +3. ノードごとに、リストアするバックアップデータ(※2)とクラスタスナップショット復元情報ファイル(※1)をデータベースファイルディレクトリにコピーします。 + - ログバックアップを併用して最新のデータへリカバリする場合は、続けてリストアコマンドでログ更新オプションを指定し、対応するログバックアップデータをリストアします。 + + + +4. ノードを起動します。 + +以下では、3の手順の具体例を説明します。 + +はじめに、リストアするバックアップデータをデータベースファイルディレクトリにコピーします。 +以下の例では、/mnt/backup/202208010300/data/および/mnt/backup/202208010300/txnlogにバックアップ(※2)があるものとしています。 + +``` example +$ cp -p /mnt/backup/202208010300/data/* ${GS_HOME}/data +$ cp -p /mnt/backup/202208010300/txnlog/* ${GS_HOME}/txnlog +``` + +さらに、該当するクラスタスナップショット復元情報ファイルをノードごとにデータベースファイルディレクトリにコピーします。 + +``` example +$ cp -p gs_cluster_snapshot_info.json ${GS_HOME}/data +``` + +クラスタスナップショット復元情報ファイルは、出力先ディレクトリパス(※1)に以下のような構成でファイル出力されています。各ノードごとに、該当するディレクトリのファイル(gs_cluster_snapshot_info.json)をコピーしてください。 + +``` example +/mnt/backup/202208010300/snapshotinfo + +- yyyymmddhhmmss + +- cluster_snapshot_info_<ノードIPアドレス>_<システムサービスポート番号> + gs_cluster_snapshot_info.json + +- cluster_snapshot_info_<ノードIPアドレス>_<システムサービスポート番号> + gs_cluster_snapshot_info.json + +- cluster_snapshot_info_<ノードIPアドレス>_<システムサービスポート番号> + gs_cluster_snapshot_info.json +(yyyymmddhhmmss はコマンド実行時の年月日時分秒になります。) +``` + +上記のとおり各ノードごとにそれぞれファイルを配置した後、ノードを起動すると、リストアが行われます。起動後の処理は、[ノード起動後の操作](#operations_after_node_startup)を参照してください。 + + + + + +### バックアップファイル + +#### ファイル構成 + +ノード定義ファイルの /dataStore/backupPathが指すディレクトリ下に、バックアップコマンドのBACKUPNAMEで指定した名前でディレクトリが作成され、以下のファイルが配置されます。なお、差分・増分バックアップの場合は、バックアップディレクトリ下にBACKUPNAME_lv0 (ベースライン) BACKUPNAME_lv1_NNN_MMM(差分・増分バックアップ)ディレクトリが作成され、同様に以下のファイルが配置されます。 + +1. バックアップ情報ファイル(gs_backup_info.json,gs_backup_info_digest.json) + - バックアップ時の情報として、バックアップの採取開始時間、完了時間やバックアップファイルのサイズなどの情報がgs_backup_info.jsonに保持され、gs_backup_info_digest.jsonにダイジェスト情報が保持されています。本ファイルを元にgs_backuplistで情報が出力されます。 + +2. シーケンス番号(gs_lsn_info.json) + - パーティション更新のシーケンス番号を示すLSN(Log Sequence Number)が出力されます。バックアップ採取時点でパーティションが保持しているLSNが出力されます。 + +3. データファイル(<パーティション番号>_part_n.dat) ※nは数値 + - dataディレクトリ/<パーティション番号>ディレクトリの下に出力されます。 + - データファイル分割を行う設定となっている場合、分割数(/dataStore/dbFileSplitCount)の数だけファイルが作成されます。 + +4. チェックポイントログファイル(<パーティション番号>_n.cplog) ※nは数値 + - dataディレクトリ/<パーティション番号>ディレクトリの下に出力されます。 + +5. トランザクションログファイル(<パーティション番号>_n.xlog) ※nは数値 + - txnlogディレクトリ/<パーティション番号>ディレクトリの下に出力されます。 + - フルバックアップ時もしくは、自動ログバックアップの動作に応じて新しいしいトランザクションログファイルが追加されます。 + +6. 差分・増分ブロックログファイル(<パーティション番号>_n_incremental.cplog) ※nは数値 + - 差分・増分バックアップで、更新ブロックのチェックポイントログファイルを保持します。 + - dataディレクトリ/<パーティション番号>ディレクトリの下に出力されます。 + + +#### 不要となったバックアップファイルの削除 + +不要となったバックアップデータの削除は、BACKUPNAME単位に不要となったディレクトリを削除するのみです。バックアップデータの管理情報はすべて各々のBACKUPNAMEのディレクトリ下にあるため、他のレジストリ情報などを削除するといった操作は不要です。 なお、差分・増分バックアップの際は、BACKUPNAME_lv0, BACKUPNAME_lv1_NNN_MMMのディレクトリ群をすべて削除してください。 + + +## ローリングアップデート機能【EE限定】 + +ローリングアップデート機能では、クラスタ構成を稼動したままノードのアップデートを行うことができます。 ノード1台ずつ順番に、クラスタからノードを離脱してGridDB製品をアップデートし、再びクラスタ構成へノードを参加させることで、最終的にクラスタを構成するすべてのノードを新しいバージョンのGridDB製品に置き換えることができます。 + +以下の手順で、ローリングアップデート機能を用いたアップデートを行います。 + +1. ローリングアップデートの運用計画を立てる + - ローリングアップデートの作業時間を見積もります。ノード1台分の作業は下記の項目となります。 これらにかかる時間を見積り、クラスタの全ノードでの作業時間を計算します。 ノード起動(リカバリ)以外の項目は、約5分程度が目安の時間です。 + - クラスタ離脱 + - ノード停止 + - GridDBインストール + - ノード起動(リカバリ) + - クラスタ参加 + - クラスタ離脱前にデータ更新が多い場合(チェックポイントされていない更新が多い場合)、また、ローリングアップデート中にデータ更新が多い場合は、リカバリに時間がかかる場合があります。 + + +2. クラスタのデータ配置目標の自動設定を無効にする + - ローリングアップデートでは、繰り返しクラスタ構成を変更するため、データ配置目標の自動設定を無効にした状態で全ノードのアップデートを実施します。これにより、無駄なデータ再配置が行われず、処理やネットワーク通信の負荷を軽減できます。 + - gs_goalconfコマンドで--clusterオプションを付けて実行すると、クラスタを構成する全ノードに対してデータ配置目標の自動設定の無効化が行われます。 + - 例) + ``` example + $ gs_goalconf -u admin/admin --off --cluster + ``` + +3. クラスタ構成を確認する + - ローリングアップデートの手順では、すべてのフォロワノードをアップデートした後で、最後にマスタノードをアップデートします。 そのため、事前にクラスタ構成を確認し、ノードをアップデートする順序を決めます。 + - gs_configコマンドでマスタノードを確認します。確認したマスタノード以外はフォロワノードです。 + - 例) + ``` example + $ gs_config -u admin/admin + ``` + +4. すべてのフォロワノードを1台ずつアップデートする + - 下記の作業を各フォロワノードに対して行います。ノードにログインして実施してください。 この作業の開始以降、5の作業が完了するまでSQL処理は継続できない場合があります。詳しくは【注意】を参照ください。 + - a. 現在のデータ配置目標をマスタノードから取得する (gs_goalconf) + - 例) + ``` example + $ gs_goalconf -u admin/admin -s MASTER_IP --manual > last_goal.json + ``` + - b. 対象のノードを離脱対象とするための配置目標を全ノードに設定する (gs_goalconf) + - ノードを安全に離脱させるため、離脱させるノードがレプリカのオーナを持たないデータ配置にする必要があります。この操作は、(パーティション数 * ノード数 / 10)秒程度かかります。 + - このとき、一部パーティションのオーナとバックアップが切り替わるため、クライアントフェイルオーバが発生することがあります。またクライアントフェイルオーバ非対応の処理はエラーとなります。 + - 例) + ``` example + $ gs_goalconf -u admin/admin --manual --leaveNode NODE_IP --cluster + ``` + - c. マスタノードのパーティション状態がNORMALになるまで待つ (gs_stat) + - 例) + ``` example + $ gs_stat -u admin/admin -s MASTER_IP | grep partitionStatus + ``` + - d. 全ノードの自律的データ配置機能を無効にする (gs_loadbalance) + - 例) + ``` example + $ gs_loadbalance -u admin/admin --off --cluster + ``` + - e. ノードをクラスタから離脱する (gs_leavecluster) + - 例) + ``` example + $ gs_leavecluster -u admin/admin --force -w + ``` + - f. ノードを通常停止する (gs_stopnode) + - 例) + ``` example + $ gs_stopnode -u admin/admin -w + ``` + - g. GridDBをアップデートする + - h. ノードを起動する (gs_startnode) + - 例) + ``` example + $ gs_startnode -u admin/admin -w + ``` + - i. 自律的データ配置機能を無効にする (gs_loadbalance) + - ノード1台に対して行う操作なので、--clusterオプションは不要です。 + - 例) + ``` example + $ gs_loadbalance -u admin/admin --off + ``` + - j. データ配置目標の自動設定を無効にする (gs_goalconf) + - ノード1台に対して行う操作なので、--clusterオプションは不要です。 + - 例) + ``` example + $ gs_goalconf -u admin/admin --off + ``` + - k. ノードをクラスタに参加させる (gs_joincluster) + - 例) クラスタ名:mycluster、クラスタ構成ノード数:5の場合 + ``` example + $ gs_joincluster -u admin/admin -c mycluster -n 5 -w + ``` + - l. マスタノードのパーティション状態がREPLICA_LOSSになるまで待つ (gs_stat) + - 例) + ``` example + $ gs_stat -u admin/admin -s MASTER_IP | grep partitionStatus + ``` + - m. データ配置目標を離脱前の状態に戻す (gs_goalconf) + - この操作は、(パーティション数 * ノード数 / 10)秒程度かかります。 + - 例) + ``` example + $ gs_goalconf -u admin/admin --manual --set last_goal.json --cluster + ``` + - n. 全ノードの自律的データ配置機能に有効にする (gs_loadbalance) + - このとき、一部パーティションのオーナとバックアップが切り替わるため、クライアントフェイルオーバが発生することがあります。またクライアントフェイルオーバ非対応の処理はエラーとなります。 + - 例) + ``` example + $ gs_loadbalance -u admin/admin --on --cluster + ``` + - o. マスタノードのパーティション状態がNORMALになるまで待つ (gs_stat) + - 例) + ``` example + $ gs_stat -u admin/admin -s MASTER_IP | grep partitionStatus + ``` +5. マスタノードをアップデートする + - 手順3で確認したマスタノードを最後にアップデートします。手順は4と同様です。 + +6. クラスタ内のすべてのノードが新しいバージョンになっていることを確認する (gs_stat) + +7. クラスタのデータ配置目標の自動設定を有効にする + - 例) + ``` example + $ gs_goalconf -u admin/admin --on --cluster + ``` + + + 上記の操作手順を支援する運用ツールとして、gs_rollingupdateが提供されています。ローリングアップデート支援コマンドを用いることにより、ローリングアップデートを行う一連の手順の大半の自動化を行うことができます。 + +
+ローリングアップデート +
ローリングアップデート支援コマンド
+
+ +【メモ】 +- ローリングアップデート機能は、V4.0以降のバージョンにおいて使用することができます。 +- 現在のクラスタ構成のGridDBバージョンと、ローリングアップデートによって入れ替える新しいGridDBバージョンのメジャーバージョンが異なる場合は、ローリングアップデート機能を使用することはできません。 + + 例) 現在のバージョンがV4.0で、入れ替えたいバージョンがV5.0の場合、メジャーバージョンが異なるのでローリングアップデートは使用できません。 + +- ローリングアップデートによって入れ替えるGridDBバージョンは、現在のクラスタを構成するGridDBノードのバージョンよりも新しいバージョンでなければなりません。 +- 全ノードのローリングアップデートが完了するまで、新しいバージョンの追加機能は使用できません。 + + +【注意】 +- 運用中のクラスタをローリングアップデートする前に、テスト環境でローリングアップデートを試行し、手順に問題が無いことを十分に確認してください。 +- パッケージのアップデートインストールに十分なディスク容量を確保してから手順を実施してください。 +- ローリングアップデート中のSQL処理の継続は保証されません。 + - SQLの検索はクライアントフェイルオーバにより継続できる可能性がありますが、ノード間負荷が高いとエラーが返る場合があります。 +- マスタノードのアップデートの際、一時的に(約1分程度)クラスタが停止します。 + - クライアントでフェイルオーバされる処理(NoSQLインターフェース)は、フェイルオーバタイムアウト時間までにクラスタが再開すれば、クライアント側でエラーにはなりません。 +- ローリングアップデート中に大量にデータ更新が行われると、ローリングアップデート完了後のデータ同期処理に時間がかかります。 また、ノードのアップデート中は残りのノードで要求を処理することになるため、一時的にリソース不足に陥る可能性があります。 そのため、ローリングアップデートは、クライアントアクセスがなるべく少ない時間帯に実施することを推奨します。 +- レプリケーションの同期設定が非同期である場合、ローリングアップデート中に登録・更新操作を継続していると、ノードを一時的に離脱させた際に一部のパーティションにアクセスできない状態になる可能性があります。このとき、クライアントフェイルオーバに失敗する可能性があるため、必要に応じてリトライ処理を行ってください。 +- クラスタに複数バージョンのノードが混在する状態のまま運用を継続しないでください。 + + +## イベントログ機能 + +イベントログは、GridDBノード内部で発生した例外などのイベント情報に関するメッセージやシステム稼働情報を記録するログです。 + +イベントログは、環境変数GS_LOGで示すディレクトリにgridstore-%Y%m%d-n.logというファイル名で作成されます(例: gridstore-20150328-5.log)。ファイルは以下のタイミングで切り替わります。 + +- 日付が変わって一番最初にログが書かれるとき +- ノードを再起動したとき +- 1ファイルのサイズが1MBを超えたとき + +イベントログファイルの上限数の初期値は30です。30ファイルを超えると古いファイルから削除されます。ファイル数の上限値はノード定義ファイルで変更できます。 + +イベントログの出力形式は以下の内容です。 + +- (日付時刻) (ホスト名) (スレッド番号) (ログレベル) (カテゴリ) \[(エラー・トレース番号):(エラー・トレース番号名)\](メッセージ) <(base64詳細情報: サポートサービスにて問題点分析用の詳細情報)> + + エラー・トレース番号名で発生した事象の概要が判ります。 + +``` example + +2014-11-12T10:35:29.746+0900 TSOL1234 8456 ERROR TRANSACTION_SERVICE [10008:TXN_CLUSTER_NOT_SERVICING] (nd={clientId=2, address=127.0.0.1:52719}, pId=0, eventType=CONNECT, stmtId=1) + +``` + +イベントログの出力レベルはgs_logconfコマンドを用いてオンラインで変更できます。障害情報の詳細を分析する際には、オンラインで変更します。ただし、オンラインでの変更は一時的なメモリ上での変更のため、ノードの再起動でも設定を有効とするような恒久的設定にするには、クラスタを構成する各ノードのノード定義ファイルのtrace項目を設定する必要があります。 + +設定状況はgs_logconfコマンドで確認できます。出力される内容はバージョンによって異なります。 + +``` example + $ gs_logconf -u admin/admin +{ + "levels": { + "CHECKPOINT_FILE": "ERROR", + "CHECKPOINT_SERVICE": "INFO", + "CHUNK_MANAGER": "ERROR", + "CHUNK_MANAGER_IODETAIL": "ERROR", + "CLUSTER_OPERATION": "INFO", + "CLUSTER_SERVICE": "ERROR", + "COLLECTION": "ERROR", + "DATA_STORE": "ERROR", + "DEFAULT": "ERROR", + "EVENT_ENGINE": "WARNING", + "IO_MONITOR": "WARNING", + "LOG_MANAGER": "WARNING", + "MAIN": "WARNING", + "MESSAGE_LOG_TEST": "ERROR", + "OBJECT_MANAGER": "ERROR", + "RECOVERY_MANAGER": "INFO", + "REPLICATION_TIMEOUT": "WARNING", + "SESSION_TIMEOUT": "WARNING", + "SYNC_SERVICE": "ERROR", + "SYSTEM": "UNKNOWN", + "SYSTEM_SERVICE": "INFO", + "TIME_SERIES": "ERROR", + "TRANSACTION_MANAGER": "ERROR", + "TRANSACTION_SERVICE": "ERROR", + "TRANSACTION_TIMEOUT": "WARNING" + } +} +``` + +## 監査ログ機能【EE限定】 + +### 監査ログの目的 + +データベース監査を実施するには、従来のイベントログでは以下の理由により不十分となります。 + + - イベントログは操作対象となった接続先のIPアドレスや、操作対象のデータベース/テーブルが何かなどが表示されません。 + - フォーマットが統一されておらず、可読性が低いことから、機械的な分析を行うことも困難となります。 + + - 監査ログファイルの生成個数に上限があるため、大量のイベントログが記録される場合、監査漏れが発生する可能性があります。 + +GridDBは「監査ログ機能」を有効とすることで上記問題に対応可能となり、主に以下の観点からデータベース監査を実施することができます。 + +- 不正な接続検知および対策 + - 特定不明な接続要求や、一定期間に連続で発生した接続要求があった場合、監査ログを分析して、接続要求先のIPアドレスなどの情報を特定します。この情報を用いて速やかにアクセス制限など適切な処置を行うことができます。 + + - 不正な操作検知および対策 + - 監査対象のデータに対して不正な操作が実施された場合に、監査ログを分析して該当操作を行ったユーザおよびその接続情報や操作内容を 特定し、影響範囲などを確認します。不正操作により異常が発生した場合は、そのエラーログも併せて特定します。 + +- データ改竄検知および対策 + - 監査対象のデータに対して不正なアクセスおよびデータ改ざんなど不正な操作が行われていないことを、監査ログを用いて証明します。 + +
+ 監査ログを用いたデータベース監査 +
監査ログを用いたデータベース監査
+
+ +### 機能概要 + +監査ログは、データベースに対するアクセス、操作、エラーに対する履歴を記録するログです。具体的には以下の3つのイベントが監査ログとして記録されます。 + + - アクセスログ + - 接続、切断、ログイン認証の履歴を記録したもの + - 操作ログ + - クライアント要求に対する操作履歴を記録したもの + - エラーログ + - クライアント要求に対する操作で発生したエラー履歴を記録したもの + +監査ログはノード定義ファイルで監査ログ機能を有効(auditLogs=true)とした場合に有効となります。この際、監査ログファイルの出力先となるディレクトリパス(auditLogsPath)を指定することが可能で、以下のファイル名で監査ログファイルが生成されます。 + +``` +gs_audit-%Y%m%d-n.log (nは同一日時における生成順序) +``` + +監査ログはイベントログと異なり、ノード定義ファイルで監査ログを有効にしない限り、監査ログファイルおよびディレクトリは生成されません。 + +監査ログファイルは以下のタイミングで切り替わります。ファイルサイズの閾値はノード定義ファイル(auditMessageLimitSize)で変更可能となります。 + +- 日付が変わって一番最初にログが書かれるとき +- ノードを再起動したとき +- 1ファイルサイズが既定値(デフォルト10MB)を超えたとき + +監査ログの出力形式は以下のように、各監査項目が空白を区切り文字としたCSV形式となります。 + +``` +(日付時刻) (ホスト名) (スレッド番号) (出力レベル) (カテゴリ) [(エラー・トレース番号):(エラー・トレース番号名)] (ユーザ名) (管理者権限) (データベース名) (アプリケーション名) (接続元IPアドレス:接続元ポート番号) (接続先IPアドレス:接続先ポート番号) (操作クラス) (要求種別) (操作内容) (操作対象) (操作識別子) (操作情報詳細) +``` + +以下に監査ログの出力サンプルを示します。なお、以降のサンプルは表示を見やすくするため途中に適宜改行が含まれています。 + +``` example + +2023-03-24T17:26:26.359+09:00 TDSL1234 14268 ERROR AUDIT_DDL +[280003:SQL_DDL_TABLE_ALREADY_EXISTS] user1 admin db1 (null) +192.0.2.1:63482 203.0.113.1:20001 SQL CREATE_TABLE +"create table table1(a integer);" +e71c8b74-8752-4726-987d-ebd0e8da8d4:1 +"'tableName'=['table1'] +Execute SQL failed (reason=CREATE TABLE failed +(reason=Specified create table 'table1' already exists) +on executing statement..." +``` + +監査ログ機能を用いる場合は、一般的に監査ログの出力数に比例して性能的なオーバヘッド(ファイル書き込みコスト)が発生します。よって、運用ごとに監査対象となる操作を選定することを検討してください。 + +監査対象となる操作は、操作内容に基づいて以下の「操作カテゴリ」にカテゴライズされます。出力レベルの設定はイベントログと同様になりますが、監査ログの場合は以下のような意味合いとなります。 + +- INFO : 操作ログ、エラーログを監査ログとして記録します。(※1) +- ERROR : エラーログを監査ログとして記録します。 +- CRITICAL: エラーログも含め、監査ログは記録されません。(※2) + + (※1 AUDIT_CONNECTの場合のみアクセスログとなる) + (※2 監査ログとしてCRITICALレベルで出力される項目はありません。) + +| 操作カテゴリ | パラメータの意味と制限値 | デフォルト出力レベル | +|-------------|------------------------|--------------------| +| AUDIT_CONNECT | 接続(接続、切断、認証)に関する監査ログの出力レベル | INFO | +| AUDIT_SQL_READ | SQL(SELECT)に関する監査ログの出力レベル | CRITICAL | +| AUDIT_SQL_WRITE | SQL(DML)に関する監査ログの出力レベル | CRITICAL | +| AUDIT_DDL | SQL(DDL)に関する監査ログの出力レベル | CRITICAL | +| AUDIT_DCL | SQL(DCL)に関する監査ログの出力レベル | CRITICAL | +| AUDIT_NOSQL_READ | NoSQL(参照系)に関する監査ログの出力レベル | CRITICAL | +| AUDIT_NOSQL_WRITE | NoSQL(更新系)に関する監査ログの出力レベル | CRITICAL | +| AUDIT_SYSTEM | 運用コマンド(STAT以外)に関する監査ログの出力レベル | CRITICAL | +| AUDIT_STAT | 運用コマンド(STAT)に関する監査ログの出力レベル | CRITICAL | + +デフォルトの出力レベルはアクセスログ(AUDIT_CONNECT)のみINFOでそれ以外はCRITICAL(監査対象外)となっています。よって、ノード定義ファイルで監査ログを有効とした場合は、アクセスログのみ記録されます。運用開始前に監査目的に応じて適切に監査対象とする操作カテゴリを設定する必要があります。 + +データベース管理者は、監査対象となる操作カテゴリをノード定義ファイルもしくはオンラインで設定することもできます。設定状況はイベントログと同様にgs_logconfコマンドで確認できますがこの場合は永続化されませんので、再起動時に元の操作カテゴリに戻ります。よって、できる限り運用開始前に監査カテゴリを決定しておくことが推奨されます。 + +ノード定義ファイルで設定する監査ログ関連の設定項目は以下となります。 + +| 監査カテゴリ| 初期値 |  パラメータの意味と制限値  | 変更 | +|------------|-------|------------------------|------| +| /trace/auditLogs | false | 監査ログを設定する場合はtrueを設定します。 | 起動 | +| /trace/auditLogsPath | "" | 監査ログファイルの配置先ディレクトリ(ディレクトリ名=audit)です。
起動時に該当パスにディレクトリ(audit)が存在なければ設定に基づき監査用ディレクトリおよび監査ログファイルが生成されます。
auditLogs=true、かつ、この項目未設定の場合はGridDBホームディレクトリに生成されます。| 起動 | +| /trace/auditFileLimit | 10MB | 同一日時における1つの監査ログファイルのサイズ上限値です。
指定されたサイズを超えると自動的に新たな監査ログファイルが生成され切り替わります。
その際にファイル名の連番部分が+1ととなります。 | 起動 | +| /trace/auditMessageLimit | 1024 | 1つの監査ログレコードの文字列サイズ上限値です。
指定されたサイズを超えた場合、指定サイズ以降をカットした情報を監査ログとして記録されます。 | 起動 | + +### 監査ログの実施手順 + +データベース監査を実施する事前準備として、監査対象となる操作カテゴリおよび出力レベルを決定します。出力レベルの指定は監査ログと同様の指定になりますが、監査ログ対象指定から外す場合はCRITICAL指定となる点にご注意ください。 + +- アクセスログの取得:AUDIT_CONNECT=INFO +- 操作ログの取得:該当操作カテゴリ=INFO +- エラーログの取得:該当操作カテゴリ=ERROR +- エラーログも取得しない:該当操作カテゴリ=CRITICAL + +監査対象カテゴリの典型的な設定方針を幾つか示します。このうち、「アクセスログ」は監査上重要項目になりますので、監査ログ機能を有効とした場合、デフォルトでアクセスログが監査対象となります。操作ログ、エラーログに関しては監査案件ごとに必要となる場合にその記述をノード定義ファイルに加えます。 + +- アクセスログを記録したい。 + - 監査ログ(auditLogs=true)を有効にするとデフォルトでアクセスログが出力されます。 + +- データベースに対するアクセスログのみを記録し、それ以外はエラーログのみ記録したい。 + - AUDIT_CONNECTをINFOに設定し、それ以外をERRORに設定します。 + +- SQL関連の操作ログを記録し、それ以外はエラーログのみ記録したい。 + - AUDIT_SQL_READ, AUDIT_SQL_WRITE, AUDIT_DDL, AUDIT_DCLをINFOに設定し、それ以外をERRORに設定します。 + +- 更新系の操作ログを記録して、参照系の操作ログは記録しない。ただし、エラーログは全て記録したい。 + - AUDIT_SQL_WRITE, AUDIT_NOSQL_WRITEをINFOに設定し、それ以外をERRORに設定します。 + - ERRORに設定したカテゴリは操作ログは記録されず、エラーログのみ記録されます。 + +- NoSQL系操作は監査対象から外したい + - AUDIT_NOSQL_READ, AUDIT_NOSQL_WRITEをCRITICALに設定します。この場合、操作ログだけでなくエラーが発生しても監査ログに出力は残りません。 + +- 全ての操作を監査対象として記録したい。 + - AUDIT_CONNECT, AUDIT_SQL_READ, AUDIT_SQL_WRITE, AUDIT_DDL,AUDIT_DCL,AUDIT_NOSQL_READ, AUDIT_NOSQL_WRITE,AUDIT_STAT,AUDIT_SYSTEMを全てINFOに設定します。 + + 監査ログを用いた場合のシステム構成を以下に示します。 + +
+ 監査ログを用いたデータベース監査 +
監査ログを用いたシステム構成
+
+ + +監査ログはクライアントと直接接続があったノードに対して出力されます。つまり、監査ログはノード単位で記録されるので、以下の対応が必要となります。 + +- 事前に全ノードの監査ログに関する設定項目は全て揃えておきます。 +- 監査対象の操作カテゴリをオンライン変更する場合は全てのノードに適用します。また、オンライン変更する場合は永続化されませんので、次に再起動するタイミングでノード定義ファイルを更新します。 +- 監査ログ分析を行う場合は、各ノードの監査ログ情報を収集し、横断して分析します。 + +### 監査ログを用いた分析 + +監査ログの出力項目は、アクセスログ、操作ログ、イベントログともに出力フォーマットが共通となります。監査ログ出力項目の詳細は以下になります。必須項目以外で、対応する項目が無い場合は(null)の文字列が出力されます。 + +| 監査項目| 内容 |サンプル|データ型|必須項目| +|----------------|---------------------------------|----------------------------------|-----|----| +| 日時 | 形式は:yyyy-mm-ddThh:mm:ss.ms+tz |2023-03-24T17:26:26.359+09:00| 時刻型 | 〇 | +| ホスト名 | 呼出し元ホスト名| tdsl1234 | 文字列型 | 〇 | +| スレッド番号 | システムから取得したスレッドID。 | 2345 | 数値型 | 〇| +| 出力レベル | INFO/ERROR/CRITICALのいずれか。 | INFO | 文字列型 | 〇 | +| 操作カテゴリ | 監査対象となる操作カテゴリ。 | AUDIT_CONNECT | 文字列型 | 〇 | +| エラー/トレース情報 | [エラー/トレースコード番号:エラー/トレースコード名] | [280003:SQL_DDL_TABLE_ALREADY_EXISTS] | 文字列型 | 〇 | +| ユーザ名 | ログインユーザ名。 | user1 | 文字列型 | × | +| 管理者権限 | ADMIN/USERのいずれか。| ADMIN | 文字列型 | × | +| データベース名 | 指定なしだとPUBLIC、指定した場合はそのデータベース名。 | db1 | 文字列型 | × | +| アプリケーション名 | クライアントで設定した場合のみ。 | app1 | 文字列型 | × | +| 接続元IPアドレス | 接続元(クライアント側)のIPアドレスとポート番号。
IPアドレスはIPv4形式の文字列型、ポート番号は数値型で、":"で分割 | 192.0.2.1:63482 | 文字列型 | × | +| 接続先IPアドレス | 接続先(サーバ側)のIPアドレスとポート番号。
IPアドレスはIPv4形式の文字列型、ポート番号は数値型で、":"で分割 | 203.0.113.1:20001 | 文字列型 | × | +| 操作クラス | カテゴリ "AUDIT_XXX" から、"AUDIT_" を除いた文字列と同じ | CONNECT | 文字列型 | × | +| 要求種別 | SQL/NOSQL/SYSTEMのいずれか | SQL | 文字列型 | × | +| 操作内容 | 要求種別がSQLの場合はSELECT/DML/DDL/DCLのいずれか、NoSQLの場合はAPIに対応するコマンド名、管理コマンドの場合はコマンド名 | SELECT | 文字列型 | × | +| 操作対象 | 要求種別がSQLの場合はSQL名、NoSQLの場合は対象コンテナもしくは索引名、管理コマンドの場合はコマンド名 | SELECT * from table1 | 文字列型 | × | +| 操作識別子 | ステートメント識別子(内部情報)。
32文字から構成されるUUIDを8/4/4/4/12文字単位"-"で分割し、末尾に":"と任意の識別数字を加えたもの | 6a4ccd7a-818a-45e8-88c7-1ebda78d1959:1 | 文字列型 | × | +| 操作情報詳細 |監査ログの詳細情報。
エラー時にはメッセージ。
必要に応じて以下のキーバリュー形式で情報が付与される。
'キー名' = ['バリュー値1', 'バリュー値2',...] | "'tableName'=['table1'] Execute SQL failed (reason=CREATE TABLE failed ..." | × | + +SQLに対する操作対象のテーブル名は解析内容によっては対象が複数個数になることがあります。これらは、操作情報詳細'tableName'=['テーブル名1', 'テーブル名2'...]の項目が追加されます。 + +以下に幾つかサンプルを示します。 + +a) アクセスログの取得 + +AUDIT_CONNECT=INFOとして、JDBCを用いて以下のような接続を行います。 + +``` +Connection con = DriverManager.getConnection(url, user, password); +``` + +この場合以下の監査ログが出力されます。ユーザ名(user1)、IPアドレス(192.0.2.1:63482)、対象のデータベース(db1)などの情報が記録されていることが分かります。 + +``` +023-03-27T17:16:13.507+09:00 TDSL1234 1848 INFO AUDIT_CONNECT +[10917:TXN_AUDIT_CALLED] +user1 user db1 app1 +192.0.2.1:63482 203.0.113.1:50001 +SQL CONNECT +"" 0000-00-00-00-000000:0 "" +``` + +コネクションをクローズ、もしくは切断すると、以下の監査ログが出力されます。 + +``` +2023-03-24T17:46:15.723+09:00 TDSL1234 1848 INFO AUDIT_CONNECT +[10917:TXN_AUDIT_CALLED] +user1 user db1 app1 +192.0.2.1:63482 203.0.113.1:50001 +SQL DISCONNECT +"" 0000-00-00-00-000000:0 "" +``` + +b) 操作ログの取得 + +AUDIT_SQL_READ=INFOとして、JDBCを用いて以下のSQLを実行します。 + +``` example +SELECT * FROM table1 A, table2 B WHERE A.col1 = B.col2 +``` + +この場合、以下の監査ログが記録されます。アクセスログと同様の接続情報に加え、実行したSQLのSQL文字列(SELECT * FROM table1 A, ...)、SQL種別(SELECT), 操作識別子(282d7b10-...)およびアクセス対象となるテーブル名のリスト(table1, table2)が監査ログとして記録されますので、それら操作ログを分析します。 + +``` +2023-03-24T17:06:53.848+09:00 TDSL1234 16812 INFO AUDIT_SQL_READ [200909:SQL_EXECUTION_INFO] +user1 user db1 app1 +192.0.2.1:63482 203.0.113.1:50001 +SQL SELECT "SELECT * FROM table1 A, table2 B WHERE A.col1 = B.col2" +282d7b10-f7f0-4dd8-bef-25eb30e5c2f4:5 +"'tableName'=['table1','table2']" +``` + +c) エラーログの解析 + +AUDIT_SQL_READ=INFOもしくはERRORとして、JDBCを用いて以下のSQLを実行します。table1にnotFoundColumnカラムがないためエラーとなるクエリです。 + +``` +SELECT notFoundColumn FROM table1 +``` + +この場合、以下のエラーログが出力されます。 +``` +2023-03-24T17:24:23.278+09:00 TDSL1234 25464 ERROR AUDIT_SQL_READ +[240008:SQL_COMPILE_COLUMN_NOT_FOUND] +user1 user db1 app1 +192.0.2.1:63482 203.0.113.1:50001 SQL +SELECT "SELECT notFoundColumn FROM table1" +282d7b10-f7f0-4dd8-bef-25eb30e5c2f4:6 +"'tableName'=['table1'] +Column not found (name=notFoundColumn) on executing statement..." +``` + +d) 対象カテゴリ以外の解析 + +AUDIT_SQL_READ=CRITICALとして同様に以下を実施します。 + +``` +SELECT notFoundColumn FROM table1 +``` + +この場合、c)と違ってエラー発生時も監査ログに出力は記録されません。 + +``` +``` + +## サイト間データベースレプリケーション【EE限定】 + +### 目的 + +サイト間データベースレプリケーション機能を利用することで、障害発生時のディザスタリカバリや、複数サイトを横断したリードレプリカの作成が可能です。この機能には、以下の2つの構成方式があります。稼働系クラスタを「プライマリ」、待機系クラスタを「スタンバイ」と呼びます。 + +**1. コールドスタンバイ方式** + +コールドスタンバイ方式では、スタンバイ側のサーバ群(クラスタ)は通常非稼働状態で運用されます。障害が発生した際に、スタンバイ側がレプリケーションデータを読み込み、その後プライマリとして切り替わります。この方式は、障害復旧時間に余裕があるディザスタリカバリに適しています。 + +**2. ホットスタンバイ方式** + +ホットスタンバイ方式では、スタンバイ側のデータベースが常に稼働状態で運用されます。スタンバイ側はプライマリからのレプリケーションデータを継続的に受け取り、最新の状態を維持します。このため、コールドスタンバイ方式と比較して、障害復旧時間を大幅に短縮できます。 + +さらに、GridDBではスタンバイ側をリードレプリカとして運用することも可能です。本章では、このホットスタンバイ方式を用いた運用方法について詳しく説明します。 + +### 機能概要 + +サイト間データベースレプリケーションにおけるホットスタンバイ方式には、以下の2つの方法があります。どちらを選択するかは、障害復旧時間、復旧時点、レプリケーションラグ、運用コストなどの要件に基づいて決定します。 + +**1. ファイルベースレプリケーション** + +プライマリサーバで生成されたトランザクションログファイルをスタンバイサーバに転送し、それを適用することでレプリケーションを実現する方式です。この方式では、トランザクションログファイルの生成、転送、適用はサーバ間で自動的に行われません。代わりに、サーバが提供するレプリケーション機能を活用して手動で実施します。 + +- **特徴**: + - 転送方式や転送単位を柔軟に調整可能です。 + - トランザクションログファイル単位でのレプリケーションとなるため、プライマリとスタンバイ間のレプリケーションラグが若干大きくなります。 + - トランザクションログファイルをアーカイブとして保持することで、レプリケーション障害期間が長期化しても復旧が可能です。 +- **注意点**: + - レプリケーション手順は自動化されていないため、データベース管理者による運用管理が必要となり、一定の運用コストが発生します。 + +**2. メモリベースレプリケーション** + +プライマリサーバとスタンバイサーバ間で、トランザクションログをメモリベースで直接レプリケーションする方式です。この方式では、トランザクションログの生成、転送、適用がサーバ間で自動的に行われます。 + +- **特徴**: + - レプリケーション時に障害が発生しても、プライマリサーバのトランザクションログを利用して速やかに復旧可能です。 + - レプリケーション手順は自動化されているため運用負荷が低く、プライマリとスタンバイ間のレプリケーションラグが小さいです。 +- **注意点**: + - プライマリサーバのトランザクションログ保持期間を適切に設定する必要があります。これはレプリケーション失敗時の同期処理に用いられます。 + - 本機能はバージョン5.8以降で利用可能です。 + +どちらの方式も、それぞれの特性を理解した上で、システム要件に最適な方法を選択してください。 + +### ファイルベースレプリケーション + +ファイルベースレプリケーションでは、トランザクションログファイルを使用してデータのレプリケーションを行います。この方式に必要なサーバ機能は以下の通りです。それぞれの詳細については、次節で説明します。 + +a) ベースDB作成と自動アーカイブ機能 +ベースラインとなるデータベースファイル(ベースDB)を作成し、その後に生成されたトランザクションログを指定フォルダに自動的に複製する機能です。この機能により、レプリケーションに必要なデータを効率的に管理できます。 + +b) スタンバイモード機能 +クラスタをリードオンリー(参照専用)として稼働させる機能です。このモードでは、クライアントからの更新要求はエラーとなり、データの整合性を保ちながらスタンバイ環境を維持できます。 + +c) トランザクションログ適用機能 +指定されたトランザクションログをサーバに適用する機能です。この機能を使用することで、スタンバイサーバに対してプライマリサーバの更新内容を反映させることができます。 + +#### ベースライン生成と自動アーカイブ機能 + +自動アーカイブ機能は、以下の特徴を持つ機能です: + +- **ベースライン生成**: 指定された時点のデータベースファイル(datファイルとcpファイル)をベースDBとして生成します。 +- **トランザクションログの自動出力**: ベースライン生成後に作成されたトランザクションログを指定フォルダに自動的に保存します。 +- **コマンドによる操作**: `gs_autoarchive` コマンドを実行することでアーカイブ処理を開始できます。アーカイブにはベースDBとトランザクションログが含まれます。 +- **追加情報の出力(オプション)**: + - 出力されたトランザクションログファイルが保持するLSNの範囲情報。 + - ノード起動時のLSNや、オーナー・バックアップの変更履歴とその時点のLSN情報。 + +**設定パラメータ** + +以下は、自動アーカイブ機能に関連する設定パラメータです: + +| パラメータ名 | データ型 | デフォルト値 | 説明 | +|-------------------------------------|----------|-------------|------| +| `/dataStore/enableAutoArchive` | `bool` | `false` | 自動アーカイブ機能を有効にするかどうかを指定します。 | +| `/dataStore/autoArchiveName` | `string` | `""` | 自動アーカイブの出力先フォルダ名を指定します。 | +| `/dataStore/enableAutoArchiveOutputInfo` | `bool` | `true` | 自動アーカイブ時に追加情報を出力するかどうかを指定します。 | +| `/dataStore/enableAutoArchiveOutputInfoPath` | `string` | `cluster` | 追加情報の出力先フォルダ名を指定します。 | + +**使用例** + +自動アーカイブ機能を有効にするには、以下の手順を実行してください: + +1. ノード定義ファイルで以下の設定を行います: + ```json + { + "dataStore": { + "enableAutoArchive": true, + "autoArchiveName": "arch", + "enableAutoArchiveOutputInfo": true, + "enableAutoArchiveOutputInfoPath": "cluster" + } + } + ``` + +2. 設定後、`gs_autoarchive` コマンドを実行してアーカイブを開始します: + ```bash + $ gs_autoarchive -u admin/admin --start + ``` + +3. アーカイブデータは、指定したフォルダ(例: `/var/lib/gridstore/backup/arch`)に保存されます。 + +**注意事項** + +- 自動アーカイブ機能を有効にすると、`gs_backup` を使用した自動ログバックアップは実行できません。ただし、それ以外のバックアップ操作は可能です。 +- 自動アーカイブ機能を有効にした状態でバックアップデータを復元して起動する場合、アーカイブに出力されたログファイル名が重複してエラーが発生する可能性があります。この場合、既存のアーカイブフォルダを退避させた後に起動し、再度 `gs_autoarchive` を実行してください。 + +**自動アーカイブ機能の有効化** + +自動アーカイブ機能を有効にするには、以下の手順でノード定義ファイルを設定します: + +1. `/dataStore/enableAutoArchive` を `true` に設定します。 +2. `/dataStore/autoArchiveName` にアーカイブ名(保存先ディレクトリ名)を指定します。 + +設定後、`gs_autoarchive` コマンドを実行することで、自動アーカイブを開始できます。 + +```bash +# 自動アーカイブが保存されるディレクトリ(バックアップディレクトリ)を確認 +$ cat /var/lib/gridstore/conf/gs_node.json +{ + "dataStore": { + "dbPath": "/var/lib/gridstore/data", + "transactionLogPath": "/var/lib/gridstore/txnlog", + "backupPath": "/var/lib/gridstore/backup", + "storeMemoryLimit": "1024MB", + "concurrency": 4, + "logWriteMode": 1, + "persistencyMode": "NORMAL", + "autoArchiveName": "arch" + } + ... +} + +# 自動アーカイブの開始 +$ gs_autoarchive -u admin/admin --start +``` + +**自動アーカイブ有効時のファイル構成** + +自動アーカイブを有効にすると、以下のようなファイル構成になります: + +``` +/var/lib/gridstore + └── backup # バックアップ/アーカイブ基点ディレクトリ (/dataStore/backupPath) + ├── arch # アーカイブ名 (/dataStore/autoArchiveName) + │ ├── gs_backup_info.json # アーカイブ情報ファイル + │ ├── gs_backup_info_digest.json # アーカイブダイジェスト情報ファイル + │ ├── gs_lsn_info.json # アーカイブLSN情報ファイル + │ ├── gs_auto_archive_command_param.json # アーカイブ実行コマンドパラメータファイル + │ ├── data # データフォルダ (/dataStore/dbPath) + │ │ ├── 0 # パーティション番号0 + │ │ │ ├── 0_part_0.dat # データファイルアーカイブ + │ │ │ ├── 0_4.cplog # チェックポイントログアーカイブ + │ │ │ └── ... + │ │ ├── 1 # パーティション番号1 + │ │ │ └── ... + │ │ └── ... + │ ├── txnlog # トランザクションログフォルダ (/dataStore/transactionLogPath) + │ │ ├── 0 # パーティション番号0 + │ │ │ ├── 0_5.xlog # トランザクションログアーカイブ + │ │ │ ├── 0_6.xlog + │ │ │ └── ... + │ │ ├── 1 # パーティション番号1 + │ │ │ └── ... + │ │ └── ... + │ ├── cluster # クラスタメタ情報ディレクトリ (/dataStore/autoArchiveOutputClusterInfoPath) + │ │ ├── RECOVERY_0_1_100.info # クラスタリカバリ情報ファイル + │ │ ├── ROLE_0_1_100_0_OWNER.info # クラスタロール情報ファイル + │ │ ├── CP_0_1_100_200.info # クラスタチェックポイント情報ファイル + │ │ └── ... + │ └── ... + ├── backup1 # 別のバックアップ名 + │ └── ... + └── backup2 # 別のバックアップ名 + └── ... +``` + +**注意事項** + +- 自動アーカイブ機能を有効にすると、`gs_backup` を使用した自動ログバックアップは実行できません。ただし、それ以外のバックアップ操作は可能です。 +- 自動アーカイブ機能を有効にした状態でバックアップデータを復元して起動する場合、アーカイブに出力されたログファイル名が重複してエラーが発生する可能性があります。この場合、既存のアーカイブフォルダを退避させた後に起動し、再度 `gs_autoarchive` を実行してください。 + +#### スタンバイモード機能 + +スタンバイモード機能は、クラスタをリードオンリー(参照専用)として稼働させるための機能です。このモードでは、クライアントからの更新要求はすべてエラーとなります。 + +**主な特徴:** +- クラスタをリードオンリーとして稼働。 +- クライアントからの更新要求はエラーとして処理。 +- `gs_standby` コマンドを使用してオンラインでモード変更が可能。 +- モード変更時には、各ノードがクラスタから離脱している必要あり。 +- クラスタ構成を行う全ノードでスタンバイモード設定を一致させる必要あり。不一致の場合、クラスタ構成は失敗します。 + +**設定パラメータ:** + +| パラメータ | データ型 | デフォルト値 | 説明 | +|-----------------------------|----------|---------------|---------------------------------------| +| `/cluster/enableStandbyMode` | `bool` | `false` | スタンバイモード機能を有効にするかどうかを指定します。 | + +**スタンバイモードの有効化:** +スタンバイモード機能を有効にするには、ノード定義ファイルで以下の設定を行います。 +```json +/cluster/enableStandbyMode=true +``` + +この設定はスタンバイモード機能を有効にするだけであり、実際のモード変更は運用コマンド `gs_standby` を使用して行います。デフォルトでは無効(`false`)となっています。 + +**スタンバイモードの設定手順:** + +以下は、`gs_standby` コマンドを使用した一連の操作例です。 + +```bash +# スタンバイモードを有効化 +$ gs_standby -u admin/admin --true + +# 現在のスタンバイモードの確認 +$ gs_standby -u admin/admin +{ + "standby": true # スタンバイモードが有効 +} + +# 全ノードにスタンバイモードを設定 + +# クラスタ構成 +$ gs_joincluster -u admin/admin -c cluster1 -n 5 + +# アプリケーションを起動し、参照専用アクセスであることを確認 + +# 設定変更のためクラスタを一時停止 +$ gs_stopcluster -u admin/admin + +# スタンバイモードを無効化 +$ gs_standby -u admin/admin --false + +# スタンバイモードの確認 +$ gs_standby -u admin/admin +{ + "standby": false # スタンバイモードが無効 +} + +# 全ノードに設定を適用 + +# クラスタを再構成 +$ gs_joincluster -u admin/admin -c cluster1 -n 5 + +# アプリケーションを起動し、参照および更新アクセスが可能であることを確認 +``` + +**注意事項:** +- `gs_standby` コマンドを実行すると、ノード設定ファイルと同じディレクトリに `gs_standby.json` ファイルが作成されます。このファイルはスタンバイモードの管理情報として使用されるため、削除しないでください。 +- スタンバイモードの設定は、クラスタ構成を行う全ノードで一致させる必要があります。不一致の場合、クラスタ構成は失敗します。 +- クラスタ構成時には、スタンバイモードの設定状態を確認し、適切に設定を行ってください。 + +#### トランザクションログ適用機能 +トランザクションログ適用機能は、指定されたトランザクションログファイルを待機系サーバに適用し、プライマリサーバの更新内容をスタンバイサーバに反映させるための機能です。 + +**主な特徴:** +- サーバが稼働中でも、トランザクションログファイルを指定して適用が可能です。 +- 適用を行うには、サーバがスタンバイモード(`true`)である必要があります。 +- 適用は `gs_redo` コマンドを使用して実行します。適用はクラスタパーティションのオーナーノードでのみ可能です。 +- 適用されたデータは、オーナーノードからバックアップノードに自動的にレプリケーションされます。 +- トランザクションログの適用は、クラスタパーティション単位で指定できます。 +- 適用するログの順序が正しくない場合、エラーが発生します。 +- ログ適用はサーバ内部で分割実行され、デフォルトでは2MB単位で処理されます。 +- `gs_redo` コマンドは非同期で実行されるため、進捗状況や結果を別途確認する必要があります。 + +**設定パラメータ:** + +| パラメータ | データ型 | デフォルト値 | 説明 | +|-----------------------------|----------|---------------|---------------------------------------| +| `/sync/redoLogErrorKeepInterval` | `int` (秒) | 600秒 | トランザクションログ適用エラーが表示される保持期間を指定します。 | +| `/sync/redoLogMaxMessageSize` | `int` (バイト) | 2097152 (2MB) | トランザクションログ適用の分割実行時の読み込みサイズを指定します。 | + +**トランザクションログ適用手順:** + +1. **ログ適用の依頼** + - `gs_redo` コマンドを使用して、適用対象のログを指定します。 + - コマンド実行時にリクエストID (`uuid`, `requestId`) が返されます。 + + ```bash + $ gs_redo -u admin/admin --redo --partitionId 0 --logFilePath /var/lib/gridstore --logFileName=0_1.xlog + { + "requestId": 1, + "uuid": "3238cc45-a265-4825-b45f-30e9ce8dd3d2" + } + ``` + +2. **適用状況の確認** + - `gs_redo` コマンドの `--show` オプションを使用して、進捗状況を確認します。 + - ステータス (`status`) は以下のいずれかです: + - `WAIT`: REDO要求は受理されたが、まだ実行されていない。 + - `RUNNING`: 現在実行中。 + - `FAIL`: 実行結果がエラー。 + + ```bash + $ gs_redo -u admin/admin --show --uuid 3238cc45-a265-4825-b45f-30e9ce8dd3d2 --partitionId 0 --requestId 1 + { + "backupErrorList": [], + "counter": 0, + "logFileDir": "/var/lib/gridstore", + "logFileName": "0_1.xlog", + "partitionId": 0, + "requestId": 1, + "startTime": "2024-03-08T15:22:04.939+09:00", + "status": "RUNNING", + "uuid": "3238cc45-a265-4825-b45f-30e9ce8dd3d2" + } + ``` + +3. **エラー発生時の対応** + - ステータスが `FAIL` の場合、エラー内容は `/sync/redoLogErrorKeepInterval` で指定された期間保持されます。 + - エラー内容を確認し、原因を修正した後、再度ログ適用を実行してください。 + +**注意事項:** +- 適用するログの順序が正しくない場合、エラーが発生します。 +- 適用状況の確認は、リクエストIDをキーとして行います。 +- 適用が成功すると、バックアップノードへのレプリケーションが自動的に行われます。 + +以下の図は、トランザクションログ適用の流れを示しています。 + +
+トランザクションログ適用 +
トランザクションログ適用の流れ
+
+ +#### 運用手順 + +以下の4つの運用について順次説明します。 + +1. **スタンバイ準備** +2. **定常運用** +3. **フェイルオーバ** +4. **スイッチオーバ** + +以下では、3台構成の例を用いて説明します。コマンド実行例では、`$` をプロンプトとして使用し、プライマリ側の操作を `[primary*]`、スタンバイ側の操作を `[standby*]` として表記します。 + +
+サイト間データベースレプリケーション +
サイト間データベースレプリケーション
+
+ +**ノード構成 (3台構成)** + +| **役割** | **ホスト名** | **IPアドレス** | +|----------------|--------------|-------------------| +| プライマリ | `primary0` | 192.168.10.11 | +| | `primary1` | 192.168.10.12 | +| | `primary2` | 192.168.10.13 | +| スタンバイ | `standby0` | 192.168.11.11 | +| | `standby1` | 192.168.11.12 | +| | `standby2` | 192.168.11.13 | + +--- + +**ディレクトリ構成** + +***プライマリ側*** +``` +/primary/cluster/ + ├── conf + │ ├── gs_node.json + │ ├── (gs_stable_goal.json) # 自動生成 + │ └── (gs_standby.json) # 自動生成 + ├── data + │ ├── 0 + │ └── ... + ├── txnlog + │ ├── 0 + │ └── ... + └── backup + └── arch # スタンバイ時は不要 + ├── data + │ ├── 0 + │ └── ... + └── txnlog + ├── 0 + └── ... +``` + +***スタンバイ側*** +``` +/standby/cluster/ + ├── conf + │ ├── gs_node.json + │ ├── gs_stable_goal.json # 自動生成 + │ └── gs_standby.json # 自動生成 + ├── data + │ ├── 0 + │ └── ... + ├── txnlog + │ ├── 0 + │ └── ... + ├── backup # スタンバイ時は不要 + └── tmp_txnlog # 適用対象ログの一時保存フォルダ (運用側で事前に作成) + ├── 0 + └── ... +``` + +##### スタンバイ準備 + + +以下の手順でスタンバイ準備を行います。 + +| **順序** | **対象** | **手順** | +|----------|-------------------|------------------------| +| 1 | プライマリ
スタンバイ | ノード定義ファイルの設定 | +| 2 | プライマリ | ベースラインの生成 | +| 3 | スタンバイ | 転送先の決定 | +| 4 | プライマリ | ベースラインの転送 | +| 5 | スタンバイ | スタンバイクラスタの開始 | + +
+スタンバイ準備 +
スタンバイ準備
+
+ +**1. ノード定義ファイルの設定(プライマリ/スタンバイ)** + +運用開始前に、プライマリおよびスタンバイのノード定義ファイル(`gs_node.json`)に以下の設定を行います。この設定は、プライマリとスタンバイの役割が途中で変更される可能性を考慮したものです。 + +- **自動アーカイブ機能の有効化** + - `/dataStore/enableAutoArchive=true` + - `/dataStore/autoArchiveName="arch"` + +- **スタンバイモード設定機能の有効化** + - `/cluster/enableStandbyMode=true` + +- **クラスタパーティション配置固定化の有効化** + - `/cluster/enableStableGoal=true` + - `/cluster/initialGenerateStableGoal=true` + +以下は、設定例です: + +```json +{ + "dataStore": { + ... + "enableAutoArchive": true, + "autoArchiveName": "arch", + ... + }, + ... + "cluster": { + ... + "enableStandbyMode": true, + "enableStableGoal": true, + "initialGenerateStableGoal": true, + ... + } +} +``` + +これらの設定を適用することで、プライマリとスタンバイの切り替えや運用がスムーズに行えるようになります。 + +**2. ベースラインの生成(プライマリ)** + +プライマリのベースラインを生成します。この操作により、指定したフォルダ(例: `/primary/cluster/backup/arch`)にベースラインデータとトランザクションログが自動的に出力されます。 +以下のコマンドを実行してください: + +```bash +[primary*]$ gs_autoarchive -u admin/admin --start +``` + +実行が成功すると、指定フォルダにベースラインデータが保存され、以降のレプリケーションに使用可能な状態となります。 + +**3. 転送先の決定(スタンバイ)** + +プライマリで出力されるトランザクションログを、スタンバイ側のどのノードに転送・適用するかを決定します。これには、スタンバイクラスタのクラスタパーティション配置表が必要です。以下の手順で配置表を生成します。 + +1) スタンバイ側のノードを起動し、クラスタを構成します。 + + ```bash + [standby*]$ gs_startnode -u admin/admin + [standby*]$ gs_joincluster -c cls1 -n -3 -u admin/admin + ``` + + クラスタ構成が成功すると、各ノードのノード定義ファイルと同じディレクトリに `gs_stable_goal.json` というファイルが自動的に作成されます。このファイルは、クラスタパーティションのオーナーおよびバックアップ情報を記録しています。**このファイルは削除せずに残しておいてください。** + +2) クラスタを停止し、不要なデータを削除する + + `gs_stable_goal.json` ファイルの存在を確認した後、クラスタを停止します。クラスタ停止後、データファイルやトランザクションログなどの不要なファイルを削除します。 + + ```bash + [standby*]$ gs_stopcluster -u admin/admin + [standby*]$ gs_stopnode -u admin/admin + [standby*]$ rm -r -f /standby/cluster/data + [standby*]$ rm -r -f /standby/cluster/txnlog + ``` + +3) `gs_stable_goal.json` の内容を確認する + + `gs_stable_goal.json` ファイルには、各パーティションのオーナーおよびバックアップノードの情報が記録されています。以下はサンプル内容です。この例では、スタンバイ側のクラスタパーティション番号0のオーナーはアドレス `192.168.11.10`、バックアップはアドレス `192.168.11.11` となります。ポート番号はいずれも`10010`となります。 + + ```json + [ + { + "backup": [{"address": "192.168.11.11", "port": 10010}], + "owner": { + "address": "192.168.11.10", + "port": 10010 + }, + "pId": "0" + }, + ... + ] + ``` +この情報を基に、プライマリからスタンバイへのトランザクションログ転送先を決定します。 + +**4. ベースラインの転送\[プライマリ\]** + +スタンバイクラスタの起動に必要なベースラインデータを転送します。以下に、クラスタパーティション0に対する一連の処理の流れを示します。 + +
+ベースライン転送 +
ベースライン転送
+
+ +1) **プライマリ側のクラスタパーティション情報を取得** + + プライマリ側で `gs_partition` コマンドを実行し、各クラスタパーティションのオーナノード情報を取得します。 + + ```bash + [primary*]$ gs_partition -u admin/admin + [ + { + "backup": [{"address": "192.168.10.11", "port": 10010}], + "owner": { + "address": "192.168.10.10", + "port": 10010 + }, + "pId": "0" + }, + ... + ] + ``` + +2) スタンバイ側のクラスタパーティション情報を確認 + + スタンバイ側で、事前に生成した `gs_stable_goal.json` を確認し、各クラスタパーティションのオーナおよびバックアップノード情報を取得します。 + + ```json + # スタンバイ側の gs_stable_goal.json の内容 + [ + { + "backup": [{"address": "192.168.11.11", "port": 10010}], + "owner": { + "address": "192.168.11.10", + "port": 10010 + }, + "pId": "0" + }, + ... + ] + ``` + +3) 転送情報の整理 + + 上記の情報を基に、パーティション0に対する転送情報を以下のように整理します。 + + - **転送元** + - アドレス: `192.168.10.10` (primary0, オーナ) + - 対象ディレクトリ: `/primary/cluster/backup/arch/data/0`, `/primary/cluster/backup/arch/txnlog/0` + - **転送先** + - オーナノード: `192.168.11.10` (standby0) + - バックアップノード: `192.168.11.11` (standby1) + - 対象ディレクトリ: `/standby/cluster/data`, `/standby/cluster/txnlog` + +4) データの転送 + + 以下のコマンドを使用して、プライマリからスタンバイへデータを転送します。 + +```bash + # プライマリ -> スタンバイ (オーナノード) + [primary*]$ rsync -avz /primary/cluster/backup/arch/data/0 user@standby0:/standby/cluster/data + [primary*]$ rsync -avz /primary/cluster/backup/arch/txnlog/0 user@standby0:/standby/cluster/txnlog + + # プライマリ -> スタンバイ (バックアップノード) + [primary*]$ rsync -avz /primary/cluster/backup/arch/data/0 user@standby1:/standby/cluster/data + [primary*]$ rsync -avz /primary/cluster/backup/arch/txnlog/0 user@standby1:/standby/cluster/txnlog +``` + +5) 全クラスタパーティションへの適用 + + 上記の手順を、すべてのクラスタパーティションに対して繰り返し実施してください。 + + +**5. スタンバイクラスタの開始\[スタンバイ\]** + +以下の手順でスタンバイクラスタを開始します。 + +1) 各ノードの起動 + + 各ノードを起動します。 + + ```bash + [standby*]$ gs_startnode + ``` + +2) **スタンバイモードの設定** + + 各ノードをスタンバイモードに設定します。 + + ```bash + [standby*]$ gs_standby --true -u admin/admin + ``` + +3) **クラスタの稼働** + + クラスタを構成します。これ以降は、\[2. 定常運用\]の手順に従って運用を行います。 + + ```bash + [standby*]$ gs_joincluster -c cls1 -n -3 -u admin/admin + ``` + +**GridDBサービスを利用したクラスタ構成** + +スタンバイモードの設定はクラスタ離脱状態で行う必要があります。しかし、GridDBサービス経由で起動する場合、クラスタが自動構成されますのでクラスタ構成後、gs_stopclusterを行って実施した後にgs_joinclusterで再度クラスタを構成するか、以下の方法を実施してください。 + +1) **`gs_standby.json` ファイルの作成** + + 以下の内容で `gs_standby.json` ファイルを作成します。 + + ```json + {"standby": true} + ``` + +2) **ファイルの配置** + + 作成した `gs_standby.json` ファイルをノード定義ファイルと同じディレクトリに配置します。 + + ```bash + cp gs_standby.json /standby/cluster/conf + ``` + +3) **GridDBサービスの起動** + + GridDBサービスを利用してクラスタを構成します。 + + ```bash + [standby*]$ sudo systemctl start gridstore + ``` + +##### 定常運用 + +以下は、定常運用時の手順を示します。順序に従って操作を実行してください。 + +| **順序** | **対象** | **手順** | +|----------|-------------------|--------------------------------------------| +| 1 | プライマリ
スタンバイ | クラスタ構成の確認と更新 | +| 2 | プライマリ | トランザクションログの転送 | +| 3 | スタンバイ | トランザクションログの適用(REDO) | + +
+定常運用 +
定常運用の流れ
+
+ +**1. クラスタ構成の確認と転送情報の更新\[プライマリ/スタンバイ\]** + +各パーティションのプライマリ(転送元)のオーナーノードから、スタンバイ(転送先)のオーナーノードへトランザクションログファイルを転送します。この操作では、プライマリとスタンバイの両方で `gs_partition` コマンドを使用してクラスタパーティション配置表を確認します。通常、障害が発生していない限り、\[1. スタンバイ準備\]で転送したアドレスと同じになりますが、必ず現在の状態を確認してください。 + +1) プライマリのクラスタパーティション構成確認 + + 以下のコマンドを実行して、プライマリのクラスタパーティション構成を確認します。 + + ```bash + # プライマリのクラスタパーティション構成を確認 + [primary*]$ gs_partition -u admin/admin + ``` + + 実行結果の例: + + ```json + [ + { + "backup": [{"address": "192.168.10.11", "port": 10010}], + "owner": { + "address": "192.168.10.10", + "port": 10010 + }, + "pId": "0" + }, + ... + ] + ``` + +2) スタンバイのクラスタパーティション構成確認 + + 以下のコマンドを実行して、スタンバイのクラスタパーティション構成を確認します。 + + ```bash + # スタンバイのクラスタパーティション構成を確認 + [standby*]$ gs_partition -u admin/admin + [ + { + "backup": [{"address": "192.168.11.11", "port": 10010}], + "owner": { + "address": "192.168.11.10", + "port": 10010 + }, + "pId": "0" + }, + ... + ] + ``` + + **注意点** + + - プライマリとスタンバイのクラスタパーティション構成を比較し、転送元(プライマリのオーナーノード)と転送先(スタンバイのオーナーノード)が正しいことを確認してください。 + - 障害や構成変更が発生している場合、転送元・転送先のアドレスが変更されている可能性があります。その場合は、最新の構成に基づいて転送を行ってください。 + - 転送元・転送先のアドレスが一致している場合でも、必ず最新の状態を確認することを推奨します。 + +**2. トランザクションログの転送(プライマリ)** + +スタンバイへ未転送(差分)のトランザクションログを特定し、転送します。転送元および転送先のアドレスは、手順1で取得した情報を使用します。スタンバイ側でトランザクションログを適用する際には、`gs_redo` コマンドを使用します。そのため、適用先となる一時保存ディレクトリを事前に作成しておきます。 + +```bash +[standby*]$ mkdir -p /standby/cluster/tmp_txnlog/0 +[standby*]$ mkdir -p /standby/cluster/tmp_txnlog/1 +... +``` + +以下は、パーティション0に対する転送情報の例です。転送先ディレクトリが `/standby/cluster/txnlog` ではないことに注意してください。 + +- **転送元** + - アドレス: `192.168.10.10`(primary0, オーナーノード) + - 対象ディレクトリ: `/primary/cluster/backup/arch/txnlog/0` + - 対象ファイル: `0_1.xlog`(未転送のログファイル。運用側で管理してください) + +- **転送先** + - アドレス: `192.168.11.10`(standby0, オーナーノード) + - 対象ディレクトリ: `/standby/cluster/tmp_txnlog/0` + +転送先情報に従い、データを転送します。 + +```bash +[primary0]$ rsync -avz /primary/cluster/backup/arch/txnlog/0/0_1.xlog user@standby0:/standby/cluster/tmp_txnlog/0 +``` + +同様の手順をすべてのクラスタパーティションに対して実施します。以下は例です。 + +```bash +[primary0]$ rsync -avz /primary/cluster/backup/arch/txnlog/0/0_1.xlog user@standby0:/standby/cluster/tmp_txnlog/0 +[primary1]$ rsync -avz /primary/cluster/backup/arch/txnlog/1/1_1.xlog user@standby1:/standby/cluster/tmp_txnlog/1 +... +``` + +以下の図は、クラスタパーティション0に着目した一連の処理の流れを示しています。 + +
+定常運用時の手順 +
定常運用時の手順
+
+ +**3. トランザクションログの適用(REDO)(スタンバイ)** + +プライマリから送信されたトランザクションログがスタンバイに到着した後、`gs_redo` コマンドを使用してトランザクションログを適用します。コマンド実行時にリクエストが受理されると、対応するリクエストIDが発行されます。 + +```bash +[standby*]$ gs_redo -u admin/admin --redo --partitionId 0 --logFilePath /standby/cluster/tmp_txnlog/0 --logFileName 0_1.xlog +{"uuid":"3238cc45-a265-4825-b45f-30e9ce8dd3d2","requestId":1} +``` + +トランザクションログの適用は非同期で実行されるため、進捗状況を確認する必要があります。以下の例では、`status` が `RUNNING` であり、処理が継続中であることを示しています。 + +```bash +[standby*]$ gs_redo -u admin/admin --show --uuid 3238cc45-a265-4825-b45f-30e9ce8dd3d2 --partitionId 0 --requestId 1 +{ + "partitionId": 0, + "requestId": 1, + "uuid": "3238cc45-a265-4825-b45f-30e9ce8dd3d2", + "status": "RUNNING" + ... +} +``` + +一定時間経過後に再度確認します。結果が表示されない場合は、正常終了を意味します。この場合、次の未適用トランザクションログが存在する場合は、その適用を行います。 + +```bash +[standby*]$ gs_redo -u admin/admin --show --uuid 3238cc45-a265-4825-b45f-30e9ce8dd3d2 --partitionId 0 --requestId 1 +# 結果なしの場合は正常終了を意味する + +# 次の未適用トランザクションログの適用 +[standby*]$ gs_redo -u admin/admin --redo --partitionId 0 --logFilePath /standby/cluster/tmp_txnlog/0 --logFileName 0_2.xlog +{"uuid":"3238cc45-a265-4825-b45f-30e9ce8dd3d2","requestId":2} +... +``` + +エラーが発生した場合、`status` が `FAIL` となります。`errorCode` や `errorName` を確認し、原因を特定して修正した後、再実行してください。 + +```bash +[standby*]$ gs_redo -u admin/admin --show --uuid 3238cc45-a265-4825-b45f-30e9ce8dd3d2 --partitionId 0 --requestId 1 +{ + "partitionId": 0, + "requestId": 1, + "uuid": "3238cc45-a265-4825-b45f-30e9ce8dd3d2", + "status": "FAIL", + "errorCode": 20050, + "errorName": "REDO_INVALID_READ_LOG", + ... +} +``` + +トランザクションログの適用が成功すると、スタンバイクラスタ内のバックアップノードにも自動的にレプリケーションが行われます。 + +以上の手順(1~3)を定期的に実行することで、定常運用を維持できます。実行間隔は、データ更新量、ネットワーク性能、チェックポイント時間(ログ出力単位)を考慮して決定してください。 + +##### フェイルオーバ + +**プライマリ障害時のフェイルオーバ手順** + +以下は、プライマリ障害時に実施するフェイルオーバ手順です。順序に従って操作を実行してください。 + +| **順序** | **対象** | **手順** | +|----------|-----------|----------| +| 1 | プライマリ
アプリケーション | アプリケーションを停止します。 | +| 2 | プライマリ | 未適用のトランザクションログを適用します。 | +| 3 | スタンバイ | プライマリクラスタへの昇格を判定します。 | +| 4 | スタンバイ | スタンバイモードを解除します。 | +| 5 | スタンバイ→新プライマリ | 新プライマリクラスタを開始します。 | +| 6 | アプリケーション | アプリケーションを再開します。 | +| 7 | 新プライマリ
旧プライマリ→新スタンバイ | 旧プライマリクラスタをスタンバイとして準備し再開します。 | + +
+フェイルオーバ +
フェイルオーバ手順の概要
+
+ + +**1. アプリケーションの停止\[プライマリ/アプリケーション\]** + +プライマリクラスタが稼働していないことを確認し、アプリケーションをすべて停止します。これにより、データの整合性を保ちながら切り替え作業を進めることができます。 + +**2. 未適用トランザクションログの適用\[スタンバイ\]** + +スタンバイ側で、プライマリから受信済みの未適用トランザクションログがある場合、それらをすべて適用します。以下のコマンドを使用して、ログを順番に適用してください。 + +```bash +[standby*]$ gs_redo -u admin/admin --redo --partitionId 0 --logFilePath /standby/cluster/tmp/0 --logFileName=0_142.xlog +# 最終ログ(例: 0_143.xlog)を適用 +[standby*]$ gs_redo -u admin/admin --redo --partitionId 0 --logFilePath /standby/cluster/tmp/0 --logFileName=0_143.xlog +``` + +**3. プライマリクラスタへの昇格判定\[スタンバイ\]** + +プライマリ障害時点の状態にできるだけ近づけるため、プライマリ側のアーカイブフォルダにアクセス可能か再確認します。アクセス可能であれば、未適用のトランザクションログをさらに適用してください。 + +適用可能なトランザクションログがすべて処理された場合、スタンバイをプライマリに昇格させる準備を進めます。以降の手順に従って、スタンバイをプライマリとして稼働させます。 + +**4. スタンバイモードの解除\[スタンバイ\]** + +スタンバイクラスタを一時的に離脱状態にするため、`gs_stopcluster` コマンドを使用してクラスタを停止します。 + +```bash +[standby*]$ gs_stopcluster -u admin/admin +``` + +その後、スタンバイ側の全ノードに対して `gs_standby` コマンドを実行し、スタンバイモードを解除します。 + +```bash +[standby*]$ gs_standby --false -u admin/admin +``` + +**5. 新プライマリクラスタの開始\[スタンバイ→新プライマリ\]** + +旧プライマリが復帰した場合に備え、自動アーカイブ機能を有効にしてベースラインとそれ以降のトランザクションログを保持します。 + +```bash +[standby*]$ gs_autoarchive -u admin/admin --start +``` + +全ノードの設定が完了したら、新プライマリクラスタを構成します。 + +```bash +[standby*]$ gs_joincluster -c cls1 -n -3 -u admin/admin +``` + +**6. アプリケーションの再開\[アプリケーション\]** + +旧プライマリに接続していたアプリケーションの接続先を新プライマリクラスタに変更します。その後、アプリケーションを再起動し、サービスを再開します。この時点で新プライマリ側でのサービスが稼働状態となります。 + +**7. 旧プライマリクラスタのスタンバイ準備と再開\[新プライマリ/旧プライマリ→新スタンバイ\]** + +旧プライマリが復旧した場合、旧プライマリに存在するデータファイルおよびトランザクションログファイルを削除し、新スタンバイとしての準備を行います。この準備手順は、\[1. スタンバイ準備\]と同じ手順に従います。 + +準備が完了すると、旧プライマリは新スタンバイとして稼働し、旧スタンバイは新プライマリとして運用を継続します。この状態で、通常の運用手順(\[2. 定常運用\])に戻ります。 + +なお、旧プライマリを再びプライマリとして復帰させる場合は、\[3. フェイルオーバ\]手順ではなく、\[4. スイッチオーバ\]手順を実施することを推奨します。 + +##### スイッチオーバ + +**スイッチオーバ手順** + +スイッチオーバは予期せぬ障害に対応する[フェイルオーバ](#フェイルオーバ)とは異なり、計画的に実施することが可能です。そのため、プライマリとスタンバイのデータベース状態を完全に一致させることができます。以下にスイッチオーバ手順を示します。 + +| **順序** | **対象** | **手順** | +|----------|-------------------|--------------------------------------------| +| 1 | アプリケーション | アプリケーションの停止 | +| 2 | プライマリ | レプリケーション対象データの確定 | +| 3 | プライマリ | プライマリクラスタを停止 | +| 4 | プライマリ | 全トランザクションログの転送 | +| 5 | スタンバイ | 全トランザクションログの適用 (REDO) | +| 6 | スタンバイ | クラスタ一致の確認 | +| 7 | スタンバイ | スタンバイクラスタを停止 | +| 8 | プライマリ | プライマリクラスタのスタンバイクラスタへの移行準備 | +| 9 | スタンバイ | スタンバイクラスタをプライマリクラスタへの移行準備 | +| 10 | スタンバイ→新プライマリ | 新プライマリクラスタの稼働 | +| 11 | プライマリ→新スタンバイ | 新スタンバイクラスタの稼働 | +| 12 | アプリケーション | アプリケーションの再開 | + +
+スイッチオーバ +
スイッチオーバ
+
+ +**1. アプリケーションの停止\[アプリケーション\]** + +スイッチオーバ作業中は短時間のサービス停止が発生するため、事前に利用者へ告知を行い、アプリケーションを一時停止します。スイッチオーバ後は接続先がスタンバイ側に変更されるため、事前にアプリケーションの接続先を変更しておきます。 + +**2. レプリケーション対象データの確定\[プライマリ\]** + +プライマリの現時点での各クラスタパーティションのオーナーノードを取得し、オーナーのLSNを記録します。このLSNがスイッチオーバ時点の最終値となります。 + +次に、チェックポイントを実行してレプリケーション対象データを確定させます。 + +```bash +# チェックポイントを実行 +[primary*]$ gs_checkpoint -u admin/admin +``` + +チェックポイント完了後、各オーナーノードのLSN情報を記録します。 + +```bash +# 完了時点のLSN情報を記録 +[primary*]$ gs_partition -u admin/admin > primary_latest.json +``` + +**3. プライマリクラスタの停止\[プライマリ\]** + +プライマリクラスタを停止します。以下のコマンドを実行してください。 + +```bash +[primary*]$ gs_stopcluster -u admin/admin +``` + +停止後、以降の作業で自動アーカイブ機能は不要となるため、無効化します。 + +```bash +[primary*]$ gs_autoarchive --stop +``` + +**4. 全トランザクションログの転送\[プライマリ\]** + +プライマリで出力されたすべてのトランザクションログをスタンバイに転送します。以下のコマンドを使用して、漏れなく転送してください。 + +```bash +# トランザクションログの転送 +[primary0]$ rsync -avz /primary/cluster/backup/arch/txnlog/0/0_240.xlog user@standby0:/standby/cluster/tmp/0 +# 最終トランザクションログの転送 +[primary0]$ rsync -avz /primary/cluster/backup/arch/txnlog/0/0_241.xlog user@standby0:/standby/cluster/tmp/0 +``` + +すべてのトランザクションログが転送されたことを確認してください。 + +**5. トランザクションログの適用 (REDO) \[スタンバイ\]** + +スタンバイ側で、すべてのトランザクションログを漏れなく適用します。以下のコマンドを使用して、順番にトランザクションログを適用してください。 + +```bash +# トランザクションログの適用 +[standby*]$ gs_redo -u admin/admin --redo --partitionId 0 --logFilePath /standby/cluster/tmp/0 --logFileName=0_240.xlog + +# 最終トランザクションログの適用 +[standby*]$ gs_redo -u admin/admin --redo --partitionId 0 --logFilePath /standby/cluster/tmp/0 --logFileName=0_241.xlog +``` + +**6. クラスタ状態の確認 \[スタンバイ\]** + +スタンバイ側で、各パーティションのオーナーノードのLSNが、手順 2 で取得した `primary_latest.json` に記録されたプライマリ側のオーナーLSNと一致しているか確認します。一致していれば、レプリケーションが正常に完了したことを意味します。 + +**7. スタンバイクラスタの停止 \[スタンバイ\]** + +スタンバイクラスタを停止します。以下のコマンドを実行してください。 + +```bash +[standby*]$ gs_stopcluster -u admin/admin +``` + +これで、スタンバイクラスタの停止が完了します。 + +**8. プライマリクラスタをスタンバイクラスタへ移行する準備\[プライマリ\]** + +スイッチオーバの場合、フェイルオーバとは異なり、スタンバイ側のデータファイルやトランザクションログファイルを削除する必要はありません。 + +プライマリクラスタにスタンバイモードを設定します。以下のコマンドを実行してください。 + +```bash +[primary*]$ gs_standby --true -u admin/admin +``` + +**9. スタンバイクラスタをプライマリクラスタへ移行する準備\[スタンバイ\]** + +スタンバイクラスタのスタンバイモードを解除します。以下のコマンドを実行してください。 + +```bash +[standby*]$ gs_standby --false -u admin/admin +``` + +スイッチオーバの場合、フェイルオーバとは異なり、ベースラインの再生成は不要です。そのため、この手順をスキップし、自動アーカイブを有効化します。以下のコマンドを実行してください。 + +```bash +[standby*]$ gs_autoarchive -u admin/admin --start --skipBaseline +``` + +これでスタンバイクラスタが新しいプライマリクラスタとして稼働する準備が整いました。 + +**10. 新プライマリクラスタの稼働\[スタンバイ→新プライマリ\]** + +新しいプライマリクラスタを稼働させるには、以下のコマンドを実行します。 + +```bash +[standby*]$ gs_joincluster -c cls1 -n -3 -u admin/admin +``` + +これにより、スタンバイ側のクラスタが新しいプライマリクラスタとして稼働を開始します。 + +**11. 新スタンバイクラスタの稼働\[プライマリ→新スタンバイ\]** + +旧プライマリクラスタを新しいスタンバイクラスタとして稼働させるには、以下のコマンドを実行します。 + +```bash +[primary*]$ gs_joincluster -c cls1 -n -3 -u admin/admin +``` + +これにより、旧プライマリクラスタが新しいスタンバイクラスタとして動作を開始します。 + +**12. アプリケーションの再開\[アプリケーション\]** + +アプリケーションの接続先を新しいプライマリクラスタに変更した後、アプリケーションを再起動してサービスを再開します。これにより、通常の運用が再開されます。 + +以降は、**\[2. 定常運用\]** の手順に従って運用を継続してください。 + +### メモリベースレプリケーション + +メモリベースレプリケーションでは、プライマリで生成されたトランザクションログをメモリベースで直接スタンバイにレプリケーションします。この方式に必要なサーバ機能は以下の通りです。それぞれの詳細については、次節で説明します。 + +**必要なサーバ機能** + +1. **ベースライン生成機能** + - スタンバイのベースDBを作成する機能です。オプションとしてアーカイブを作成することも可能です。 + +2. **スタンバイモード機能** + - クラスタをリードオンリー(参照専用)として稼働させる機能です。このモードでは、クライアントからの更新要求はすべてエラーとなります。 + +3. **サイト間連携機能** + - プライマリとスタンバイをオンライン状態で相互接続および監視します。プライマリで生成されたトランザクションログをスタンバイに自動的にレプリケーションする機能です。 + +#### ベースライン生成機能 + +メモリベース方式の主な特徴は以下の通りです: + +- **ベースDBの作成**: スタンバイ開始時に必要なベースDBは、`gs_autoarchive` コマンドまたは `gs_backup` コマンドを使用して作成します。 +- **トランザクションログの自動レプリケーション**: メモリベース方式では、接続後にトランザクションログが自動的にレプリケーションされるため、`gs_autoarchive` を使用した継続的なトランザクションログ出力は必須ではありません。 +- **レプリケーションの自動化**: 定常状態ではレプリケーションが自動的に実行されるため、運用時に特別な操作は不要です。また、障害発生などで一時的にレプリケーションが失敗した場合でも、プライマリのトランザクションログファイルを使用して自動的に再同期が行われ、通常の状態に復帰します。 +- **アーカイブの保存**: 必要に応じて、`gs_autoarchive` を利用してアーカイブを保存し続けることで、トランザクションログファイルの消失によるレプリケーション失敗を防ぐことが可能です。この場合、同期保存に十分な空き容量を確保することが推奨されます。 + +自動アーカイブ機能の詳細については、[こちら](#自動アーカイブ機能)をご参照ください。 + +##### 初期DB生成手順 + +以下に、メモリベース方式を利用する際の初期DB生成手順を示します。 + +1) **バックアップディレクトリの確認** + 自動アーカイブが保存されるディレクトリを確認します。 + + ```bash + $ cat /var/lib/gridstore/conf/gs_node.json + ``` + +2) **自動アーカイブの開始** + 自動アーカイブを開始してベースDBを生成します。 + + ```bash + $ gs_autoarchive -u admin/admin --start + ``` + +3. **ベースDBの確認** + ベースDBが正常に生成されていることを確認します。 + + ```bash + $ gs_backuplist -u admin/admin + + BackupName Status StartTime EndTime + ------------------------------------------------------------------------ + arch OK 2014-09-25T05:30:02+0900 2014-09-25T05:59:03+0900 + ``` + +4. **アーカイブの停止(オプション)** + メモリベース方式では、以降のトランザクションログは自動的にレプリケーションされるため、アーカイブを停止することも可能です。ただし、必要に応じて継続して保存することもできます。 + + ```bash + $ gs_autoarchive -u admin/admin --stop + ``` + + `gs_autoarchive` の代わりに `gs_backup` を使用してベースラインを生成する場合、以下の手順を実行してください。 + +1. **バックアップの作成** + 以下のコマンドを実行して、バックアップを作成します。 + + ```bash + $ gs_backup -u admin/admin arch + ``` + +2. **バックアップの確認** + 作成されたバックアップが正常であることを確認するには、以下のコマンドを実行します。 + + ```bash + $ gs_backuplist -u admin/admin + + BackupName Status StartTime EndTime + ------------------------------------------------------------------------ + arch OK 2014-09-25T05:30:02+0900 2014-09-25T05:59:03+0900 + ``` + +これにより、指定した名前(例: `arch`)でバックアップが作成され、ベースラインとして利用可能になります。 + +##### ファイル構成 + +メモリベース方式では、スタンバイのベースDBとして使用するデータフォルダが必須です。以下に、ファイル構成の例を示します。 +以下の構成例では、/backup/archive/dataのフォルダがベースDBとなり、これをスタンバイのベースDBとして利用します。 + +``` +/var/lib/gridstore + ├── backup # バックアップ/アーカイブの基点ディレクトリ (/dataStore/backupPath) + │ ├── archive # アーカイブ名 (/dataStore/autoArchiveName) + │ │ ├── gs_backup_info.json # アーカイブ情報ファイル + │ │ ├── gs_backup_info_digest.json # アーカイブダイジェスト情報ファイル + │ │ ├── gs_lsn_info.json # アーカイブLSN情報ファイル + │ │ ├── gs_auto_archive_command_param.json # アーカイブ実行コマンドパラメータファイル + │ │ ├── data # データフォルダ (/dataStore/dbPath) - スタンバイのベースDBとして利用 + │ │ │ ├── 0 # パーティション番号0 + │ │ │ │ ├── 0_part_0.dat # データファイルアーカイブ + │ │ │ │ ├── 0_4.cplog # チェックポイントログアーカイブ + │ │ │ │ └── ... # その他のファイル + │ │ │ ├── 1 # パーティション番号1 + │ │ │ │ └── ... # その他のファイル + │ │ │ └── ... # その他のパーティション + │ │ ├── txnlog # トランザクションログフォルダ (/dataStore/transactionLogPath) + │ │ │ ├── 0 # パーティション番号0 + │ │ │ │ ├── 0_5.xlog # トランザクションログアーカイブ + │ │ │ │ ├── 0_6.xlog + │ │ │ │ └── ... # その他のログ + │ │ │ ├── 1 # パーティション番号1 + │ │ │ │ └── ... # その他のログ + │ │ │ └── ... # その他のパーティション + │ │ ├── cluster # クラスタメタ情報ディレクトリ (/dataStore/autoArchiveOutputClusterInfoPath) + │ │ │ ├── RECOVERY_0_1_100.info # クラスタリカバリ情報ファイル + │ │ │ ├── ROLE_0_1_100_0_OWNER.info # クラスタロール情報ファイル + │ │ │ ├── CP_0_1_100_200.info # クラスタチェックポイント情報ファイル + │ │ │ └── ... # その他のメタ情報 + │ │ └── ... # その他のアーカイブ + │ ├── backup1 # 別のバックアップ名 + │ │ └── ... # バックアップ内容 + │ ├── backup2 # 別のバックアップ名 + │ │ └── ... # バックアップ内容 + │ └── ... # その他のバックアップ +``` + +##### スタンバイモード機能 + +スタンバイモードの概要はファイルベース、メモリベースいずれでも共通となります。 +詳細は、[こちら](#スタンバイモード機能)をご参照ください。 + +##### サイト間レプリケーション連携機能 + +サイト間レプリケーション連携機能とは、プライマリとスタンバイをオンライン状態で接続し、相互に監視しながら、プライマリで生成されたトランザクションログをスタンバイにリアルタイムで自動レプリケーションする機能です。概要は以下の通りです。 + +- **オンライン接続と監視**: プライマリとスタンバイのサーバをオンラインで接続し、相互に監視します。接続や切断を検知し、必要に応じて転送先の切り替えを行います。 +- **ノード構成の定義**: プライマリとスタンバイのノード構成(クラスタ)は、それぞれの設定ファイルで定義します。 +- **リアルタイムレプリケーション**: プライマリで生成されたトランザクションログをスタンバイにメモリベースでリアルタイムにレプリケーションします。これにより、レプリケーションラグは極めて小さくなります。 +- **バックアップへの自動レプリケーション**: スタンバイがクラスタ構成の場合、プライマリからスタンバイへのレプリケーション後、スタンバイ内のバックアップにも自動的にレプリケーションされます。 +- **柔軟な構成**: プライマリとスタンバイのクラスタ構成は異なるノード数でも運用可能です。 +- **自動復旧**: レプリケーションが失敗してスタンバイのトランザクションログが欠損しても、自動的に復旧手順が実行され、正常な状態に戻ります。 +- **復旧用ログの保持**: 復旧処理にはプライマリのトランザクションログファイルを使用するため、ログの保持期間を運用時に設定する必要があります。必要なログが欠損している場合は、ベースDBを再生成します。 + +**設定に必要なパラメータ** + +以下の表に、メモリベース方式の設定に必要なパラメータを示します。本機能を利用する際に必須となる設定は、`enable` と `siteConnectionId` です。これら以外の項目については、デフォルト設定のまま(設定ファイルに記載しない状態)でも動作可能です。一部の項目はオンラインで変更することもできます。`keepLogFileCount` は、提供するサービスが定義する障害復旧時間に応じて適切に設定することを推奨します。 + + +| パラメータ名 | データ型 | デフォルト値 | 説明 | オンライン変更 | 必須項目 | +|-------------------------------------------|------------|---------------|----------------------------------------------------------------------|----------------|----------| +| `/transaction/siteReplication/enable` | `bool` | `false` | サイト間レプリケーション連携機能を有効にするかを指定します | 可 | あり | +| `/transaction/siteReplication/siteConnectionId` | `string` | `""` | サイト間レプリケーション連携機能のキーとなる接続IDを指定します | 不可 | あり | +| `/transaction/siteReplication/heartbeatInterval` | `int` | `15s` | サイト間接続のハートビート間隔(秒)を指定します | 不可 | なし | +| `/transaction/siteReplication/heartbeatRetryCount` | `int` | `1` | ハートビートの再試行回数を指定します | 不可 | なし | +| `/transaction/siteReplication/partitionCheckInterval` | `int` | `15s` | 各パーティションの状態監視間隔(秒)を指定します | 不可 | なし | +| `/transaction/siteReplication/keepLogFileCount` | `int` | `5` | トランザクションログファイルの保持数を指定します | 可 | なし | +| `/transaction/siteReplication/syncWaitTime` | `int` | `0ms` | ログ欠損時の同期処理実行間隔(ミリ秒)を指定します | 不可 | なし | +| `/transaction/siteReplication/limitUpdateDelayTime` | `int` | `300s` | スタンバイ側の更新異常判定時間(秒)を指定します | 可 | なし | +| `/transaction/siteReplication/limitLsnDifference` | `int` | `100000000` | スタンバイ側の更新異常判定のLSN差分閾値を指定します | 可 | なし | +| `/transaction/siteReplication/replicationMember` | `json` | `""` | 相手サイトのノード構成情報(アドレスとポート番号リスト)を指定します | 不可 | なし | + + +**設定例** + +以下は、クラスタ定義ファイル(`gs_cluster.json`)の設定例です。運用開始時に必須で決定するのは、サイト間接続IDと相手サイトのアドレスリストです。 + +```json +"transaction": { + ... + "siteReplication": { + "enable": true, + "siteConnectionId": "R3QGnWlGg6Lseujf0EtbNomgOB1P1wfo", + "keepLogFileCount": 10, + "replicationMember": [ + {"address": "192.168.10.11", "port": 10001}, + {"address": "192.168.10.12", "port": 10001}, + {"address": "192.168.10.13", "port": 10001} + ] + } +} +``` + +サイト間接続機能の状態は、メタテーブル `#replication_stats` を使用して確認できます。このメタテーブルをSQLクエリで参照することで、サイト間レプリケーションの状態やエラー情報を簡単に把握できます。なお、この操作はプライマリおよびスタンバイの両方で実行可能ですが、通常はプライマリ側の情報を参照して状態確認を行うことを推奨します。 + +**メタテーブル `#replication_stats` のカラム詳細** + +| カラム名 | データ型 | 説明 | +|---------------------------|------------|----------------------------------------------------------------------| +| `CLUSTER_PARTITION_INDEX` | `int` | クラスタパーティション番号。情報はクラスタパーティション単位で1レコードとして出力されます。オーナーが未決定の場合は出力されません。| +| `CLUSTER_REPLICATION_ROLE`| `string` | サイト間レプリケーションのロール。`PRIMARY` または `STANDBY` のいずれか。 | +| `PRIMARY_ADDRESS` | `string` | プライマリのオーナーアドレス。未決定、またはサイト間レプリケーション連携機能が無効の場合は `NULL`。 | +| `PRIMARY_PORT` | `short` | プライマリのオーナーポート。未決定、またはサイト間レプリケーション連携機能が無効の場合は `NULL`。 | +| `STANDBY_ADDRESS` | `string` | スタンバイのオーナーアドレス。未決定、またはサイト間レプリケーション連携機能が無効の場合は `NULL`。 | +| `STANDBY_PORT` | `short` | スタンバイのオーナーポート。未決定、またはサイト間レプリケーション連携機能が無効の場合は `NULL`。 | +| `PRIMARY_LSN` | `long` | プライマリのLSN。未決定、またはサイト間レプリケーション連携機能が無効の場合は `NULL`。 | +| `STANDBY_LSN` | `long` | スタンバイのLSN。未決定、またはサイト間レプリケーション連携機能が無効の場合は `NULL`。 | +| `PRIMARY_LAST_UPDATED_TIME`| `timestamp`| プライマリの最終更新時刻。未決定、またはサイト間レプリケーション連携機能が無効の場合は `NULL`。 | +| `STANDBY_LAST_UPDATED_TIME`| `timestamp`| スタンバイの最終更新時刻。未決定、またはサイト間レプリケーション連携機能が無効の場合は `NULL`。 | +| `REPLICATION_STATUS` | `string` | レプリケーション状態。以下のいずれかが表示されます:
- `NODE_DISCONNECTED`(未接続)
- `NODE_CONNECTED`(接続済)
- `REPLICATION_SYNC`(同期中)
- `REPLICATION_REALTIME`(リアルタイムレプリケーション中)
- `REPLICATION_LOSS`(レプリケーション欠損) | +| `LAST_ERROR_CODE` | `int` | 最後に発生したエラーコード。未決定、またはサイト間レプリケーション連携機能が無効の場合は `NULL`。 | +| `LAST_ERROR_TIME` | `timestamp`| 最後に発生したエラー時刻。未決定、またはサイト間レプリケーション連携機能が無効の場合は `NULL`。 | + + +以下のSQLを実行して、サイト間レプリケーションの状態を確認します。 + +```sql +SELECT * FROM "#replication_stats"; +``` + +以下は、クラスタパーティション数に応じた出力例です。通常、プライマリ側で進捗状況を確認することが推奨されますが、スタンバイ側でも実行可能です。プライマリ側で取得するスタンバイ側の情報や、スタンバイ側で取得するプライマリ側の情報には一定のタイムラグが生じる点に注意してください。 + +| CLUSTER_PARTITION_INDEX | CLUSTER_REPLICATION_ROLE | PRIMARY_ADDRESS | PRIMARY_PORT | STANDBY_ADDRESS | STANDBY_PORT | PRIMARY_LSN | STANDBY_LSN | PRIMARY_LAST_UPDATED_TIME | STANDBY_LAST_UPDATED_TIME | REPLICATION_STATUS | LAST_ERROR_CODE | LAST_ERROR_TIME | +|--------------------------|--------------------------|-----------------|--------------|-----------------|--------------|-------------|-------------|---------------------------|---------------------------|----------------------|-----------------|-----------------| +| 1 | PRIMARY | 192.168.10.11 | 10001 | 192.168.11.12 | 10001 | 4104 | 4104 | Thu Mar 27 15:05:16 JST 20 | Thu Mar 27 15:05:19 JST 20 | REPLICATION_REALTIME | | | +| 2 | PRIMARY | 192.168.10.12 | 10001 | 192.168.11.13 | 10001 | 7004 | 6900 | Thu Mar 27 15:05:16 JST 20 | Thu Mar 27 15:05:19 JST 20 | REPLICATION_REALTIME | | | + + +**注意事項** +- `replicationMember` には、**相手サイト** のクラスタを構成する **トランザクションサービス** のアドレスとポート番号を指定してください。 +- `heartbeatInterval` および `partitionCheckInterval` は、異常検知の速度に影響します。値を小さく設定すると異常検知が早くなりますが、システム負荷が増加する可能性があります。 +- `limitUpdateDelayTime` および `limitLsnDifference` は、スタンバイ側でのレプリケーション欠損を検知するためのパラメータです。過剰な検知を防ぐため、デフォルト値での運用を推奨します。ただし、検知速度を調整したい場合は適宜変更してください。 +- `keepLogFileCount` の設定は、レプリケーション欠損時の復旧可能な期間に影響します。運用開始時に、システム要件に応じた適切な値を設定してください。 +- レプリケーション欠損が発生し、必要なトランザクションログが削除されて以降のレプリケーションが継続できない場合、`#replication_stats` に `REPLICATION_LOSS` と表示されます。この場合、ベースDBを再生成しなおす必要があります。 + +#### 運用手順 + +以下の4つの運用について、メモリベース方式のサイト間データベースレプリケーションを用いた手順を示します。 + +1. **スタンバイ準備** +2. **定常運用** +3. **フェイルオーバ** +4. **スイッチオーバ** + +以下では、3台構成の例を用いて説明します。コマンド実行例では、`$` をプロンプトとして使用し、プライマリ側の操作を `[primary*]`、スタンバイ側の操作を `[standby*]` として表記します。 + +メモリベース方式では、トランザクションログが自動的にレプリケーションされるため、ここでは継続的なログ出力を行わずに運用する方式を示します。 + +
+サイト間データベースレプリケーション_メモリベース +
サイト間データベースレプリケーション(メモリベース)
+
+ +**ノード構成 (3台構成)** + +| **役割** | **ホスト名** | **IPアドレス** | +|----------------|--------------|-------------------| +| プライマリ | `primary0` | 192.168.10.11 | +| | `primary1` | 192.168.10.12 | +| | `primary2` | 192.168.10.13 | +| スタンバイ | `standby0` | 192.168.11.11 | +| | `standby1` | 192.168.11.12 | +| | `standby2` | 192.168.11.13 | + + +**ディレクトリ構成** + +***プライマリ側*** +``` +/primary/cluster/ + ├── conf + │ ├── gs_node.json + │ ├── (gs_stable_goal.json) # 自動生成 + │ └── (gs_standby.json) # 自動生成 + ├── data + │ ├── 0 + │ └── ... + ├── txnlog + │ ├── 0 + │ └── ... + └── backup + └── arch + ├── data # スタンバイで用いるベースDB + │ ├── 0 + │ └── ... + └── txnlog # メモリベースでは必須ではなくオプション + ├── 0 + └── ... +``` + +***スタンバイ側*** +``` +/standby/cluster/ + ├── conf + │ ├── gs_node.json + │ ├── (gs_stable_goal.json) # 自動生成 + │ └── (gs_standby.json) # 自動生成 + ├── data + │ ├── 0 + │ └── ... + ├── txnlog + │ ├── 0 + │ └── ... + ├── backup # スタンバイ時は不要 + └── tmp_txnlog # メモリベースではオプション + ├── 0 + └── ... +``` + +##### スタンバイ準備 + +スタンバイ準備の手順を以下に示します。以下の順序で実行してください。 + +| **順序** | **対象** | **手順** | +|----------|-------------------|--------------------------------------------| +| 1 | プライマリ
スタンバイ | ノード定義ファイルの設定 | +| 2 | プライマリ | ベースラインの生成 | +| 3 | スタンバイ | 転送先の決定 | +| 4 | プライマリ | ベースラインの転送 | +| 5 | スタンバイ | スタンバイクラスタの開始 | + +
+スタンバイ準備の手順_メモリベース +
スタンバイ準備の手順(メモリベース)
+
+ +1. 定義ファイルの設定\[プライマリ/スタンバイ\] + + 運用開始前に、プライマリ側およびスタンバイ側のクラスタ定義ファイル (`gs_cluster.json`) とノード定義ファイル (`gs_node.json`) に以下の設定を行ってください。 + + **クラスタ定義ファイル (`gs_cluster.json`) の設定** + + - **サイト間連携機能の有効化** + - サイト間連携機能を有効にします。 + ```json + "/transaction/siteReplication/enable": true + ``` + + - **サイト間接続用の接続キー設定** + - プライマリとスタンバイで共通の接続キーを設定します。 + ```json + "/transaction/siteReplication/siteConnectionId": "R3QGnWlGg6Lseujf0EtbNomgOB1P1wfo" + ``` + + - **トランザクションログの保持期間設定** + - 想定する障害発生期間に合わせて設定します。この値はオンラインで変更可能です。 + ```json + "/transaction/siteReplication/keepLogFileCount": 10 + ``` + + - **接続対象ノードのアドレスリスト設定** + - プライマリの場合はスタンバイのアドレスリストを、スタンバイの場合はプライマリのアドレスリストを設定します。 + + - **プライマリの設定例:** + ```json + "/transaction/siteReplication/replicationMember": [ + {"address": "192.168.11.11", "port": 10001}, + {"address": "192.168.11.12", "port": 10001}, + {"address": "192.168.11.13", "port": 10001} + ] + ``` + + - **スタンバイの設定例:** + ```json + "/transaction/siteReplication/replicationMember": [ + {"address": "192.168.10.11", "port": 10001}, + {"address": "192.168.10.12", "port": 10001}, + {"address": "192.168.10.13", "port": 10001} + ] + ``` + + - **その他の設定** + - 必要に応じて追加設定を行ってください。 + + 以下に上記設定を行った例を記載します。 + + **プライマリの設定** + ```json + "transaction": { + "siteReplication": { + "enable": true, + "siteConnectionId": "R3QGnWlGg6Lseujf0EtbNomgOB1P1wfo", + "keepLogFileCount": 10, + "replicationMember": [ + {"address": "192.168.11.11", "port": 10001}, + {"address": "192.168.11.12", "port": 10001}, + {"address": "192.168.11.13", "port": 10001} + ] + } + } + ``` + + **スタンバイの設定** + ```json + "transaction": { + "siteReplication": { + "enable": true, + "siteConnectionId": "R3QGnWlGg6Lseujf0EtbNomgOB1P1wfo", + "keepLogFileCount": 10, + "replicationMember": [ + {"address": "192.168.10.11", "port": 10001}, + {"address": "192.168.10.12", "port": 10001}, + {"address": "192.168.10.13", "port": 10001} + ] + } + } + ``` + + **ノード定義ファイル (`gs_node.json`) の設定** + + - **自動アーカイブ機能の有効化** + - メモリベース方式では必須ではありませんが、必要時に備えて設定します。 + ```json + "/dataStore/enableAutoArchive": true + "/dataStore/autoArchiveName": arch" + ``` + + - **スタンバイモード設定の有効化** + - スタンバイモードの設定を有効化します。 + ```json + "/cluster/enableStandbyMode": true + ``` + + - **クラスタパーティション配置固定化の有効化** + - クラスタパーティション配置固定化を有効化します。 + ```json + "/cluster/enableStableGoal": true + "/cluster/initialGenerateStableGoal": true + ``` + 以下に上記設定を行った例を記載します。 + + ```json + { + "dataStore": { + "enableAutoArchive": true, + "autoArchiveName": "arch" + }, + "cluster": { + "enableStandbyMode": true, + "enableStableGoal": true, + "initialGenerateStableGoal": true + } + } + ``` + +2. ベースラインの生成\[プライマリ\] + +プライマリのベースラインを生成するには、以下の手順を実行してください。 + +1. **ベースラインの生成** + 以下のコマンドを実行し、指定フォルダ(例: `/primary/cluster/backup/arch`)にベースラインとなるデータベースファイル(ベースDB)が出力されることを確認します。 + + ```bash + [primary*]$ gs_autoarchive -u admin/admin --start + ``` + +2. **ベースライン生成の確認** + ベースDBが正常に生成されたかを確認するには、以下のコマンドを実行してください。 + + ```bash + [primary*]$ gs_backuplist -u admin/admin + + BackupName Status StartTime EndTime + ------------------------------------------------------------------------ + arch OK 2014-09-25T05:30:02+0900 2014-09-25T05:59:03+0900 + ``` + +3. **アーカイブの停止** + メモリベース方式では、以降のトランザクションログファイルは自動的にレプリケーションされるため、この時点でアーカイブを停止します。以下のコマンドを実行してください。 + + ```bash + [primary*]$ gs_autoarchive -u admin/admin --stop + ``` + +以上の手順で、プライマリのベースライン生成が完了します。同様の手順はgs_backupでフルバックアップ生成でも可能です。 + +**3. 転送先の決定\[スタンバイ\]** + +**スタンバイクラスタの準備** + +スタンバイクラスタを構成するために、ベースラインの配置先を事前に準備します。配置先はgs_stableGoal.jsonを作成して起動することで固定化することができます。 +設定時にクラスタパーティション配置固定化を有効化した場合は以下のように容易にこのファイルを作成することができます。 + +1. **スタンバイ側ノードの起動とクラスタ構成** + + スタンバイ側のノードを起動し、クラスタを構成します。この際、スタンバイ側のデータは空の状態で起動します。以下のコマンドを実行してください。 + + ```bash + [standby*]$ gs_startnode -u admin/admin + [standby*]$ gs_joincluster -c cls1 -n -3 -u admin/admin + ``` + +2. **クラスタパーティション配置表の生成** + + クラスタ構成が成功すると、各ノードのノード定義ファイルと同じディレクトリに `gs_stable_goal.json` というファイルが自動生成されます。このファイルにはクラスタパーティションの配置情報が記録されています。**このファイルは削除せずに保存してください。** + +3. **クラスタの停止と不要データの削除** + + `gs_stable_goal.json` の生成を確認した後、以下のコマンドを実行してクラスタを停止し、不要なデータファイルを削除します。 + + ```bash + [standby*]$ gs_stopcluster -u admin/admin + [standby*]$ gs_stopnode -u admin/admin + [standby*]$ rm -r -f /standby/cluster/data + [standby*]$ rm -r -f /standby/cluster/txnlog + ``` + + この操作により、スタンバイ側ベースDBの配置準備が整います。 + +4. **`gs_stable_goal.json` の内容確認** + + `gs_stable_goal.json` ファイルには、各パーティションのオーナーおよびバックアップノードの情報が記録されています。以下はそのサンプルです。この例では、クラスタパーティション番号 0 のオーナーノードのアドレスは `192.168.11.10`、バックアップノードのアドレスは `192.168.11.11` です。 + + この情報を基に、オーナーノードに対応するデータフォルダへプライマリのベースラインを配置します。 + + ```json + [ + { + "backup": [{"address": "192.168.11.11", "port": 10010}], + "owner": { + "address": "192.168.11.10", + "port": 10010 + }, + "pId": "0" + } + ] + ``` + +**4. ベースラインの転送\[プライマリ\]** + +スタンバイに必要なベースラインであるベースラインを転送します。クラスタパーティション0に対する一連の処理概略をまとめると以下のようになります。 + +
+ベースライン転送_メモリベース +
ベースライン転送(メモリベース)
+
+ +以下にその手順を示します。まず、転送元となる、プライマリにおける各クラスタパーティションのオーナノードを取得します。これはプライマリにおいてgs_partitionを実行します。 + +``` bash +[primary*]$ gs_partition -u admin/admin + [ + { + "backup": [{"address": "192.168.10.11","port": 10010}], + "owner": { + "address": "192.168.10.10", + "port": 10010 + }, + "pId": "0", + }, + : + ] +``` + +次に、転送先となる、スタンバイにおける各クラスタパーティションのオーナおよびバックアップを取得します。これは、3.で生成したgs_stale_goal.jsonを用います。スタンバイ準備フェーズではオーナだけでなく、ノードへの転送も必要となります。 + +``` bash +# スタンバイ側のgs_stable_goal.jsonの内容 + [ + { + "backup": [{"address": "192.168.11.11","port": 10010}], + "owner": { + "address": "192.168.11.10", + "port": 10010 + }, + "pId": "0", + }, + : + ] + +``` + +上記より、パーティション0に対する転送情報は以下の通りです。 + +- **転送元** + - **アドレス**: `192.168.10.10` (primary0, オーナーノード) + - **対象ディレクトリ**: `/primary/cluster/backup/arch/data/0`, `/primary/cluster/backup/arch/txnlog/0` + +- **転送先** + - **アドレス**: + - `192.168.11.10` (standby0, オーナーノード) + - `192.168.11.11` (standby1, バックアップノード) + - **対象ディレクトリ**: `/standby/cluster/data`, `/standby/cluster/txnlog` + +転送先情報に従い、以下のコマンドを使用してデータを転送してください。 + +```bash +# 192.168.10.10 (primary0) -> 192.168.11.10 (standby0, オーナーノード) +[primary*]$ rsync -avz user@primary0:/primary/cluster/backup/arch/data/0 user@standby0:/standby/cluster/data +[primary*]$ rsync -avz user@primary0:/primary/cluster/backup/arch/txnlog/0 user@standby0:/standby/cluster/txnlog + +# 192.168.10.10 (primary0) -> 192.168.11.11 (standby1, バックアップノード) +[primary*]$ rsync -avz user@primary0:/primary/cluster/backup/arch/data/0 user@standby1:/standby/cluster/data +[primary*]$ rsync -avz user@primary0:/primary/cluster/backup/arch/txnlog/0 user@standby1:/standby/cluster/txnlog +``` + +同様の手順をすべてのクラスタパーティションに対して実施してください。これにより、ベースDBの配置が完了します。 + +**5. スタンバイクラスタの開始\[スタンバイ\]** + +**スタンバイクラスタの開始手順** + +1. **各ノードの起動** + スタンバイクラスタを構成する各ノードを起動します。 + + ```bash + [standby*]$ gs_startnode + ``` + +2. **スタンバイモードの設定** + 各ノードをスタンバイモードに設定します。 + + ```bash + [standby*]$ gs_standby --true -u admin/admin + ``` + +3. **クラスタの稼働開始** + クラスタを稼働させます。これ以降は定常運用の手順に従って運用を行います。 + + ```bash + [standby*]$ gs_joincluster -c cls1 -n -3 -u admin/admin + ``` + +**GridDBサービスを利用したクラスタ構成手順** + +スタンバイモードの設定はクラスタ離脱状態で行う必要がありますが、GridDBサービス経由で起動する場合、クラスタが自動的に構成されるため、以下の手順を実施してください。 + +1. **`gs_standby.json` ファイルの作成** + 以下の内容で `gs_standby.json` ファイルを作成します。 + + ```json + {"standby": true} + ``` + +2. **ファイルの配置** + 作成したファイルをノード定義ファイルと同じディレクトリに配置します。 + + ```bash + cp gs_standby.json /standby/cluster/conf + ``` + +3. **GridDBサービスの起動** + GridDBサービスを利用してクラスタを構成します。 + + ```bash + [standby*]$ sudo systemctl start gridstore + ``` + + +##### 定常運用 + +定常運用時の手順を以下に示します。以下の順序で実行してください。 + +| **順序** | **対象** | **手順** | +|----------|-------------------|--------------------------------------------| +| 1 | プライマリ
スタンバイ | 定常時のレプリケーション状態を確認します。 | + +
+定常運用 +
定常運用
+
+ + +**1. 定常時のレプリケーション状態の確認\[プライマリ/スタンバイ\]** + +メモリベースレプリケーション方式では、定常時のレプリケーションが自動的に実行されます。以下のSQLを使用してレプリケーション状態を確認してください。 + +```sql +SELECT * FROM "#replication_stats"; +``` + +以下は出力例です: + +| CLUSTER_PARTITION_INDEX | CLUSTER_REPLICATION_ROLE | PRIMARY_ADDRESS | PRIMARY_PORT | STANDBY_ADDRESS | STANDBY_PORT | PRIMARY_LSN | STANDBY_LSN | PRIMARY_LAST_UPDATED_TIME | STANDBY_LAST_UPDATED_TIME | REPLICATION_STATUS | LAST_ERROR_CODE | LAST_ERROR_TIME | +|--------------------------|--------------------------|-----------------|--------------|-----------------|--------------|-------------|-------------|---------------------------|---------------------------|----------------------|-----------------|-----------------| +| 1 | PRIMARY | 192.168.10.11 | 10001 | 192.168.11.12 | 10001 | 4104 | 4104 | Thu Mar 27 15:05:16 JST 20 | Thu Mar 27 15:05:19 JST 20 | REPLICATION_REALTIME | | | +| 2 | PRIMARY | 192.168.10.12 | 10001 | 192.168.11.13 | 10001 | 7004 | 6900 | Thu Mar 27 15:05:16 JST 20 | Thu Mar 27 15:05:19 JST 20 | REPLICATION_REALTIME | | | + +**レプリケーション状態の確認** + +- **正常状態**: `REPLICATION_STATUS` が `REPLICATION_REALTIME` の場合、サイト間のレプリケーションは正常にリアルタイムで実行されています。 +- **同期中**: `REPLICATION_STATUS` が `REPLICATION_SYNC` の場合、直近のノード障害やネットワーク障害により欠損したデータを回復するための同期処理が実行中です。この状態は自動的に解消され、完了後に `REPLICATION_REALTIME` に戻ります。 +- **欠損状態**: `REPLICATION_STATUS` が `REPLICATION_LOSS` の場合、同期に必要なプライマリ側のトランザクションログが削除されており、同期が実行できない状態です。この場合、以下のいずれかの対応が必要です: + - 新たにベースラインを作成し、スタンバイを再構築した後に接続を再実施する。 + - 自動アーカイブ機能で出力されたトランザクションログを適用する。アーカイブ期間内のトランザクションログが残っている場合は、それを継続して適用します。 + +**レプリケーションラグの確認** + +- **レプリケーションラグ確認**: `PRIMARY_LAST_UPDATED_TIME` と `STANDBY_LAST_UPDATED_TIME` の差分がレプリケーションラグを示します。 +- **対応が必要な場合**: ラグが大きい場合は、スタンバイへの通信遅延やスタンバイ側の高負荷が原因の可能性があります。これらの要因を確認してください。 + +**障害時の対応** + +プライマリおよびスタンバイがクラスタ構成を取っている場合、通常の障害ではサイト間レプリケーションが継続されるため、特別な対応は不要です。 +ただし、プライマリサイト全体に障害が発生した場合は、必要に応じてフェイルオーバを実施し、スタンバイをプライマリに昇格させる必要があります。フェイルオーバは自動では実行されないため、事前にフェイルオーバの基準を設定し、必要に応じて以下の章で述べるフェイルオーバ手順に従って対応してください。 +また、障害復旧に必要なトランザクションログの保持期間を事前に設定しておくことが重要です。運用中はレプリケーション状態を定期的に確認し、問題が発生した場合には迅速に対応できるよう備えてください。 + +##### フェイルオーバ + +フェイルオーバ手順を以下に示します。 + + +| **順序** | **対象** | **手順** | +|----------|-----------|----------| +| 1 | プライマリ
アプリケーション | アプリケーションを停止します。 | +| 2 | スタンバイ | プライマリクラスタへの昇格を判定します。 | +| 3 | スタンバイ | スタンバイモードを解除します。 | +| 4 | スタンバイ→新プライマリ | 新プライマリクラスタを開始します。 | +| 5 | アプリケーション | アプリケーションを再開します。 | +| 6 | 新プライマリ
旧プライマリ→新スタンバイ | 旧プライマリクラスタをスタンバイとして準備し再開します。 | + +
+フェイルオーバ_メモリベース +
フェイルオーバ手順の概要(メモリベース)
+
+ +**1. アプリケーションの停止\[プライマリ/アプリケーション\]** + +プライマリクラスタが稼働していないことを確認し、可能であればアプリケーションをすべて停止してください。 + +**2. プライマリクラスタへの昇格判定\[スタンバイ\]** + +スタンバイをプライマリに昇格させるかどうかの判断は自動では行われません。そのため、サイト障害時のフェイルオーバを実施するかは運用者が基準を設けて判断する必要があります。 + +メモリベースレプリケーションの場合、プライマリ障害直前までのデータがスタンバイにレプリケーションされているため、これを基準に検討します。 + +**3. スタンバイモードの解除\[スタンバイ\]** + +スタンバイクラスタを一時的に離脱状態にするには、以下のコマンドを実行してください。 + +```bash +[standby*]$ gs_stopcluster -u admin/admin +``` + +その後、スタンバイ側の全ノードに対して以下のコマンドを実行し、スタンバイモードを解除します。 + +```bash +[standby*]$ gs_standby --false -u admin/admin +``` + +**4. 新プライマリクラスタの開始\[スタンバイ→新プライマリ\]** + +新しいプライマリクラスタの構成が完了したら、クラスタを再開してサービスを復旧させます。この手順では、アーカイブ機能(`gs_autoarchive` によるログの継続生成)を使用せず、旧プライマリサイトが復旧した際に新たにベースラインを生成する方式を採用します。そのため、クラスタを再開した時点でサービスを再開できます。なお、サイト障害の期間が短期間である場合は、障害復旧を見越して一時的にログ保持期間をオンラインで変更して運用することを推奨します。 + +以下のコマンドを実行して、新しいプライマリクラスタを稼働させてください: + +```bash +[standby*]$ gs_joincluster -c cls1 -n -3 -u admin/admin +``` + +**5. アプリケーションの再開\[アプリケーション\]** + +アプリケーションの接続先を旧プライマリから新プライマリクラスタに変更し、アプリケーションを再起動します。この操作により、新プライマリクラスタでのサービスが稼働状態となります。 + +**6. 旧プライマリクラスタのスタンバイ準備と再開\[新プライマリ/旧プライマリ→新スタンバイ\]** + +アプリケーションの再開後、旧プライマリが復旧した場合は、旧プライマリに存在するデータファイルおよびトランザクションログファイルを削除し、新しいスタンバイとしての準備を行います。この準備手順は、\[1. スタンバイ準備\]の手順と同様であるため、詳細な説明は省略します。準備が完了すると、旧プライマリは新しいスタンバイとして、旧スタンバイは新しいプライマリとして運用を継続します。この状態で、通常の運用手順(\[2. 定常運用\])に戻ります。 + +なお、旧プライマリを再びプライマリとして復帰させる場合は、\[3. フェイルオーバ\]手順ではなく、\[4. スイッチオーバ\]手順を実施することを推奨します。 + +また、手順4でサイト障害復帰用にログ保持期間を一時的に延長していた場合は、レプリケーションが完了した時点で適切な値に再設定してください。これは、長期間のログ保持がトランザクションログファイルによるディスク容量の圧迫を引き起こす可能性があるためです。 + +以上の処理により、新しいプライマリへのスタンバイの昇格が完了し、サービスの再開が可能となります。また、旧プライマリを新しいスタンバイとして運用に組み込むことができます。 + +##### スイッチオーバ + +スイッチオーバ手順について以下に示します。 + +スイッチオーバは、予期せぬ障害に対応する「フェイルオーバ」とは異なり、計画的に実施することが可能です。そのため、プライマリとスタンバイのデータベース状態を完全に一致させた上で切り替えを行うことができます。 + +| **順序** | **対象** | **手順** | +|----------|-----------|----------| +| 1 | アプリケーション | アプリケーションを停止します。 | +| 2 | プライマリ | クラスタの状態が一致していることを確認します。 | +| 3 | プライマリ | プライマリクラスタを停止します。 | +| 4 | スタンバイ | スタンバイクラスタを停止します。 | +| 5 | プライマリ | プライマリクラスタをスタンバイクラスタへ移行する準備を行います。 | +| 6 | スタンバイ | スタンバイクラスタをプライマリクラスタへ移行する準備を行います。 | +| 7 | スタンバイ→新プライマリ | 新しいプライマリクラスタを稼働させます。 | +| 8 | プライマリ→新スタンバイ | 新しいスタンバイクラスタを稼働させます。 | +| 9 | アプリケーション | アプリケーションを再開します。 | + +
+スイッチオーバ_メモリベース +
スイッチオーバ手順の概要(メモリベース)
+
+ +**1. アプリケーションの停止\[アプリケーション\]** + +スイッチオーバ作業中は短時間のサービス停止が発生します。そのため、事前に利用者へ切替作業の実施を告知し、該当期間中はアプリケーションを一時停止してください。また、スイッチオーバ後はアプリケーションの接続先が旧スタンバイ側に変更されるため、事前に接続先の変更を行っておく必要があります。 + +**2. クラスタ一致の確認\[プライマリ\]** + +プライマリとスタンバイの状態が一致していることを確認します。以下のSQLを実行して、全パーティションのLSNが一致しているか確認してください。 + +```sql +SELECT COUNT(*) AS MATCHED_PARTITIONS +FROM "#replication_stats" +WHERE REPLICATION_STATUS = 'REPLICATION_REALTIME' + AND PRIMARY_LSN = STANDBY_LSN; +``` + +このクエリの結果がクラスタのパーティション数(デフォルトでは128)と一致している場合、プライマリとスタンバイの状態が完全に一致していることを示します。 + +**注意事項:** +- この確認はアプリケーションを停止した状態で実施してください。通常、短時間で完了します。 +- レプリケーションが進行中の場合があるため、状態が一致するまで繰り返し確認してください。 + +状態の一致が確認できたら、次の手順に進んでください。 + +**3. プライマリクラスタを停止\[プライマリ\]** + +プライマリクラスタを停止するには、以下のコマンドを実行してください。 + +```bash +[primary*]$ gs_stopcluster -u admin/admin +``` + +この操作により、プライマリクラスタを構成するすべてのノードがクラスタから切り離されます。 + +**4. スタンバイクラスタを停止\[スタンバイ\]** + +スタンバイクラスタを停止するには、以下のコマンドを実行してください: + +```bash +[standby*]$ gs_stopcluster -u admin/admin +``` + +この操作により、スタンバイクラスタを構成するすべてのノードがクラスタから切り離されます。 + +**5. プライマリクラスタのスタンバイクラスタへの移行準備\[プライマリ\]** + +スイッチオーバの場合、フェイルオーバとは異なり、スタンバイ側のデータファイルやトランザクションログファイルを削除する必要はありません。 + +プライマリクラスタにスタンバイモードを設定するには、以下のコマンドを実行してください: + +```bash +[primary*]$ gs_standby --true -u admin/admin +``` + +**6. スタンバイクラスタをプライマリクラスタへの移行準備\[スタンバイ\]** + +スタンバイクラスタのスタンバイモードを解除するには、以下のコマンドを実行してください。 + +```bash +[primary*]$ gs_standby --false -u admin/admin +``` + +この操作により、スタンバイクラスタがスタンバイモードから解除され、新しいプライマリクラスタとしての準備が整います。 + +**7. 新プライマリクラスタの稼働\[スタンバイ→新プライマリ\]** + +新しいプライマリクラスタを稼働させるには、以下のコマンドを実行してください。 + +```bash +[standby*]$ gs_joincluster -c cls1 -n -3 -u admin/admin +``` + +このコマンドにより、スタンバイ側のクラスタが新しいプライマリクラスタとして稼働を開始します。以降は、アプリケーションの接続先を新しいプライマリクラスタに変更し、サービスを再開してください。 + +**8. 新スタンバイクラスタの稼働\[プライマリ→新スタンバイ\]** + +新しいスタンバイクラスタを稼働させるには、以下のコマンドを実行してください: + +```bash +[primary*]$ gs_joincluster -c cls1 -n -3 -u admin/admin +``` + +このコマンドにより、旧プライマリクラスタが新しいスタンバイクラスタとして稼働を開始します。 + +**9. アプリケーションの再開\[アプリケーション\]** + +アプリケーションの接続先を新しいプライマリクラスタに変更した後、アプリケーションを再起動してサービスを再開します。その後は、定常運用の手順に従って運用を継続してください。 + + +## 稼働状況の確認機能 + +### 性能・統計情報 + +GridDBの性能・統計情報は、運用コマンドのgs_statを利用して確認できます。gs_statはクラスタで共通の情報とノード独自の性能情報・統計情報を表示します。 + +gs_statコマンドでの出力のうち、performance構造が、性能・統計情報に関連する項目です。 + +出力例を以下に示します。出力される内容はバージョンによって異なります。 + +``` example +-bash-4.1$ gs_stat -u admin/admin -s 192.168.0.1:10040 +{ + : + "performance": { + "batchFree": 0, + "dataFileSize": 65536, + "dataFileUsageRate": 0, + "checkpointWriteSize": 0, + "checkpointWriteTime": 0, + "currentTime": 1428024628904, + "numConnection": 0, + "numTxn": 0, + "peakProcessMemory": 42270720, + "processMemory": 42270720, + "recoveryReadSize": 65536, + "recoveryReadTime": 0, + "sqlStoreSwapRead": 0, + "sqlStoreSwapReadSize": 0, + "sqlStoreSwapReadTime": 0, + "sqlStoreSwapWrite": 0, + "sqlStoreSwapWriteSize": 0, + "sqlStoreSwapWriteTime": 0, + "storeDetail": { + "batchFreeMapData": { + "storeMemory": 0, + "storeUse": 0, + "swapRead": 0, + "swapWrite": 0 + }, + "batchFreeRowData": { + "storeMemory": 0, + "storeUse": 0, + "swapRead": 0, + "swapWrite": 0 + }, + "mapData": { + "storeMemory": 0, + "storeUse": 0, + "swapRead": 0, + "swapWrite": 0 + }, + "metaData": { + "storeMemory": 0, + "storeUse": 0, + "swapRead": 0, + "swapWrite": 0 + }, + "rowData": { + "storeMemory": 0, + "storeUse": 0, + "swapRead": 0, + "swapWrite": 0 + } + }, + "storeMemory": 0, + "storeMemoryLimit": 1073741824, + "storeTotalUse": 0, + "swapRead": 0, + "swapReadSize": 0, + "swapReadTime": 0, + "swapWrite": 0, + "swapWriteSize": 0, + "swapWriteTime": 0, + "syncReadSize": 0, + "syncReadTime": 0, + "totalLockConflictCount": 0, + "totalReadOperation": 0, + "totalRowRead": 0, + "totalRowWrite": 0, + "totalWriteOperation": 0 + }, + : +} +``` + +性能・統計情報に関連する情報を説明します。storeDetail構造は、内部のデバッグ情報のため説明は省きます。 +- 種別は以下を示します + - CC:クラスタ全体の現在の値 + - c:指定ノードの現在の値 + - CS:クラスタ全体のサービス開始後の累積値 + - s:ノード全体のサービス開始後の累積値 + - CP:クラスタ全体のサービス開始後のピーク値 + - p:ノード全体のサービス開始後のピーク値 +- 監視すべき事象、数値を確認し、運用を継続するにあたり検討すべき項目を示します。 + +| 出力パラメータ | 種別 | 説明 | 監視すべき事象 | +|----------------------------|------|-----------------------------------------------------|-----| +| dataFileSize | c | データファイルサイズ(バイト) | | +| dataFileUsageRate | c | データファイル利用率 | | +| checkpointWrite | s | チェックポイント処理のデータファイルへの書き込み回数 | | +| checkpointWriteSize | s | チェックポイント処理のデータファイルへの書き込みサイズ(バイト) | | +| checkpointWriteTime | s | チェックポイント処理のデータファイルへの書き込み時間(ミリ秒) | | +| checkpointWriteCompressTime| s | チェックポイント処理のデータファイルへの書き込みデータ圧縮時間(ミリ秒) | | +| dataFileAllocateSize | c | データファイルに割り当てられたブロックの総サイズ(バイト) | | +| currentTime | c | 現在時刻 | | +| numConnection | c | 現在のコネクション数。トランザクション処理で使用している接続数であり、クラスタ処理で使用している接続数は含まれない。クライアントの数+保有するパーティション*レプリカ数の値となる。 | ログの監視でコネクション不足が発生している場合はノード構成のconnectionLimitの値を見直します。| +| numSession | c | 現在のセッション数 | | +| numTxn | c | 現在のトランザクション数 | | +| peakProcessMemory | p | プロセス最大使用メモリ量(バイト) storememoryの値を含め、GridDBサーバの利用したメモリのピーク値 | peakProcessMemory、processMemoryがノードの実装メモリより大きくOSのスワップが発生している場合、メモリの追加や一時的にstorememoryLimitの値を下げるなどの検討が必要 | +| processMemory | c | プロセス使用メモリ量(バイト) | | +| recoveryReadSize | s | リカバリ処理でデータファイルを読み込んだサイズ(バイト) | | +| recoveryReadTime | s | リカバリ処理でデータファイルを読み込んだ時間(ミリ秒) | | +| sqlStoreSwapRead | s | SQLストアスワップ処理のファイルからの読み込み回数 | | +| sqlStoreSwapReadSize | s | SQLストアスワップ処理のファイルからの読み込みサイズ(バイト) | | +| sqlStoreSwapReadTime | s | SQLストアスワップ処理のファイルからの読み込み時間(ミリ秒) | | +| sqlStoreSwapWrite | s | SQLストアスワップ処理のファイルへの書き込み回数 | | +| sqlStoreSwapWriteSize | s | SQLストアスワップ処理のファイルへの書き込みサイズ(バイト) | | +| sqlStoreSwapWriteTime | s | SQLストアスワップ処理のファイルへの書き込み時間(ミリ秒) | | +| storeMemory | c | インメモリデータベースでの使用メモリ量(バイト) | | +| storeMemoryLimit | c | インメモリデータベースでの使用メモリ量制限(バイト) | | +| storeTotalUse | c | データベースファイル内のデータ容量を含めたノードが保有する全データ容量(バイト) | | +| swapRead | s | スワップ処理のファイルからの読み込み回数 | | +| swapReadSize | s | スワップ処理のファイルからの読み込みサイズ(バイト) | | +| swapReadTime | s | スワップ処理のファイルからの読み込み時間(ミリ秒) | | +| swapWrite | s | スワップ処理のファイルへの書き込み回数 | | +| swapWriteSize | s | スワップ処理のファイルへの書き込みサイズ(バイト) | | +| swapWriteTime | s | スワップ処理のファイルへの書き込み時間(ミリ秒) | | +| swapWriteCompressTime | s | スワップ処理のファイルへの書き込みデータ圧縮時間(ミリ秒) | | +| syncReadSize | s | 同期処理データファイルからの読み込みサイズ(バイト) | | +| syncReadTime | s | 同期処理データファイルからの読み込み時間(ミリ秒) | | +| totalLockConflictCount | s | ロウロック競合発生回数 | | +| totalReadOperation | s | 検索処理回数 | | +| totalRowRead | s | ロウ読み出し回数 | | +| totalRowWrite | s | ロウ書き込み回数 | | +| totalWriteOperation | s | 登録更新処理回数 | | + +【メモ】 +- 集計単位はノード単位になります。データベース単位で集計を行いたい場合は、メタテーブル"#database_stats"に対してSQLを実行します。 + +### コンテナ(テーブル)の配置情報確認 + +GridDBクラスタ上のコンテナ(テーブル)は、各ノードに自動的に分散して配置されます。 運用機能やSQLを用いることで、コンテナ(テーブル)がどのノードに配置されているかを確認することができます。 + +この機能は次の場合に役立ちます。 +- ノードごとのデータベースサイズに偏りがあるときに、ノードに配置されているコンテナを調べたい。 +- 特定のコンテナを含むノードのバックアップを取得したい。 + +【メモ】 +- コンテナやパーティションなどデータ管理に関する説明は、[データモデル](#data_model)をご参照ください。 +- ノードの停止や障害などによって自律的データ配置が行われると、コンテナの配置が動的に変化する場合があります。コンテナ配置は恒久的なものではありません。 + +次の方法で、コンテナ(テーブル)が属するパーティションのオーナが配置されているノードを確認できます。 + +#### ノード上のコンテナ(テーブル)一覧確認【EE限定】 + +1つのノード上に配置されているコンテナ(テーブル)一覧を確認するには、統合運用管理GUI(gs_admin)のコンテナ一覧画面を使用します。 + +1. gs_adminにログインします。 + +2. 左画面のツリービューで「ClusterTree」タブを選択してノードを選択した後、右画面で「Container」タブをクリックします。 + +3. ノードに配置されているコンテナ一覧が表示されます。 + +【メモ】 +- パーティショニングされたコンテナ(テーブル)は、管理テーブルのみ表示されます。データパーティションは表示されません。 + +#### コンテナ(テーブル)配置ノードの確認 + +特定のコンテナ(テーブル)が配置されているノードを確認するには、gs_shとパーティション情報取得コマンド(gs_partition)を使用します。 + +1. gs_shのshowcontainerサブコマンドでコンテナが格納されているパーティションのIDを確認します。 パーティションIDが"Partition ID"に表示されます。 + +2. gs_shのconfigclusterサブコマンドでマスタノードを確認します。 "Role"に"M"と表示されるノードがマスタノードです。 + +3. マスタノードに対して、1で確認したパーティションIDを引数に指定してgs_partitionを実行します。 表示されたJSONの/owner/addressのノードが、コンテナが配置されているノードです。 + +【実行例】 +- 特定のパーティションの配置ノードを確認します。 + +``` example +$ gs_partition -u admin/admin -n 5 +[ + { + "backup": [], + "catchup": [], + "maxLsn": 300008, + "owner": { + "address": "192.168.11.10", -> IPアドレス:192.168.11.10のノードに格納されている + "lsn": 300008, + "port": 10010 + }, + "pId": "5", + "status": "ON" + } +] +``` + +【注意】 +- マスタノード以外にgs_partitionを実行した場合は、パーティション情報が正しくない場合があります。 + +【メモ】 +- パーティショニングされたコンテナ(テーブル)を指定した場合、管理テーブルの配置情報が表示されます。 データパーティションの配置情報は表示されません。 + +#### データパーティション配置ノードの確認 + +パーティショニングされたコンテナ(テーブル)は、複数の内部コンテナ(データパーティション)にデータを分割して格納します。 これらのデータパーティションがどのノードに配置されているかを確認することで、パーティショニングされたコンテナ(テーブル)のデータ配置を知ることができます。 + +配置確認の流れとしては、該当コンテナ(テーブル)のデータパーティションが格納されているパーティションのIDを調べて、そのIDを基にして配置されているノードを調べます。以下に手順を説明します。 + +1. 該当コンテナ(テーブル)のデータパーティションが格納されているパーティションのIDを確認する + +- データパーティションが格納されているパーティションのIDは、メタテーブル"\#table_partitions"を使って確認します。メタテーブル"\#table_partitions"には、全データパーティションのコンテナ名やパーティションIDなどの情報が格納されています。 +- 統合運用管理GUI(gs_admin)のSQL画面またはgs_shのsqlサブコマンドを使用し、メタテーブル"\#table_partitions"に検索を実行します。調べたいコンテナの名前を、where句で「TABLE_NAME」カラムの条件として指定します。 +- 指定したコンテナの複数のデータパーティション情報が表示されますので、「CLUSTER_PARTITION_INDEX」カラムでパーティションIDを確認します。 + +2. パーティションIDから、配置されているノードを確認する + +- パーティションIDから、配置されているノードを確認するためには、マスタノードに対してgs_partitionコマンドを実行する必要があります。 +- gs_shのconfigclusterサブコマンドでマスタノードを確認します。"Role"に"M"と表示されるノードがマスタノードです。 +- マスタノードに対して、1で確認したパーティションIDを引数-nに指定してgs_partitionを実行します。 表示されたJSONの/owner/addressのノードが、コンテナが配置されているノードです。 +- -nには、ひとつのパーティションIDしか指定できません。-nを指定しない場合、全パーティションの情報が表示されます。 + +【例】 +- 1 パーティショニングテーブル'hashTable1'のデータパーティションが格納されているパーティションIDを確認します。 + +``` example +select DATABASE_NAME, TABLE_NAME, CLUSTER_PARTITION_INDEX from "#table_partitions" where TABLE_NAME='hashTable1'; + +DATABASE_NAME,TABLE_NAME,CLUSTER_PARTITION_INDEX +public,hashTable1,1 +public,hashTable1,93 +public,hashTable1,51 +public,hashTable1,18 +public,hashTable1,32 →'hashTable1'のデータパーティションは5個で、格納されているパーティションのIDは1, 93, 51, 18, 32。 +``` + +- 2 パーティションID 1の配置ノードを確認します。(パーティションID 93, 51, 18, 32の情報も同様に確認します) + +``` example +$ gs_partition -u admin/admin -n 1 +[ + { + "backup": [], + "catchup": [], + "maxLsn": 200328, + "owner": { + "address": "192.168.11.15", -> IPアドレス:192.168.11.15のノードに格納されている + "lsn": 200328, + "port": 10010 + }, + "pId": "1", + "status": "ON" + } +] +``` + +【注意】 +- メタテーブル"\#table_partitions"のスキーマは、今後のバージョンで変更される可能性があります。 + +【メモ】 +- メタテーブルの詳細は『[GridDB SQLリファレンス](../md_reference_sql/md_reference_sql.md)』を参照ください。 + + +## 運用ツール + +GridDBでは、クラスタ操作やノード操作、コンテナ作成などのデータ操作、エクスポート/インポートなどを行うための以下のツールを提供しています。 + +
+運用ツール一覧 +
運用ツール一覧
+
+ +| 名称 | 内容 | +|------------------------------------------|--------------------------------------------------------------------| +| サービス | Linuxのサービス管理で、GridDBノードの起動/停止などを行います。 | +| 統合運用管理GUI(gs_admin) | GridDBクラスタの運用機能を統合したWebベースの統合運用管理GUIツールです。| +| クラスタ運用管理コマンド・インタプリタ(gs_sh) | GridDBクラスタの運用管理機能、およびデータ操作を行うCUIツールです。| +| 運用コマンド | GridDBクラスタの運用機能を行うコマンド群です。機能ごとに様々なコマンドがあります。 | +| エクスポートツール/インポートツール | データをエクスポート/インポートします。 | + + + + +### 運用コマンド + +GridDBの運用動作を指示するコマンドには以下があります。GridDBの運用コマンドはすべてgs_で始まります。 + +| 種類 | コマンド | 機能 | +|----------------------|--------------------|---------------------| +| ノード操作 | gs_startnode | ノードの起動 | +| | gs_stopnode | ノードの停止 | +| クラスタ操作 | gs_joincluster | 指定ノードをクラスタ構成へ参加させる。クラスタを構成する際に使用 | +| | gs_leavecluster | クラスタから特定ノードを切り離す。メンテナンス等で特定ノードを切り離す際に利用する。切り離したノードに配置されているパーティションは再配置(リバランス)される | +| | gs_stopcluster | クラスタを構成する全ノードをクラスタから切り離す。全ノードを停止する際に利用する。ノード切り離しに伴うパーティションのリバランスは発生しない | +| | gs_config | クラスタを構成するノードの情報を取得 | +| | gs_stat | ノードやクラスタの稼働情報や性能情報を情報取得 | +| | gs_appendcluster【EE限定】 | STABLE状態のクラスタに対してノードを増設する | +| | gs_failovercluster【EE限定】 | クラスタのフェイルオーバーを手動で通知する。データロストを許容してサービスを開始する際にも利用 | +| | gs_partition | パーティションのクラスタ内での配置(マスタ/バックアップ)情報や更新情報を取得 | +| | gs_loadbalance【EE限定】 | クラスタの自律的データ配置機能の有効無効の設定、設定情報の取得 | +| 管理ユーザ操作 | gs_adduser | 管理ユーザの登録 | +| | gs_deluser | 管理ユーザの削除 | +| | gs_passwd | 管理ユーザのパスワードの変更 | +| ログ情報 | gs_logs | ノードのメモリに保持する最新のログ情報の表示 | +| | gs_logconf | イベントログおよび監査ログの操作カテゴリと出力レベルの表示と変更 | +| バックアップ/リストア | gs_backup | バックアップの取得指示 | +| | gs_backuplist | バックアップデータの確認 | +| | gs_restore | バックアップデータのリストア | +| インポート/エクスポート | gs_import | ディスクに保持しているコンテナやデータベースのexportデータを指定してインポート | +| | gs_export | コンテナやデータベースを指定して、ディスク上にデータをCSV形式またはzip形式でエクスポート | +| 保守 | gs_paramconf | 稼働パラメータの表示と稼働パラメータのオンライン変更 | +| | gs_authcache【EE限定】 | 一般ユーザの認証やLDAP認証の高速化のためのユーザ情報キャッシュの一覧表示と削除 | +| | gs_rollingupdate【EE限定】 | ローリングアップデートを行う一連の処理手順の支援 | + + +### 統合運用管理機能【EE限定】 + +統合運用管理機能(gs_admin)はGridDBのクラスタ運用機能を統合したWebアプリケーションです。gs_adminは直観的なインターフェースで、クラスタの稼働情報を1画面で把握できます(ダッシュボード画面)。また、クラスタを構成する個々のノードへの起動停止操作や性能情報の確認などができます。 + +
+gs_admin ダッシュボード画面 +
gs_admin ダッシュボード画面
+
+ +gs_adminは、上記運用操作とともに、開発を支援する以下の機能もサポートしており、システムの開発段階でも有効に利用できます。 +- データベースの作成・削除、ユーザの割り当て +- コンテナの作成・削除・検索 +- 索引の作成・削除 +- コンテナ内データのTQLでの検索 +- SQLの実行 + + + +### クラスタ運用管理コマンド・インタプリタ(gs_sh) + +GridDBのクラスタ操作やデータ操作のためのコマンドラインインターフェースです。運用コマンドが個別のノードに対して操作するのに対して、クラスタを構成するノードに一括した処理を行うインターフェースを提供しています。また、ユーザ管理操作に加え、データベース、コンテナやテーブルの作成、TQLやSQLによる検索などのデータ操作も提供します。 + +gs_shは、対話形式でサブコマンドを指定して処理を実行する方法と、一連の操作をサブコマンドで記載したスクリプトファイルをバッチで実行する方法の2つの起動方法があります。バッチスクリプトを利用することで、システム構築の省力化や開発時の動作検証の自動化などができます。 + +``` example +//対話形式 +$ gs_sh +//サブコマンド「version」の実行 +gs> version + +//バッチ形式 コマンドの引数にサブコマンドを記載したファイルを指定する +$gs_sh test.gsh +``` + +gs_shでは、ノード起動やクラスタ開始などのクラスタ操作や、コンテナ作成などのデータ操作が実行できます。 + +- クラスタ操作 + - ノードの起動・停止、クラスタの開始・停止、ノードやクラスタなどのステータス表示など + +- データ操作 + - コンテナ作成、索引作成、TQL・SQLの実行など + + + +## 時系列データ自動集計 + +IoTの活用が広がる中で、時間とともに時系列データは大量に発生し、データベースに蓄積されます。 +時系列データを参照・利用する際は、データ量を削減し扱いやすくするために、一定時間間隔での最大値、最小値、平均値などの集計を行うことがあります。 +しかし、大量の時系列データに対する集計演算は重く、結果取得までの待ち時間が長くなる傾向になります。 +そこで、収集された大量の時系列データから、あらかじめバックグラウンドで自動的に集計演算を行い集計結果を蓄積する、自動集計が一般的に用いられます。 +これにより、ユーザは計算済みの集計結果にアクセスできるため、処理時間を短くできます。 + +以下の手順で、運用ツールを用いた時系列データ自動集計を行います。 + +### 処理概要 + +あらかじめ集計対象のコンテナと出力先のコンテナを作成し、作成した集計対象のコンテナに対して、 +時系列データを登録します。登録した時系列データに対して集計を行い、出力先のコンテナに登録を行います。 +集計処理はクラスタ運用管理コマンド・インタプリタ(gs_sh)のバッチモードを用いて実現します。 +自動集計はgs_shでスクリプトファイルを定期実行して実現します。 +定期実行については、Linuxのcronを利用します。 + +処理の流れについて説明します。 + + + +生データの登録先である入力コンテナをetl_input、集計データの登録先である出力コンテナをetl_outputとします。 + +①コンテナ生成 +入力コンテナを作成します。 + +``` example +CREATE TABLE IF NOT EXISTS etl_input ( + ts TIMESTAMP PRIMARY KEY, + value DOUBLE +) PARTITION BY RANGE (ts) EVERY (30, DAY); +``` + +一定期間でデータを自動削除する場合はGridDBの期限解放を設定します。 +入力コンテナに期限解放を設定します。 + +``` example +CREATE TABLE IF NOT EXISTS etl_input ( + ts TIMESTAMP PRIMARY KEY, + value DOUBLE +) USING TIMESERIES WITH ( + expiration_type='PARTITION', + expiration_time=90, + expiration_time_unit='DAY' +) PARTITION BY RANGE (ts) EVERY (30, DAY); +``` + +出力コンテナを作成します。 + +``` example +CREATE TABLE IF NOT EXISTS etl_output ( + ts TIMESTAMP PRIMARY KEY, + value DOUBLE +) PARTITION BY RANGE (ts) EVERY (30, DAY); +``` + +②時系列データ登録 +集計対象のコンテナに時系列データを登録します。 + + + +③データ取得と集計、集計結果の登録 +登録した時系列データを取得して集計を行います。 + + + +一定期間に対する集計を行う際は、GROUP BY RANGEと集計演算を組み合わせて、集計を行います。 + +例を以下に示します。 + +【例1】一定時間間隔の最大値を取得する例 + +``` example +名前: etl_input + + ts value +-----------------------+------- + 2024-01-01T00:00:00 10 + 2024-01-01T00:00:10 30 + 2024-01-01T00:00:20 30 + 2024-01-01T00:00:30 50 + 2024-01-01T00:00:40 50 + 2024-01-01T00:00:50 70 + + +○集計演算 +SELECT ts,max(value) FROM etl_input + WHERE ts BETWEEN TIMESTAMP('2024-01-01T00:00:00Z') AND TIMESTAMP('2024-01-01T00:01:00Z') + GROUP BY RANGE(ts) EVERY (20,SECOND) + + ts value +-----------------------+------- + 2024-01-01T00:00:00 30 + 2024-01-01T00:00:20 50 + 2024-01-01T00:00:40 70 +``` + +【例2】一定時間間隔の最小値を取得する例 + +``` example +名前: etl_input + + ts value +-----------------------+------- + 2024-01-01T00:00:00 10 + 2024-01-01T00:00:10 30 + 2024-01-01T00:00:20 30 + 2024-01-01T00:00:30 50 + 2024-01-01T00:00:40 50 + 2024-01-01T00:00:50 70 + + +○集計演算 +SELECT ts,min(value) FROM etl_input + WHERE ts BETWEEN TIMESTAMP('2024-01-01T00:00:00Z') AND TIMESTAMP('2024-01-01T00:01:00Z') + GROUP BY RANGE(ts) EVERY (20,SECOND) + + ts value +-----------------------+------- + 2024-01-01T00:00:00 10 + 2024-01-01T00:00:20 30 + 2024-01-01T00:00:40 50 +``` + +【例3】一定時間間隔の平均値を取得する例 + +``` example +名前: etl_input + + ts value +-----------------------+------- + 2024-01-01T00:00:00 10 + 2024-01-01T00:00:10 30 + 2024-01-01T00:00:20 30 + 2024-01-01T00:00:30 50 + 2024-01-01T00:00:40 50 + 2024-01-01T00:00:50 70 + + +○集計演算 +SELECT ts,avg(value) FROM etl_input + WHERE ts BETWEEN TIMESTAMP('2024-01-01T00:00:00Z') AND TIMESTAMP('2024-01-01T00:01:00Z') + GROUP BY RANGE(ts) EVERY (20,SECOND) + + ts value +-----------------------+------- + 2024-01-01T00:00:00 20 + 2024-01-01T00:00:20 40 + 2024-01-01T00:00:40 60 +``` + +その他の集計関数は『[GridDB SQLリファレンス](../md_reference_sql/md_reference_sql.md)』を参照してください。 + +集計した結果を出力コンテナに登録します。 + +``` example +INSERT INTO etl_output ts,value; +``` + +上記のデータ取得と集計、集計結果の登録を定期的に実行することで、自動集計を実現します。 +定期実行については、Linuxのcronを利用します。 + +### gs_sh スクリプトファイル + +集計処理をクラスタ運用管理コマンド・インタプリタ(gs_sh)のバッチモードを用いて実現します。 + +gs_shで以下のようなバッチモードのスクリプトファイル(sample.gsh)を作成します。 + +【例1】実行時点で未集計の全データを処理対象にする +``` example +# gs_shスクリプトファイル(sample.gsh) + +# 存在しない場合はインターバルを30日としたパーティショニングテーブルを出力先として作成する +CREATE TABLE IF NOT EXISTS etl_output (ts TIMESTAMP PRIMARY KEY, value DOUBLE) + PARTITION BY RANGE (ts) EVERY (30, DAY); + +# 登録済みの最終実行時刻を取得する。存在しない場合は今から1時間前の時刻を取得する。 +SELECT case when MAX(ts) ISNULL THEN TIMESTAMP_ADD(HOUR,NOW(),-1) else MAX(ts) + end AS lasttime FROM etl_output; + +# 取得した時刻を変数に格納する +getval LastTime + +# 取得した時刻と今の時刻を集計範囲として20秒ごとの平均値を取得して、出力コンテナに登録または更新する +INSERT OR REPLACE INTO etl_output (ts, value) + SELECT ts,avg(value) FROM etl_input + WHERE ts BETWEEN TIMESTAMP('$LastTime') AND NOW() + GROUP BY RANGE(ts) EVERY (20, SECOND); +``` + +【例2】集計範囲を時間単位に揃えて処理対象にする +``` example +# gs_shのスクリプトファイル(sample.gsh) + +# 存在しない場合はインターバルパーティショニング30日の出力コンテナを作成する +CREATE TABLE IF NOT EXISTS etl_output (ts TIMESTAMP PRIMARY KEY, value DOUBLE) + PARTITION BY RANGE (ts) EVERY (30, DAY); + +# 登録済みの最終実行時刻を取得する。存在しない場合は時間単位(HH:00:00)に揃えて今から1時間前の時刻を取得する。 +SELECT case when MAX(ts) ISNULL THEN TIMESTAMP_TRUNC(HOUR, TIMESTAMP_ADD(HOUR,NOW(),-1)) else MAX(ts) + end AS lasttime FROM etl_output; + +# 取得した時刻を変数に格納する +getval LastTime + +# 取得した時刻と時間単位に揃えた今の時刻を集計範囲として20秒ごとの平均値を取得して、出力コンテナに登録または更新する +INSERT OR REPLACE INTO etl_output (ts, value) + SELECT ts,avg(value) FROM etl_input + WHERE ts BETWEEN TIMESTAMP('$LastTime') AND TIMESTAMP_TRUNC(HOUR, NOW()) + GROUP BY RANGE(ts) EVERY (20, SECOND); +``` + +【例3】集計範囲を最終時刻+1時間にして処理対象にする +``` example +# gs_shのスクリプトファイル(sample.gsh) + +# 存在しない場合はインターバルパーティショニング30日の出力コンテナを作成する。 +CREATE TABLE IF NOT EXISTS etl_output (ts TIMESTAMP PRIMARY KEY, value DOUBLE) + PARTITION BY RANGE (ts) EVERY (30, DAY); + +# 登録済みの最終実行時刻を取得する。存在しない場合は時間単位(HH:00:00)に揃えて今から1時間前の時刻を取得する。 +SELECT case when MAX(ts) ISNULL THEN TIMESTAMP_TRUNC(HOUR, TIMESTAMP_ADD(HOUR,NOW(),-1)) else MAX(ts) + end AS lasttime FROM etl_output; + +# 取得した時刻を変数に格納する +getval LastTime + +# 取得した時刻と取得した時間+1時間を集計範囲として20秒ごとの平均値を取得して、出力コンテナに登録または更新する +INSERT OR REPLACE INTO etl_output (ts, value) + SELECT ts,avg(value) FROM etl_input + WHERE ts BETWEEN TIMESTAMP('$LastTime') AND TIMESTAMP_ADD(HOUR, TIMESTAMP_TRUNC(HOUR, TIMESTAMP('$LastTime')),1) + GROUP BY RANGE(ts) EVERY (20, SECOND); +``` + +### 定期実行 + +cronを用いて、定期実行を行います。 +1時間ごとに実行する場合はgsadmユーザで以下のようなcronを作成します。 + +```example +$ su - gsadm +$ crontab -e + +0 * * * * gs_sh /var/lib/gridstore/sample.gsh +``` + +上記のようにcronとgshスクリプトを組み合わせて定期実行を実現します。 + + +# パラメータ + +GridDBの動作を制御するパラメータについて説明します。GridDBのパラメータにはノードの設定情報や利用できるリソースなどの設定を行うノード定義ファイルと、クラスタの動作設定を行うクラスタ定義ファイルがあります。 定義ファイルの項目名と初期状態での設定値とパラメータの意味を説明します。 + +設定値の単位は以下のように指定します。 + +- バイトサイズ: TB、GB、MB、KB、B、T、G、M、K、またはこれらの小文字表記で指定可能。特に記載のない限り、単位の省略はできません。 + +- 時間: h、min、s、msで指定可能。特に記載のない限り、単位の省略はできません。 + +  + +## クラスタ定義ファイル(gs_cluster.json) + + +クラスタ定義ファイルは、クラスタを構成する全ノードで同一の設定にしておく必要があります。partitionNum,storeBlockSizeパラメータはデータベースの構造を決める重要なパラメータのため、GridDBの初期起動後は値の変更ができません。 + +クラスタ定義ファイルの各設定項目の意味を以下に説明します。 + +初期状態で含まれていない項目も項目名を追加することでシステムに認識させることができます。 変更の欄ではパラメータの値の変更可否と変更タイミングを示します。 +- 変更不可 :ノードを一度起動したのちは変更はできません。変更したい場合データベースを初期化する必要があります。 +- 起動   :クラスタを構成する全ノードを再起動することで、変更できます。 +- オンライン:オンライン稼働中にパラメータを変更できます。ただし、変更内容は永続化されないため、定義ファイルの内容を手動で変更する必要があります。 + +  + +| GridDBの構成 | 初期値 | パラメータの意味と制限値 | 変更 | +|----------------------------------------------|-----------|--------------------------------------------------|----------| +| /notificationAddress | 239.0.0.1 | マルチキャストアドレスの標準設定です。cluster,transactionの同じ名前のパラメータが省略された場合、本設定が有効になります。異なる値が設定されている場合、個別設定のアドレスが有効です。 | 起動 | +| /dataStore/partitionNum | 128 | パーティション数を構成するクラスタ台数で分割配置できる公倍数で指定します。 整数: 1以上、10000以下で指定します。 | 変更不可 | +| /dataStore/storeBlockSize | 64KB | ディスクI/Oのサイズ(64KB,1MB,4MB,8MB,16MB,32MB)を指定します。ブロックサイズを大きくすると1ブロックに格納できるレコードが増えるため、大規模テーブルのフルスキャンに向きますが、競合が発生する可能性が高くなります。システムにあったサイズを十分に検討して設定してください。サーバ起動後は変更できません。 | 変更不可 | +| /cluster/clusterName | なし | クラスタを識別するための名称を指定します。必須入力のパラメータです。 | 起動 | +| /cluster/replicationNum | 2 | レプリカ数を指定します。レプリカ数が2の場合、パーティションが2重化されます。 | 起動 | +| /cluster/notificationAddress | 239.0.0.1 | クラスタ構成用マルチキャストアドレスを指定します。 | 起動 | +| /cluster/notificationPort | 20000 | クラスタ構成用マルチキャストポート番号を指定します。 ポート番号として指定可能な範囲の値を指定します。 | 起動 | +| /cluster/notificationInterval | 5秒 | クラスタ構成用マルチキャスト周期です。 1s以上、231s未満の値を指定します。 | 起動 | +| /cluster/heartbeatInterval | 5秒 | クラスタ間でのノードの生存確認チェック周期(ハートビート周期)です。 1s以上、231s未満の値を指定します。 | 起動 | +| /cluster/loadbalanceCheckInterval | 180秒 | クラスタを構成するノード間の負荷バランス調整のため、バランス処理を実施するか否かのデータ採取周期を指定します。 1s以上、231s未満の値を指定します。 | 起動 | +| /cluster/notificationMember | なし | クラスタ構成方式を固定リスト方式にする際に、アドレスリストを指定します。 | 起動 | +| /cluster/notificationProvider/url | なし | クラスタ構成方式をプロバイダ方式にする際に、アドレスプロバイダのURLを指定します。 | 起動 | +| /cluster/notificationProvider/updateInterval | 5秒 | アドレスプロバイダからリストを取得する間隔を指定します。1s以上、231s未満の値を指定します。 | 起動 | +| /sync/timeoutInterval | 30秒 | クラスタ間のデータ同期時のタイムアウト時間を指定します。 タイムアウトが発生した場合、システムの負荷が高い、障害発生などの可能性があります。 1s以上、231s未満の値を指定します。 | 起動 | +| /cluster/rackZoneAwareness | なし |ラックゾーンアウェアネス機能を利用するかどうかを指定します。 | 起動 | +| /transaction/notificationAddress | 239.0.0.1 | クライアントが初期に接続するマルチキャストアドレスです。クライアントにはマスタノードが通知されます。 | 起動 | +| /transaction/notificationPort | 31999 | クライアントが初期に接続するマルチキャストポートです。ポート番号として指定可能な範囲の値を指定します。 | 起動 | +| /transaction/notificationInterval | 5秒 | クライアントへのマスタ通知用マルチキャスト周期。1s以上、231s未満の値を指定します。 | 起動 | +| /transaction/replicationMode | 0 | トランザクションでデータ更新をする時のデータの同期(レプリケーション)方法を指定します。文字列または整数で、 "ASYNC"または0(非同期)、"SEMISYNC"または1(準同期)を指定します。 | 起動 | +| /transaction/replicationTimeoutInterval | 10秒 | トランザクションが準同期レプリケーションでデータを同期する際のノード間通信のタイムアウト時間を指定します。1s以上、231s未満の値を指定します。 | 起動 | +| /transaction/authenticationTimeoutInterval | 5秒 | 認証タイムアウト時間を指定します。 | 起動 | +| /transaction/useMultitenantMode | false | データベース統計情報(#database_stats)におけるデータ管理情報に関する項目を表示させる場合に指定します。指定しない場合は該当項目は未設定値として表示されます。 | 起動 | +| /transaction/siteReplication/enable | false | サイト間レプリケーション連携機能を有効にするかを指定します | オンライン | +| /transaction/siteReplication/siteConnectionId | "" | サイト間レプリケーション連携機能のキーとなる接続IDを指定します | 起動 | +| /transaction/siteReplication/heartbeatInterval | 15秒 | サイト間接続のハートビート間隔(秒)を指定します | 起動 | +| /transaction/siteReplication/heartbeatRetryCount | 1 | ハートビートの再試行回数を指定します | 起動 | +| /transaction/siteReplication/partitionCheckInterval | 15秒 | 各パーティションの状態監視間隔(秒)を指定します | 起動 | +| /transaction/siteReplication/keepLogFileCount | 5 | トランザクションログファイルの保持数を指定します | オンライン | +| /transaction/siteReplication/syncWaitTime | 0ミリ秒 | ログ欠損時の同期処理実行間隔(ミリ秒)を指定します | 起動 | +| /transaction/siteReplication/limitUpdateDelayTime | 300秒 | スタンバイ側の更新異常判定時間(秒)を指定します | オンライン | +| /transaction/siteReplication/limitLsnDifference | 100000000 | スタンバイ側の更新異常判定のLSN差分閾値を指定します | オンライン | +| /transaction/siteReplication/replicationMember | "" | 相手サイトのノード構成情報(アドレスとポート番号リスト)を指定します | 起動 | +| /sql/notificationAddress | 239.0.0.1 | JDBC/ODBCクライアントが初期に接続するマルチキャストアドレスです。クライアントにはマスタノードが通知されます。 | 起動 | +| /sql/notificationPort | 41999 | JDBC/ODBCクライアントが初期に接続するマルチキャストポートです。ポート番号として指定可能な範囲の値を指定します。| 起動 | +| /sql/notificationInterval | 5秒 |JDBC/ODBCクライアントへのマスタ通知用マルチキャスト周期です。1s以上、231s未満の値を指定します。 | 起動 | +| /sql/costBasedJoin | true | SQLプラン生成の際、ジョイン順序の決定にコストベースによる方法を用いるかどうかを指定します。用いない(false)場合は、ルールベースによる方法でジョイン順を決定します。 | 起動 | +| /sql/costBasedJoinDriving | true | SQLプラン生成の際、ジョイン駆動表の決定にコストベースによる方法を用いるかどうかを指定します。用いない(false)場合は、ルールベースによる方法で駆動表を決定します。 | 起動 | +| /security/authentication | INTERNAL | 認証方式として、INTERNAL(内部認証) / LDAP(LDAP認証)のいずれかを指定。| 起動 | +| /security/ldapRoleManagement | USER | GridDBのロールとマッピングする対象として、USER(LDAPユーザ名でマッピング) / GROUP(LDAPグループ名でマッピング)のいずれかを指定。| 起動 | +| /security/ldapUrl | | LDAPサーバを次の形式で指定。ldaps://host[:port] | 起動 | +| /security/ldapUserDNPrefix | | ユーザのDN(識別子)を生成するために、ユーザ名の前に連結する文字列を指定。| 起動 | +| /security/ldapUserDNSuffix | | ユーザのDN(識別子)を生成するために、ユーザ名の後に連結する文字列を指定。| 起動 | +| /security/ldapBindDn | | LDAP管理ユーザのDNを指定。| 起動 | +| /security/ldapBindPassword | | LDAP管理ユーザのパスワードを指定。| 起動 | +| /security/ldapBaseDn | | 検索を開始するルートDNを指定。| 起動 | +| /security/ldapSearchAttribute | uid | 検索対象となる属性を指定。| 起動 | +| /security/ldapMemberOfAttribute | memberof | ユーザが所属するグループDNが設定された属性を指定。(ldapRoleManagement=GROUPの場合に有効)| 起動 | +| /system/serverSslMode | DISABLED | SSL接続設定として、DISABLED(SSL無効)、PREFERRED(SSL有効、ただし非SSL接続も許容)、REQUIRED(SSL有効、非SSL接続は不可)のいずれかを指定。| 起動 | +| /system/sslProtocolMaxVersion | TLSv1.2 | TLSプロトコルバージョンとして、TLSv1.2, TLSv1.3のいずれかを指定。| 起動 |  + + +## ノード定義ファイル(gs_node.json) + +ノード定義ファイルでは、クラスタを構成するノードのリソースを初期設定します。オンライン運用では、配置されているリソース、アクセス頻度などから、オンラインで値を変更できるパラメータもあります。 + +ノード定義ファイルの各設定項目の意味を以下に説明します。 + +初期状態で含まれていない項目も項目名を追加することでシステムに認識させることができます。 変更の欄ではパラメータの値の変更可否と変更タイミングを示します。 +- 変更不可 :ノードを一度起動したのちは変更はできません。変更したい場合データベースを初期化する必要があります。 +- 起動   :対象ノードを再起動することで、変更できます。 +- オンライン:オンライン稼働中にパラメータを変更できます。ただし、変更内容は永続化されないため、定義ファイルの内容を手動で変更する必要があります。 + +ディレクトリの指定は、フルパスもしくは、GS_HOME環境変数からの相対パスで指定します。相対パスは、GS_HOMEの初期ディレクトリが基点となります。GS_HOMEの初期設定ディレクトリは、/var/lib/gridstoreです。 + +| GridDBの構成 | 初期値 | パラメータの意味と制限値 | 変更 | +|--------------------------------------|----------------------------|---------------------------------|-----| +| /serviceAddress | なし | cluster,transaction,syncの各サービスアドレスの初期値を設定。3項目のアドレスを設定せずに本アドレスの設定のみで各サービスアドレスの初期値を設定できる。 | 起動 | +| /dataStore/dbPath | data | データファイル、チェックポイントログファイルの配置ディレクトリをフルパスもしくは、相対パスで指定する。 | 起動 | +| /dataStore/transactionLogPath | txnlog | トランザクションログファイルの配置ディレクトリをフルパスもしくは、相対パスで指定する。 | 起動 | +| /dataStore/dbFileSplitCount | 0 (分割無し) | データファイルの分割数。 | 不可 | +| /dataStore/backupPath | backup | バックアップファイルの配置ディレクトリのパスを指定。 | 起動 | +| /dataStore/syncTempPath | sync | データ同期用一時ファイルの配置ディレクトリのパスを指定。 | 起動 | +| /dataStore/storeMemoryLimit | 1024MB | データ管理用メモリの上限。 | オンライン | +| /dataStore/concurrency | 4 | 処理の並列度を指定。 | 起動 | +| /dataStore/recoveryConcurrency | (上記concurrencyと同じ値)| リカバリ処理の並列度を指定。 | 起動 | +| /dataStore/logWriteMode | 1 | ログ書き出しモード・周期を指定。 -1または0の場合トランザクション終了時にログ書き込み、1以上231未満の場合、秒単位の周期でログ書き込み | 起動 | +| /dataStore/persistencyMode | 1(NORMAL) | 永続化モードでは、データ更新時の更新ログファイルの保持期間を指定する。1(NORMAL)、2(KEEP_ALL_LOG) のいずれかを指定。"NORMAL" は、チェックポイントにより、不要になったトランザクションログファイルは削除されます。"KEEP_ALL_LOG"は、全てのトランザクションログファイルを残します。 | 起動 | +| /dataStore/affinityGroupSize | 4 | アフィニティグループ数 | 起動 | +| /dataStore/storeCompressionMode | NO_COMPRESSION | データブロック圧縮モードの指定。以下の値を設定可能。
 ・"NO_COMPRESSION":圧縮機能を無効にします。
 ・"COMPRESSION_ZLIB"、"COMPRESSION":ZLIB圧縮を有効にします。
 ・"COMPRESSION_ZSTD":ZSTD圧縮を有効にします。| 起動 | +| /dataStore/enableAutoArchive | false | 自動アーカイブ機能を利用するか | 起動 | +| /dataStore/autoArchiveName | "" | 自動アーカイブ名 | 起動 | +| /dataStore/enableAutoArchiveOutputInfo | true | 自動アーカイブ実行時のクラスタやチェックポイント実行に付随するメタ情報を出力するか。自動アーカイブ有効な場合のみ有効化 | 起動 | +| /dataStore/enableAutoArchiveOutputInfoPath | cluster | 自動アーカイブ実行時のクラスタやチェックポイント実行に付随するメタ情報を出力先フォルダ名 | 起動 | +| /checkpoint/checkpointInterval | 300秒 | メモリ上のデータ更新ブロックを永続化するチェックポイント処理の実行周期 | 起動 | +| /checkpoint/partialCheckpointInterval | 10 | チェックポイント実行時に、チェックポイントログファイルへブロック管理情報を書き込む処理の分割数 | 起動 | +| /cluster/serviceAddress | 上位のserviceAddressに従う | クラスタ構成用待ち受けアドレス | 起動 | +| /cluster/servicePort | 10010 | クラスタ構成用待ち受けポート | 起動 | +| /cluster/notificationInterfaceAddress | "" | マルチキャストパケットを送信するインターフェースのアドレスを指定 | 起動 | +| /cluster/rackZoneId | "" | 同一の可用性レベルを持つノードとしてグルーピングするための識別子 | 起動 | +| /cluster/goalAssignmentRule | DEFAULT | 新規構成検出時のクラスタパーティション配置表の割当規則。デフォルト(DEFAULT)、ラウンドロビン(ROUNDROBIN)のいずれかを指定 | 起動 | +| /cluster/enableStableGoal | false | クラスタパーティション配置表外部指定機能の利用有無 | 起動 | +| /cluster/enableStandbyMode | false | スタンバイモードを有効にするか | 起動 | +| /sync/serviceAddress | 上位のserviceAddressに従う | クラスタ間でデータ同期のための受信アドレス | 起動 | +| /sync/servicePort | 10020 | データ同期用待ち受けポート | 起動 | +| /sync/redoLogErrorKeepInterval | 600s | REDOエラー発生時の表示内容の保持期間(この期間を過ぎると自動削除) +| /sync/redoLogMaxMessageSize | 2097152 | REDO分割実行となるファイルサイズ単位。指定サイズを超えるまで対象ファイルからログ読み出し、レプリケーション、REDOを行う操作手順が分割実行される | +| /sync/enableKeepLog | false | ノード障害発生後にトランザクションログを指定期間保持する機能を有効にするか| オンライン | +| /sync/keepLogInterval | 1200s | トランザクションログ保持期間の上限。| オンライン| +| /system/serviceAddress | 上位のserviceAddressに従う | 運用コマンド用待ち受けアドレス | 起動 | +| /system/servicePort | 10040 | 運用コマンド用待ち受けポート | 起動 | +| /system/eventLogPath | log | イベントログファイルの配置ディレクトリのパス | 起動 | +| /system/securityPath | security | サーバ証明書、秘密鍵の配置ディレクトリをフルパスもしくは、相対パスで指定。 | 起動 | +| /system/serviceSslPort | 10045 | 運用コマンド用待ち受けSSLポート | 起動 | +| /transaction/serviceAddress | 上位のserviceAddressに従う | デフォルトトランザクション処理用待ち受けアドレス | 起動 | +| /transaction/publicServiceAddress | 上位のserviceAddressに従う | クライアント専用トランザクション処理用待ち受けアドレス | 起動 | +| /transaction/servicePort | 10001 | トランザクション処理用待ち受けポート | 起動 | +| /transaction/connectionLimit | 5000 | トランザクション処理接続数の上限 | 起動 | +| /transaction/totalMemoryLimit | 1024MB | トランザクション処理用メモリエリアのサイズ上限値 | 起動 | +| /transaction/transactionTimeoutLimit | 300秒 | トランザクションタイムアウト時間の上限値 | 起動 | +| /transaction/reauthenticationInterval | 0s(無効) | 再認証間隔。(指定時間を超えると再認証が行われ、既に接続中の一般ユーザに対する権限等の変更が反映される。) デフォルト(0s)の場合、再認証は無効。| オンライン | +| /transaction/workMemoryLimit | 128MB | トランザクション処理でのデータ参照(get、TQL)時のメモリの上限サイズ(並列度ごと) | オンライン | +| /transaction/notificationInterfaceAddress | "" | マルチキャストパケットを送信するインターフェースのアドレスを指定 | 起動 | +| /sql/serviceAddress | 上位のserviceAddressに従う | デフォルトNewSQL I/Fアクセスの処理用待ち受けアドレス | 起動 | +| /sql/publicServiceAddress | 上位のserviceAddressに従う | クライアント専用NewSQL I/Fアクセスの処理用待ち受けアドレス | 起動 | +| /sql/servicePort | 20001 | NewSQL I/Fアクセスの処理用待ち受けポート | 起動 | +| /sql/storeSwapFilePath | swap | SQL中間ストアのスワップファイルの配置ディレクトリのパス | 起動 | +| /sql/storeSwapFileSizeLimit | INT32_MAX (2PB) | SQL中間ストアのスワップファイルのサイズ上限値(単位:MB) | 起動 | +| /sql/storeSwapSyncSize | 1024MB | SQL中間ストアのスワップファイルのsyncおよび物理メモリキャッシュ消去を行うサイズ | 起動 | +| /sql/storeMemoryLimit | 1024MB | SQL処理でメモリ上に保持する中間データの最大値 | 起動 | +| /sql/workMemoryLimit | 32MB | SQL処理でオペレータが使用するメモリの最大値 | 起動 | +| /sql/workCacheMemory | 128MB | SQL処理でオペレータが使用するメモリのうち、使用後に解放せずにキャッシュするメモリサイズ | 起動 | +| /sql/connectionLimit | 5000 | NewSQL I/Fアクセスの処理接続数の上限 | 起動 | +| /sql/concurrency | 4 | 同時実行スレッド数 | 起動 | +| /sql/traceLimitExecutionTime | 300秒 | スロークエリをイベントログに残す実行時間の下限値 | オンライン | +| /sql/traceLimitQuerySize | 1000 | スロークエリに残るクエリ文字列のサイズ上限(バイト) | オンライン | +| /sql/notificationInterfaceAddress | "" | マルチキャストパケットを送信するインターフェースのアドレスを指定 | 起動 | +| /sql/addBatchMaxCount | 1000 | バッチ更新件数上限値 | 起動 | +| /sql/tablePartitioningMaxAssignNum | 10000 | テーブルパーティショニング分割個数最大数 | 起動 | +| /trace/fileCount | 30 | イベントログファイルの上限数 | 起動 | +| /security/userCacheSize | 1000 | キャッシュする一般ユーザ/LDAPユーザエントリ数を指定。 | 起動 | +| /security/userCacheUpdateInterval | 60 | キャッシュの更新間隔(秒)を指定。| 起動 | + + +監査ログに関する設定 + +| GridDBの構成 | 初期値 | パラメータの意味と制限値 | 変更 | +|--------------------------------------|----------------------------|---------------------------------|-----| +| /trace/auditLogs | false | 監査ログ機能の有効化 | 起動 | +| /trace/auditLogsPath | "" | 監査ログファイルの出力先パス | 起動 | +| /trace/auditFileLimit | "" | 監査ログファイルの1ファイルのサイズ上限値 | 起動 | +| /trace/auditMessageLimit | "" | 監査ログファイルの1監査イベントのメッセージサイズ上限値 | 起動 | +| /trace/auditConnect | INFO | 接続(接続、切断、認証)に関する監査ログの出力レベル | オンライン | +| /trace/auditSqlRead | CRITICAL | SQL(SELECT)に関する監査ログの出力レベル | オンライン | +| /trace/auditSqlWrite | CRITICAL | SQL(DML)に関する監査ログの出力レベル | オンライン | +| /trace/auditDdl | CRITICAL | SQL(DDL)に関する監査ログの出力レベル | オンライン | +| /trace/auditDcl | CRITICAL | SQL(DCL)に関する監査ログの出力レベル | オンライン | +| /trace/auditNosqlRead | CRITICAL | NoSQL(参照系)に関する監査ログの出力レベル | オンライン | +| /trace/auditSqlWrite | CRITICAL | NoSQL(更新系)に関する監査ログの出力レベル | オンライン | +| /trace/auditSystem | CRITICAL | 運用コマンド(STAT以外)に関する監査ログの出力レベル | オンライン | +| /trace/auditStat | CRITICAL | 運用コマンド(STAT)に関する監査ログの出力レベル | オンライン | + +システムの制限値 +================ + +数値に関する制限 +---------------- + +| ブロックサイズ | 64KB | 1MB~32MB | +|--------------------------------------------|-------------|-------------------| +| 文字列型/空間型のデータサイズ | 31KB | 128KB | +| BLOB型のデータサイズ | 1GB - 1Byte | 1GB - 1Byte | +| 配列長 | 4000 | 65000 | +| カラム数 | 1024個 | 約7K~32000個(※1) | +| 索引数(コンテナ1個あたり) | 1024個 | 16000個 | +| ユーザ数 | 128 | 128 | +| データベース数 | 128個 | 128個 | +| アフィニティグループ数 | 10000 | 10000 | +| 解放期限付き時系列コンテナの分割数 | 160 | 160 | +| GridDBノードが管理する通信バッファのサイズ | 約2GB | 約2GB | + +| ブロックサイズ | 64KB | 1MB | 4MB | 8MB | 16MB | 32MB | +|----------------------------|-------------|-------------|-------------|-------------|-------------|-------------| +| パーティションサイズ | 約4TB | 約64TB | 約256TB | 約512TB | 約1PB | 約2PB | + +- 文字列型 + - 制限値はUTF-8エンコード相当 +- 空間型 + - 制限値は内部格納形式相当 +- (※1) カラム数 + - カラム数の上限には、固定長カラム(ブール型、整数型、浮動小数点数型、時刻型)の合計サイズが59KBまでという制約があります。この制約に当てはまらない場合は、カラム数の上限は32000個になります。 + - 例) LONG型カラムのみのコンテナの場合:カラム上限数は7552 ( 固定長カラムの合計サイズ 8B \* 7552 = 59KB ) + - 例) BYTE型カラムのみのコンテナの場合:カラム上限数は32000 ( 固定長カラムの合計サイズ 1B \* 32000 = 約30KB → 固定長カラムのサイズ制約には当てはまらないので、上限の32000個のカラムを作成できる) + - 例) STRING型カラムのみのコンテナの場合:カラム上限数は32000 ( 固定長カラムのサイズ制約には当てはまらないので、上限の32000個のカラムを作成できる) + +ネーミングに関する制限 +---------------------- + +| 名前 | 使用可能な文字 | 長さの上限 | +|------------------------|----------------------------------------------------|-------------------------------| +| 管理ユーザ | 先頭が"gs\#"で始まる。それ以外の文字は英数字、'\_' | 64文字 | +| 一般ユーザ | 英数字、'\_'、'-'、'.'、'/'、'=' | 64文字 | +| ロール | 英数字、'\_'、'-'、'.'、'/'、'=' | 64文字 | +| パスワード | Unicodeコードポイントを文字とする
任意個数の文字の列(NULL文字(U+0000)は不可) | 64バイト(UTF-8エンコード換算) | +| クラスタ名 | 英数字、'\_'、'-'、'.'、'/'、'=' | 64文字 | +| データベース名 | 英数字、'\_'、'-'、'.'、'/'、'=' | 64文字 | +| コンテナ名
テーブル名
ビュー名 | 英数字、'\_'、'-'、'.'、'/'、'='
(ノードアフィニティを指定する場合のみ'@') | 16384文字(ブロックサイズ64KB)
131072文字(ブロックサイズ1MB~32MB) | +| カラム名 | 英数字、'\_'、'-'、'.'、'/'、'=' | 256文字 | +| 索引名 | 英数字、'\_'、'-'、'.'、'/'、'=' | 16384文字(ブロックサイズ64KB)
131072文字(ブロックサイズ1MB~32MB) | +| バックアップ名 | 英数字、'\_' | 12文字 | +| データアフィニティ | 英数字、'\_'、'-'、'.'、'/'、'=' | 8文字 | + +- 大文字小文字の区別 + - クラスタ名・バックアップ名、パスワードは、大文字小文字の区別があります。したがって、例に示すような大文字小文字のみ異なる表記は、異なるものとして扱います。 + + ``` example + 例) mycluster, MYCLUSTER + ``` + +- それ以外の名前は、大文字小文字の区別がありません。大文字小文字表記は同一視します。 +- 作成時に指定された大文字小文字の表記は、データとして保持します。 +- TQL/SQL構文で名前を引用符"で囲う場合は、大文字小文字の表記を区別した検索を行います。 + + ``` example + 例) コンテナ名 SensorData の Column1 を検索する場合 + select "Column1" from "SensorData" 検索可能 + select "COLUMN1" from "SENSORDATA" "SENSORDATA"というコンテナは存在しないので検索不可 + ``` + +- TQL/SQL構文での名前指定 + - 引用符"で囲わない場合は、英数字、'\_'(数字は先頭不可)の名前しか記述できません。それ以外の名前を記述する場合には引用符で囲んでください。 + ``` example + 例) select "012column", data_15 from "container.2017-09" + ``` + +付録 +==== + + +ディレクトリ構成(EE) +---------------- + +GridDBのサーバやクライアントをインストールした時のディレクトリ構成を以下に示します。X.x.xはGridDBのバージョンを表します。 + +``` example +(サーバ/クライアントをインストールしたマシン) +/usr/griddb-ee-X.X.X/ GridDBインストールディレクトリ + Readme.txt + bin/ + gs_xxx 各種コマンド + gsserver サーバモジュール + gssvc サーバモジュール + conf/ + etc/ + lib/ + gridstore-tools-X.X.X.jar + XXX.jar フリーソフトウェア + license/ + misc/ + prop/ + sample/ + +/usr/share/java/gridstore-tools.jar -> /usr/griddb-ee-X.X.X/lib/gridstore-tools-X.X.X.jar + +/usr/griddb-ee-webui-X.X.X/ 統合運用管理GUIディレクトリ + conf/ + etc/ + griddb-webui-ee-X.X.X.jar + +/usr/griddb-ee-webui/griddb-webui.jar -> /usr/griddb-ee-webui-X.X.X/griddb-webui-ee-X.X.X.jar + +/var/lib/gridstore/ GridDBホームディレクトリ(作業ディレクトリ) + admin/ 統合運用管理GUIホームディレクトリ(adminHome) + backup/ バックアップファイル格納ディレクトリ + conf/ 定義ファイルの格納ディレクトリ + gs_cluster.json クラスタ定義ファイル + gs_node.json ノード定義ファイル + password ユーザ定義ファイル + data/ データベースファイル格納ディレクトリ + txnlog/ トランザクションログ格納ディレクトリ + expimp/ Export/Importツールディレクトリ + log/ イベントログ格納ディレクトリ + webapi/ Web APIディレクトリ + +/usr/bin/ + gs_xxx -> /usr/griddb-ee-X.X.X/bin/gs_xxx 各種コマンドへのリンク + gsserver -> /usr/griddb-ee-X.X.X/bin/gsserver サーバモジュールへのリンク + gssvc -> /usr/griddb-ee-X.X.X/bin/gssvc サーバモジュールへのリンク + +/usr/lib/systemd/system + gridstore.service systemd ユニットファイル + +/usr/griddb-ee-X.X.X/bin + gridstore サービススクリプト + +(ライブラリをインストールしたマシン) +/usr/griddb-ee-X.X.X/ インストールディレクトリ + lib/ + gridstore-X.X.X.jar + gridstore-advanced-X.X.X.jar + gridstore-call-logging-X.X.X.jar + gridstore-conf-X.X.X.jar + gridstore-jdbc-X.X.X.jar + gridstore-jdbc-call-logging-X.X.X.jar + gridstore.h + libgridstore.so.0.0.0 + libgridstore_advanced.so.0.0.0 + python/ Pythonライブラリディレクトリ + nodejs/ Node.jsライブラリディレクトリ + sample/ + griddb_client.node + griddb_node.js + go/ Goライブラリディレクトリ + sample/ + pkg/linux_amd64/griddb/go_client.a + src/griddb/go_client/ Goライブラリのソースディレクトリ + conf/ + javadoc/ + +/usr/griddb-ee-webapi-X.X.X/ Web APIディレクトリ + conf/ + etc/ + griddb-webapi-ee-X.X.X.jar + +/usr/girddb-webapi/griddb-webapi.jar -> /usr/griddb-ee-webapi-X.X.X/griddb-webapi-ee-X.X.X.jar + +/usr/share/java/gridstore.jar -> /usr/griddb-ee-X.X.X/lib/gridstore-X.X.X.jar +/usr/share/java/gridstore-advanced.jar -> /usr/griddb-ee-X.X.X/lib/gridstore-advanced-X.X.X.jar +/usr/share/java/gridstore-call-logging.jar -> /usr/griddb-ee-X.X.X/lib/gridstore-call-logging-X.X.X.jar +/usr/share/java/gridstore-conf.jar -> /usr/griddb-ee-X.X.X/lib/gridstore-conf-X.X.X.jar +/usr/share/java/gridstore-jdbc.jar -> /usr/griddb-ee-X.X.X/lib/gridstore-jdbc-X.X.X.jar +/usr/share/java/gridstore-jdbc-call-logging.jar -> /usr/griddb-ee-X.X.X/lib/gridstore-jdbc-call-logging-X.X.X.jar + + +/usr/include/gridstore.h -> /usr/griddb-ee-X.X.X/lib/gridstore.h + +/usr/lib64/ ※CentOSの場合は/usr/lib64、Ubuntu Serverの場合は/usr/lib/x86_64-linux-gnu + libgridstore.so -> libgridstore.so.0 + libgridstore.so.0 -> libgridstore.so.0.0.0 + libgridstore.so.0.0.0 -> /usr/griddb-ee-X.X.X/lib/libgridstore.so.0.0.0 + libgridstore_advanced.so -> libgridstore_advanced.so.0 + libgridstore_advanced.so.0 -> libgridstore_advanced.so.0.0.0 + libgridstore_advanced.so.0.0.0 -> /usr/griddb-ee-X.X.X/lib/libgridstore_advanced.so.0.0.0 +``` diff --git a/manuals/GridDB_Java_API_Reference.html b/manuals/md_reference_java_api/md_reference_java_api.html similarity index 91% rename from manuals/GridDB_Java_API_Reference.html rename to manuals/md_reference_java_api/md_reference_java_api.html index 03eaf00..707d6ae 100644 --- a/manuals/GridDB_Java_API_Reference.html +++ b/manuals/md_reference_java_api/md_reference_java_api.html @@ -1,14131 +1,14917 @@ - - - - -GridDB Java APIリファレンス - - - - - - - - -
- -

GridDB Java APIリファレンス

- - - - - - -
-

1 API

-
- - - -
- -
-

1.1 API一覧

-
-
-

Package com.toshiba.mwcloud.gs

-
-
GridDBの公開インタフェースを定義します。
-
-

See: Description

-
-
-
    -
  • - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Interface Summary 
    InterfaceDescription
    AggregationResult -
    集計演算の結果を保持します。
    -
    Collection<K,R> -
    ロウ集合を汎用的に管理するためのコンテナです。
    -
    Container<K,R> -
    同一タイプのロウ集合からなるGridDBの構成要素に対しての、管理機能を提供します。
    -
    GridStore -
    接続したGridDBシステム内のデータベースに属するデータを操作するための機能を提供します。
    -
    PartitionController -
    パーティション状態の取得や操作のためのコントローラです。
    -
    Query<R> -
    特定のContainerに対応付けられたクエリを保持し、結果取得方法の設定ならびに実行・結果取得を行う機能を持ちます。
    -
    Row -
    任意のスキーマについて汎用的にフィールド操作できるロウです。
    -
    Row.Key -
    ロウキーに関するカラムのみから構成されるRowの一種です。
    -
    Row.WithKey<K> -
    マッピングに用いるロウオブジェクトの型について、常に指定のロウキー型と対応付くことを表します。
    -
    RowSet<R> -
    クエリ実行より求めたロウの集合を管理します。
    -
    TimeSeries<R> -
    時刻をロウキーとする、時系列処理に特化したコンテナです。
    -
    -
  • -
  • - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Class Summary 
    ClassDescription
    Collection.BindType -
    Collectionならびにその型パラメータと結びつく Container.BindTypeを構築するための、補助クラスです。
    -
    ColumnInfo -
    カラムのスキーマに関する情報を表します。
    -
    Container.BindType<K,R,C extends Container<K,R>> -
    Containerならびにその型パラメータと結びつく型情報を表します。
    -
    ContainerInfo -
    特定のコンテナに関する情報を表します。
    -
    Geometry -
    2次元、もしくは3次元の空間範囲を示すジオメトリデータを管理します。
    -
    GridStoreFactory -
    GridStoreインスタンスを管理します。
    -
    IndexInfo -
    索引の設定内容を表します。
    -
    QueryAnalysisEntry -
    クエリプランならびにクエリ処理解析結果を構成する一連の情報の一つを示します。
    -
    RowKeyPredicate<K> -
    ロウキーの合致条件を表します。
    -
    TimeSeries.BindType -
    TimeSeriesならびにその型パラメータと結びつく Container.BindTypeを構築するための、補助クラスです。
    -
    TimeSeriesProperties -
    時系列を新規作成または変更する際に使用される、オプションの構成情報を表します。
    -
    TimestampUtils -
    時刻データを操作するためのユーティリティ機能を提供します。
    -
    TriggerInfo -
    コンテナの更新を監視するためのトリガ情報を表します。
    -
    -
  • -
  • - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Enum Summary 
    EnumDescription
    Aggregation -
    ロウ集合またはその特定のカラムに対する、集計演算の方法を示します。
    -
    CompressionMethod -
    圧縮方式の種別を表します。
    -
    ContainerType -
    コンテナの種別を表します。
    -
    FetchOption -
    クエリ実行結果を取得する際のオプション項目です。
    -
    GeometryOperator -
    空間範囲同士の関係性についての制約を定義します。
    -
    GSType -
    GridDB上のフィールド値の型を表します。
    -
    IndexType -
    Containerに設定する索引の種別を示します。
    -
    InterpolationMode -
    ロウの補間方法の種別を表します。
    -
    QueryOrder -
    クエリにおける要求ロウ順序を表します。
    -
    TimeOperator -
    TimeSeriesのキー時刻に基づく、ロウの特定方法を表します。
    -
    TimeUnit -
    時系列処理で用いる時間の単位を示します。
    -
    TriggerInfo.EventType -
    トリガで監視対象とする更新操作種別を表します。
    -
    TriggerInfo.Type -
    トリガの種別を表します。
    -
    -
  • -
  • - - - - - - - - - - - - - - - - -
    Exception Summary 
    ExceptionDescription
    GSException -
    GridDB機能の処理中に発生した例外状態を示します。
    -
    GSTimeoutException -
    要求した処理が既定の時間内に終了しなかったことを示す例外です。
    -
    -
  • -
  • - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Annotation Types Summary 
    Annotation TypeDescription
    NotNull -
    NOT NULL制約を持つカラムであることを示します。
    -
    Nullable -
    NOT NULL制約を持たないカラムであることを示します。
    -
    RowField -
    Containerの処理におけるマッピング対象のロウフィールドについて、オプションを設定します。
    -
    RowKey -
    Containerのキーと対応することを示します。
    -
    TransientRowField -
    Containerの処理において、マッピング対象外のロウフィールドであることを宣言します。
    -
    -
  • -
- - - -

Package com.toshiba.mwcloud.gs Description

-
GridDBの公開インタフェースを定義します。
-
- - -
-
-

Enum Aggregation

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • java.lang.Enum<Aggregation>
    • -
    • -
        -
      • com.toshiba.mwcloud.gs.Aggregation
      • -
      -
    • -
    -
  • -
-
-
    -
  • -
    -
    All Implemented Interfaces:
    -
    java.io.Serializable, java.lang.Comparable<Aggregation>
    -
    -
    -
    -
    public enum Aggregation
    -extends java.lang.Enum<Aggregation>
    -
    ロウ集合またはその特定のカラムに対する、集計演算の方法を示します。 -

    現バージョンでは、TimeSeriesに対してのみ使用できます。

    - -

    重み付きの演算の場合、キーの値に基づき重み付け値を決定します。 TimeSeriesに対する重み付きの演算の場合、前後それぞれの時刻のロウとの中間時刻間の期間を特定の単位で換算したものを、重み付け値として使用します。ただし、前後いずれかの時刻のロウのみが存在しない場合は、存在しないロウの代わりに重み付け対象のロウを用いて求めた重み付け値を使用します。前後いずれの時刻のロウも存在しない場合は、重み付け値として1 - (単位は前後いずれかのロウが存在する場合と同一)を使用します。

    - -

    演算の内部処理にてオーバーフローが発生した場合、浮動小数点数型では負または正の無限大、整数型では未定義の値が求まります。また、浮動小数点数型にて演算対象に非数(NaN)が含まれていた場合、非数が求まります。

    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Enum Constant Summary

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Enum Constants 
      Enum Constant and Description
      AVERAGE -
      平均を求める演算です。
      -
      COUNT -
      標本数、すなわち対象ロウの個数を求める演算です。
      -
      MAXIMUM -
      最大値を求める演算です。
      -
      MINIMUM -
      最小値を求める演算です。
      -
      STANDARD_DEVIATION -
      標準偏差を求める演算です。
      -
      TOTAL -
      合計を求める演算です。
      -
      VARIANCE -
      分散を求める演算です。
      -
      WEIGHTED_AVERAGE -
      重み付きで平均を求める演算です。
      -
      -
    • -
    - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - - - - - -
      Methods 
      Modifier and TypeMethod and Description
      static AggregationvalueOf(java.lang.String name) -
      Returns the enum constant of this type with the specified name.
      -
      static Aggregation[]values() -
      Returns an array containing the constants of this enum type, in -the order they are declared.
      -
      -
        -
      • - - -

        Methods inherited from class java.lang.Enum

        -clone, compareTo, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf
      • -
      -
        -
      • - - -

        Methods inherited from class java.lang.Object

        -getClass, notify, notifyAll, wait, wait, wait
      • -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Enum Constant Detail

      - - - -
        -
      • -

        AVERAGE

        -
        public static final Aggregation AVERAGE
        -
        平均を求める演算です。 -

        数値型のカラムに対してのみ使用できます。演算結果の型は常にDOUBLEとなります。対象となるロウが1つも存在しない場合、演算結果は設定されません。

        -
      • -
      - - - -
        -
      • -

        COUNT

        -
        public static final Aggregation COUNT
        -
        標本数、すなわち対象ロウの個数を求める演算です。 -

        任意のカラムに対して使用できます。演算結果の型は常にLONGとなります。対象となるロウが1つも存在しない場合、演算結果の値は0となります。

        -
      • -
      - - - -
        -
      • -

        MAXIMUM

        -
        public static final Aggregation MAXIMUM
        -
        最大値を求める演算です。 -

        大小比較できる型、すなわち数値型や時刻型のカラムに対してのみ使用できます。演算結果の型は、対象のカラムと同一の型となります。対象となるロウが1つも存在しない場合、演算結果は設定されません。

        -
      • -
      - - - -
        -
      • -

        MINIMUM

        -
        public static final Aggregation MINIMUM
        -
        最小値を求める演算です。 -

        大小比較できる型、すなわち数値型や時刻型のカラムに対してのみ使用できます。演算結果の型は、対象のカラムと同一の型となります。対象となるロウが1つも存在しない場合、演算結果は設定されません。

        -
      • -
      - - - -
        -
      • -

        STANDARD_DEVIATION

        -
        public static final Aggregation STANDARD_DEVIATION
        -
        標準偏差を求める演算です。 -

        数値型のカラムに対してのみ使用できます。演算結果の型は常にDOUBLEとなります。対象となるロウが1つも存在しない場合、演算結果は設定されません。

        -
      • -
      - - - -
        -
      • -

        TOTAL

        -
        public static final Aggregation TOTAL
        -
        合計を求める演算です。 -

        数値型のカラムに対してのみ使用できます。演算結果の型は、対象のカラムが整数型の場合LONG、浮動小数点型の場合DOUBLEとなります。対象となるロウが1つも存在しない場合、演算結果は設定されません。

        -
      • -
      - - - -
        -
      • -

        VARIANCE

        -
        public static final Aggregation VARIANCE
        -
        分散を求める演算です。 -

        数値型のカラムに対してのみ使用できます。演算結果の型は常にDOUBLEとなります。対象となるロウが1つも存在しない場合、演算結果は設定されません。

        -
      • -
      - - - -
        -
      • -

        WEIGHTED_AVERAGE

        -
        public static final Aggregation WEIGHTED_AVERAGE
        -
        重み付きで平均を求める演算です。 -

        各標本値と重み付け値との積の合計を、各重み付け値の合計で割ることにより求めます。重み付け値の計算方法は、Aggregationの説明を参照してください。

        - -

        この演算は、数値型のカラムに対してのみ使用できます。演算結果の型は常にDOUBLEとなります。対象となるロウが1つも存在しない場合、演算結果は設定されません。

        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        valueOf

        -
        public static Aggregation valueOf(java.lang.String name)
        -
        Returns the enum constant of this type with the specified name. -The string must match exactly an identifier used to declare an -enum constant in this type. (Extraneous whitespace characters are -not permitted.)
        -
        Parameters:
        name - the name of the enum constant to be returned.
        -
        Returns:
        the enum constant with the specified name
        -
        Throws:
        -
        java.lang.IllegalArgumentException - if this enum type has no constant -with the specified name
        -
        java.lang.NullPointerException - if the argument is null
        -
      • -
      - - - -
        -
      • -

        values

        -
        public static Aggregation[] values()
        -
        Returns an array containing the constants of this enum type, in -the order they are declared. This method may be used to iterate -over the constants as follows: -
        -for (Aggregation c : Aggregation.values())
        -    System.out.println(c);
        -
        -
        Returns:
        an array containing the constants of this enum type, in -the order they are declared
        -
      • -
      -
    • -
    -
  • -
-
-
- - - -
-
-

Interface AggregationResult

-
-
-
-
    -
  • -
    -
    -
    public interface AggregationResult
    -
    集計演算の結果を保持します。 -

    集計演算に関するクエリの実行もしくは TimeSeries.aggregate(Date, Date, String, Aggregation) -により取得できる、集計演算の結果を保持します。整数型カラムに対する演算結果を浮動小数点型として、また、有効桁数の少ない数値型のカラムに対する演算結果をより桁数の多い数値型として受け取ることができます。

    - -

    保持する型は、集計演算の種別や集計対象のカラムの型によって決定されます。具体的な規則はAggregationまたはTQLの仕様を参照してください。

    - -

    取り出しできる型は、保持されている型によって決まります。保持されている型が数値型の場合はDOUBLE型またはLONG型、TIMESTAMP型の場合はTIMESTAMP型の値としてのみ取り出しできます。

    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - - - - - - - - - -
      Methods 
      Modifier and TypeMethod and Description
      java.lang.DoublegetDouble() -
      数値型の集計値をDOUBLE型(Double)として取得します。
      -
      java.lang.LonggetLong() -
      数値型の集計値をLONG型(Long)として取得します。
      -
      java.util.DategetTimestamp() -
      時刻型の集計値をTIMESTAMP型(Date)で取得します。
      -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        getDouble

        -
        java.lang.Double getDouble()
        -
        数値型の集計値をDOUBLE型(Double)として取得します。 -

        数値型以外の値を保持している場合、nullを返します。 DOUBLE型以外の数値を保持している場合、DOUBLE型に変換したものを返します。

        -
        Returns:
        DOUBLE型(Double)の集計値。結果が数値型以外の場合は null
        -
      • -
      - - - -
        -
      • -

        getLong

        -
        java.lang.Long getLong()
        -
        数値型の集計値をLONG型(Long)として取得します。 -

        数値型以外の値を保持している場合、nullを返します。 LONG型以外の数値を保持している場合、LONG型に変換したものを返します。

        -
        Returns:
        LONG型(Double)の集計値。結果が数値型以外の場合は null
        -
      • -
      - - - -
        -
      • -

        getTimestamp

        -
        java.util.Date getTimestamp()
        -
        時刻型の集計値をTIMESTAMP型(Date)で取得します。 -

        TIMESTAMP型以外の値を保持している場合、nullを返します。

        -
        Returns:
        TIMESTAMP型(Date)の集計値。結果がTIMESTAMP型以外の場合はnull
        -
      • -
      -
    • -
    -
  • -
-
-
- - - -
-
-

Class Collection.BindType

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • com.toshiba.mwcloud.gs.Collection.BindType
    • -
    -
  • -
-
-
    -
  • -
    -
    Enclosing interface:
    -
    Collection<K,R>
    -
    -
    -
    -
    public static class Collection.BindType
    -extends java.lang.Object
    -
    Collectionならびにその型パラメータと結びつく Container.BindTypeを構築するための、補助クラスです。
    -
    Since:
    -
    4.3
    -
    See Also:
    Container.BindType
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - - - - - - - - - -
      Methods 
      Modifier and TypeMethod and Description
      static <R> Container.BindType<java.lang.Void,R,? extends Collection<java.lang.Void,R>>noKeyOf(java.lang.Class<R> rowClass) -
      ロウキーを持たず、指定のロウオブジェクト型、ならびに、 Collectionと結びつくContainer.BindTypeを取得します。
      -
      static <K,R> Container.BindType<K,R,? extends Collection<K,R>>of(java.lang.Class<K> keyClass, - java.lang.Class<R> rowClass) -
      指定のロウキー型、指定のロウオブジェクト型、ならびに、 Collectionと結びつくContainer.BindTypeを取得します。
      -
      static <K,R extends Row.WithKey<K>> 
      Container.BindType<K,R,? extends Collection<K,R>>
      of(java.lang.Class<R> rowClass) -
      指定のロウオブジェクト型から得られるロウキーの型、指定のロウオブジェクト型、ならびに、Collectionと結びつく Container.BindTypeを取得します。
      -
      -
        -
      • - - -

        Methods inherited from class java.lang.Object

        -clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        noKeyOf

        -
        public static <R> Container.BindType<java.lang.Void,R,? extends Collection<java.lang.Void,R>> noKeyOf(java.lang.Class<R> rowClass)
        -                                                                                           throws GSException
        -
        ロウキーを持たず、指定のロウオブジェクト型、ならびに、 Collectionと結びつくContainer.BindTypeを取得します。
        -
        Type Parameters:
        R - ロウオブジェクトの型
        Parameters:
        rowClass - ロウオブジェクトの型に対応するクラスオブジェクト
        -
        Throws:
        -
        GSException - ロウキーの型と、ロウオブジェクトの型との間で不整合を検出した場合
        Since:
        -
        4.3
        -
      • -
      - - - -
        -
      • -

        of

        -
        public static <K,R> Container.BindType<K,R,? extends Collection<K,R>> of(java.lang.Class<K> keyClass,
        -                                                         java.lang.Class<R> rowClass)
        -                                                            throws GSException
        -
        指定のロウキー型、指定のロウオブジェクト型、ならびに、 Collectionと結びつくContainer.BindTypeを取得します。
        -
        Type Parameters:
        K - ロウキーの型
        R - ロウオブジェクトの型
        Parameters:
        keyClass - ロウキーの型に対応するクラスオブジェクト
        rowClass - ロウオブジェクトの型に対応するクラスオブジェクト
        -
        Throws:
        -
        GSException - ロウキーの型と、ロウオブジェクトの型との間で不整合を検出した場合
        Since:
        -
        4.3
        -
      • -
      - - - -
        -
      • -

        of

        -
        public static <K,R extends Row.WithKey<K>> Container.BindType<K,R,? extends Collection<K,R>> of(java.lang.Class<R> rowClass)
        -                                                                                                          throws GSException
        -
        指定のロウオブジェクト型から得られるロウキーの型、指定のロウオブジェクト型、ならびに、Collectionと結びつく Container.BindTypeを取得します。
        -
        Type Parameters:
        K - ロウキーの型
        R - ロウオブジェクトの型
        Parameters:
        rowClass - ロウオブジェクトの型に対応するクラスオブジェクト
        -
        Throws:
        -
        GSException - 指定のロウオブジェクト型からロウキーの型が得られなかった場合
        Since:
        -
        4.3
        -
      • -
      -
    • -
    -
  • -
-
-
- - - -
-
-

Interface Collection<K,R>

-
-
-
-
    -
  • -
    -
    All Superinterfaces:
    -
    java.lang.AutoCloseable, java.io.Closeable, Container<K,R>
    -
    -
    -
    -
    public interface Collection<K,R>
    -extends Container<K,R>
    -
    ロウ集合を汎用的に管理するためのコンテナです。 -

    ロウキーには次の型が使用できます。

    -
      -
    • 文字列型(String)
    • -
    • INTEGER型(Integer)
    • -
    • LONG型(Long)
    • -
    • TIMESTAMP型(Date)
    • -
    • 上記の型のカラムを単一または複数持つ(複合)ロウキー(Row.Key)
    • -
    -

    ロウキーの設定は必須ではありません。

    - -

    ロウ操作について、コンテナ固有の制限は設けられていません。

    - -

    Container.query(String)もしくはGridStore.multiGet(java.util.Map) -などより複数のロウの内容を一度に取得する場合、特に指定がなければ、返却されるロウの順序は不定となります。

    - -

    ロック粒度はロウ単位です。

    -
  • -
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        query

        -
        Query<R> query(java.lang.String column,
        -             Geometry geometryIntersection,
        -             Geometry geometryDisjoint)
        -               throws GSException
        -
        除外範囲付きの空間範囲条件に合致するロウ集合を求めるための、クエリを作成します。 -

        geometryIntersectionと交差し、かつ、geometryDisjointと交差しないカラム値を持つロウ集合を取得します。交差判定の条件は、 GeometryOperator.INTERSECTと同一です。

        - -

        Query.fetch(boolean)を通じてロウ集合を求める際、更新用ロックのオプションを有効にすることもできます。

        - -

        現バージョンでは、GSExceptionや、nullを指定できない引数でnullを指定したことによるNullPointerExceptionは送出されません。カラム名の誤りなどがあった場合、得られたクエリをフェッチする際に例外が送出されます。

        -
        Parameters:
        column - 比較対象の空間型カラムの名前。nullは指定できない
        geometryIntersection - カラム上の値と交差する範囲を示す空間構造。 nullは指定できない
        geometryDisjoint - カラム上の値と交差しない範囲を示す空間構造。 nullは指定できない
        -
        Throws:
        -
        GSException - 現バージョンでは送出されない
        -
      • -
      - - - -
        -
      • -

        query

        -
        Query<R> query(java.lang.String column,
        -             Geometry geometry,
        -             GeometryOperator geometryOp)
        -               throws GSException
        -
        指定した空間範囲条件に合致するロウ集合を求めるための、クエリを作成します。 -

        Query.fetch(boolean)を通じてロウ集合を求める際、更新用ロックのオプションを有効にすることもできます。

        - -

        現バージョンでは、GSExceptionや、nullを指定できない引数でnullを指定したことによるNullPointerExceptionは送出されません。カラム名の誤りなどがあった場合、得られたクエリをフェッチする際に例外が送出されます。

        -
        Parameters:
        column - 比較対象の空間型カラムの名前。nullは指定できない
        geometry - 比較対象として与える空間構造。nullは指定できない
        geometryOp - 比較方法。nullは指定できない
        -
        Throws:
        -
        GSException - 現バージョンでは送出されない
        -
      • -
      -
    • -
    -
  • -
-
-
- - - -
-
-

Class ColumnInfo

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • com.toshiba.mwcloud.gs.ColumnInfo
    • -
    -
  • -
-
-
    -
  • -
    -
    -
    public class ColumnInfo
    -extends java.lang.Object
    -
    カラムのスキーマに関する情報を表します。 -

    カラム名の表記、もしくは、カラムの型と索引種別の対応関係などの内容の妥当性について、必ずしも検査するとは限りません。

    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Constructor Summary

      - - - - - - - - - - - - - - - - - -
      Constructors 
      Constructor and Description
      ColumnInfo(java.lang.String name, - GSType type) -
      カラム名、型を指定してカラム情報を作成します。
      -
      ColumnInfo(java.lang.String name, - GSType type, - java.lang.Boolean nullable, - java.lang.Boolean defaultValueNull, - java.util.Set<IndexType> indexTypes) -
      カラム名、型、NOT NULL制約の状態、初期値でのNULL使用有無、索引種別の集合を指定してカラム情報を作成します。
      -
      ColumnInfo(java.lang.String name, - GSType type, - java.lang.Boolean nullable, - java.util.Set<IndexType> indexTypes) -
      カラム名、型、NOT NULL制約の状態、索引種別の集合を指定してカラム情報を作成します。
      -
      ColumnInfo(java.lang.String name, - GSType type, - java.util.Set<IndexType> indexTypes) -
      カラム名、型、索引種別の集合を指定してカラム情報を作成します。
      -
      -
    • -
    - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Methods 
      Modifier and TypeMethod and Description
      java.lang.BooleangetDefaultValueNull() -
      カラムの初期値としてNULLを使用するかどうかを取得します。
      -
      java.util.Set<IndexType>getIndexTypes() -
      このカラムのすべての索引種別を取得します。
      -
      java.lang.StringgetName() -
      カラム名を取得します。
      -
      java.lang.BooleangetNullable() -
      カラムにNOT NULL制約が設定されていないかどうかを取得します。
      -
      GSTypegetType() -
      カラムの型、すなわち、カラムに対応する各フィールド値の型を取得します。
      -
      -
        -
      • - - -

        Methods inherited from class java.lang.Object

        -clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        ColumnInfo

        -
        public ColumnInfo(java.lang.String name,
        -          GSType type)
        -
        カラム名、型を指定してカラム情報を作成します。
        -
        Parameters:
        name - カラム名。nullを指定すると未設定状態となる
        type - カラムの型。nullも指定すると未設定状態となる
        Since:
        -
        1.5
        -
      • -
      - - - -
        -
      • -

        ColumnInfo

        -
        public ColumnInfo(java.lang.String name,
        -          GSType type,
        -          java.lang.Boolean nullable,
        -          java.lang.Boolean defaultValueNull,
        -          java.util.Set<IndexType> indexTypes)
        -
        カラム名、型、NOT NULL制約の状態、初期値でのNULL使用有無、索引種別の集合を指定してカラム情報を作成します。 -

        空ではない索引種別の集合が指定された場合、内容が複製されます。

        -
        Parameters:
        name - カラム名。nullを指定すると未設定状態となる
        type - カラムの型。nullを指定すると未設定状態となる
        nullable - NOT NULL制約が設定されていない場合はtrue、設定されている場合はfalsenullを指定すると未設定状態となる
        defaultValueNull - 初期値としてNULLを使用する場合はtrue、使用しない場合はfalsenullを指定すると未設定状態となる
        indexTypes - 索引種別の集合。nullを指定すると未設定状態となる。空の場合は索引の設定が一つもないとみなされる
        Since:
        -
        4.1
        -
      • -
      - - - -
        -
      • -

        ColumnInfo

        -
        public ColumnInfo(java.lang.String name,
        -          GSType type,
        -          java.lang.Boolean nullable,
        -          java.util.Set<IndexType> indexTypes)
        -
        カラム名、型、NOT NULL制約の状態、索引種別の集合を指定してカラム情報を作成します。 -

        空ではない索引種別の集合が指定された場合、内容が複製されます。

        -
        Parameters:
        name - カラム名。nullを指定すると未設定状態となる
        type - カラムの型。nullを指定すると未設定状態となる
        nullable - NOT NULL制約が設定されていない場合はtrue、設定されている場合はfalsenullを指定すると未設定状態となる
        indexTypes - 索引種別の集合。nullを指定すると未設定状態となる。空の場合は索引の設定が一つもないとみなされる
        Since:
        -
        3.5
        -
      • -
      - - - -
        -
      • -

        ColumnInfo

        -
        public ColumnInfo(java.lang.String name,
        -          GSType type,
        -          java.util.Set<IndexType> indexTypes)
        -
        カラム名、型、索引種別の集合を指定してカラム情報を作成します。 -

        空ではない索引種別の集合が指定された場合、内容が複製されます。

        -
        Parameters:
        name - カラム名。nullを指定すると未設定状態となる
        type - カラムの型。nullを指定すると未設定状態となる
        indexTypes - 索引種別の集合。nullを指定すると未設定状態となる。空の場合は索引の設定が一つもないとみなされる
        Since:
        -
        1.5
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        getDefaultValueNull

        -
        public java.lang.Boolean getDefaultValueNull()
        -
        カラムの初期値としてNULLを使用するかどうかを取得します。
        -
        Returns:
        NULLを使用する場合はtrue、NULL以外の値を使用する場合は false、未設定の場合はnull
        Since:
        -
        4.1
        -
      • -
      - - - -
        -
      • -

        getIndexTypes

        -
        public java.util.Set<IndexType> getIndexTypes()
        -
        このカラムのすべての索引種別を取得します。 -

        返却された値に対して変更操作を行った場合、 UnsupportedOperationExceptionが発生することがあります。また、このオブジェクトに対する操作により、返却されたオブジェクトの内容が変化することはありません。

        -
        Returns:
        索引種別の集合。未設定の場合はnull
        Since:
        -
        1.5
        -
      • -
      - - - -
        -
      • -

        getName

        -
        public java.lang.String getName()
        -
        カラム名を取得します。
        -
        Returns:
        カラム名。未設定の場合はnull
        -
      • -
      - - - -
        -
      • -

        getNullable

        -
        public java.lang.Boolean getNullable()
        -
        カラムにNOT NULL制約が設定されていないかどうかを取得します。
        -
        Returns:
        NOT NULL制約が設定されていない場合はtrue、設定されている場合はfalse、未設定の場合はnull
        Since:
        -
        3.5
        -
      • -
      - - - -
        -
      • -

        getType

        -
        public GSType getType()
        -
        カラムの型、すなわち、カラムに対応する各フィールド値の型を取得します。
        -
        Returns:
        カラムの型。未設定の場合はnull
        -
      • -
      -
    • -
    -
  • -
-
-
- - - -
-
-

Enum CompressionMethod

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • java.lang.Enum<CompressionMethod>
    • -
    • -
        -
      • com.toshiba.mwcloud.gs.CompressionMethod
      • -
      -
    • -
    -
  • -
-
-
    -
  • -
    -
    All Implemented Interfaces:
    -
    java.io.Serializable, java.lang.Comparable<CompressionMethod>
    -
    -
    -
    -
    public enum CompressionMethod
    -extends java.lang.Enum<CompressionMethod>
    -
    圧縮方式の種別を表します。 -

    時系列圧縮設定を行う際に使用します。

    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Enum Constant Summary

      - - - - - - - - - - - - - - -
      Enum Constants 
      Enum Constant and Description
      HI -
      誤差あり間引き圧縮方式であることを示します。
      -
      NO -
      無圧縮であることを示します。
      -
      SS -
      誤差なし間引き圧縮方式であることを示します。
      -
      -
    • -
    - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - - - - - -
      Methods 
      Modifier and TypeMethod and Description
      static CompressionMethodvalueOf(java.lang.String name) -
      Returns the enum constant of this type with the specified name.
      -
      static CompressionMethod[]values() -
      Returns an array containing the constants of this enum type, in -the order they are declared.
      -
      -
        -
      • - - -

        Methods inherited from class java.lang.Enum

        -clone, compareTo, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf
      • -
      -
        -
      • - - -

        Methods inherited from class java.lang.Object

        -getClass, notify, notifyAll, wait, wait, wait
      • -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Enum Constant Detail

      - - - -
        -
      • -

        HI

        -
        public static final CompressionMethod HI
        -
        誤差あり間引き圧縮方式であることを示します。 -

        誤差あり間引き圧縮では、前回まで及び直後に登録したデータと同じ傾斜を表すロウは省かれます。同じ傾斜かを判定する条件はユーザが指定できます。指定されたカラムが条件を満たし、それ以外のカラムの値が前回のデータと同じ場合のみ省かれます。省かれたデータはinterpolateやsample処理の際に、指定された誤差の範囲内で復元されます。

        -
      • -
      - - - -
        -
      • -

        NO

        -
        public static final CompressionMethod NO
        -
        無圧縮であることを示します。
        -
      • -
      - - - -
        -
      • -

        SS

        -
        public static final CompressionMethod SS
        -
        誤差なし間引き圧縮方式であることを示します。 -

        誤差なし間引き圧縮では、直前及び直後に登録したロウと同じデータを持つロウは省かれます。省かれたデータはinterpolateやsample処理の際に、誤差を発生することなく復元されます。

        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        valueOf

        -
        public static CompressionMethod valueOf(java.lang.String name)
        -
        Returns the enum constant of this type with the specified name. -The string must match exactly an identifier used to declare an -enum constant in this type. (Extraneous whitespace characters are -not permitted.)
        -
        Parameters:
        name - the name of the enum constant to be returned.
        -
        Returns:
        the enum constant with the specified name
        -
        Throws:
        -
        java.lang.IllegalArgumentException - if this enum type has no constant -with the specified name
        -
        java.lang.NullPointerException - if the argument is null
        -
      • -
      - - - -
        -
      • -

        values

        -
        public static CompressionMethod[] values()
        -
        Returns an array containing the constants of this enum type, in -the order they are declared. This method may be used to iterate -over the constants as follows: -
        -for (CompressionMethod c : CompressionMethod.values())
        -    System.out.println(c);
        -
        -
        Returns:
        an array containing the constants of this enum type, in -the order they are declared
        -
      • -
      -
    • -
    -
  • -
-
-
- - - -
-
-

Class Container.BindType<K,R,C extends Container<K,R>>

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • com.toshiba.mwcloud.gs.Container.BindType<K,R,C>
    • -
    -
  • -
-
-
    -
  • -
    Type Parameters:
    K - ロウキーの型。ロウキーが存在しない場合はVoidまたは Row.Keyを指定
    R - マッピングに用いるロウオブジェクトの型
    C - 対応するContainerインスタンスにおいて実装されていることを期待する、Containerまたはそのサブインタフェースの型
    -
    -
    Enclosing interface:
    -
    Container<K,R>
    -
    -
    -
    -
    public static class Container.BindType<K,R,C extends Container<K,R>>
    -extends java.lang.Object
    -
    Containerならびにその型パラメータと結びつく型情報を表します。 -

    Containerインスタンスを構築する際に与える複数の型情報について、一つのオブジェクトとしてまとめて保持することができます。

    - -

    ロウキーの型とContainerインスタンスの型との対応関係の妥当性など、内容の妥当性については、このクラスのインスタンスの生成段階で必ずしも検査するとは限りません。

    -
    Since:
    -
    4.3
    -
    See Also:
    GridStore.getContainer(String, Container.BindType)
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Methods 
      Modifier and TypeMethod and Description
      CcastContainer(Container<?,?> container) -
      このオブジェクトが保持するロウキーの型ならびにロウオブジェクトの型を型パラメータとし持つ、Containerまたはそのサブインタフェースの型にキャストします。
      -
      KcastKey(java.lang.Object obj) -
      このオブジェクトが保持するロウキーの型にキャストします。
      -
      RcastRow(java.lang.Object obj) -
      このオブジェクトが保持するロウオブジェクトの型にキャストします。
      -
      java.lang.Class<? extends Container<?,?>>getContainerClass() -
      Containerまたはそのサブインタフェースの型を取得します。
      -
      java.lang.Class<K>getKeyClass() -
      ロウキーの型を取得します。
      -
      java.lang.Class<R>getRowClass() -
      ロウオブジェクトの型を取得します。
      -
      static <R> Container.BindType<java.lang.Void,R,? extends Container<java.lang.Void,R>>noKeyOf(java.lang.Class<R> rowClass) -
      ロウキーを持たず、指定のロウオブジェクト型、ならびに、任意の型の Containerと結びつくContainer.BindTypeを取得します。
      -
      static <K,R> Container.BindType<K,R,? extends Container<K,R>>of(java.lang.Class<K> keyClass, - java.lang.Class<R> rowClass) -
      指定のロウキー型、指定のロウオブジェクト型、ならびに、任意の型の Containerと結びつくContainer.BindTypeを取得します。
      -
      static <K,R extends Row.WithKey<K>> 
      Container.BindType<K,R,? extends Container<K,R>>
      of(java.lang.Class<R> rowClass) -
      指定のロウオブジェクト型から得られるロウキーの型、指定のロウオブジェクト型、ならびに、任意の型のContainerと結びつく Container.BindTypeを取得します。
      -
      -
        -
      • - - -

        Methods inherited from class java.lang.Object

        -clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        castContainer

        -
        public C castContainer(Container<?,?> container)
        -                                       throws GSException
        -
        このオブジェクトが保持するロウキーの型ならびにロウオブジェクトの型を型パラメータとし持つ、Containerまたはそのサブインタフェースの型にキャストします。
        -
        Parameters:
        container - キャスト対象のContainerインスタンス
        -
        Returns:
        キャストされたオブジェクト
        -
        Throws:
        -
        GSException - キャスト対象のContainerインスタンスと、このオブジェクトが保持する型情報との間で、ロウキーの型ならびにロウオブジェクトの型が一致しない場合
        Since:
        -
        4.3
        -
      • -
      - - - -
        -
      • -

        castKey

        -
        public K castKey(java.lang.Object obj)
        -
        このオブジェクトが保持するロウキーの型にキャストします。
        -
        Parameters:
        obj - キャスト対象のオブジェクト
        -
        Returns:
        キャストされたオブジェクト
        Since:
        -
        4.3
        -
      • -
      - - - -
        -
      • -

        castRow

        -
        public R castRow(java.lang.Object obj)
        -
        このオブジェクトが保持するロウオブジェクトの型にキャストします。
        -
        Parameters:
        obj - キャスト対象のオブジェクト
        -
        Returns:
        キャストされたオブジェクト
        Since:
        -
        4.3
        -
      • -
      - - - -
        -
      • -

        getContainerClass

        -
        public java.lang.Class<? extends Container<?,?>> getContainerClass()
        -
        Containerまたはそのサブインタフェースの型を取得します。
        -
        Returns:
        対応するContainerインスタンスにおいて実装されていることを期待する、Containerまたはそのサブインタフェースの型
        Since:
        -
        4.3
        -
      • -
      - - - -
        -
      • -

        getKeyClass

        -
        public java.lang.Class<K> getKeyClass()
        -
        ロウキーの型を取得します。
        -
        Returns:
        ロウキーの型
        Since:
        -
        4.3
        -
      • -
      - - - -
        -
      • -

        getRowClass

        -
        public java.lang.Class<R> getRowClass()
        -
        ロウオブジェクトの型を取得します。
        -
        Returns:
        ロウオブジェクトの型
        Since:
        -
        4.3
        -
      • -
      - - - -
        -
      • -

        noKeyOf

        -
        public static <R> Container.BindType<java.lang.Void,R,? extends Container<java.lang.Void,R>> noKeyOf(java.lang.Class<R> rowClass)
        -                                                                                          throws GSException
        -
        ロウキーを持たず、指定のロウオブジェクト型、ならびに、任意の型の Containerと結びつくContainer.BindTypeを取得します。
        -
        Type Parameters:
        R - ロウオブジェクトの型
        Parameters:
        rowClass - ロウオブジェクトの型に対応するクラスオブジェクト
        -
        Returns:
        対応する型情報
        -
        Throws:
        -
        GSException - ロウキーの型と、ロウオブジェクトの型との間で不整合を検出した場合
        Since:
        -
        4.3
        -
      • -
      - - - -
        -
      • -

        of

        -
        public static <K,R> Container.BindType<K,R,? extends Container<K,R>> of(java.lang.Class<K> keyClass,
        -                                                        java.lang.Class<R> rowClass)
        -                                                           throws GSException
        -
        指定のロウキー型、指定のロウオブジェクト型、ならびに、任意の型の Containerと結びつくContainer.BindTypeを取得します。
        -
        Type Parameters:
        K - ロウキーの型
        R - ロウオブジェクトの型
        Parameters:
        keyClass - ロウキーの型に対応するクラスオブジェクト
        rowClass - ロウオブジェクトの型に対応するクラスオブジェクト
        -
        Returns:
        対応する型情報
        -
        Throws:
        -
        GSException - ロウキーの型と、ロウオブジェクトの型との間で不整合を検出した場合
        Since:
        -
        4.3
        -
      • -
      - - - -
        -
      • -

        of

        -
        public static <K,R extends Row.WithKey<K>> Container.BindType<K,R,? extends Container<K,R>> of(java.lang.Class<R> rowClass)
        -                                                                                                         throws GSException
        -
        指定のロウオブジェクト型から得られるロウキーの型、指定のロウオブジェクト型、ならびに、任意の型のContainerと結びつく Container.BindTypeを取得します。
        -
        Type Parameters:
        K - ロウキーの型
        R - ロウオブジェクトの型
        Parameters:
        rowClass - ロウオブジェクトの型に対応するクラスオブジェクト
        -
        Returns:
        対応する型情報
        -
        Throws:
        -
        GSException - 指定のロウオブジェクト型からロウキーの型が得られなかった場合
        Since:
        -
        4.3
        -
      • -
      -
    • -
    -
  • -
-
-
- - - -
-
-

Interface Container<K,R>

-
-
-
-
    -
  • -
    Type Parameters:
    K - ロウキーの型。ロウキーが存在しない場合はVoidまたは Row.Keyを指定
    R - マッピングに用いるロウオブジェクトの型
    -
    -
    All Superinterfaces:
    -
    java.lang.AutoCloseable, java.io.Closeable
    -
    -
    -
    All Known Subinterfaces:
    -
    Collection<K,R>, TimeSeries<R>
    -
    -
    -
    -
    public interface Container<K,R>
    -extends java.io.Closeable
    -
    同一タイプのロウ集合からなるGridDBの構成要素に対しての、管理機能を提供します。 -

    ロウオブジェクトを入出力の基本単位として、各種管理機能を提供します。ロウオブジェクトとGridDB上のロウは、指定のロウオブジェクト型とGridDB上のスキーマとの対応関係に基づいて、相互にマッピングされます。

    - -

    GridDB上のスキーマを構成する各カラムは、ロウオブジェクト内のフィールドやメソッド定義と対応関係を持ちます。 1つのコンテナは1つ以上のカラムにより構成されます。各カラムとの対応関係は、指定の型のpublic・protected・デフォルトアクセスのフィールドまたはgetter・setterメソッドに基づき決定されます。ただし、TransientRowFieldが指定されたフィールドやメソッド、 transientフィールドは対象外です。また、ロウオブジェクトを動的に生成するために、public・protected・デフォルトアクセスのデフォルトコンストラクタを持つ必要があります。内部クラスの場合、静的内部クラスである必要があります。

    - -

    getterは、boolean値を返す場合「is」または「get」、それ以外の型の値を返す場合「get」から始まる名前を持つ、引数なしのメソッドです。 setterは、「set」から始まる名前を持ち、設定対象の値1つのみを引数とするメソッドです。 GridDB上のカラム名は、特に指定のない限り、フィールド名、もしくは、getter・ setterのメソッド名から「get」などの固定の接頭辞を除いたものと対応します。別のカラム名と対応付けるには、RowField.name()を使用します。 getter・setterの一方しか存在しないものは無視されます。同名のフィールドと getter・setterの両方が存在する場合は、getter・setterを使用します。 getter・setter名の大文字・小文字表記が異なる場合、getterのものが優先されます。カラムがロウキーを持つ場合は、対応するフィールドまたはメソッドにRowKeyを設定します。

    - -

    1つのコンテナのカラム間で、ASCIIの大文字・小文字表記だけが異なる名前のものを複数定義することはできません。その他、コンテナ定義におけるカラム名の文字種や長さ、カラム数には制限があります。具体的には、 GridDBテクニカルリファレンスを参照してください。特に記載のない限り、カラム名を指定する操作では、ASCIIの大文字・小文字表記の違いは区別されません。

    - -

    カラムの型と、ロウオブジェクト内の各値の型との対応は、それぞれ次の通りです。

    - - - - - - - - - - - - - - - - - - - - - - - - -
    カラム型ロウオブジェクト内の各値の型
    STRINGString
    BOOLBooleanまたはboolean
    BYTEByteまたはbyte
    SHORTShortまたはshort
    INTEGERIntegerまたはint
    LONGLongまたはlong
    FLOATFloatまたはfloat
    DOUBLEDoubleまたはdouble
    TIMESTAMPDate
    GEOMETRYGeometry
    BLOBBlobを実装したクラス
    STRING配列String[]
    BOOL配列boolean[]
    BYTE配列byte[]
    SHORT配列short[]
    INTEGER配列int[]
    LONG配列long[]
    FLOAT配列float[]
    DOUBLE配列double[]
    TIMESTAMP配列java.util.Date[]
    - -

    フィールドの値の表現範囲やサイズには制限があります。具体的には、付録の章の値の範囲の説明、ならびに、GridDBテクニカルリファレンスを参照してください。制限に反する値をコンテナに格納することはできません。

    - -

    ロウキーとして許可されている型や、ロウキーに対応するカラムの有無、ロウ操作の可否といった制約は、このコンテナのサブインタフェースの定義によって異なります。

    - -

    GridDB上のロウにおけるNULLは、NOT NULL制約が設定されていない限り保持することができます。ロウオブジェクトのフィールドまたはgetter・setter -メソッドが参照型の値を入出力できる場合、GridDB上のロウにおけるNULLは nullとして入出力できます。それ以外の場合、NULLはロウオブジェクトにおいて後述の空の値にマッピングされます。

    - -

    ロウオブジェクト型におけるNOT NULL制約は、NotNullならびに Nullableにより明示的に指定できます。NOT NULL制約がいずれの指定対象にも指定されていない場合、ロウキー以外のカラムはNOT NULL -制約なしであるとみなされます。ロウキーは暗黙的にNOT NULL制約が設定された状態となっており、この制約を外すような指定はできません。また、同一の指定対象や、getter、setterメソッド間での矛盾したNOT NULL制約は指定できません。たとえば、ロウオブジェクト型にNotNullNullableが同時に指定された場合、矛盾したNOT NULL制約が指定されたとみなされます。NOT NULL制約の有無に関する指定対象別の優先順位は、次の通りです。

    -
      -
    1. ロウオブジェクトのフィールドまたはgetter・setterメソッド
    2. -
    3. ロウオブジェクトの型
    4. -
    5. ロウオブジェクトのエンクロージング型(例:ロウオブジェクトのクラスを内部クラスとして取り囲むインタフェース)、または、その型から再帰的に求まるエンクロージング型。再帰的に求まるエンクロージング型のうち、制約の指定があり、かつ、最初に見つかった型を優先。
    6. -
    7. ロウオブジェクトの型が属するパッケージ
    8. -
    - -

    空の値は、Rowの作成など各種操作の初期値などとして用いられることのある、フィールド値の一種です。以下のように、カラム型ごとに値が定義されています。

    - - - - - - - - - - - -
    カラム型空の値
    STRING""(長さ0の文字列)
    BOOL偽(false)
    数値型0
    TIMESTAMP1970-01-01T00:00:00Z
    GEOMETRYPOINT(EMPTY)
    BLOB長さ0のBLOBデータ
    配列型要素数0の配列
    - -

    トランザクション処理では、デフォルトで自動コミットモードが有効になっています。自動コミットモードでは、変更操作は逐次確定し、明示的に取り消すことができません。手動コミットモードにおいて、このオブジェクトを介した操作によりクラスタノード上でエラーが検出されGSExceptionが送出された場合、コミット前の更新操作はすべて取り消されます。トランザクション分離レベルはREAD COMMITTEDのみをサポートします。ロック粒度は、コンテナの種別によって異なります。

    - -

    このContainerの生成後またはトランザクション終了後、最初にロウの更新・追加・削除、ならびに更新用ロック獲得が行われた時点で、新たなトランザクションが開始されます。自動コミットモードでは、トランザクションを開始したロウ操作が完了するとトランザクションは自動的にコミットされ終了します。手動コミットモードでは、明示的にトランザクションを制御するか有効期限に到達するまでトランザクションは終了しません。トランザクションをコミットするにはcommit()、アボートするにはabort()を使用します。このContainerまたはその生成元のGridStoreがクローズされた場合もトランザクションはアボートされ終了します。また、トランザクションを開始させた操作を行った時刻を起点として、GridDB上で定められている期間だけ経過すると有効期限に到達します。有効期限到達後にアボートすることなく、続けてロウ操作やトランザクションコミットを行おうとすると、GSExceptionが送出されるようになります。

    - -

    あるコンテナへの操作要求に対するクラスタノード上での処理が開始され、終了するまでの間、同一のコンテナに対する操作が待機させられる場合があります。ここでの操作には、コンテナのスキーマや索引などの定義変更、コンテナ情報の参照、ロウ操作などが含まれます。一貫性レベルがIMMEDIATEGridStoreインスタンスを通じてコンテナを操作する場合、同一のコンテナに対するIMMEDIATE設定での他の操作処理の途中、原則としては待機させられます。また、コンテナに対する他の操作処理の途中の状態に基づいて処理が行われることは、原則としてはありません。例外事項については、個別の操作ごとの説明を参照してください。

    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Nested Class Summary

      - - - - - - - - - - -
      Nested Classes 
      Modifier and TypeInterface and Description
      static class Container.BindType<K,R,C extends Container<K,R>> -
      Containerならびにその型パラメータと結びつく型情報を表します。
      -
      -
    • -
    - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Methods 
      Modifier and TypeMethod and Description
      voidabort() -
      手動コミットモードにおいて、現在のトランザクションの操作結果を元に戻し、トランザクションを終了します。
      -
      voidclose() -
      GridDBとの接続状態を解除し、必要に応じて関連するリソースを解放します。
      -
      voidcommit() -
      手動コミットモードにおいて、現在のトランザクションにおける操作結果を確定させ、トランザクションを終了します。
      -
      java.sql.BlobcreateBlob() -
      このContainerに対して巨大なバイナリデータを格納するためのBlobを作成します。
      -
      voidcreateIndex(IndexInfo info) -
      IndexInfoで設定されている内容に従い、索引を作成します。
      -
      voidcreateIndex(java.lang.String columnName) -
      指定された名前のカラムに対し、デフォルトの種別で名前のない索引を作成します。
      -
      voidcreateIndex(java.lang.String columnName, - IndexType type) -
      指定された名前のカラムに対し、指定された種別で名前のない索引を作成します。
      -
      RcreateRow() -
      このコンテナのカラムレイアウトに基づき、ロウオブジェクトを新規作成します。
      -
      voidcreateTrigger(TriggerInfo info) -
      トリガを設定します。
      -
      voiddropIndex(IndexInfo info) -
      IndexInfoで設定されている内容に一致する、すべての索引を削除します。
      -
      voiddropIndex(java.lang.String columnName) -
      指定された名前のカラムのうち、デフォルトの種別の索引のみを削除します。
      -
      voiddropIndex(java.lang.String columnName, - IndexType type) -
      指定された名前のカラムのうち、指定された種別の索引のみを削除します。
      -
      voiddropTrigger(java.lang.String name) -
      トリガを削除します。
      -
      voidflush() -
      これまでの更新結果をSSDなどの不揮発性記憶媒体に書き出し、すべてのクラスタノードが突然停止したとしても内容が失われないようにします。
      -
      Rget(K key) -
      指定のロウキーに対応するロウの内容を取得します。
      -
      Rget(K key, - boolean forUpdate) -
      指定のオプションに従い、ロウキーに対応するロウの内容を取得します。
      -
      Container.BindType<K,R,? extends Container<K,R>>getBindType() -
      このオブジェクトと結びつく型情報を取得します。
      -
      ContainerTypegetType() -
      このコンテナの種別を取得します。
      -
      booleanput(java.util.Collection<R> rowCollection) -
      指定のロウオブジェクト集合に基づき、任意個数のロウをまとめて新規作成または更新します。
      -
      booleanput(K key, - R row) -
      必要に応じ別途ロウキーを指定して、ロウを新規作成または更新します。
      -
      booleanput(R row) -
      常にロウオブジェクトのみを指定して、ロウを新規作成または更新します。
      -
      Query<R>query(java.lang.String tql) -
      指定のTQL文を実行するためのクエリを作成します。
      -
      <S> Query<S>query(java.lang.String tql, - java.lang.Class<S> rowType) -
      指定のTQL文・対応付け用クラスを使用する、クエリオブジェクトを作成します。
      -
      booleanremove(K key) -
      指定のロウキーに対応するロウを削除します。
      -
      voidsetAutoCommit(boolean enabled) -
      コミットモードの設定を変更します。
      -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        abort

        -
        void abort()
        -           throws GSException
        -
        手動コミットモードにおいて、現在のトランザクションの操作結果を元に戻し、トランザクションを終了します。
        -
        Throws:
        -
        GSException - 自動コミットモードのときに呼び出された場合
        -
        GSException - この処理またはトランザクションのタイムアウト、このコンテナの削除、接続障害が発生した場合、またはクローズ後に呼び出された場合
        -
      • -
      - - - -
        -
      • -

        close

        -
        void close()
        -           throws GSException
        -
        GridDBとの接続状態を解除し、必要に応じて関連するリソースを解放します。 -

        トランザクションを保持している場合、未コミットの更新内容はすべて元に戻されます。

        - -

        GSExceptionが送出された場合であっても、接続状態の解除やローカルのリソース解放処理は適宜実施されます。ただし、GridDB上のトランザクション状態などは残る可能性があります。すでにクローズ済みの場合、このメソッドを呼び出しても解放処理は行われません。

        -
        -
        Specified by:
        -
        close in interface java.lang.AutoCloseable
        -
        Specified by:
        -
        close in interface java.io.Closeable
        -
        Throws:
        -
        GSException - 接続障害が発生した場合
        -
      • -
      - - - -
        -
      • -

        commit

        -
        void commit()
        -            throws GSException
        -
        手動コミットモードにおいて、現在のトランザクションにおける操作結果を確定させ、トランザクションを終了します。
        -
        Throws:
        -
        GSException - 自動コミットモードのときに呼び出された場合
        -
        GSException - この処理またはトランザクションのタイムアウト、このコンテナの削除、接続障害が発生した場合、またはクローズ後に呼び出された場合
        -
      • -
      - - - -
        -
      • -

        createBlob

        -
        java.sql.Blob createBlob()
        -                         throws GSException
        -
        このContainerに対して巨大なバイナリデータを格納するためのBlobを作成します。 -

        作成されたBlobは、ロウのフィールドとして利用できます。まず、Blob.setBinaryStream(long)などを用いてバイナリデータをセットし、続いてput(Object)などを用いてContainerに格納します。

        - -

        このメソッドにより得られたBlobに対し、少なくとも次のメソッドを呼び出すことができます。

        -
          -
        • Blob.length()
        • -
        • Blob.setBinaryStream(long)
        • -
        • Blob.setBytes(long, byte[])
        • -
        • Blob.setBytes(long, byte[], int, int)
        • -
        • Blob.free()
        • -
        - -

        ロウオブジェクトに設定するBLOBは、必ずしもこのメソッドで作成した Blobを使う必要はありません。SerialBlobなど、Blobを実装した他のクラスのインスタンスを設定することもできます。また、作成されたBlobに有効期間はありません。

        - -

        現バージョンでは、ロウ全体をクライアントのメモリ上にキャッシュするため、このVMのメモリ使用量の制限を超えるような巨大なデータは登録できない可能性があります。

        - -

        現バージョンでは、GSExceptionが送出されることはありません。

        -
        Throws:
        -
        GSException
        -
      • -
      - - - -
        -
      • -

        createIndex

        -
        void createIndex(IndexInfo info)
        -                 throws GSException
        -
        IndexInfoで設定されている内容に従い、索引を作成します。 -

        作成対象の索引のカラムについては、カラム名列またはカラム番号列の少なくとも一方が設定されており、かつ、対応するコンテナにおいて実在するものが設定されている必要があります。カラム名列とカラム番号列が共に設定されている場合、対応するカラム列が順序を含め一致している必要があります。

        - -

        索引種別が設定されていないかIndexType.DEFAULTが設定されていた場合、後述の基準に従い、デフォルト種別の索引が選択されます。

        - -

        1つのコンテナの索引間で、ASCIIの大文字・小文字表記だけが異なる名前のものを複数定義することはできません。その他、索引の定義において使用できる索引名の文字種や長さには制限があります。具体的には、 GridDBテクニカルリファレンスを参照してください。特に記載のない限り、索引名を指定する操作では、ASCIIの大文字・小文字表記の違いは区別されません。

        - -

        既存の同名の索引が存在した場合、後述の条件を満たす同一設定の IndexInfoを指定しなければならず、その場合新たな索引は作成されません。一方、既存の異なる名前の索引または名前のない索引と同一設定の IndexInfoを指定することはできません。

        - -

        索引名が設定されていない場合は、名前のない索引の作成が要求されたものとみなされます。名前を除いて同一設定の索引がすでに存在していた場合、名前のない索引でなければならず、その場合新たな索引は作成されません。

        - -

        現バージョンでは、少なくともContainerを通じて作成された索引において、次の条件を満たす場合に索引名を除いて同一設定の索引であるとみなされます。

        -
          -
        • 索引対象のカラム列が順序を含め一致すること。カラム名列、カラム番号列、単一カラム指定、といった、カラム列の指定方法の違いは無視される
        • -
        • 索引種別が一致すること。デフォルト指定の有無といった索引種別の指定方法の違いは無視される
        • -
        - -

        現バージョンにおける、GridStoreFactory.getInstance()を基に生成されたContainerインスタンスでは、コンテナの種別、対応するカラムの型などに基づき、次の索引種別がデフォルトとして選択されます。

        - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        カラムの型コレクション時系列
        STRINGIndexType.TREEIndexType.TREE
        BOOLIndexType.TREEIndexType.TREE
        数値型IndexType.TREEIndexType.TREE
        TIMESTAMPIndexType.TREEIndexType.TREE※制限あり
        GEOMETRYIndexType.SPATIAL(なし)
        BLOB(なし)(なし)
        配列型(なし)(なし)
        -

        時系列のロウキー(TIMESTAMP型)には索引を設定できません。また、カラム列を構成するカラム型によってデフォルト種別が異なる場合には、選択できません。

        - -

        このContainerインスタンスが未コミットのトランザクションを保持していた場合、コミットしてから作成を行います。処理対象のコンテナにおいて実行中の他のトランザクションが存在する場合、それらの終了を待機してから作成を行います。すでに索引が存在しており新たな索引が作成されなかった場合、他のトランザクションによって待機するかどうかは未定義です。またこの場合、このContainerインスタンスが保持している未コミットのトランザクションが常にコミットされるかどうかは未定義です。

        - -

        現バージョンでは、コンテナの規模など諸条件を満たした場合、索引の作成開始から終了までの間に、処理対象のコンテナに対してコンテナ情報の参照、一部の索引操作、トリガ操作、ロウ操作(更新含む)を行える場合があります。それ以外の操作は、Containerでの定義通り待機させる場合があります。索引の作成途中に別の操作が行われる場合は、作成途中の索引に関する情報はコンテナ情報には含まれません。

        -
        Throws:
        -
        GSException - 作成対象のカラム、索引名が上記の規則に合致しない場合
        -
        GSException - この処理のタイムアウト、このコンテナの削除もしくはスキーマ変更、接続障害が発生した場合、またはクローズ後に呼び出された場合
        -
        GSException - 指定のカラムにおいてサポートされていない索引種別が指定された場合
        -
        java.lang.NullPointerException - 引数にnullが指定された場合
        Since:
        -
        3.5
        -
      • -
      - - - -
        -
      • -

        createIndex

        -
        void createIndex(java.lang.String columnName)
        -                 throws GSException
        -
        指定された名前のカラムに対し、デフォルトの種別で名前のない索引を作成します。 -

        カラム名のみが設定されたIndexInfoを指定して createIndex(IndexInfo)を呼び出した場合と同様に振る舞います。

        -
        Throws:
        -
        GSException - 指定のカラム名がcreateIndex(IndexInfo)の規則に合致しない場合
        -
        GSException - この処理のタイムアウト、このコンテナの削除もしくはスキーマ変更、接続障害が発生した場合、またはクローズ後に呼び出された場合
        -
        GSException - 索引設定がサポートされていないカラムが指定された場合
        -
        java.lang.NullPointerException - 引数にnullが指定された場合
        -
      • -
      - - - -
        -
      • -

        createIndex

        -
        void createIndex(java.lang.String columnName,
        -               IndexType type)
        -                 throws GSException
        -
        指定された名前のカラムに対し、指定された種別で名前のない索引を作成します。 -

        カラム名と種別のみが設定されたIndexInfoを指定して createIndex(IndexInfo)を呼び出した場合と同様に振る舞います。

        -
        Throws:
        -
        GSException - 指定のカラム名と種別が createIndex(IndexInfo)の規則に合致しない場合
        -
        GSException - この処理のタイムアウト、このコンテナの削除もしくはスキーマ変更、接続障害が発生した場合、またはクローズ後に呼び出された場合
        -
        GSException - 指定のカラムにおいてサポートされていない索引種別が指定された場合
        -
        java.lang.NullPointerException - 1つ以上の引数にnullが指定された場合
        -
      • -
      - - - -
        -
      • -

        createRow

        -
        R createRow()
        -            throws GSException
        -
        このコンテナのカラムレイアウトに基づき、ロウオブジェクトを新規作成します。 -

        コンテナのロウオブジェクトの型がRowの場合、作成されるRowの各フィールドには GridStore.createRow(ContainerInfo)により作成した場合と同様に既定の初期値が設定されます。またこの場合、作成されたRowに対する操作は、このContainerオブジェクトのクローズ有無に影響しません。

        -
        Throws:
        -
        GSException - ユーザ定義型のロウオブジェクトを作成する場合に例外が送出された場合
        -
        GSException - クローズ後に呼び出された場合
        Since:
        -
        1.5
        -
      • -
      - - - -
        -
      • -

        createTrigger

        -
        void createTrigger(TriggerInfo info)
        -                   throws GSException
        -
        トリガを設定します。 -

        このコンテナに対して特定の種別の更新操作が行われた場合に、指定のURIに通知が送信されるようになります。指定されたトリガと同名のトリガが存在した場合、設定内容が上書きされます。

        - -

        トリガ設定内容の詳細は、TriggerInfoの定義を参照してください。トリガ名、トリガ種別、通知条件、通知先URI、通知内容の詳細は以下の通りです。

        - - トリガ名 -

        トリガ種別や通知条件などの違いによらず、1つのコンテナのトリガ間で、 ASCIIの大文字・小文字表記を含め同一の名前のものを複数定義することはできません。その他、トリガの定義において使用できるトリガ名の文字種や長さには制限があります。具体的には、GridDBテクニカルリファレンスを参照してください。特に記載のない限り、トリガ名を指定する操作では、 ASCIIの大文字・小文字表記の違いが区別されます。

        - - トリガ種別 -

        次のトリガ種別をサポートします。 - - - - - - - - - - - -
        名称説明
        RESTコンテナに指定された種別の更新操作が行われた際に、指定されたURIにREST(HTTP POSTメソッド)で通知するトリガです。
        Java Message Service(JMS)コンテナに指定された種別の更新操作が行われた際に、指定されたURIのJMSサーバへJMSメッセージを通知するトリガです。 JMSプロバイダとしてApache ActiveMQを使用します。
        - - 通知条件 -

        このコンテナに対するロウ新規作成/更新 (put(Object)put(Object, Object)put(java.util.Collection)GridStore.multiPut(java.util.Map)RowSet.update(Object))・削除(remove(Object)RowSet.remove()) -操作命令の実行直後に通知を行います。監視対象として複数の操作が指定された場合は、そのうちのいずれかが実行された際に通知を行います。

        - -

        通知を行った時点でのレプリケーションの完了は保証されません。自動コミットモード無効で実行されたロウ新規作成/更新・削除命令に対応する通知については、通知を行った時点でトランザクションが未コミットであったり、通知後にトランザクションがアボートされたりした場合、通知を受けた時点で通知に含まれるデータが取得できないことがあります。

        - -

        複数ロウ一括操作の場合、1件のロウ操作ごとに通知を行います。指定されたURIに通知を行っても一定時間以内に応答がない場合、タイムアウトし再送は行いません。 GridDBクラスタに障害が発生した場合、ある更新操作に対応する通知が行われないことのほか、複数回通知されることがあります。

        - - 通知先URI -

        -通知先URIは次の書式で記述します。

        -
        - (メソッド名)://(ホスト名):(ポート番号)/(パス)
        -

        ただし、トリガ種別がRESTの場合、メソッド名にはhttpのみ指定できます。

        - - 通知内容 -

        更新が行われたコンテナ名、更新操作名、更新されたロウデータの指定したカラムの値を通知します。更新操作名は、ロウ新規作成/更新では"put"、削除では"delete"となります。

        - -

        通知する値は、ロウ新規作成では新規作成直後、更新では更新後、削除では削除前のロウデータについての、指定カラムの値となります。カラムの型がTIMESTAMPの場合、1970-01-01T00:00:00Z -からの経過ミリ秒を示す整数が値として設定されます。カラムの型がBLOB型、GEOMETRY型、配列型の場合、空文字列が値として設定されます。

        - - 通知方法―RESTの場合 -

        以下のようなJSON文字列を、MIMEタイプapplication/jsonで送信します。

        -
        - {
        -   "container" : "(コンテナ名)",
        -   "event" : "(更新操作名)",
        -   "row" : {
        -     "(カラム名)" : (カラムデータ),
        -     "(カラム名)" : (カラムデータ),
        -     ...
        -   }
        - }
        - - 通知方法―JMSの場合 -

        javax.jms.TextMessageを、指定されたデスティネーション種別・デスティネーション名で送信します。

        - -

        コンテナ名は、 javax.jms.Message#setStringProperty("@container", "(コンテナ名)") -で設定されます。更新操作名は、 javax.jms.Message#setStringProperty("@event", "(更新操作名)") -で設定されます。

        - -

        カラムの値は、カラムの型に応じた javax.jms.Message#setXXXProperty("(カラム名)", (カラムデータ)) -で設定されます。

        - -

        トリガが設定されているコンテナに対して GridStore.putCollection(String, Class, boolean)GridStore.putTimeSeries(String, Class, TimeSeriesProperties, boolean) -などによりカラムレイアウトが変更された際に、トリガの通知対象となっているカラムの削除または名称変更があった場合、該当するカラムはトリガの通知対象から削除されます。

        - -

        GridDBからの通知の際に、設定されている通知先URIへのリクエストに対応するサーバが応答しなかった場合、タイムアウト時刻までの待機処理が発生します。この待機処理は、このコンテナならびに他の一部のコンテナの更新に対する通知が遅れる要因となります。したがって、無効となった通知先URIを持つトリガは dropTrigger(String)により削除することが推奨されます。

        - -

        一つのコンテナに対して設定できるトリガの最大数、ならびに、トリガの各種設定値の上限については、GridDBテクニカルリファレンスを参照してください。

        -
        Parameters:
        info - 設定対象のトリガ情報
        -
        Throws:
        -
        GSException - トリガ名がnull、空、またはその他の規則に合致しない場合
        -
        GSException - 監視対象更新操作の指定がない場合
        -
        GSException - 通知先URIが規定の構文に合致しない場合
        -
        GSException - トリガ種別でJMSが指定され、かつJMSデスティネーション種別がnull、または空、または指定の書式に合致しない場合
        -
        GSException - トリガ種別でJMSが指定され、かつJMSデスティネーション名がnull、または空の場合
        -
        GSException - この処理のタイムアウト、このコンテナの削除、接続障害が発生した場合、またはクローズ後に呼び出された場合
        -
        java.lang.NullPointerException - 引数にnullが指定された場合
        Since:
        -
        1.5
        -
      • -
      - - - -
        -
      • -

        dropIndex

        -
        void dropIndex(IndexInfo info)
        -               throws GSException
        -
        IndexInfoで設定されている内容に一致する、すべての索引を削除します。 -

        IndexInfoの設定内容は、削除対象の索引を絞り込む条件として使用されます。絞り込み条件は、カラム列、索引種別、索引名の3つに分類されます。それぞれ設定するかどうかは任意です。いずれも設定されていない場合は、作成済みのすべての索引が削除されます。

        - -

        カラム名列またはカラム番号列が設定されている場合、対応するコンテナにおいて実在するものである必要があります。カラム名列とカラム番号列が共に設定されている場合、対応するカラムが互いに一致している必要があります。カラム名列ならびにカラム番号列が共に設定されていない場合、他の絞り込み条件(索引種別、索引名)を満たす任意のカラム列に対する索引が削除対象となります。

        - -

        索引種別が設定されている場合、指定の種別の索引のみが削除対象となります。IndexType.DEFAULTが設定されている場合、 createIndex(IndexInfo)の基準に従い、デフォルト種別の索引が選択されます。索引をサポートしていないカラムや指定の種別の索引をサポートしていないカラムについては、削除対象にはなりません。索引種別が設定されていない場合、他の絞り込み条件(カラム列、索引名)を満たす任意の種別の索引が削除対象となります。

        - -

        索引名が設定されている場合、指定の名前の索引のみが削除対象となります。索引名の同一性は、createIndex(IndexInfo)の基準に従います。索引名が設定されていない場合、他の絞り込み条件(カラム列、索引種別)を満たす、任意の名前の索引ならびに名前のない索引が削除対象となります。

        - -

        削除対象となる索引が一つも存在しない場合、索引の削除は行われません。

        - -

        トランザクションの扱いは、createIndex(IndexInfo)と同様です。また、複数の索引が削除対象となった場合に、一部の索引のみが削除された状態で他のトランザクションが実行されることがありうるかどうかは未定義です。

        - -

        索引の削除要求の完了直後の状態に関しては、 GridStore.dropContainer(String)と同様です。

        -
        Throws:
        -
        GSException - 削除対象のカラム、索引名が上記の規則に合致しない場合
        -
        GSException - この処理のタイムアウト、このコンテナの削除もしくはスキーマ変更、接続障害が発生した場合、またはクローズ後に呼び出された場合
        -
        java.lang.NullPointerException - 引数にnullが指定された場合
        Since:
        -
        3.5
        -
      • -
      - - - -
        -
      • -

        dropIndex

        -
        void dropIndex(java.lang.String columnName)
        -               throws GSException
        -
        指定された名前のカラムのうち、デフォルトの種別の索引のみを削除します。 -

        カラム名とデフォルトの種別が設定されたIndexInfoを指定して dropIndex(IndexInfo)を呼び出した場合と同様に振る舞います。

        -
        Throws:
        -
        GSException - 指定のカラム名がdropIndex(IndexInfo)の規則に合致しない場合
        -
        GSException - この処理のタイムアウト、このコンテナの削除もしくはスキーマ変更、接続障害が発生した場合、またはクローズ後に呼び出された場合
        -
        java.lang.NullPointerException - 引数にnullが指定された場合
        -
      • -
      - - - -
        -
      • -

        dropIndex

        -
        void dropIndex(java.lang.String columnName,
        -             IndexType type)
        -               throws GSException
        -
        指定された名前のカラムのうち、指定された種別の索引のみを削除します。 -

        カラム名と種別が設定されたIndexInfoを指定して dropIndex(IndexInfo)を呼び出した場合と同様に振る舞います。

        -
        Throws:
        -
        GSException - 指定のカラム名がdropIndex(IndexInfo)の規則に合致しない場合
        -
        GSException - この処理のタイムアウト、このコンテナの削除もしくはスキーマ変更、接続障害が発生した場合、またはクローズ後に呼び出された場合
        -
        java.lang.NullPointerException - 1つ以上の引数にnullが指定された場合
        -
      • -
      - - - -
        -
      • -

        dropTrigger

        -
        void dropTrigger(java.lang.String name)
        -                 throws GSException
        -
        トリガを削除します。 -

        指定された名前のトリガが存在しない場合は何も変更しません。

        -
        Throws:
        -
        GSException - この処理のタイムアウト、このコンテナの削除、接続障害が発生した場合、またはクローズ後に呼び出された場合
        -
        java.lang.NullPointerException - 引数にnullが指定された場合
        Since:
        -
        1.5
        -
      • -
      - - - -
        -
      • -

        flush

        -
        void flush()
        -           throws GSException
        -
        これまでの更新結果をSSDなどの不揮発性記憶媒体に書き出し、すべてのクラスタノードが突然停止したとしても内容が失われないようにします。 -

        通常より信頼性が要求される処理のために使用します。ただし、頻繁に実行すると性能低下を引き起こす可能性が高まります。

        - -

        書き出し対象のクラスタノードの範囲など、挙動の詳細はGridDB上の設定によって変化します。

        -
        Throws:
        -
        GSException - この処理のタイムアウト、このコンテナの削除、接続障害が発生した場合、またはクローズ後に呼び出された場合
        -
      • -
      - - - - - - - - - - - -
        -
      • -

        get

        -
        R get(K key,
        -    boolean forUpdate)
        -      throws GSException
        -
        指定のオプションに従い、ロウキーに対応するロウの内容を取得します。 -

        ロウキーに対応するカラムが存在する場合のみ使用できます。

        - -

        手動コミットモードにおいて更新用ロックを要求した場合、トランザクションが終了するかタイムアウトするまで対象ロウのロックを維持します。ロックされたロウに対する他のトランザクションからの更新・削除操作は、このトランザクションが終了するかタイムアウトするまで待機するようになります。対象ロウが削除されたとしても、ロックは維持されます。

        - -

        自動コミットモードの場合、更新用ロックを要求できません。

        -
        Parameters:
        forUpdate - 更新用ロックを要求するかどうか
        -
        Returns:
        対応するロウオブジェクト。存在しない場合はnull
        -
        Throws:
        -
        GSException - ロウキーに対応するカラムが存在しない場合
        -
        GSException - 自動コミットモードにもかかわらず、更新用ロックを要求しようとした場合
        -
        GSException - この処理またはトランザクションのタイムアウト、このコンテナの削除もしくはスキーマ変更、接続障害が発生した場合、クローズ後に呼び出された場合、またはサポート範囲外の値がキーとして設定されていた場合
        -
        java.lang.ClassCastException - 指定のロウキーがマッピング処理で使用されるロウキーの型と対応しない場合
        -
        java.lang.NullPointerException - keynullが指定された場合
        -
      • -
      - - - -
        -
      • -

        getBindType

        -
        Container.BindType<K,R,? extends Container<K,R>> getBindType()
        -                                                             throws GSException
        -
        このオブジェクトと結びつく型情報を取得します。 -

        取得する型情報には、このオブジェクトを構築する際に与えられたロウキーの型、ロウオブジェクトの型と同一のものが設定されます。

        - -

        Containerまたはそのサブインタフェースの型については、構築時に与えられた型と同一になるとは限らず、そのサブインタフェースの型が求まる可能性があります。また、ContainerTypeにより区別されるコンテナ種別と一対一で対応することは保証しません。

        -
        Returns:
        このオブジェクトと結びつく型情報
        -
        Throws:
        -
        GSException - クローズ後に呼び出された場合
        Since:
        -
        4.3
        -
      • -
      - - - -
        -
      • -

        getType

        -
        ContainerType getType()
        -                      throws GSException
        -
        このコンテナの種別を取得します。 -

        現バージョンでは、インスタンス生成時点で常に種別が確定するため、この操作によりGridDBクラスタに問い合わせを行うことはありません。

        -
        Throws:
        -
        GSException - クローズ後に呼び出された場合
        Since:
        -
        1.5
        -
      • -
      - - - -
        -
      • -

        put

        -
        boolean put(java.util.Collection<R> rowCollection)
        -            throws GSException
        -
        指定のロウオブジェクト集合に基づき、任意個数のロウをまとめて新規作成または更新します。 -

        指定のロウオブジェクト集合の各ロウについて、イテレータからの取り出し順序に従ってput(Object)を呼び出した場合と同様に新規作成または更新操作を行います。

        - -

        指定のロウオブジェクト集合内に同一のロウキーを持つ複数のロウが存在する場合、ロウオブジェクト集合のイテレータからの取り出し順序を基準として、同一のロウキーを持つ最も後方にあるロウオブジェクトの内容が反映されます。

        - -

        コンテナの種別ならびに設定によっては、操作できるロウの内容について put(Object)と同様の制限が設けられています。具体的な制限事項は、サブインタフェースの定義を参照してください。

        - -

        手動コミットモードの場合、対象のロウがロックされます。

        - -

        自動コミットモードのときに、コンテナならびにロウに対する処理の途中で例外が発生した場合、コンテナの一部のロウに対する操作結果のみが反映されたままとなることがあります。

        -
        Returns:
        現バージョンでは、常にfalse
        -
        Throws:
        -
        GSException - 特定コンテナ種別固有の制限に反する操作を行った場合
        -
        GSException - この処理またはトランザクションのタイムアウト、このコンテナの削除もしくはスキーマ変更、接続障害が発生した場合、クローズ後に呼び出された場合、またはサポート範囲外の値がロウオブジェクトに含まれていた場合
        -
        java.lang.ClassCastException - 指定の各ロウオブジェクトがマッピング処理で使用されるロウオブジェクトの型と対応しない場合
        -
        java.lang.NullPointerException - rowCollectionまたはその要素として nullが指定された場合。また、put(Object, Object)と同様ロウオブジェクトの特定の箇所にnullが含まれていた場合
        See Also:
        put(Object)
        -
      • -
      - - - - - -
        -
      • -

        put

        -
        boolean put(K key,
        -          R row)
        -            throws GSException
        -
        必要に応じ別途ロウキーを指定して、ロウを新規作成または更新します。 -

        ロウキーに対応するカラムが存在する場合、ロウキーとコンテナの状態を基に、ロウを新規作成するか、更新するかを決定します。この際、対応するロウがコンテナ内に存在しない場合は新規作成、存在する場合は更新します。ロウオブジェクトとは別にロウキーを指定した場合、ロウオブジェクト内のロウキーより優先して使用されます。

        - -

        ロウキーに対応するカラムを持たない場合、常に新規のロウを作成します。別途指定するロウキーには、常にnullを指定します。

        - -

        コンテナの種別ならびに設定によっては、制限が設けられています。具体的な制限事項は、サブインタフェースの定義を参照してください。

        - -

        手動コミットモードの場合、対象のロウはロックされます。

        -
        Parameters:
        key - 処理対象のロウキー
        row - 新規作成または更新するロウの内容と対応するロウオブジェクト
        -
        Returns:
        指定のロウキーと一致するロウが存在したかどうか
        -
        Throws:
        -
        GSException - ロウキーに対応するカラムが存在しないにもかかわらず、キーが指定された場合
        -
        GSException - 特定コンテナ固有の制限に反する操作を行った場合
        -
        GSException - この処理またはトランザクションのタイムアウト、このコンテナの削除もしくはスキーマ変更、接続障害が発生した場合、クローズ後に呼び出された場合、またはサポート範囲外の値がキーまたはロウオブジェクトに含まれていた場合
        -
        java.lang.ClassCastException - 指定のキーもしくはロウオブジェクトと、マッピング処理で使用される型との間で対応しないものがある場合
        -
        java.lang.NullPointerException - rownullが指定された場合。また、ロウフィールドに対応するロウオブジェクト内のオブジェクトについて、NOT NULL制約があるにも関わらずnullが設定されている場合や、配列型の場合にnullの要素が含まれている場合
        -
      • -
      - - - - - -
        -
      • -

        put

        -
        boolean put(R row)
        -            throws GSException
        -
        常にロウオブジェクトのみを指定して、ロウを新規作成または更新します。 -

        指定のロウオブジェクト内のロウキーを使用する点を除き、 put(Object, Object)と同等です。

        -
        Throws:
        -
        GSException
        See Also:
        put(Object, Object)
        -
      • -
      - - - -
        -
      • -

        query

        -
        Query<R> query(java.lang.String tql)
        -               throws GSException
        -
        指定のTQL文を実行するためのクエリを作成します。 -

        選択式に集計演算を含むクエリなど、実行結果の出力形式がこのコンテナのロウの形式と対応しないクエリに対しては、使用できません。代わりに、query(String, Class)が利用できます。

        - -

        Query.fetch(boolean)を通じてロウ集合を求める際に更新用ロックのオプションを有効できるのは、このコンテナ上に実在しないロウが選択されることのないクエリのみです。たとえば、補間演算を含むクエリに対しては有効にできません。

        - -

        現バージョンでは、TQL文の誤りによるGSExceptionや、 nullを指定できない引数でnullを指定したことによる NullPointerExceptionは送出されません。引数に誤りがあった場合、得られたクエリをフェッチする際に例外が送出されます。

        -
        Parameters:
        tql - TQL文。nullは指定できない
        -
        Throws:
        -
        GSException - 現バージョンでは送出されない
        See Also:
        query(String, Class)
        -
      • -
      - - - -
        -
      • -

        query

        -
        <S> Query<S> query(java.lang.String tql,
        -                 java.lang.Class<S> rowType)
        -               throws GSException
        -
        指定のTQL文・対応付け用クラスを使用する、クエリオブジェクトを作成します。 -

        集計演算のように、このコンテナのロウと異なる型の結果を期待する場合に使用します。

        -

        rowTypeには次の型またはnullのみを指定できます。

        -
        -
        コンテナのロウの型
        -
        query(String)と同様、このコンテナと対応する型のロウデータを受け取ります。
        -
        AggregationResult
        -
        集計演算の実行結果を受け取ります。
        -
        QueryAnalysisEntry
        -
        EXPLAIN文ならびEXPLAIN ANALYZE文の実行結果を受け取ります。
        -
        null
        -
        実行結果に応じた適切な型により結果を受け取ります。
        -
        -

        上記以外の値は指定できません。

        - -

        Query.fetch(boolean)を通じてロウ集合を求める際に更新用ロックのオプションを有効できるのは、このコンテナ上に実在しないロウが選択されることのないクエリのみです。たとえば、補間演算を含むクエリに対しては有効にできません。

        - -

        現バージョンでは、TQL文の誤りによるGSExceptionや、 nullを指定できない引数でnullを指定したことによる NullPointerExceptionは送出されません。引数に誤りがあった場合、得られたクエリをフェッチする際に例外が送出されます。

        -
        Parameters:
        tql - TQL文。nullは指定できない
        rowType - 期待するロウオブジェクトの型またはnull
        -
        Throws:
        -
        GSException - サポートされない型をrowTypeに指定した場合
        -
      • -
      - - - - - -
        -
      • -

        remove

        -
        boolean remove(K key)
        -               throws GSException
        -
        指定のロウキーに対応するロウを削除します。 -

        ロウキーに対応するカラムが存在する場合のみ使用できます。対応するロウが存在しない場合は何も変更しません。

        - -

        コンテナの種別ならびに設定によっては、制限が設けられています。具体的な制限事項は、サブインタフェースの定義を参照してください。

        - -

        手動コミットモードの場合、対象のロウはロックされます。

        -
        Returns:
        対応するロウが存在したかどうか
        -
        Throws:
        -
        GSException - ロウキーに対応するカラムが存在しない場合
        -
        GSException - 特定コンテナ固有の制限に反する操作を行った場合
        -
        GSException - この処理またはトランザクションのタイムアウト、このコンテナの削除もしくはスキーマ変更、接続障害が発生した場合、クローズ後に呼び出された場合、またはサポート範囲外の値がキーとして指定された場合
        -
        java.lang.ClassCastException - 指定のロウキーがマッピング処理で使用されるロウキーの型と対応しない場合
        -
        java.lang.NullPointerException - 引数にnullが指定された場合
        -
      • -
      - - - -
        -
      • -

        setAutoCommit

        -
        void setAutoCommit(boolean enabled)
        -                   throws GSException
        -
        コミットモードの設定を変更します。 -

        自動コミットモードでは、直接トランザクション状態を制御できず、変更操作が逐次コミットされます。自動コミットモードが有効でない場合、すなわち手動コミットモードの場合は、直接commit()を呼び出すかトランザクションがタイムアウトしない限り、このコンテナ内で同一のトランザクションが使用され続け、変更操作はコミットされません。

        - -

        自動コミットモードが無効から有効に切り替わる際、未コミットの変更内容は暗黙的にコミットされます。コミットモードに変更がない場合、トランザクション状態は変更されません。この挙動は、 Connection.setAutoCommit(boolean)と同様です。

        -
        Throws:
        -
        GSException - モード変更に伴いコミット処理を要求した際に、この処理またはトランザクションのタイムアウト、このコンテナの削除、接続障害が発生した場合、またはクローズ後に呼び出された場合
        -
      • -
      -
    • -
    -
  • -
-
-
- - - -
-
-

Class ContainerInfo

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • com.toshiba.mwcloud.gs.ContainerInfo
    • -
    -
  • -
-
-
    -
  • -
    -
    -
    public class ContainerInfo
    -extends java.lang.Object
    -
    特定のコンテナに関する情報を表します。 -

    コンテナ名の表記、もしくは、コンテナ種別と時系列オプションの有無の対応などの内容の妥当性について、必ずしも検査するとは限りません。

    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Constructor Summary

      - - - - - - - - - - - - - - - - - -
      Constructors 
      Constructor and Description
      ContainerInfo() -
      空のコンテナ情報を作成します。
      -
      ContainerInfo(ContainerInfo containerInfo) -
      指定のコンテナ情報を複製します。
      -
      ContainerInfo(java.lang.String name, - ContainerType type, - java.util.List<ColumnInfo> columnInfoList, - boolean rowKeyAssigned) -
      複合ロウキーを持たない場合に限定し、カラムレイアウトに関する情報を指定してコンテナ情報を作成します。
      -
      ContainerInfo(java.lang.String name, - ContainerType type, - java.util.List<ColumnInfo> columnInfoList, - java.util.List<java.lang.Integer> rowKeyColumnList) -
      任意のロウキー構成を含む、カラムレイアウトに関する情報を指定してコンテナ情報を作成します。
      -
      -
    • -
    - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Methods 
      Modifier and TypeMethod and Description
      intgetColumnCount() -
      カラム数を取得します。
      -
      ColumnInfogetColumnInfo(int column) -
      指定カラムに関する情報を取得します。
      -
      java.lang.StringgetDataAffinity() -
      データ配置最適化のために用いられる、コンテナ間の類似性を示す文字列を取得します。
      -
      java.util.List<IndexInfo>getIndexInfoList() -
      索引情報の一覧を取得します。
      -
      java.lang.StringgetName() -
      コンテナ名を取得します。
      -
      java.util.List<java.lang.Integer>getRowKeyColumnList() -
      ロウキーを構成するカラムの一覧を取得します。
      -
      TimeSeriesPropertiesgetTimeSeriesProperties() -
      時系列構成オプションを取得します。
      -
      java.util.List<TriggerInfo>getTriggerInfoList() -
      トリガ情報の一覧を取得します。
      -
      ContainerTypegetType() -
      コンテナの種別を取得します。
      -
      booleanisColumnOrderIgnorable() -
      カラム順序が無視できるかどうかを返します。
      -
      booleanisRowKeyAssigned() -
      複合ロウキーが設定されていない場合に限定し、ロウキーに対応するカラムの有無を取得します。
      -
      voidsetColumnInfoList(java.util.List<ColumnInfo> columnInfoList) -
      すべてのカラムの情報をまとめて設定します。
      -
      voidsetColumnOrderIgnorable(boolean ignorable) -
      カラム順序が無視できるかどうかを設定します。
      -
      voidsetDataAffinity(java.lang.String dataAffinity) -
      データ配置最適化のために用いられる、コンテナ間の類似性(データアフィニティ)を示す文字列を設定します。
      -
      voidsetIndexInfoList(java.util.List<IndexInfo> indexInfoList) -
      索引情報の一覧を設定します。
      -
      voidsetName(java.lang.String name) -
      コンテナ名を設定します。
      -
      voidsetRowKeyAssigned(boolean assigned) -
      ロウキーに対応するカラムの有無を設定します。
      -
      voidsetRowKeyColumnList(java.util.List<java.lang.Integer> rowKeyColumnList) -
      ロウキーを構成するカラムの一覧を設定します。
      -
      voidsetTimeSeriesProperties(TimeSeriesProperties props) -
      時系列構成オプションを設定します。
      -
      voidsetTriggerInfoList(java.util.List<TriggerInfo> triggerInfoList) -
      トリガ情報の一覧を設定します。
      -
      voidsetType(ContainerType type) -
      コンテナ種別を設定します。
      -
      -
        -
      • - - -

        Methods inherited from class java.lang.Object

        -clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        ContainerInfo

        -
        public ContainerInfo()
        -
        空のコンテナ情報を作成します。
        -
        Since:
        -
        1.5
        -
      • -
      - - - -
        -
      • -

        ContainerInfo

        -
        public ContainerInfo(ContainerInfo containerInfo)
        -
        指定のコンテナ情報を複製します。
        -
        Parameters:
        containerInfo - 複製元のコンテナ情報。nullは指定できない
        -
        Throws:
        -
        java.lang.NullPointerException - 引数にnullが指定された場合
        Since:
        -
        1.5
        -
      • -
      - - - -
        -
      • -

        ContainerInfo

        -
        public ContainerInfo(java.lang.String name,
        -             ContainerType type,
        -             java.util.List<ColumnInfo> columnInfoList,
        -             boolean rowKeyAssigned)
        -
        複合ロウキーを持たない場合に限定し、カラムレイアウトに関する情報を指定してコンテナ情報を作成します。
        -
        Parameters:
        name - コンテナ名。nullを指定すると未設定状態となる
        type - コンテナ種別。nullを指定すると未設定状態となる
        columnInfoList - カラム情報のリスト。nullは指定できない
        rowKeyAssigned - ロウキーに対応するカラムの有無。単一カラムからなるロウキーを持つ場合はtrue、持たない場合はfalse
        -
        Throws:
        -
        java.lang.NullPointerException - columnInfoListnullが指定された場合
        Since:
        -
        1.5
        -
      • -
      - - - -
        -
      • -

        ContainerInfo

        -
        public ContainerInfo(java.lang.String name,
        -             ContainerType type,
        -             java.util.List<ColumnInfo> columnInfoList,
        -             java.util.List<java.lang.Integer> rowKeyColumnList)
        -
        任意のロウキー構成を含む、カラムレイアウトに関する情報を指定してコンテナ情報を作成します。
        -
        Parameters:
        name - コンテナ名。nullを指定すると未設定状態となる
        type - コンテナ種別。nullを指定すると未設定状態となる
        columnInfoList - カラム情報のリスト。nullは指定できない
        rowKeyColumnList - ロウキーを構成するカラム列についての、0 -から始まるカラム番号一覧。長さ0のリストまたはnullを指定すると、ロウキーなしとみなされる
        -
        Throws:
        -
        java.lang.NullPointerException - columnInfoListnullが指定された場合
        Since:
        -
        4.3
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        getColumnCount

        -
        public int getColumnCount()
        -
        カラム数を取得します。
        -
        Returns:
        カラム数。カラムレイアウト未設定の場合は0
        -
      • -
      - - - -
        -
      • -

        getColumnInfo

        -
        public ColumnInfo getColumnInfo(int column)
        -
        指定カラムに関する情報を取得します。
        -
        Parameters:
        column - カラムを特定するための番号。0以上かつカラム数未満の値
        -
        Returns:
        指定カラム番号に対応するカラム情報
        -
        Throws:
        -
        java.lang.IllegalArgumentException - 範囲外のカラム番号を指定した場合
        See Also:
        RowField.columnNumber()
        -
      • -
      - - - -
        -
      • -

        getDataAffinity

        -
        public java.lang.String getDataAffinity()
        -
        データ配置最適化のために用いられる、コンテナ間の類似性を示す文字列を取得します。
        -
        Returns:
        時系列間の類似性を示す文字列。標準設定の場合はnull
        Since:
        -
        2.1
        -
        See Also:
        setDataAffinity(String)
        -
      • -
      - - - -
        -
      • -

        getIndexInfoList

        -
        public java.util.List<IndexInfo> getIndexInfoList()
        -
        索引情報の一覧を取得します。 -

        返却された値に対して変更操作を行った場合、 UnsupportedOperationExceptionが発生することがあります。また、このオブジェクトに対する操作により、返却されたオブジェクトの内容が変化することはありません。

        -
        Returns:
        索引情報の一覧
        Since:
        -
        3.5
        -
      • -
      - - - -
        -
      • -

        getName

        -
        public java.lang.String getName()
        -
        コンテナ名を取得します。
        -
        Returns:
        コンテナ名。未設定の場合はnull
        -
      • -
      - - - -
        -
      • -

        getRowKeyColumnList

        -
        public java.util.List<java.lang.Integer> getRowKeyColumnList()
        -
        ロウキーを構成するカラムの一覧を取得します。 -

        返却された値に対して変更操作を行った場合、 UnsupportedOperationExceptionが発生することがあります。また、このオブジェクトに対する操作により、返却されたオブジェクトの内容が変化することはありません。

        -
        Returns:
        ロウキーを構成するカラム列についての、0から始まるカラム番号一覧。対応するコンテナがロウキーを持たない場合は長さ0 -のリスト
        Since:
        -
        4.3
        -
      • -
      - - - -
        -
      • -

        getTimeSeriesProperties

        -
        public TimeSeriesProperties getTimeSeriesProperties()
        -
        時系列構成オプションを取得します。 -

        返却されたオブジェクトの内容を呼び出し後に変更した場合に、このオブジェクトの内容が変化するかどうかは未定義です。また、このオブジェクトに対する操作により、返却されたオブジェクトの内容が変化するかどうかは未定義です。

        -
        Returns:
        時系列構成オプション。未設定の場合はnull
        Since:
        -
        1.5
        -
      • -
      - - - -
        -
      • -

        getTriggerInfoList

        -
        public java.util.List<TriggerInfo> getTriggerInfoList()
        -
        トリガ情報の一覧を取得します。 -

        返却された値に対して変更操作を行った場合、 UnsupportedOperationExceptionが発生することがあります。また、このオブジェクトに対する操作により、返却されたオブジェクトの内容が変化することはありません。

        -
        Returns:
        トリガ情報の一覧
        Since:
        -
        1.5
        -
      • -
      - - - -
        -
      • -

        getType

        -
        public ContainerType getType()
        -
        コンテナの種別を取得します。
        -
        Returns:
        コンテナの種別。未設定の場合はnull
        See Also:
        ContainerType
        -
      • -
      - - - -
        -
      • -

        isColumnOrderIgnorable

        -
        public boolean isColumnOrderIgnorable()
        -
        カラム順序が無視できるかどうかを返します。
        -
        Returns:
        カラム順序が無視できるか
        Since:
        -
        1.5
        -
      • -
      - - - -
        -
      • -

        isRowKeyAssigned

        -
        public boolean isRowKeyAssigned()
        -
        複合ロウキーが設定されていない場合に限定し、ロウキーに対応するカラムの有無を取得します。 -

        このメソッドがtrueを返却する場合、ロウキーに対応するカラム番号は0です。

        - -

        任意のロウキー構成を参照するには、getRowKeyColumnList()を使用します。

        -
        Returns:
        ロウキーの有無
        -
        Throws:
        -
        java.lang.IllegalStateException - 複合ロウキーが設定されていた場合
        -
      • -
      - - - -
        -
      • -

        setColumnInfoList

        -
        public void setColumnInfoList(java.util.List<ColumnInfo> columnInfoList)
        -
        すべてのカラムの情報をまとめて設定します。 -

        カラム順序を無視しない場合、指定のカラム情報の並びが実際のコンテナのカラムの並びと対応します。

        - -

        ロウキーに対応するカラムの有無の設定状態によらず、設定を解除することができます。

        - -

        指定したオブジェクトの内容を呼び出し後に変更したとしても、このオブジェクトの内容は変化しません。

        -
        Parameters:
        columnInfoList - カラム情報のリスト。nullまたは空のリスト場合、設定が解除される
        Since:
        -
        1.5
        -
        See Also:
        setColumnOrderIgnorable(boolean)
        -
      • -
      - - - -
        -
      • -

        setColumnOrderIgnorable

        -
        public void setColumnOrderIgnorable(boolean ignorable)
        -
        カラム順序が無視できるかどうかを設定します。 -

        デフォルトでは無視しない(false)状態に設定されています。

        -
        Parameters:
        ignorable - カラム順序が無視できるか
        Since:
        -
        1.5
        -
        See Also:
        GridStore.putContainer(String, ContainerInfo, boolean)
        -
      • -
      - - - -
        -
      • -

        setDataAffinity

        -
        public void setDataAffinity(java.lang.String dataAffinity)
        -
        データ配置最適化のために用いられる、コンテナ間の類似性(データアフィニティ)を示す文字列を設定します。 -

        同一クラスタノード上の同一管理領域内に格納されるコンテナについて、配置先を最適化するために使用されます。

        - -

        データアフィニティが同一のコンテナの内容は、近接する配置先に格納される可能性が高くなります。また、解放期限が設定され、近接する配置先に格納された時系列について、登録頻度などの変更パターンが類似している場合、解放期限に到達したロウの解放処理が効率的に行われる可能性が高くなります。

        - -

        コンテナの定義において使用できるデータアフィニティ文字列の文字種や長さには制限があります。具体的には、GridDBテクニカルリファレンスを参照してください。ただし、文字列を設定した時点で必ずしもすべての制限を検査するとは限りません。特に記載のない限り、データアフィニティ文字列が使用される操作では、ASCIIの大文字・小文字表記の違いが区別されます。

        -
        Parameters:
        dataAffinity - コンテナ間の類似性を示す文字列。nullが指定された場合は標準設定を優先することを示す。規則に合致しない文字列は指定できない場合がある
        -
        Throws:
        -
        java.lang.IllegalArgumentException - 制限に反する文字列が指定されたことを検知できた場合
        Since:
        -
        2.1
        -
      • -
      - - - -
        -
      • -

        setIndexInfoList

        -
        public void setIndexInfoList(java.util.List<IndexInfo> indexInfoList)
        -
        索引情報の一覧を設定します。 -

        指定したオブジェクトの内容を呼び出し後に変更したとしても、このオブジェクトの内容は変化しません。

        -
        Parameters:
        indexInfoList - 索引情報の一覧。nullまたは空のリスト場合、設定が解除される
        Since:
        -
        3.5
        -
      • -
      - - - -
        -
      • -

        setName

        -
        public void setName(java.lang.String name)
        -
        コンテナ名を設定します。
        -
        Parameters:
        name - コンテナ名。nullの場合、設定が解除される
        Since:
        -
        1.5
        -
      • -
      - - - -
        -
      • -

        setRowKeyAssigned

        -
        public void setRowKeyAssigned(boolean assigned)
        -
        ロウキーに対応するカラムの有無を設定します。 -

        デフォルトではロウキーなしに設定されています。

        - -

        カラムレイアウトの設定状態によらず使用できます。

        -
        Parameters:
        assigned - ロウキーに対応するカラムの有無。ロウキーを持つ場合は true、持たない場合はfalse
        Since:
        -
        1.5
        -
      • -
      - - - -
        -
      • -

        setRowKeyColumnList

        -
        public void setRowKeyColumnList(java.util.List<java.lang.Integer> rowKeyColumnList)
        -
        ロウキーを構成するカラムの一覧を設定します。 -

        指定したオブジェクトの内容を呼び出し後に変更したとしても、このオブジェクトの内容は変化しません。

        -
        Parameters:
        rowKeyColumnList - ロウキーを構成するカラム列についての、0 -から始まるカラム番号一覧。長さ0のリストまたはnullを指定すると、ロウキーなしとみなされる
        Since:
        -
        4.3
        -
      • -
      - - - -
        -
      • -

        setTimeSeriesProperties

        -
        public void setTimeSeriesProperties(TimeSeriesProperties props)
        -
        時系列構成オプションを設定します。 -

        コンテナ種別の設定状態によらず使用できます。

        - -

        指定したオブジェクトの内容を呼び出し後に変更したとしても、このオブジェクトの内容は変化しません。

        -
        Parameters:
        props - 時系列構成オプション。nullの場合、設定が解除される
        Since:
        -
        1.5
        -
      • -
      - - - -
        -
      • -

        setTriggerInfoList

        -
        public void setTriggerInfoList(java.util.List<TriggerInfo> triggerInfoList)
        -
        トリガ情報の一覧を設定します。 -

        返却された値に対して変更操作を行った場合、 UnsupportedOperationExceptionが発生することがあります。また、このオブジェクトに対する操作により、返却されたオブジェクトの内容が変化することはありません。

        -
        Parameters:
        triggerInfoList - トリガ情報のリスト。nullまたは空のリスト場合、設定が解除される
        Since:
        -
        1.5
        -
      • -
      - - - -
        -
      • -

        setType

        -
        public void setType(ContainerType type)
        -
        コンテナ種別を設定します。
        -
        Parameters:
        type - コンテナ種別。nullの場合、設定が解除される
        Since:
        -
        1.5
        -
      • -
      -
    • -
    -
  • -
-
-
- - - -
-
-

Enum ContainerType

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • java.lang.Enum<ContainerType>
    • -
    • -
        -
      • com.toshiba.mwcloud.gs.ContainerType
      • -
      -
    • -
    -
  • -
-
-
    -
  • -
    -
    All Implemented Interfaces:
    -
    java.io.Serializable, java.lang.Comparable<ContainerType>
    -
    -
    -
    -
    public enum ContainerType
    -extends java.lang.Enum<ContainerType>
    -
    コンテナの種別を表します。
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Enum Constant Summary

      - - - - - - - - - - - -
      Enum Constants 
      Enum Constant and Description
      COLLECTION -
      対象のコンテナがコレクションであることを示します。
      -
      TIME_SERIES -
      対象のコンテナが時系列であることを示します。
      -
      -
    • -
    - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - - - - - -
      Methods 
      Modifier and TypeMethod and Description
      static ContainerTypevalueOf(java.lang.String name) -
      Returns the enum constant of this type with the specified name.
      -
      static ContainerType[]values() -
      Returns an array containing the constants of this enum type, in -the order they are declared.
      -
      -
        -
      • - - -

        Methods inherited from class java.lang.Enum

        -clone, compareTo, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf
      • -
      -
        -
      • - - -

        Methods inherited from class java.lang.Object

        -getClass, notify, notifyAll, wait, wait, wait
      • -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Enum Constant Detail

      - - - -
        -
      • -

        COLLECTION

        -
        public static final ContainerType COLLECTION
        -
        対象のコンテナがコレクションであることを示します。
        -
      • -
      - - - -
        -
      • -

        TIME_SERIES

        -
        public static final ContainerType TIME_SERIES
        -
        対象のコンテナが時系列であることを示します。
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        valueOf

        -
        public static ContainerType valueOf(java.lang.String name)
        -
        Returns the enum constant of this type with the specified name. -The string must match exactly an identifier used to declare an -enum constant in this type. (Extraneous whitespace characters are -not permitted.)
        -
        Parameters:
        name - the name of the enum constant to be returned.
        -
        Returns:
        the enum constant with the specified name
        -
        Throws:
        -
        java.lang.IllegalArgumentException - if this enum type has no constant -with the specified name
        -
        java.lang.NullPointerException - if the argument is null
        -
      • -
      - - - -
        -
      • -

        values

        -
        public static ContainerType[] values()
        -
        Returns an array containing the constants of this enum type, in -the order they are declared. This method may be used to iterate -over the constants as follows: -
        -for (ContainerType c : ContainerType.values())
        -    System.out.println(c);
        -
        -
        Returns:
        an array containing the constants of this enum type, in -the order they are declared
        -
      • -
      -
    • -
    -
  • -
-
-
- - - -
-
-

Enum FetchOption

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • java.lang.Enum<FetchOption>
    • -
    • -
        -
      • com.toshiba.mwcloud.gs.FetchOption
      • -
      -
    • -
    -
  • -
-
-
    -
  • -
    -
    All Implemented Interfaces:
    -
    java.io.Serializable, java.lang.Comparable<FetchOption>
    -
    -
    -
    -
    public enum FetchOption
    -extends java.lang.Enum<FetchOption>
    -
    クエリ実行結果を取得する際のオプション項目です。
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Enum Constant Summary

      - - - - - - - - - - - -
      Enum Constants 
      Enum Constant and Description
      LIMIT -
      取得するロウの数の最大値を設定するために使用します。
      -
      PARTIAL_EXECUTION -
      部分実行モードを設定するために使用します。
      -
      -
    • -
    - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - - - - - -
      Methods 
      Modifier and TypeMethod and Description
      static FetchOptionvalueOf(java.lang.String name) -
      Returns the enum constant of this type with the specified name.
      -
      static FetchOption[]values() -
      Returns an array containing the constants of this enum type, in -the order they are declared.
      -
      -
        -
      • - - -

        Methods inherited from class java.lang.Enum

        -clone, compareTo, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf
      • -
      -
        -
      • - - -

        Methods inherited from class java.lang.Object

        -getClass, notify, notifyAll, wait, wait, wait
      • -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Enum Constant Detail

      - - - -
        -
      • -

        LIMIT

        -
        public static final FetchOption LIMIT
        -
        取得するロウの数の最大値を設定するために使用します。 -

        実行結果のロウ数が最大値を超えた場合、RowSetで得られる順番で先頭から最大値の分だけが取得できます。それ以降のロウは取得できません。

        - -

        サポートされる設定値の型は、IntegerまたはLongです。負の値は指定できません。設定が省略された場合、上限は設定されません。

        -
      • -
      - - - -
        -
      • -

        PARTIAL_EXECUTION

        -
        public static final FetchOption PARTIAL_EXECUTION
        -
        部分実行モードを設定するために使用します。 -

        部分実行モードでは、クエリの中間処理や結果送受信に用いるバッファのサイズなどがなるべく一定の範囲に収まるよう、必要に応じて実行対象のデータ範囲を分割し、この部分範囲ごとに実行とフェッチをリクエストすることがあります。そのため、RowSetを取得した時点で一部の範囲の結果が求まっていないことや、結果ロウを順に参照していく段階で、残りの範囲を部分的に実行していくことがあります。

        - -

        部分実行モードは、現バージョンでは次の条件すべてを満たすクエリに使用できます。また、LIMITオプションと併用することができます。条件を満たさない場合でも、各種フェッチオプションの設定時点ではエラーを検知しない場合があります。

        -
          -
        • TQL文からなるクエリであること
        • -
        • TQL文において、選択式が「*」のみからなり、ORDER BY節を含まないこと
        • -
        • 対応するContainerが個々の部分的なクエリ実行時点において常に自動コミットモードに設定されていること
        • -
        - -

        部分実行モードでは、対応するContainerのトランザクション分離レベルや状態に基づき、個々の部分的なクエリ実行時点において参照可能なロウが使用されます。ただし、クエリ全体の実行開始時点で存在しないロウは、実行対象から外れる場合があります。

        - -

        部分実行モードを有効にした場合にRowSetに対して使用できない操作や特有の挙動については、個別の定義を参照してください。

        - -

        サポートされる設定値の型は、Booleanのみです。部分実行モードを有効にするには、Boolean.TRUEと一致する値を指定します。現バージョンでは、未設定の場合には部分実行モードを有効にしません。

        -
        Since:
        -
        4.0
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        valueOf

        -
        public static FetchOption valueOf(java.lang.String name)
        -
        Returns the enum constant of this type with the specified name. -The string must match exactly an identifier used to declare an -enum constant in this type. (Extraneous whitespace characters are -not permitted.)
        -
        Parameters:
        name - the name of the enum constant to be returned.
        -
        Returns:
        the enum constant with the specified name
        -
        Throws:
        -
        java.lang.IllegalArgumentException - if this enum type has no constant -with the specified name
        -
        java.lang.NullPointerException - if the argument is null
        -
      • -
      - - - -
        -
      • -

        values

        -
        public static FetchOption[] values()
        -
        Returns an array containing the constants of this enum type, in -the order they are declared. This method may be used to iterate -over the constants as follows: -
        -for (FetchOption c : FetchOption.values())
        -    System.out.println(c);
        -
        -
        Returns:
        an array containing the constants of this enum type, in -the order they are declared
        -
      • -
      -
    • -
    -
  • -
-
-
- - - -
-
-

Class GSException

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • java.lang.Throwable
    • -
    • -
        -
      • java.lang.Exception
      • -
      • -
          -
        • java.io.IOException
        • -
        • -
            -
          • com.toshiba.mwcloud.gs.GSException
          • -
          -
        • -
        -
      • -
      -
    • -
    -
  • -
-
-
    -
  • -
    -
    All Implemented Interfaces:
    -
    java.io.Serializable
    -
    -
    -
    Direct Known Subclasses:
    -
    GSTimeoutException
    -
    -
    -
    -
    public class GSException
    -extends java.io.IOException
    -
    GridDB機能の処理中に発生した例外状態を示します。
    -
    See Also:
    Serialized Form
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Constructor Summary

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Constructors 
      Constructor and Description
      GSException() -
      詳細メッセージを持たない例外を構築します。
      -
      GSException(int errorCode, - java.lang.String description) -
      エラー番号および詳細メッセージを指定して、例外を構築します。
      -
      GSException(int errorCode, - java.lang.String errorName, - java.lang.String description, - java.util.Map<java.lang.String,java.lang.String> parameters, - java.lang.Throwable cause) -
      エラー番号、エラー名、詳細メッセージ、パラメータのマップ、および原因を指定して、例外を構築します。
      -
      GSException(int errorCode, - java.lang.String errorName, - java.lang.String description, - java.lang.Throwable cause) -
      エラー番号、エラー名、詳細メッセージ、および原因を指定して、例外を構築します。
      -
      GSException(int errorCode, - java.lang.String description, - java.lang.Throwable cause) -
      エラー番号、詳細メッセージ、および原因を指定して、例外を構築します。
      -
      GSException(int errorCode, - java.lang.Throwable cause) -
      エラー番号および原因を指定して、例外を構築します。
      -
      GSException(java.lang.String message) -
      詳細メッセージを指定して、例外を構築します。
      -
      GSException(java.lang.String message, - java.lang.Throwable cause) -
      詳細メッセージおよび原因を指定して、例外を構築します。
      -
      GSException(java.lang.Throwable cause) -
      原因を指定して、例外を構築します。
      -
      -
    • -
    - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - - - - - - - - - -
      Methods 
      Modifier and TypeMethod and Description
      intgetErrorCode() -
      エラー番号を取得します。
      -
      java.lang.StringgetMessage()
      java.util.Map<java.lang.String,java.lang.String>getParameters() -
      エラーに関するパラメータのマップを取得します。
      -
      -
        -
      • - - -

        Methods inherited from class java.lang.Throwable

        -addSuppressed, fillInStackTrace, getCause, getLocalizedMessage, getStackTrace, getSuppressed, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString
      • -
      -
        -
      • - - -

        Methods inherited from class java.lang.Object

        -clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
      • -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        GSException

        -
        public GSException()
        -
        詳細メッセージを持たない例外を構築します。
        -
        See Also:
        Exception.Exception()
        -
      • -
      - - - -
        -
      • -

        GSException

        -
        public GSException(int errorCode,
        -           java.lang.String description)
        -
        エラー番号および詳細メッセージを指定して、例外を構築します。
        -
        Parameters:
        errorCode - エラー番号
        description - 詳細メッセージまたはnull
        See Also:
        Exception.Exception(String)
        -
      • -
      - - - -
        -
      • -

        GSException

        -
        public GSException(int errorCode,
        -           java.lang.String errorName,
        -           java.lang.String description,
        -           java.util.Map<java.lang.String,java.lang.String> parameters,
        -           java.lang.Throwable cause)
        -
        エラー番号、エラー名、詳細メッセージ、パラメータのマップ、および原因を指定して、例外を構築します。
        -
        Parameters:
        errorCode - エラー番号
        errorName - エラー名またはnull
        description - 詳細メッセージまたはnull
        parameters - パラメータのマップまたはnull
        cause - 原因またはnull
        See Also:
        Exception.Exception(String, Throwable)
        -
      • -
      - - - -
        -
      • -

        GSException

        -
        public GSException(int errorCode,
        -           java.lang.String errorName,
        -           java.lang.String description,
        -           java.lang.Throwable cause)
        -
        エラー番号、エラー名、詳細メッセージ、および原因を指定して、例外を構築します。
        -
        Parameters:
        errorCode - エラー番号
        errorName - エラー名またはnull
        description - 詳細メッセージまたはnull
        cause - 原因またはnull
        See Also:
        Exception.Exception(String, Throwable)
        -
      • -
      - - - -
        -
      • -

        GSException

        -
        public GSException(int errorCode,
        -           java.lang.String description,
        -           java.lang.Throwable cause)
        -
        エラー番号、詳細メッセージ、および原因を指定して、例外を構築します。
        -
        Parameters:
        errorCode - エラー番号
        description - 詳細メッセージまたはnull
        cause - 原因またはnull
        See Also:
        Exception.Exception(String, Throwable)
        -
      • -
      - - - -
        -
      • -

        GSException

        -
        public GSException(int errorCode,
        -           java.lang.Throwable cause)
        -
        エラー番号および原因を指定して、例外を構築します。
        -
        Parameters:
        errorCode - エラー番号
        cause - 原因またはnull
        See Also:
        Exception.Exception(Throwable)
        -
      • -
      - - - -
        -
      • -

        GSException

        -
        public GSException(java.lang.String message)
        -
        詳細メッセージを指定して、例外を構築します。
        -
        Parameters:
        message - 詳細メッセージまたはnull
        See Also:
        Exception.Exception(String)
        -
      • -
      - - - -
        -
      • -

        GSException

        -
        public GSException(java.lang.String message,
        -           java.lang.Throwable cause)
        -
        詳細メッセージおよび原因を指定して、例外を構築します。
        -
        Parameters:
        message - 詳細メッセージまたはnull
        cause - 原因またはnull
        See Also:
        Exception.Exception(String, Throwable)
        -
      • -
      - - - -
        -
      • -

        GSException

        -
        public GSException(java.lang.Throwable cause)
        -
        原因を指定して、例外を構築します。
        -
        Parameters:
        cause - 原因またはnull
        See Also:
        Exception.Exception(Throwable)
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        getErrorCode

        -
        public int getErrorCode()
        -
        エラー番号を取得します。 -

        対応する番号が存在しない場合は0を返します。

        -
      • -
      - - - -
        -
      • -

        getMessage

        -
        public java.lang.String getMessage()
        -
        -
        Overrides:
        -
        getMessage in class java.lang.Throwable
        -
        -
      • -
      - - - -
        -
      • -

        getParameters

        -
        public java.util.Map<java.lang.String,java.lang.String> getParameters()
        -
        エラーに関するパラメータのマップを取得します。 -

        エラーに関する内容について、特定の情報だけを取り出すために使用します。返却されるマップは、パラメータ名とパラメータ値の組からなるエントリの集合により構成されます。マップに含まれるパラメータについては、この例外を送出しうる個々のインタフェースまたは関連するインタフェースの定義を参照してください。

        - -

        返却されるマップに含まれる情報は、getMessage()より求まる文字列にも原則として含まれます。一方、この文字列から特定の情報だけを一定の文字列解析規則で取り出せるとは限りません。特定のバージョンのある状況下では取り出せたとしても、別の条件では意図しない情報が求まるなどして取り出せない可能性があります。返却されるマップを使用することで、インタフェースの定義で明記された一部の情報については、文字列解析を行わずに取り出せます。

        - -

        返却されるマップの内容だけを記録し、メッセージ文字列などその他の例外の内容を記録しなかった場合、記録された内容からエラーの原因を特定することが困難となる可能性があります。

        -
      • -
      -
    • -
    -
  • -
-
-
- - - -
-
-

Class GSTimeoutException

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • java.lang.Throwable
    • -
    • - -
    • -
    -
  • -
-
-
    -
  • -
    -
    All Implemented Interfaces:
    -
    java.io.Serializable
    -
    -
    -
    -
    public class GSTimeoutException
    -extends GSException
    -
    要求した処理が既定の時間内に終了しなかったことを示す例外です。
    -
    Since:
    -
    1.5
    -
    See Also:
    Serialized Form
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Constructor Summary

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Constructors 
      Constructor and Description
      GSTimeoutException() -
      詳細メッセージを持たない例外を構築します。
      -
      GSTimeoutException(int errorCode, - java.lang.String description) -
      エラー番号および詳細メッセージを指定して、例外を構築します。
      -
      GSTimeoutException(int errorCode, - java.lang.String errorName, - java.lang.String description, - java.util.Map<java.lang.String,java.lang.String> parameters, - java.lang.Throwable cause) -
      エラー番号、エラー名、詳細メッセージ、パラメータのマップ、および原因を指定して、例外を構築します。
      -
      GSTimeoutException(int errorCode, - java.lang.String errorName, - java.lang.String description, - java.lang.Throwable cause) -
      エラー番号、エラー名、詳細メッセージ、および原因を指定して、例外を構築します。
      -
      GSTimeoutException(int errorCode, - java.lang.String description, - java.lang.Throwable cause) -
      エラー番号、詳細メッセージ、および原因を指定して、例外を構築します。
      -
      GSTimeoutException(int errorCode, - java.lang.Throwable cause) -
      エラー番号および原因を指定して、例外を構築します。
      -
      GSTimeoutException(java.lang.String message) -
      詳細メッセージを指定して、例外を構築します。
      -
      GSTimeoutException(java.lang.String message, - java.lang.Throwable cause) -
      詳細メッセージおよび原因を指定して、例外を構築します。
      -
      GSTimeoutException(java.lang.Throwable cause) -
      原因を指定して、例外を構築します。
      -
      -
    • -
    - -
      -
    • - - -

      Method Summary

      - -
        -
      • - - -

        Methods inherited from class java.lang.Throwable

        -addSuppressed, fillInStackTrace, getCause, getLocalizedMessage, getStackTrace, getSuppressed, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString
      • -
      -
        -
      • - - -

        Methods inherited from class java.lang.Object

        -clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
      • -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        GSTimeoutException

        -
        public GSTimeoutException()
        -
        詳細メッセージを持たない例外を構築します。
        -
        See Also:
        GSException.GSException()
        -
      • -
      - - - -
        -
      • -

        GSTimeoutException

        -
        public GSTimeoutException(int errorCode,
        -                  java.lang.String description)
        -
        エラー番号および詳細メッセージを指定して、例外を構築します。
        -
        Parameters:
        errorCode - エラー番号
        description - 詳細メッセージまたはnull
        See Also:
        GSException.GSException(int, String)
        -
      • -
      - - - -
        -
      • -

        GSTimeoutException

        -
        public GSTimeoutException(int errorCode,
        -                  java.lang.String errorName,
        -                  java.lang.String description,
        -                  java.util.Map<java.lang.String,java.lang.String> parameters,
        -                  java.lang.Throwable cause)
        -
        エラー番号、エラー名、詳細メッセージ、パラメータのマップ、および原因を指定して、例外を構築します。
        -
        Parameters:
        errorCode - エラー番号
        errorName - エラー名またはnull
        description - 詳細メッセージまたはnull
        parameters - パラメータのマップまたはnull
        cause - 原因またはnull
        See Also:
        GSException.GSException(int, String, String, Map, Throwable)
        -
      • -
      - - - -
        -
      • -

        GSTimeoutException

        -
        public GSTimeoutException(int errorCode,
        -                  java.lang.String errorName,
        -                  java.lang.String description,
        -                  java.lang.Throwable cause)
        -
        エラー番号、エラー名、詳細メッセージ、および原因を指定して、例外を構築します。
        -
        Parameters:
        errorCode - エラー番号
        errorName - エラー名またはnull
        description - 詳細メッセージまたはnull
        cause - 原因またはnull
        See Also:
        GSException.GSException(int, String, String, Throwable)
        -
      • -
      - - - -
        -
      • -

        GSTimeoutException

        -
        public GSTimeoutException(int errorCode,
        -                  java.lang.String description,
        -                  java.lang.Throwable cause)
        -
        エラー番号、詳細メッセージ、および原因を指定して、例外を構築します。
        -
        Parameters:
        errorCode - エラー番号
        description - 詳細メッセージまたはnull
        cause - 原因またはnull
        See Also:
        GSException.GSException(int, String, Throwable)
        -
      • -
      - - - -
        -
      • -

        GSTimeoutException

        -
        public GSTimeoutException(int errorCode,
        -                  java.lang.Throwable cause)
        -
        エラー番号および原因を指定して、例外を構築します。
        -
        Parameters:
        errorCode - エラー番号
        cause - 原因またはnull
        See Also:
        GSException.GSException(int, Throwable)
        -
      • -
      - - - -
        -
      • -

        GSTimeoutException

        -
        public GSTimeoutException(java.lang.String message)
        -
        詳細メッセージを指定して、例外を構築します。
        -
        Parameters:
        message - 詳細メッセージまたはnull
        See Also:
        GSException.GSException(String)
        -
      • -
      - - - -
        -
      • -

        GSTimeoutException

        -
        public GSTimeoutException(java.lang.String message,
        -                  java.lang.Throwable cause)
        -
        詳細メッセージおよび原因を指定して、例外を構築します。
        -
        Parameters:
        message - 詳細メッセージまたはnull
        cause - 原因またはnull
        See Also:
        GSException.GSException(String, Throwable)
        -
      • -
      - - - -
        -
      • -

        GSTimeoutException

        -
        public GSTimeoutException(java.lang.Throwable cause)
        -
        原因を指定して、例外を構築します。
        -
        Parameters:
        cause - 原因またはnull
        See Also:
        GSException.GSException(Throwable)
        -
      • -
      -
    • -
    -
  • -
-
-
- - - -
-
-

Enum GSType

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • java.lang.Enum<GSType>
    • -
    • -
        -
      • com.toshiba.mwcloud.gs.GSType
      • -
      -
    • -
    -
  • -
-
-
    -
  • -
    -
    All Implemented Interfaces:
    -
    java.io.Serializable, java.lang.Comparable<GSType>
    -
    -
    -
    -
    public enum GSType
    -extends java.lang.Enum<GSType>
    -
    GridDB上のフィールド値の型を表します。
    -
  • -
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Enum Constant Detail

      - - - -
        -
      • -

        BLOB

        -
        public static final GSType BLOB
        -
      • -
      - - - -
        -
      • -

        BOOL

        -
        public static final GSType BOOL
        -
      • -
      - - - -
        -
      • -

        BOOL_ARRAY

        -
        public static final GSType BOOL_ARRAY
        -
      • -
      - - - -
        -
      • -

        BYTE

        -
        public static final GSType BYTE
        -
      • -
      - - - -
        -
      • -

        BYTE_ARRAY

        -
        public static final GSType BYTE_ARRAY
        -
      • -
      - - - -
        -
      • -

        DOUBLE

        -
        public static final GSType DOUBLE
        -
      • -
      - - - -
        -
      • -

        DOUBLE_ARRAY

        -
        public static final GSType DOUBLE_ARRAY
        -
      • -
      - - - -
        -
      • -

        FLOAT

        -
        public static final GSType FLOAT
        -
      • -
      - - - -
        -
      • -

        FLOAT_ARRAY

        -
        public static final GSType FLOAT_ARRAY
        -
      • -
      - - - -
        -
      • -

        GEOMETRY

        -
        public static final GSType GEOMETRY
        -
      • -
      - - - -
        -
      • -

        INTEGER

        -
        public static final GSType INTEGER
        -
      • -
      - - - -
        -
      • -

        INTEGER_ARRAY

        -
        public static final GSType INTEGER_ARRAY
        -
      • -
      - - - -
        -
      • -

        LONG

        -
        public static final GSType LONG
        -
      • -
      - - - -
        -
      • -

        LONG_ARRAY

        -
        public static final GSType LONG_ARRAY
        -
      • -
      - - - -
        -
      • -

        SHORT

        -
        public static final GSType SHORT
        -
      • -
      - - - -
        -
      • -

        SHORT_ARRAY

        -
        public static final GSType SHORT_ARRAY
        -
      • -
      - - - -
        -
      • -

        STRING

        -
        public static final GSType STRING
        -
      • -
      - - - -
        -
      • -

        STRING_ARRAY

        -
        public static final GSType STRING_ARRAY
        -
      • -
      - - - -
        -
      • -

        TIMESTAMP

        -
        public static final GSType TIMESTAMP
        -
      • -
      - - - -
        -
      • -

        TIMESTAMP_ARRAY

        -
        public static final GSType TIMESTAMP_ARRAY
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        valueOf

        -
        public static GSType valueOf(java.lang.String name)
        -
        Returns the enum constant of this type with the specified name. -The string must match exactly an identifier used to declare an -enum constant in this type. (Extraneous whitespace characters are -not permitted.)
        -
        Parameters:
        name - the name of the enum constant to be returned.
        -
        Returns:
        the enum constant with the specified name
        -
        Throws:
        -
        java.lang.IllegalArgumentException - if this enum type has no constant -with the specified name
        -
        java.lang.NullPointerException - if the argument is null
        -
      • -
      - - - -
        -
      • -

        values

        -
        public static GSType[] values()
        -
        Returns an array containing the constants of this enum type, in -the order they are declared. This method may be used to iterate -over the constants as follows: -
        -for (GSType c : GSType.values())
        -    System.out.println(c);
        -
        -
        Returns:
        an array containing the constants of this enum type, in -the order they are declared
        -
      • -
      -
    • -
    -
  • -
-
-
- - - -
-
-

Class Geometry

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • com.toshiba.mwcloud.gs.Geometry
    • -
    -
  • -
-
-
    -
  • -
    -
    -
    public class Geometry
    -extends java.lang.Object
    -
    2次元、もしくは3次元の空間範囲を示すジオメトリデータを管理します。 -

    このクラスのインスタンスは不変です。また、このクラスのインスタンスに対するメソッド呼び出しはスレッド安全です。

    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - - - - - - - - - - - - - -
      Methods 
      Modifier and TypeMethod and Description
      booleanequals(java.lang.Object obj) -
      このオブジェクトと他のオブジェクトが等しいかどうかを示します。
      -
      inthashCode() -
      このオブジェクトのハッシュコード値を返します。
      -
      java.lang.StringtoString() -
      WKT(Well-Known Text)形式による文字列表現(WKT表現)を返します。
      -
      static GeometryvalueOf(java.lang.String value) -
      WKT(Well-Known Text)形式によるジオメトリデータの文字列表現(WKT表現)から Geometryを作成します。
      -
      -
        -
      • - - -

        Methods inherited from class java.lang.Object

        -clone, finalize, getClass, notify, notifyAll, wait, wait, wait
      • -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        equals

        -
        public boolean equals(java.lang.Object obj)
        -
        このオブジェクトと他のオブジェクトが等しいかどうかを示します。 -

        valueOf(String)により生成したオブジェクトについて、生成元のWKT表現が文字列として互いに等価ではない場合であっても、区切り文字としての空白文字の有無やデフォルト値のSRID表記の有無といった表記の揺れ以外の違いがない場合は等価であるとみなされます。たとえば、次の3つのWKT表現より生成されるオブジェクトは、等価であるとみなされます。

        -
        - POLYGON((0 0,10 0,10 10,0 10,0 0))
        - POLYGON( (0 0,10 0,10 10,0 10,0 0) )
        - POLYGON((0 0,10 0,10 10,0 10,0 0);-1)
        - -

        一方、領域を構成する閉じた線の始点・終点位置が異なるなどして、 WKT表現が文字列として等価になりえないものの同一の空間領域を指すオブジェクトは、等価ではないとみなされます。たとえば、次の2つのWKT表現より生成されるオブジェクトは、等価ではないとみなされます。

        -
        - POLYGON((0 0,10 0,10 10,0 10,0 0))
        - POLYGON((0 10,0 0,10 0,10 10,0 10))
        - -

        このメソッドは、Object.hashCode()にて定義されている汎用規約に準拠します。したがって、等価なオブジェクトは等価なハッシュコードを保持します。

        -
        -
        Overrides:
        -
        equals in class java.lang.Object
        -
        Parameters:
        obj - 比較対象の参照オブジェクト
        -
        Returns:
        このオブジェクトがobj引数と同じである場合はtrue、それ以外の場合はfalse
        See Also:
        hashCode()
        -
      • -
      - - - -
        -
      • -

        hashCode

        -
        public int hashCode()
        -
        このオブジェクトのハッシュコード値を返します。 -

        このメソッドは、Object.hashCode()にて定義されている汎用規約に準拠します。したがって、等価なオブジェクトのハッシュコード値は等価です。

        -
        -
        Overrides:
        -
        hashCode in class java.lang.Object
        -
        Returns:
        このオブジェクトのハッシュコード値
        See Also:
        equals(Object)
        -
      • -
      - - - -
        -
      • -

        toString

        -
        public java.lang.String toString()
        -
        WKT(Well-Known Text)形式による文字列表現(WKT表現)を返します。 -

        返却される文字列は、区切り文字としての空白文字の有無やデフォルト値のSRID表記の有無といった表記の揺れによっては、 valueOf(String)により生成した際に指定したWKT表現と比べて等価ではない文字列となる場合があります。

        -
        -
        Overrides:
        -
        toString in class java.lang.Object
        -
        -
      • -
      - - - -
        -
      • -

        valueOf

        -
        public static Geometry valueOf(java.lang.String value)
        -                        throws java.lang.IllegalArgumentException
        -
        WKT(Well-Known Text)形式によるジオメトリデータの文字列表現(WKT表現)から Geometryを作成します。 -

        サポート対象のWKT表現は、TQLのST_GeomFromText関数が扱う表現範囲と同一です。ただし、空間構造QUADRATICSURFACEはコンテナに格納することはできず、検索条件としてのみ使用できます。

        -
        Parameters:
        value - 生成対象のWKT表現。nullは指定できない
        -
        Returns:
        WKT表現より生成されたGeometryインスタンス
        -
        Throws:
        -
        java.lang.IllegalArgumentException - 指定の文字列がWKT形式と一致しない場合
        -
        java.lang.NullPointerException - 引数にnullが指定された場合
        -
      • -
      -
    • -
    -
  • -
-
-
- - - -
-
-

Enum GeometryOperator

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • java.lang.Enum<GeometryOperator>
    • -
    • -
        -
      • com.toshiba.mwcloud.gs.GeometryOperator
      • -
      -
    • -
    -
  • -
-
-
    -
  • -
    -
    All Implemented Interfaces:
    -
    java.io.Serializable, java.lang.Comparable<GeometryOperator>
    -
    -
    -
    -
    public enum GeometryOperator
    -extends java.lang.Enum<GeometryOperator>
    -
    空間範囲同士の関係性についての制約を定義します。 -

    空間範囲検索の条件指定のために使用します。

    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Enum Constant Summary

      - - - - - - - - -
      Enum Constants 
      Enum Constant and Description
      INTERSECT -
      双方の空間範囲またはその外接構造が交差する関係にあることを示します。
      -
      -
    • -
    - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - - - - - -
      Methods 
      Modifier and TypeMethod and Description
      static GeometryOperatorvalueOf(java.lang.String name) -
      Returns the enum constant of this type with the specified name.
      -
      static GeometryOperator[]values() -
      Returns an array containing the constants of this enum type, in -the order they are declared.
      -
      -
        -
      • - - -

        Methods inherited from class java.lang.Enum

        -clone, compareTo, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf
      • -
      -
        -
      • - - -

        Methods inherited from class java.lang.Object

        -getClass, notify, notifyAll, wait, wait, wait
      • -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Enum Constant Detail

      - - - -
        -
      • -

        INTERSECT

        -
        public static final GeometryOperator INTERSECT
        -
        双方の空間範囲またはその外接構造が交差する関係にあることを示します。 -

        双方の外接直方体(Minimum Bounding Box)、もしくは外接直方体と 2次曲面が交差する関係にあることを示します。交差判定の条件は、TQLのST_MBRIntersects関数、もしくは ST_QSFMBRIntersects関数と同一です。

        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        valueOf

        -
        public static GeometryOperator valueOf(java.lang.String name)
        -
        Returns the enum constant of this type with the specified name. -The string must match exactly an identifier used to declare an -enum constant in this type. (Extraneous whitespace characters are -not permitted.)
        -
        Parameters:
        name - the name of the enum constant to be returned.
        -
        Returns:
        the enum constant with the specified name
        -
        Throws:
        -
        java.lang.IllegalArgumentException - if this enum type has no constant -with the specified name
        -
        java.lang.NullPointerException - if the argument is null
        -
      • -
      - - - -
        -
      • -

        values

        -
        public static GeometryOperator[] values()
        -
        Returns an array containing the constants of this enum type, in -the order they are declared. This method may be used to iterate -over the constants as follows: -
        -for (GeometryOperator c : GeometryOperator.values())
        -    System.out.println(c);
        -
        -
        Returns:
        an array containing the constants of this enum type, in -the order they are declared
        -
      • -
      -
    • -
    -
  • -
-
-
- - - -
-
-

Interface GridStore

-
-
-
-
    -
  • -
    -
    All Superinterfaces:
    -
    java.lang.AutoCloseable, java.io.Closeable
    -
    -
    -
    -
    public interface GridStore
    -extends java.io.Closeable
    -
    接続したGridDBシステム内のデータベースに属するデータを操作するための機能を提供します。 -

    コレクションや時系列といったコンテナの追加・削除・構成変更、ならびに、コンテナを構成するロウの操作機能を提供します。

    - -

    コンテナ種別などの違いによらず、1つのデータベースのコンテナ間で、 ASCIIの大文字・小文字表記だけが異なる名前のものを複数定義することはできません。コンテナ名は、ベースコンテナ名単独、もしくは、ベースコンテナ名の後ろにノードアフィニティ名をアットマーク「@」で連結した形式で表記します。その他、コンテナの定義において使用できるコンテナ名の文字種や長さには制限があります。具体的には、GridDBテクニカルリファレンスを参照してください。特に記載のない限り、コンテナ名を指定する操作では、ASCIIの大文字・小文字表記の違いは区別されません。

    - -

    このインタフェースまたはこのインタフェースを通じて得られたインスタンスのインタフェースが送出するGSExceptionは、エラーに関する次のパラメータを含むことがあります。

    - - - - - - -
    パラメータ名説明
    address接続先クラスタノードのアドレス・ポート。ホスト名またはIPアドレスとポート番号とをコロン「:」で連結した文字列により構成されます。このインタフェースまたはこのインタフェースを通じて得られたインスタンスのインタフェースにおいて、クラスタへのアクセスを伴う操作を呼び出した際にエラーを検知すると、このパラメータを含むことがあります。このパラメータを含む場合、パラメータが示すクラスタノードにおいてエラーの詳細が記録されていることがあります。
    container例外に関係しうるコンテナの名前。任意個数のコンテナを一括して扱う操作において、そのうち少なくとも一つのコンテナについての操作を行えないことが判明した場合に、このパラメータを含むことがあります。任意個数のコンテナを扱う具体的な操作については、個々のインタフェースの定義を参照してください。クラスタノードへのリクエスト準備段階でのリソース不足など、どのコンテナの問題か特定し切れないことがあるため、どのようなエラーでもこのパラメータを含むとは限りません。また、複数のコンテナについて操作できない可能性があったとしても、パラメータに含まれるのは高々一つのコンテナの名前のみです。
    - -

    各メソッドのスレッド安全性は保証されません。

    -
    See Also:
    Collection, -TimeSeries, -Container, -GSException.getParameters()
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Methods 
      Modifier and TypeMethod and Description
      voidclose() -
      GridDBとの接続状態を解除し、必要に応じて関連するリソースを解放します。
      -
      RowcreateRow(ContainerInfo info) -
      ContainerInfoを指定して、Rowを新規作成します。
      -
      Row.KeycreateRowKey(ContainerInfo info) -
      ContainerInfoを指定して、Row.Keyを新規作成します。
      -
      voiddropCollection(java.lang.String name) -
      指定の名前を持つコレクションを削除します。
      -
      voiddropContainer(java.lang.String name) -
      指定の名前を持つコンテナを削除します。
      -
      voiddropTimeSeries(java.lang.String name) -
      指定の名前を持つ時系列を削除します。
      -
      voidfetchAll(java.util.List<? extends Query<?>> queryList) -
      指定された任意個数のQueryについて、可能な限りリクエスト単位を大きくしてクエリ実行とフェッチを行います。
      -
      <K> Collection<K,Row>getCollection(java.lang.String name) -
      Rowによりロウ操作できるCollectionオブジェクトを取得します。
      -
      <K,R> Collection<K,R>getCollection(java.lang.String name, - java.lang.Class<R> rowType) -
      指定の名前のコレクションを操作するためのCollectionオブジェクトを取得します。
      -
      <K> Container<K,Row>getContainer(java.lang.String name) -
      Rowによりロウ操作できるContainerオブジェクトを取得します。
      -
      <K,R,C extends Container<K,R>> 
      C
      getContainer(java.lang.String name, - Container.BindType<K,R,C> bindType) -
      Container.BindTypeを指定して、Containerオブジェクトを取得します。
      -
      ContainerInfogetContainerInfo(java.lang.String name) -
      指定の名前のコンテナに関する情報を取得します。
      -
      PartitionControllergetPartitionController() -
      対応するGridDBクラスタについてのPartitionControllerを取得します。
      -
      TimeSeries<Row>getTimeSeries(java.lang.String name) -
      Rowによりロウ操作できるTimeSeriesオブジェクトを取得します。
      -
      <R> TimeSeries<R>getTimeSeries(java.lang.String name, - java.lang.Class<R> rowType) -
      指定の名前の時系列を操作するためのTimeSeriesオブジェクトを取得します。
      -
      java.util.Map<java.lang.String,java.util.List<Row>>multiGet(java.util.Map<java.lang.String,? extends RowKeyPredicate<?>> containerPredicateMap) -
      指定の条件に基づき、任意のコンテナの任意個数・範囲のロウについて、可能な限りリクエスト単位を大きくして取得します。
      -
      voidmultiPut(java.util.Map<java.lang.String,java.util.List<Row>> containerRowsMap) -
      任意のコンテナの任意個数のロウについて、可能な限りリクエスト単位を大きくして新規作成または更新操作を行います。
      -
      <K,R> Collection<K,R>putCollection(java.lang.String name, - java.lang.Class<R> rowType) -
      コレクションを新規作成または変更します。
      -
      <K,R> Collection<K,R>putCollection(java.lang.String name, - java.lang.Class<R> rowType, - boolean modifiable) -
      変更オプションを指定して、コレクションを新規作成または変更します。
      -
      <K> Collection<K,Row>putCollection(java.lang.String name, - ContainerInfo info, - boolean modifiable) -
      ContainerInfoを指定して、コレクションを新規作成または変更します。
      -
      <K,R> Container<K,R>putContainer(java.lang.String name, - java.lang.Class<R> rowType, - ContainerInfo info, - boolean modifiable) -
      ロウオブジェクトの型とContainerInfoを指定して、コンテナを新規作成または変更します。
      -
      <K,R,C extends Container<K,R>> 
      C
      putContainer(java.lang.String name, - Container.BindType<K,R,C> bindType) -
      Container.BindTypeを指定して、コンテナを新規作成または変更します。
      -
      <K,R,C extends Container<K,R>> 
      C
      putContainer(java.lang.String name, - Container.BindType<K,R,C> bindType, - ContainerInfo info, - boolean modifiable) -
      Container.BindTypeContainerInfoを指定して、コンテナを新規作成または変更します。
      -
      <K> Container<K,Row>putContainer(java.lang.String name, - ContainerInfo info, - boolean modifiable) -
      ContainerInfoを指定して、コンテナを新規作成または変更します。
      -
      <R> TimeSeries<R>putTimeSeries(java.lang.String name, - java.lang.Class<R> rowType) -
      時系列を新規作成または変更します。
      -
      <R> TimeSeries<R>putTimeSeries(java.lang.String name, - java.lang.Class<R> rowType, - TimeSeriesProperties props, - boolean modifiable) -
      追加設定や変更オプションを指定して、時系列を新規作成または変更します。
      -
      TimeSeries<Row>putTimeSeries(java.lang.String name, - ContainerInfo info, - boolean modifiable) -
      ContainerInfoを指定して、時系列を新規作成または変更します。
      -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        close

        -
        void close()
        -           throws GSException
        -
        GridDBとの接続状態を解除し、必要に応じて関連するリソースを解放します。 -

        GSExceptionが送出された場合であっても、接続状態は解除やローカルのリソース解放は適宜実施されます。ただし、GridDB上のトランザクション状態などは残る可能性があります。すでにクローズ済みの場合、このメソッドを呼び出しても何の効果もありません。

        -
        -
        Specified by:
        -
        close in interface java.lang.AutoCloseable
        -
        Specified by:
        -
        close in interface java.io.Closeable
        -
        Throws:
        -
        GSException - 接続障害が発生した場合
        -
      • -
      - - - -
        -
      • -

        createRow

        -
        Row createRow(ContainerInfo info)
        -              throws GSException
        -
        ContainerInfoを指定して、Rowを新規作成します。 -

        Containerにて規定された制約に合致するよう、 ColumnInfoのリストならびにロウキーの構成を含むカラムレイアウトをContainerInfoに指定します。

        - -

        また、コンテナ種別をContainerInfoに含めることで、特定のコンテナ種別固有の制約に合致するかどうかを検証できます。ただし、作成されたRowに対してRow.getSchema() -を呼び出したとしても、コンテナ種別は含まれません。

        - -

        作成されたRowの各フィールドには、指定のContainerInfoに含まれる各カラムのColumnInfoに基づいた初期値が設定されます。初期値として、ColumnInfo.getDefaultValueNull()の戻り値に応じた次の値が使用されます。

        - - - - - - - - - - - - - - - - - - - - - -
        ColumnInfo.getDefaultValueNull()の戻り値初期値
        trueNULL。ただし制約に反するロウは作成できない。
        false空の値。Containerの定義を参照。
        null現バージョンでは、戻り値がfalseの場合と同様。
        - -

        作成されたRowに対する操作は、このGridStoreオブジェクトのクローズ有無に影響しません。

        -
        Parameters:
        info - カラムレイアウトを含むコンテナ情報。その他の内容は無視される
        -
        Returns:
        作成されたRow
        -
        Throws:
        -
        GSException - コンテナ種別もしくはカラムレイアウトの制約に合致しない場合
        -
        GSException - クローズ後に呼び出された場合
        -
        java.lang.NullPointerException - 引数にnullが指定された場合
        Since:
        -
        1.5
        -
        See Also:
        Container
        -
      • -
      - - - -
        -
      • -

        createRowKey

        -
        Row.Key createRowKey(ContainerInfo info)
        -                     throws GSException
        -
        ContainerInfoを指定して、Row.Keyを新規作成します。 -

        ロウキー以外のカラムに関する情報は無視されます。それ以外は createRow(ContainerInfo)と同様に振る舞います。

        -
        Parameters:
        info - カラムレイアウトを含むコンテナ情報。その他の内容は無視される
        -
        Returns:
        作成されたRow.Key
        -
        Throws:
        -
        GSException - ロウキーを持たないコンテナ情報が指定された場合
        -
        GSException - コンテナ種別もしくはカラムレイアウトの制約に合致しない場合
        -
        GSException - クローズ後に呼び出された場合
        -
        java.lang.NullPointerException - 引数にnullが指定された場合
        Since:
        -
        4.3
        -
      • -
      - - - -
        -
      • -

        dropCollection

        -
        void dropCollection(java.lang.String name)
        -                    throws GSException
        -
        指定の名前を持つコレクションを削除します。 -

        削除済みの場合の扱い、トランザクションの扱い、削除要求完了直後の状態に関しては、dropContainer(String)と同様です。

        -
        Parameters:
        name - 処理対象のコレクションの名前
        -
        Throws:
        -
        GSException - 種別の異なるコンテナを削除しようとした場合
        -
        GSException - この処理のタイムアウト、接続障害が発生した場合、またはクローズ後に呼び出された場合
        -
        java.lang.NullPointerException - 引数にnullが指定された場合
        -
      • -
      - - - -
        -
      • -

        dropContainer

        -
        void dropContainer(java.lang.String name)
        -                   throws GSException
        -
        指定の名前を持つコンテナを削除します。 -

        削除済みの場合は何も変更しません。

        - -

        処理対象のコンテナにおいて実行中のトランザクションが存在する場合、それらの終了を待機してから削除を行います。

        - -

        コンテナの削除要求が完了した直後は、削除したコンテナの索引やロウなどのために使用されていたメモリやストレージ領域を他の用途にただちに再利用できない場合があります。また、削除処理に関連した処理がクラスタ上で動作することにより、削除前と比べて負荷が高まる期間が一定程度継続する場合があります。

        -
        Parameters:
        name - 処理対象のコンテナの名前
        -
        Throws:
        -
        GSException - この処理のタイムアウト、接続障害が発生した場合、またはクローズ後に呼び出された場合
        -
        java.lang.NullPointerException - 引数にnullが指定された場合
        Since:
        -
        1.5
        -
        See Also:
        dropCollection(String), -dropTimeSeries(String)
        -
      • -
      - - - -
        -
      • -

        dropTimeSeries

        -
        void dropTimeSeries(java.lang.String name)
        -                    throws GSException
        -
        指定の名前を持つ時系列を削除します。 -

        削除済みの場合の扱い、トランザクションの扱い、削除要求完了直後の状態に関しては、dropContainer(String)と同様です。

        -
        Parameters:
        name - 処理対象の時系列の名前
        -
        Throws:
        -
        GSException - 種別の異なるコンテナを削除しようとした場合
        -
        GSException - この処理のタイムアウト、接続障害が発生した場合、またはクローズ後に呼び出された場合
        -
        java.lang.NullPointerException - 引数にnullが指定された場合
        -
      • -
      - - - -
        -
      • -

        fetchAll

        -
        void fetchAll(java.util.List<? extends Query<?>> queryList)
        -              throws GSException
        -
        指定された任意個数のQueryについて、可能な限りリクエスト単位を大きくしてクエリ実行とフェッチを行います。 -

        指定のリストに含まれる各Queryに対して、個別にQuery.fetch() -を行った場合と同様にクエリ実行とフェッチを行い、結果のRowSetを設定します。各Queryの実行結果を取り出すには、Query.getRowSet() -を使用します。ただし、個別に行う場合と違い、同一の格納先などの可能な限り大きな単位で対象ノードに対しリクエストしようとします。これにより、リストの要素数が多くなるほど、対象ノードとやりとりする回数が削減される可能性が高くなります。リスト内のQueryの実行順序は不定です。

        - -

        指定のリストには、このGridStoreオブジェクトを介して得られた、対応するContainerを含めクローズされていないQuery -のみを含めることができます。 Query.fetch()と同様、各Queryが持つ最後に生成された RowSetがクローズされます。同一のインスタンスがリストに複数含まれていた場合、それぞれ異なるインスタンスであった場合と同様に振る舞います。

        - -

        他のコンテナ・ロウ操作と同様、異なるコンテナ間での整合性は保証されません。したがって、あるコンテナに対する処理の結果は、その処理の開始前に完了した他の操作命令の影響を受けることがあります。

        - -

        指定のQueryに対応する各Containerのコミットモードが自動コミットモード、手動コミットモードのいずれであったとしても、使用できます。トランザクション状態はクエリの実行結果に反映されます。正常に操作が完了した場合、トランザクションタイムアウト時間に到達しない限り、対応する各Containerのトランザクションをアボートすることはありません。

        - -

        Queryに対する処理の途中で例外が発生した場合、一部のQueryについてのみ新たなRowSet -が設定されることがあります。また、指定のQueryに対応する各Containerの未コミットのトランザクションについては、アボートされることがあります。

        - -

        一度に大量のロウを取得しようとした場合、GridDBノードが管理する通信バッファのサイズの上限に到達し、失敗することがあります。上限サイズについては、GridDBテクニカルリファレンスを参照してください。

        - -

        送出するGSExceptionは、containerパラメータを含むことがあります。エラーに関するパラメータの詳細は、GridStoreの定義を参照してください。

        -
        Parameters:
        queryList - 対象とするQueryのリスト
        -
        Throws:
        -
        GSException - このGridStoreオブジェクトを介して得られた Query以外のQueryが含まれていた場合
        -
        GSException - 正しくないパラメータ・構文・命令を含むクエリを実行しようとした場合。たとえば、TQLでは、関数の引数に対応しない型のカラムを指定した場合。具体的な制約は、このクエリを作成する機能の各種定義を参照のこと
        -
        GSException - TQLを実行した際、実行結果が期待する結果 RowSetの各要素の型と合致しない場合
        -
        GSException - この処理または関連するトランザクションのタイムアウト、対応するコンテナの削除もしくはスキーマ変更、接続障害が発生した場合、または対応するコンテナのクローズ後に呼び出された場合
        -
        java.lang.NullPointerException - 引数queryListnullが指定された場合、または、引数queryListの要素としてnullが含まれていた場合
        -
        java.lang.NullPointerException - このクエリを作成する際に与えられたパラメータの中に、許容されないnullが含まれていた場合。GridDB上で実行される TQL文の評価処理の結果として送出されることはない
        Since:
        -
        1.5
        -
        See Also:
        Query.fetch()
        -
      • -
      - - - -
        -
      • -

        getCollection

        -
        <K> Collection<K,Row> getCollection(java.lang.String name)
        -                                throws GSException
        -
        Rowによりロウ操作できるCollectionオブジェクトを取得します。 -

        期待するコンテナ種別がContainerType.COLLECTIONに限定され、返却される型がCollectionとなる点を除き、 getContainer(String)と同様に振る舞います。

        -
        Returns:
        コレクションが存在する場合は対応するCollection、存在しない場合はnull
        -
        Throws:
        -
        GSException - 同名の時系列が存在する場合
        -
        GSException - この処理のタイムアウト、接続障害が発生した場合、またはクローズ後に呼び出された場合
        -
        java.lang.NullPointerException - 引数にnullが指定された場合
        Since:
        -
        1.5
        -
        See Also:
        getContainer(String)
        -
      • -
      - - - -
        -
      • -

        getCollection

        -
        <K,R> Collection<K,R> getCollection(java.lang.String name,
        -                                  java.lang.Class<R> rowType)
        -                              throws GSException
        -
        指定の名前のコレクションを操作するためのCollectionオブジェクトを取得します。 -

        指定の型とカラムレイアウトとの対応関係については、Containerの定義を参照してください。

        -
        Parameters:
        name - 処理対象のコレクションの名前
        rowType - 処理対象のコレクションのカラムレイアウトと対応するロウオブジェクトの型
        -
        Returns:
        コレクションが存在する場合は対応するCollection、存在しない場合はnull
        -
        Throws:
        -
        GSException - 同名の時系列が存在する場合
        -
        GSException - 指定の型と既存のカラムレイアウトが一致しない場合
        -
        GSException - 指定の型がロウオブジェクトの型として適切でない場合。詳しくはContainerの定義を参照
        -
        GSException - この処理のタイムアウト、接続障害が発生した場合、またはクローズ後に呼び出された場合
        -
        java.lang.NullPointerException - 1つ以上の引数にnullが指定された場合
        -
      • -
      - - - -
        -
      • -

        getContainer

        -
        <K> Container<K,Row> getContainer(java.lang.String name)
        -                              throws GSException
        -
        Rowによりロウ操作できるContainerオブジェクトを取得します。 -

        次の点を除き、getCollection(String, Class) -もしくはgetTimeSeries(String, Class)と同様に振る舞います。

        -
          -
        • 既存のコンテナの種別ならびにカラムレイアウトに基づきContainer -オブジェクトを返却する
        • -
        • コンテナの種別ならびにカラムレイアウトを指定しないため、これらの不一致に伴うエラーが発生しない
        • -
        • 返却されるContainerのロウオブジェクトの型が常にRowとなる
        • -
        -

        それぞれの同名の引数nameの用法についても同様です。

        -
        Parameters:
        name - 処理対象のコンテナの名前
        -
        Returns:
        コンテナが存在する場合は対応するContainer、存在しない場合はnull。コンテナが存在し、種別が ContainerType.COLLECTIONであった場合はCollectionContainerType.TIME_SERIESであった場合はTimeSeriesのインスタンスとなる。
        -
        Throws:
        -
        GSException - この処理のタイムアウト、接続障害が発生した場合、またはクローズ後に呼び出された場合
        -
        java.lang.NullPointerException - 引数にnullが指定された場合
        Since:
        -
        1.5
        -
        See Also:
        getCollection(String, Class), -getTimeSeries(String, Class)
        -
      • -
      - - - -
        -
      • -

        getContainer

        -
        <K,R,C extends Container<K,R>> C getContainer(java.lang.String name,
        -                                            Container.BindType<K,R,C> bindType)
        -                                 throws GSException
        -
        Container.BindTypeを指定して、Containerオブジェクトを取得します。 -

        指定のbindTypeに応じて、次のいずれかのメソッドと同様に振る舞います。

        -
        -
        Parameters:
        name - 処理対象のコンテナの名前
        bindType - 処理対象のコンテナと結びつく型情報
        -
        Returns:
        対応するContainerまたはそのサブインタフェースの型のインスタンス
        -
        Throws:
        -
        GSException - nameならびにbindType引数の内容が規則に合致しない場合
        -
        GSException - 指定の型がロウオブジェクトの型として適切でない場合。詳しくはContainerの定義を参照
        -
        GSException - この処理のタイムアウト、接続障害が発生した場合、またはクローズ後に呼び出された場合
        -
        java.lang.NullPointerException - bindType引数にnullが指定された場合
        Since:
        -
        4.3
        -
      • -
      - - - -
        -
      • -

        getContainerInfo

        -
        ContainerInfo getContainerInfo(java.lang.String name)
        -                               throws GSException
        -
        指定の名前のコンテナに関する情報を取得します。 -

        返却されるContainerInfoに含まれるコンテナ名は、GridDB上に格納されているものが設定されます。したがって、指定したコンテナ名と比較すると、 ASCIIの大文字・小文字表記が異なる場合があります。

        - -

        カラム順序を無視するかどうかについては、無視しない状態に設定されます。この設定は、ContainerInfo.isColumnOrderIgnorable()を通じて確認できます。

        - -

        現バージョンでは、初期値でのNULL使用有無は未設定状態で求まります。ただし今後のバージョンでは設定される可能性があります。この設定は、各カラムのColumnInfo.getDefaultValueNull()を通じて確認できます。

        -
        Parameters:
        name - 処理対象のコンテナの名前
        -
        Returns:
        指定の名前のコンテナに関する情報
        -
        Throws:
        -
        GSException - GSExceptionこの処理のタイムアウト、接続障害が発生した場合、またはクローズ後に呼び出された場合
        -
        java.lang.NullPointerException - 引数にnullが指定された場合
        -
      • -
      - - - - - - - -
        -
      • -

        getTimeSeries

        -
        TimeSeries<Row> getTimeSeries(java.lang.String name)
        -                              throws GSException
        -
        Rowによりロウ操作できるTimeSeriesオブジェクトを取得します。 -

        期待するコンテナ種別がContainerType.TIME_SERIESに限定され、返却される型がTimeSeriesとなる点を除き、 getTimeSeries(String)と同様に振る舞います。

        -
        Returns:
        時系列が存在する場合は対応するTimeSeries、存在しない場合はnull
        -
        Throws:
        -
        GSException - 同名のコレクションが存在する場合
        -
        GSException - この処理のタイムアウト、接続障害が発生した場合、またはクローズ後に呼び出された場合
        -
        java.lang.NullPointerException - 引数にnullが指定された場合
        Since:
        -
        1.5
        -
        See Also:
        getContainer(String)
        -
      • -
      - - - -
        -
      • -

        getTimeSeries

        -
        <R> TimeSeries<R> getTimeSeries(java.lang.String name,
        -                              java.lang.Class<R> rowType)
        -                            throws GSException
        -
        指定の名前の時系列を操作するためのTimeSeriesオブジェクトを取得します。 -

        指定の型とカラムレイアウトとの対応関係については、Containerの定義を参照してください。

        -
        Parameters:
        name - 処理対象の時系列の名前
        rowType - 処理対象の時系列のカラムレイアウトと対応するロウオブジェクトの型
        -
        Returns:
        時系列が存在する場合は対応するTimeSeries、存在しない場合はnull
        -
        Throws:
        -
        GSException - 同名のコレクションが存在する場合
        -
        GSException - 指定の型と既存のカラムレイアウトが一致しない場合
        -
        GSException - 指定の型がロウオブジェクトの型として適切でない場合。詳しくはContainerの定義を参照
        -
        GSException - この処理のタイムアウト、接続障害が発生した場合、またはクローズ後に呼び出された場合
        -
        java.lang.NullPointerException - 1つ以上の引数にnullが指定された場合
        -
      • -
      - - - -
        -
      • -

        multiGet

        -
        java.util.Map<java.lang.String,java.util.List<Row>> multiGet(java.util.Map<java.lang.String,? extends RowKeyPredicate<?>> containerPredicateMap)
        -                                                             throws GSException
        -
        指定の条件に基づき、任意のコンテナの任意個数・範囲のロウについて、可能な限りリクエスト単位を大きくして取得します。 -

        指定のマップに含まれる条件に従い、個別にContainer.get(Object) -もしくはQuery.fetch()を呼び出した場合と同様に、ロウの内容を取得します。ただし、個別に行う場合と違い、同一の格納先などの可能な限り大きな単位で対象ノードに対しリクエストしようとします。これにより、対象コンテナの総数や条件に合致するロウの総数が多くなるほど、対象ノードとやりとりする回数が削減される可能性が高くなります。

        - -

        指定のマップは、コンテナ名をキー、RowKeyPredicateで表現される取得条件を値とする任意個数のエントリから構成されます。同一のRowKeyPredicateインスタンスを複数含めることもできます。また、対象とするコンテナとして、コンテナ種別やカラムレイアウトが異なるものを混在させることができます。ただし、コンテナの構成によっては評価できない取得条件が存在します。具体的な制限については、RowKeyPredicateに対する各種設定機能の定義を参照してください。マップのキーまたは値としてnullを含めることはできません。

        - -

        返却されるマップは、コンテナ名をキー、ロウオブジェクトのリストを値とするエントリにより構成されます。また、返却されるマップには、取得条件として指定したマップに含まれるコンテナ名のうち、リクエスト時点で実在するコンテナに関するエントリのみが含まれます。 ASCIIの大文字・小文字表記だけが異なり同一のコンテナを指すコンテナ名の設定された、複数のエントリが指定のマップに含まれていた場合、返却されるマップにはこれらを1つにまとめたエントリが格納されます。同一のリストに複数のロウオブジェクトが含まれる場合、格納される順序はコンテナ種別と対応するContainerのサブインタフェースの定義に従います。指定のコンテナに対応するロウが1つも存在しない場合、対応するロウオブジェクトのリストは空になります。

        - -

        返却されたマップもしくはマップに含まれるリストに対して変更操作を行った場合に、 UnsupportedOperationExceptionなどの実行時例外が発生するかどうかは未定義です。

        - -

        他のコンテナ・ロウ操作と同様、異なるコンテナ間での整合性は保証されません。したがって、あるコンテナに対する処理の結果は、その処理の開始前に完了した他の操作命令の影響を受けることがあります。

        - -

        Container.get(Object, boolean)もしくは Query.fetch(boolean)のように、トランザクションを維持し、更新用ロックを要求することはできません。

        - -

        一度に大量のロウを取得しようとした場合、GridDBノードが管理する通信バッファのサイズの上限に到達し、失敗することがあります。上限サイズについては、GridDBテクニカルリファレンスを参照してください。

        - -

        送出するGSExceptionは、containerパラメータを含むことがあります。エラーに関するパラメータの詳細は、GridStoreの定義を参照してください。

        -
        Parameters:
        containerPredicateMap - 対象とするコンテナの名前と条件からなるマップ
        -
        Returns:
        条件に合致するロウ集合をコンテナ別に保持するマップ
        -
        Throws:
        -
        GSException - 指定のコンテナに関して評価できない取得条件が指定された場合
        -
        GSException - この処理またはトランザクションのタイムアウト、接続障害が発生した場合、クローズ後に呼び出された場合
        -
        java.lang.NullPointerException - 引数containerPredicateMapとして nullが指定された場合、このマップのキーまたは値としてnullが含まれていた場合
        Since:
        -
        1.5
        -
        See Also:
        Container.get(Object), -Query.fetch(), -RowKeyPredicate
        -
      • -
      - - - -
        -
      • -

        multiPut

        -
        void multiPut(java.util.Map<java.lang.String,java.util.List<Row>> containerRowsMap)
        -              throws GSException
        -
        任意のコンテナの任意個数のロウについて、可能な限りリクエスト単位を大きくして新規作成または更新操作を行います。 -

        指定のマップに含まれる各ロウオブジェクトについて、個別に Container.put(Object)を呼び出した場合と同様に新規作成または更新操作を行います。ただし、個別に行う場合と違い、同一の格納先などの可能な限り大きな単位で対象ノードに対しリクエストしようとします。これにより、対象コンテナの総数や指定のロウオブジェクトの総数が多くなるほど、対象ノードとやりとりする回数が削減される可能性が高くなります。

        - -

        指定のマップは、コンテナ名をキー、ロウオブジェクトのリストを値とする任意個数のエントリから構成されます。対象とするコンテナとして、コンテナ種別やカラムレイアウトが異なるものを混在させることができます。ただし、すでに存在するコンテナでなければなりません。マップのキーまたは値としてnullを含めることはできません。

        - -

        各ロウオブジェクトのリストには、対象のコンテナと同一のカラムレイアウトの Rowのみを任意個数含めることができます。現バージョンでは、カラム順序についてもすべて同一でなければなりません。リストの要素としてnullを含めることはできません。

        - -

        コンテナの種別ならびに設定によっては、操作できるロウの内容について Container.put(Object)と同様の制限が設けられています。具体的な制限事項は、Containerのサブインタフェースの定義を参照してください。

        - -

        指定のマップ内に同一コンテナを対象とした同一ロウキーを持つ複数のロウオブジェクトが存在する場合、異なるリスト間であればマップエントリ集合のイテレータからの取り出し順、同一リスト内であればリストの要素順を基準として、同値のロウキーを持つ最も後方にあるロウオブジェクトの内容が反映されます。

        - -

        トランザクションを維持し、ロックを保持し続けることはできません。ただし、既存のトランザクションが対象ロウに影響するロックを確保している場合、すべてのロックが解放されるまで待機し続けます。

        - -

        他のコンテナ・ロウ操作と同様、異なるコンテナ間での整合性は保証されません。したがって、あるコンテナに対する処理の結果は、その処理の開始前に完了した他の操作命令の影響を受けることがあります。

        - -

        各コンテナならびにロウに対する処理の途中で例外が発生した場合、一部のコンテナの一部のロウに対する操作結果のみが反映されたままとなることがあります。

        - -

        送出するGSExceptionは、containerパラメータを含むことがあります。エラーに関するパラメータの詳細は、GridStoreの定義を参照してください。

        -
        Parameters:
        containerRowsMap - 対象とするコンテナの名前とロウオブジェクトのリストからなるマップ
        -
        Throws:
        -
        GSException - 対象とするコンテナが存在しない場合、また、対象とするコンテナとロウオブジェクトとのカラムレイアウトが一致しない場合
        -
        GSException - 特定コンテナ種別固有の制限に反する操作を行った場合
        -
        GSException - この処理またはトランザクションのタイムアウト、接続障害が発生した場合、クローズ後に呼び出された場合、またはサポート範囲外の値がロウオブジェクトに含まれていた場合
        -
        java.lang.NullPointerException - 引数containerRowsMapとして nullが指定された場合、このマップのキーまたは値としてnullが含まれていた場合、もしくは、マップを構成するリストの要素としてnullが含まれていた場合
        Since:
        -
        1.5
        -
        See Also:
        Container.put(Object)
        -
      • -
      - - - -
        -
      • -

        putCollection

        -
        <K,R> Collection<K,R> putCollection(java.lang.String name,
        -                                  java.lang.Class<R> rowType)
        -                              throws GSException
        -
        コレクションを新規作成または変更します。 -

        同名のコンテナが存在しない場合、指定のクラスにより定義されたカラムレイアウトに従い、新規にコレクションを作成します。すでに同名のコンテナが存在し、既存のカラムレイアウトの内容がすべて一致する場合、実行中のトランザクションを待機する点を除き getCollection(String, Class)と同様に振る舞います。

        - -

        指定の型とカラムレイアウトとの対応関係については、Containerの定義を参照してください。

        - -

        すでに同名のコレクションが存在し、かつ、該当するコレクションにおいて実行中のトランザクションが存在する場合、それらの終了を待機してから処理を行います。

        -
        Parameters:
        name - 処理対象のコレクションの名前
        rowType - 処理対象のコレクションのカラムレイアウトと対応するロウオブジェクトの型
        -
        Returns:
        対応するCollection
        -
        Throws:
        -
        GSException - 同名のコレクションが存在する場合。または、既存の同名の時系列に関してカラムレイアウトならびに追加設定の内容が一致しない場合
        -
        GSException - この処理のタイムアウト、接続障害が発生した場合、またはクローズ後に呼び出された場合
        -
        java.lang.NullPointerException - 1つ以上の引数にnullが指定された場合
        -
      • -
      - - - -
        -
      • -

        putCollection

        -
        <K,R> Collection<K,R> putCollection(java.lang.String name,
        -                                  java.lang.Class<R> rowType,
        -                                  boolean modifiable)
        -                              throws GSException
        -
        変更オプションを指定して、コレクションを新規作成または変更します。 -

        同名のコンテナが存在しない場合、指定のクラスにより定義されたカラムレイアウトに従い、新規にコレクションを作成します。すでに同名のコレクションが存在し、既存のカラムレイアウトの内容がすべて一致する場合、実行中のトランザクションを待機する点を除き getCollection(String, Class)と同様に振る舞います。

        - -

        modifiabletrueであり、すでに同名のコレクションが存在する場合、必要に応じカラムレイアウトを変更します。変更する際、要求したカラムと同一の名前・型の既存のカラムは保持されます。一致しないカラムのうち、既存のコレクションにない名前のカラムは追加し、要求側にないカラムはデータも含め削除します。型が異なる同名のカラムが存在する場合は失敗します。また、ロウキーに対応するカラムの追加と削除はできません。

        - -

        コンテナにトリガが設定されており、カラムレイアウト変更によってトリガが通知対象としているカラムが削除された場合、そのカラムはトリガの通知対象から削除されます。

        - -

        新たに追加されるカラムの値は、Containerにて定義されている空の値を初期値として初期化されます。

        - -

        指定の型とカラムレイアウトとの対応関係については、Containerの定義を参照してください。

        - -

        すでに同名のコレクションが存在し、かつ、該当するコレクションにおいて実行中のトランザクションが存在する場合、それらの終了を待機してから処理を行います。

        - -

        ロウキーを持つコレクションを新規に作成する場合、ロウキーに対し、 Container.createIndex(String)にて定義されているデフォルト種別の索引が作成されます。この索引は、削除することができます。

        - -

        現バージョンでは、コンテナの規模など諸条件を満たした場合、カラムレイアウトの変更開始から終了までの間に、処理対象のコンテナに対してコンテナ情報の参照、更新ロックなしでのロウの参照操作を行える場合があります。それ以外の操作は、Containerでの定義通り待機させる場合があります。カラムレイアウトの変更途中に別の操作が行われる場合は、変更前のカラムレイアウトが使用されます。

        -
        Parameters:
        name - 処理対象のコレクションの名前
        rowType - 処理対象のコレクションのカラムレイアウトと対応するロウオブジェクトの型
        modifiable - 既存コレクションのカラムレイアウト変更を許可するかどうか
        -
        Returns:
        対応するCollection
        -
        Throws:
        -
        GSException - 同名の時系列が存在する場合。または、modifiablefalseであり、既存の同名のコレクションに関してカラムレイアウトの内容が一致しない場合や、 modifiabletrueであり、既存の同名のコレクションに関して変更できない項目を変更しようとした場合
        -
        GSException - 指定の型がロウオブジェクトの型として適切でない場合。詳しくはContainerの定義を参照
        -
        GSException - この処理のタイムアウト、接続障害が発生した場合、またはクローズ後に呼び出された場合
        -
        java.lang.NullPointerException - 1つ以上の引数にnullが指定された場合
        -
      • -
      - - - - - - - -
        -
      • -

        putContainer

        -
        <K,R> Container<K,R> putContainer(java.lang.String name,
        -                                java.lang.Class<R> rowType,
        -                                ContainerInfo info,
        -                                boolean modifiable)
        -                            throws GSException
        -
        ロウオブジェクトの型とContainerInfoを指定して、コンテナを新規作成または変更します。 -

        主に、ロウオブジェクトの型を指定して、追加設定を持つコンテナを新規作成する場合に使用します。

        - -

        カラムレイアウトならびにカラム順序の無視設定をContainerInfoに指定できない点を除けば、 putContainer(String, ContainerInfo, boolean)と同様です。

        -
        Parameters:
        name - 処理対象のコンテナの名前
        rowType - 処理対象のコレクションのカラムレイアウトと対応するロウオブジェクトの型
        info - 処理対象のコンテナの情報。nullの場合は無視される
        modifiable - 既存コンテナのカラムレイアウト変更を許可するかどうか
        -
        Returns:
        対応するContainer。コンテナ種別として ContainerType.COLLECTIONを指定した場合はCollectionContainerType.TIME_SERIESを指定した場合はTimeSeriesのインスタンスとなる。
        -
        Throws:
        -
        GSException - nameならびにinfo引数の内容が規則に合致しない場合。また、指定のコンテナ種別に対応するコンテナ新規作成・変更メソッドの規則に合致しない場合
        -
        GSException - 指定の型がロウオブジェクトの型として適切でない場合。詳しくはContainerの定義を参照
        -
        GSException - この処理のタイムアウト、接続障害が発生した場合、またはクローズ後に呼び出された場合
        -
        java.lang.NullPointerException - rowType引数にnullが指定された場合
        Since:
        -
        2.1
        -
        See Also:
        putContainer(String, ContainerInfo, boolean), -putCollection(String, Class, boolean), -putTimeSeries(String, Class, TimeSeriesProperties, boolean)
        -
      • -
      - - - -
        -
      • -

        putContainer

        -
        <K,R,C extends Container<K,R>> C putContainer(java.lang.String name,
        -                                            Container.BindType<K,R,C> bindType)
        -                                 throws GSException
        -
        Container.BindTypeを指定して、コンテナを新規作成または変更します。 -

        コンテナ情報を指定せず、カラムレイアウト変更を許可しないで putContainer(String, Container.BindType, ContainerInfo, boolean) -を呼び出した場合と、同様に振る舞います。

        -
        Parameters:
        name - 処理対象のコンテナの名前
        bindType - 処理対象のコンテナと結びつく型情報
        -
        Returns:
        対応するContainerまたはそのサブインタフェースの型のインスタンス
        -
        Throws:
        -
        GSException - namebindTypeの内容が規則に合致しない場合。また、指定のコンテナ種別に対応するコンテナ新規作成・変更メソッドの規則に合致しない場合
        -
        GSException - 指定の型がロウオブジェクトの型として適切でない場合。詳しくはContainerの定義を参照
        -
        GSException - この処理のタイムアウト、接続障害が発生した場合、またはクローズ後に呼び出された場合
        -
        java.lang.NullPointerException - bindType引数にnullが指定された場合
        Since:
        -
        4.3
        -
      • -
      - - - -
        -
      • -

        putContainer

        -
        <K,R,C extends Container<K,R>> C putContainer(java.lang.String name,
        -                                            Container.BindType<K,R,C> bindType,
        -                                            ContainerInfo info,
        -                                            boolean modifiable)
        -                                 throws GSException
        -
        Container.BindTypeContainerInfoを指定して、コンテナを新規作成または変更します。 -

        指定のbindTypeに応じて、次のいずれかのメソッドと同様に振る舞います。

        -
        -
        Parameters:
        name - 処理対象のコンテナの名前
        bindType - 処理対象のコンテナと結びつく型情報
        info - 処理対象のコンテナの情報。nullの場合は無視される
        modifiable - 既存コンテナのカラムレイアウト変更を許可するかどうか
        -
        Returns:
        対応するContainerまたはそのサブインタフェースの型のインスタンス
        -
        Throws:
        -
        GSException - namebindType、ならびに、 info引数の内容が規則に合致しない場合。また、指定のコンテナ種別に対応するコンテナ新規作成・変更メソッドの規則に合致しない場合
        -
        GSException - 指定の型がロウオブジェクトの型として適切でない場合。詳しくはContainerの定義を参照
        -
        GSException - この処理のタイムアウト、接続障害が発生した場合、またはクローズ後に呼び出された場合
        -
        java.lang.NullPointerException - bindType引数にnullが指定された場合
        Since:
        -
        4.3
        -
      • -
      - - - -
        -
      • -

        putContainer

        -
        <K> Container<K,Row> putContainer(java.lang.String name,
        -                                ContainerInfo info,
        -                                boolean modifiable)
        -                              throws GSException
        -
        ContainerInfoを指定して、コンテナを新規作成または変更します。 -

        次の点を除き、putCollection(String, Class, boolean) -もしくはputTimeSeries(String, Class, TimeSeriesProperties, boolean) -と同様に振る舞います。

        -
          -
        • ContainerInfoを用いてコンテナ種別、カラムレイアウト、ならびに、必要に応じ時系列構成オプションを指定する
        • -
        • 返却されるContainerのロウオブジェクトの型が常にRowとなる
        • -
        -

        それぞれの同名の引数modifiableの用法についても同様です。

        - -

        コンテナに関する情報の指定方法の一覧は次の通りです。

        - - - - - - - - - - - - - - - - - - - - -
        項目引数説明
        コンテナ名nameまたはinfo少なくともいずれかの引数にnullではない値を指定する。両方に指定する場合、異なる値を指定してはならない。
        コンテナ種別infonullではない値を指定する。 ContainerType.COLLECTIONを指定した場合、 putCollection(String, Class, boolean)と同様の振る舞いとなる。 ContainerType.TIME_SERIESを指定した場合、 putTimeSeries(String, Class, TimeSeriesProperties, boolean)と同様の振る舞いとなる。
        カラムレイアウトinfoContainerにて規定された制約に合致するよう ColumnInfoのリストならびにロウキーの構成を設定する。ただし現バージョンでは、ColumnInfo.getDefaultValueNull()null以外を返すようなColumnInfoを含めることはできない。
        カラム順序の無視info無視する場合、同名の既存のコンテナのカラム順序と一致するかどうかを検証しない。
        時系列構成オプションinfoコンテナ種別がContainerType.TIME_SERIESの場合のみ、 nullではない値を指定できる。
        索引設定info現バージョンでは無視される。今後のバージョンでは、 Container.createIndex(String, IndexType)の規則に合致しない設定が含まれていた場合、例外が送出される可能性がある。
        トリガ設定info現バージョンでは無視される。今後のバージョンでは、 Container.createTrigger(TriggerInfo)の規則に合致しない設定が含まれていた場合、例外が送出される可能性がある。
        コンテナ類似性infonull以外を指定し新規作成する場合、指定の内容が反映される。既存コンテナの設定を変更することはできない。nullを指定した場合は無視される。
        -
        Parameters:
        name - 処理対象のコンテナの名前
        info - 処理対象のコンテナの情報
        modifiable - 既存コンテナのカラムレイアウト変更を許可するかどうか
        -
        Returns:
        対応するContainer。コンテナ種別として ContainerType.COLLECTIONを指定した場合はCollectionContainerType.TIME_SERIESを指定した場合はTimeSeriesのインスタンスとなる。
        -
        Throws:
        -
        GSException - nameならびにinfo引数の内容が規則に合致しない場合。また、指定のコンテナ種別に対応するコンテナ新規作成・変更メソッドの規則に合致しない場合
        -
        GSException - この処理のタイムアウト、接続障害が発生した場合、またはクローズ後に呼び出された場合
        -
        java.lang.NullPointerException - info引数にnullが指定された場合
        Since:
        -
        1.5
        -
        See Also:
        putCollection(String, Class, boolean), -putTimeSeries(String, Class, TimeSeriesProperties, boolean), -Container
        -
      • -
      - - - -
        -
      • -

        putTimeSeries

        -
        <R> TimeSeries<R> putTimeSeries(java.lang.String name,
        -                              java.lang.Class<R> rowType)
        -                            throws GSException
        -
        時系列を新規作成または変更します。 -

        同名のコンテナが存在しない場合、指定のクラスにより定義されたカラムレイアウトに従い、新規に時系列を作成します。すでに同名の時系列が存在し、既存のカラムレイアウトの内容がすべて一致する場合、実行中のトランザクションを待機する点を除き getTimeSeries(String, Class)と同様に振る舞います。

        - -

        指定の型とカラムレイアウトとの対応関係については、Containerの定義を参照してください。

        - -

        すでに同名の時系列が存在し、かつ、該当する時系列において実行中のトランザクションが存在する場合、それらの終了を待機してから処理を行います。

        -
        Parameters:
        name - 処理対象の時系列の名前
        rowType - 処理対象の時系列のカラムレイアウトと対応するロウオブジェクトの型
        -
        Returns:
        対応するTimeSeries
        -
        Throws:
        -
        GSException - 同名のコレクションが存在する場合。または、既存の同名の時系列に関してカラムレイアウトならびに追加設定の内容が一致しない場合
        -
        GSException - 指定の型がロウオブジェクトの型として適切でない場合。詳しくはContainerの定義を参照
        -
        GSException - この処理のタイムアウト、接続障害が発生した場合、またはクローズ後に呼び出された場合
        -
        java.lang.NullPointerException - 1つ以上の引数にnullが指定された場合
        -
      • -
      - - - -
        -
      • -

        putTimeSeries

        -
        <R> TimeSeries<R> putTimeSeries(java.lang.String name,
        -                              java.lang.Class<R> rowType,
        -                              TimeSeriesProperties props,
        -                              boolean modifiable)
        -                            throws GSException
        -
        追加設定や変更オプションを指定して、時系列を新規作成または変更します。 -

        同名のコンテナが存在しない場合、指定のクラスにより定義されたカラムレイアウトや追加設定に従い、新規に時系列を作成します。すでに同名の時系列が存在し、既存のカラムレイアウトならびに追加設定の内容がすべて一致する場合、実行中のトランザクションを待機する点を除き getTimeSeries(String, Class)と同様に振る舞います。

        - -

        modifiabletrueであり、すでに同名の時系列が存在する場合、必要に応じカラムレイアウトを変更します。変更する際、要求したカラムと同一の名前・型の既存のカラムは保持されます。一致しないカラムのうち、既存の時系列にない名前のカラムは追加し、要求側にないカラムはデータも含め削除します。型が異なる同名のカラムが存在する場合は失敗します。また、ロウキーに対応するカラムの追加と削除、時系列構成オプションの変更はできません。時系列構成オプションを指定する場合は、既存の設定内容とすべて同値にする必要があります。

        - -

        コンテナにトリガが設定されており、カラムレイアウト変更によってトリガが通知対象としているカラムが削除された場合、そのカラムはトリガの通知対象から削除されます。

        - -

        新たに追加されるカラムの初期値については、 putCollection(String, Class, boolean)の定義を参照してください。

        - -

        指定の型とカラムレイアウトとの対応関係については、Containerの定義を参照してください。

        - -

        すでに同名の時系列が存在し、かつ、該当する時系列において実行中のトランザクションが存在する場合、それらの終了を待機してから処理を行います。

        -
        Parameters:
        name - 処理対象の時系列の名前
        rowType - 処理対象の時系列のカラムレイアウトと対応するロウオブジェクトの型
        props - 時系列の構成オプション。nullを指定すると、同名の時系列が存在する場合は既存の設定が継承され、存在しない場合は初期状態のTimeSeriesPropertiesを指定したものとみなされる。
        modifiable - 既存時系列のカラムレイアウト変更を許可するかどうか
        -
        Returns:
        対応するTimeSeries
        -
        Throws:
        -
        GSException - 同名のコレクションが存在する場合。または、modifiablefalseであり、既存の同名の時系列に関してカラムレイアウトならびに追加設定の内容が一致しない場合や、 modifiabletrueであり、既存の同名の時系列に関して変更できない項目を変更しようとした場合
        -
        GSException - 指定の型がロウオブジェクトの型として適切でない場合。詳しくはContainerの定義を参照
        -
        GSException - この処理のタイムアウト、接続障害が発生した場合、またはクローズ後に呼び出された場合
        -
        java.lang.NullPointerException - 1つ以上の引数にnullが指定された場合
        -
      • -
      - - - - -
    • -
    -
  • -
-
-
- - - -
-
-

Class GridStoreFactory

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • com.toshiba.mwcloud.gs.GridStoreFactory
    • -
    -
  • -
-
-
    -
  • -
    -
    All Implemented Interfaces:
    -
    java.io.Closeable, java.lang.AutoCloseable
    -
    -
    -
    -
    public abstract class GridStoreFactory
    -extends java.lang.Object
    -implements java.io.Closeable
    -
    GridStoreインスタンスを管理します。 -

    GridStoreインスタンス共通のクライアント設定や使用済みのコネクションを管理します。

    - -

    GridDBにアクセスするためには、このファクトリを介して GridStoreインスタンスを取得する必要があります。

    - -

    このクラスの公開メソッドは、すべてスレッド安全です。

    - -

    また、クライアントロギングとクライアント設定ファイルの機能を使用できます。

    - -

    クライアントロギング

    -

    クラスパスにロギングライブラリを含めることで、ログ出力を有効にした場合にログを出力できます。

    -

    ロギングフレームワークはSLF4Jを使用します。ロガーの名称は「com.toshiba.mwcloud.gs.GridStoreLogger」で始まります。また、SLF4Jのバージョンは1.6.0以上を推奨しています。

    - -

    クライアント設定ファイル

    -

    設定ファイル「gs_client.properties」を含むディレクトリと、設定ライブラリ「gridstore-conf.jar」をクラスパスに共に含めることで、GridStoreFactoryに設定ファイルの内容を適用することができます。設定ファイルを用いることで、アプリケーションコードを修正せずに、接続設定を変更できます。設定ファイルには以下のPropertiesオブジェクトと同じプロパティ項目を指定できます。設定ファイルの内容はPropertiesオブジェクトの設定より優先的に適用されます。

    -
    factoryカテゴリプロパティ
    -
    有効なプロパティの項目はsetProperties(Properties)の仕様に準拠します。
    -
    以下のように「factory.」をプロパティ名の前に付けて記述します。
    factory.maxConnectionPoolSize = 10
    -
    -
    storeカテゴリプロパティ
    -
    有効なプロパティの項目はgetGridStore(Properties)の仕様に準拠します。
    -
    以下のように「store.」をプロパティ名の前に付けて記述します。
    store.clusterName = Project1
    -
    -
    -

    以下の場合は例外が発生します。

    -
    • 設定ファイルを含む複数のディレクトリがクラスパスに含まれる場合
    • -
    • 設定ライブラリのみがクラスパスに含まれる場合
    • -
    • 存在しないカテゴリ名が指定された場合
    • プロパティ名がカテゴリ名のみからなる場合
    -

    また、設定ファイルを含むディレクトリのみがクラスパスに含まれ、設定ライブラリがクラスパスに含まれない場合には、設定ファイルの内容は適用されません。

    -
    -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Constructor Summary

      - - - - - - - - - - -
      Constructors 
      ModifierConstructor and Description
      protected GridStoreFactory() 
      -
    • -
    - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - - - - - - - - - - - - - -
      Methods 
      Modifier and TypeMethod and Description
      abstract voidclose() -
      このファクトリより作成されたGridStoreをすべてクローズし、必要に応じて関連するリソースを解放します。
      -
      abstract GridStoregetGridStore(java.util.Properties properties) -
      指定のプロパティを持つGridStoreを取得します。
      -
      static GridStoreFactorygetInstance() -
      デフォルトのインスタンスを取得します。
      -
      abstract voidsetProperties(java.util.Properties properties) -
      このファクトリの設定を変更します。
      -
      -
        -
      • - - -

        Methods inherited from class java.lang.Object

        -clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        GridStoreFactory

        -
        protected GridStoreFactory()
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        close

        -
        public abstract void close()
        -                    throws GSException
        -
        このファクトリより作成されたGridStoreをすべてクローズし、必要に応じて関連するリソースを解放します。 -

        GSExceptionが送出された場合でも、関連するコネクションリソースはすべて解放されます。すでにクローズ済みの場合、このメソッドを呼び出しても何の効果もありません。なお、現在のVMの終了時にも呼び出されます。

        -
        -
        Specified by:
        -
        close in interface java.io.Closeable
        -
        Specified by:
        -
        close in interface java.lang.AutoCloseable
        -
        Throws:
        -
        GSException - クローズ処理中に接続障害などが発生した場合
        See Also:
        Closeable.close()
        -
      • -
      - - - -
        -
      • -

        getGridStore

        -
        public abstract GridStore getGridStore(java.util.Properties properties)
        -                                throws GSException
        -
        指定のプロパティを持つGridStoreを取得します。 -

        GridStoreを取得した時点では、各Containerを管理するマスタノード(以下、マスタ)のアドレス探索を必要に応じて行うだけであり、認証処理は行われません。実際に各Containerに対応するノードに接続する必要が生じたタイミングで、認証処理が行われます。

        - -

        以下のプロパティを指定できます。サポート外の名称のプロパティは無視されます。

        - - - - - - - - - - - - - - - - - - - - - -
        名称説明
        host接続先ホスト名。IPアドレス(IPV4のみ)も可。マスタを手動指定する場合は必須。マスタを自動検出する場合は設定しない
        port接続先ポート番号。0から 65535までの数値の文字列表現。マスタを手動指定する場合は必須。マスタを自動検出する場合は設定しない
        notificationAddressマスタ自動検出に用いられる通知情報を受信するためのIPアドレス(IPV4のみ)。省略時はデフォルトのアドレスを使用。 notificationMemberおよびnotificationProviderと同時に指定することはできない
        notificationPortマスタ自動検出に用いられる通知情報を受信するためのポート番号。0から65535までの数値の文字列表現。省略時はデフォルトのポートを使用
        clusterNameクラスタ名。接続先のクラスタに設定されているクラスタ名と一致するかどうかを確認するために使用される。省略時もしくは空文字列を指定した場合、クラスタ名の確認は行われない
        database接続先のデータベース名。省略時は全てのユーザがアクセス可能な「public」データベースに自動接続される。接続ユーザは接続データベースに属するコンテナを操作できる。
        userユーザ名
        passwordユーザ認証用のパスワード
        consistency次のいずれかの一貫性レベル。
        -
        "IMMEDIATE"
        他のクライアントからの更新結果は、該当トランザクションの完了後即座に反映される
        -
        "EVENTUAL"
        他のクライアントからの更新結果は、該当トランザクションが完了した後でも反映されない場合がある。 Containerに対する更新操作は実行できない
        -
        -デフォルトでは"IMMEDIATE"が適用されます
        transactionTimeoutトランザクションタイムアウト時間の最低値。関係するContainerにおける各トランザクションの開始時点から適用。 0以上Integer.MAX_VALUEまでの値の文字列表現であり、単位は秒。ただし、タイムアウト時間として有効に機能する範囲に上限があり、上限を超える指定は上限値が指定されたものとみなされる。 0の場合、後続のトランザクション処理がタイムアウトエラーになるかどうかは常に不定となる。省略時は接続先GridDB上のデフォルト値を使用
        failoverTimeoutフェイルオーバ処理にて新たな接続先が見つかるまで待機する時間の最低値。0以上 Integer.MAX_VALUEまでの数値の文字列表現であり、単位は秒。 0の場合、フェイルオーバ処理を行わない。省略時はこのファクトリの設定値を使用
        containerCacheSize -コンテナキャッシュに格納するコンテナ情報の最大個数。 0以上Integer.MAX_VALUEまでの数値の文字列表現。値が0の場合、コンテナキャッシュを使用しないことを意味する。 Containerを取得する際にキャッシュにヒットした場合は、 GridDBへのコンテナ情報の問い合わせを行わない。省略時は既存の設定値を使用。バージョン1.5よりサポート
        dataAffinityPattern -データアフィニティ機能のアフィニティ文字列を次のようにコンテナパターンとペアで任意個数指定する。
        (コンテナ名パターン1)=(アフィニティ文字列1),(コンテナ名パターン2)=(アフィニティ文字列2),...
        - ContainerInfo.setDataAffinity(String)が未指定の Containerを追加する際に、コンテナ名が指定したいずれかのコンテナ名パターンに合致する場合に、ペアで指定したアフィニティ文字列が適用される。複数のコンテナ名パターンが合致する場合は、記述された順番で最初に合致したパターンが用いられる。コンテナ名パターンはワイルドカード「%」を使用できる他は、コンテナ名の規則に準拠する。アフィニティ文字列はContainerInfo.setDataAffinity(String)の規則に準拠する。パターンやその区切りに使用される記号をコンテナ名などに用いるには、「\」を用いてエスケープする。ただしコンテナ名やアフィニティ文字列の規則に反する記号は使用できない。バージョン2.7よりサポート
        notificationMember -固定リスト方式を使用して構成されたクラスタに接続する場合に、クラスタノードのアドレス・ポートのリストを次のように指定する。
        (アドレス1):(ポート1),(アドレス2):(ポート2),...
        - notificationAddressおよびnotificationProviderと同時に指定することはできない。バージョン2.9よりサポート
        notificationProvider -プロバイダ方式を使用して構成されたクラスタに接続する場合に、アドレスプロバイダのURLを指定する。 notificationAddressおよびnotificationMemberと同時に指定することはできない。バージョン2.9よりサポート
        applicationNameアプリケーションの名前。アプリケーションの識別を補助するための情報として、接続先のクラスタ上での各種管理情報の出力の際に含められる場合がある。ただし、アプリケーションの同一性をどのように定義するかについては関与しない。省略時はアプリケーション名の指定がなかったものとみなされる。空文字列は指定できない。バージョン4.2よりサポート
        timeZoneタイムゾーン情報。 TQLでのTIMESTAMP値演算などに使用される。「±hh:mm」または「±hhmm」形式によるオフセット値 (±+または-hhは時、 mmは分)、「Z」(+00:00に相当)、「auto」(実行環境に応じ自動設定)のいずれかを指定する。 autoが使用できるのは夏時間を持たないタイムゾーンに限定される。バージョン4.3よりサポート
        - -

        クラスタ名、データベース名、ユーザ名、パスワードについては、 ASCIIの大文字・小文字表記の違いがいずれも区別されます。その他、これらの定義に使用できる文字種や長さの上限などの制限については、 GridDBテクニカルリファレンスを参照してください。ただし、制限に反する文字列をプロパティ値として指定した場合、各ノードへの接続のタイミングまでエラーが検知されないことや、認証情報の不一致など別のエラーになることがあります。

        - -

        取得のたびに、新たなGridStoreインスタンスが生成されます。異なるGridStoreインスタンスならびに関連するオブジェクトに対する操作は、スレッド安全です。すなわち、ある2つのオブジェクトがそれぞれGridStore -インスタンスを基にして生成されたものまたはGridStoreインスタンスそのものであり、かつ、該当する関連GridStoreインスタンスが異なる場合、一方のオブジェクトに対してどのスレッドからどのタイミングでメソッドが呼び出されていたとしても、他方のオブジェクトのメソッドを呼び出すことができます。ただし、GridStore自体のスレッド安全性は保証されていないため、同一GridStoreインスタンスに対して複数スレッドから任意のタイミングでメソッド呼び出しすることはできません。

        -
        Parameters:
        properties - 取得設定を指示するためのプロパティ
        -
        Throws:
        -
        GSException - 指定のホストについて名前解決できなかった場合
        -
        GSException - 指定のプロパティが上で説明した形式・制限に合致しないことを検知できた場合
        -
        GSException - すでにクローズ済みの場合
        -
        java.lang.NullPointerException - propertiesnullが指定された場合
        -
      • -
      - - - -
        -
      • -

        getInstance

        -
        public static GridStoreFactory getInstance()
        -
        デフォルトのインスタンスを取得します。 -

        このクラスのロード時に、GridStoreFactoryクラスのデフォルトのサブクラスがロードされ、インスタンスが生成されます。

        -
      • -
      - - - -
        -
      • -

        setProperties

        -
        public abstract void setProperties(java.util.Properties properties)
        -                            throws GSException
        -
        このファクトリの設定を変更します。 -

        設定の変更は、このファクトリより生成されたGridStore、ならびに、今後このファクトリで生成されるGridStoreに反映されます。

        - -

        以下のプロパティを指定できます。サポート外の名称のプロパティは無視されます。

        - - - - - - -
        名称説明
        maxConnectionPoolSize内部で使用されるコネクションプールの最大コネクション数。0以上 Integer.MAX_VALUEまでの数値の文字列表現。値が0の場合、コネクションプールを使用しないことを意味する。省略時は既存の設定値を使用
        failoverTimeout -フェイルオーバ処理にて新たな接続先が見つかるまで待機する時間の最低値。0以上 Integer.MAX_VALUEまでの数値の文字列表現であり、単位は秒。 0の場合、フェイルオーバ処理を行わない。省略時は既存の設定値を使用
        -
        Throws:
        -
        GSException - 指定のプロパティが上で説明した形式に合致しない場合
        -
        GSException - すでにクローズ済みの場合
        -
        java.lang.NullPointerException - propertiesnullが指定された場合
        -
      • -
      -
    • -
    -
  • -
-
-
- - - -
-
-

Class IndexInfo

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • com.toshiba.mwcloud.gs.IndexInfo
    • -
    -
  • -
-
-
    -
  • -
    -
    -
    public class IndexInfo
    -extends java.lang.Object
    -
    索引の設定内容を表します。 -

    カラム名の表記やカラム番号の妥当性について、必ずしも検査するとは限りません。

    -
    Since:
    -
    3.5
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Constructor Summary

      - - - - - - - - - - - -
      Constructors 
      Constructor and Description
      IndexInfo() -
      空の索引情報を作成します。
      -
      IndexInfo(IndexInfo info) -
      指定の内容を引き継ぎ、新たな索引情報を作成します。
      -
      -
    • -
    - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Methods 
      Modifier and TypeMethod and Description
      static IndexInfocreateByColumn(java.lang.String columnName, - IndexType type) -
      必要に応じカラム名と索引種別を指定して索引情報を作成します。
      -
      static IndexInfocreateByColumnList(java.util.List<java.lang.String> columnNames, - IndexType type) -
      必要に応じカラム名の列と索引種別を指定して索引情報を作成します。
      -
      static IndexInfocreateByName(java.lang.String name, - IndexType type) -
      必要に応じ索引名と索引種別を指定して索引情報を作成します。
      -
      java.lang.IntegergetColumn() -
      索引に対応する単一のカラムのカラム番号を取得します。
      -
      java.util.List<java.lang.Integer>getColumnList() -
      索引に対応する任意個数のカラムのカラム番号の列を取得します。
      -
      java.lang.StringgetColumnName() -
      索引に対応する単一のカラムのカラム名を取得します。
      -
      java.util.List<java.lang.String>getColumnNameList() -
      索引に対応する任意個数のカラムのカラム名の列を取得します。
      -
      java.lang.StringgetName() -
      索引名を取得します。
      -
      IndexTypegetType() -
      索引種別を取得します。
      -
      voidsetColumn(java.lang.Integer column) -
      索引に対応する、単一のカラムからなるカラム番号列を設定します。
      -
      voidsetColumnList(java.util.List<java.lang.Integer> columns) -
      索引に対応する任意個数のカラムのカラム番号の列を設定します。
      -
      voidsetColumnName(java.lang.String columnName) -
      索引に対応する、単一のカラムからなるカラム名列を設定します。
      -
      voidsetColumnNameList(java.util.List<java.lang.String> columnNames) -
      索引に対応する任意個数のカラムのカラム名の列を設定します。
      -
      voidsetName(java.lang.String name) -
      索引名を設定します。
      -
      voidsetType(IndexType type) -
      索引種別を設定します。
      -
      -
        -
      • - - -

        Methods inherited from class java.lang.Object

        -clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        IndexInfo

        -
        public IndexInfo()
        -
        空の索引情報を作成します。 -

        索引種別、索引名、カラム番号、カラム名がいずれも未設定の状態の索引情報を作成します。

        -
      • -
      - - - -
        -
      • -

        IndexInfo

        -
        public IndexInfo(IndexInfo info)
        -
        指定の内容を引き継ぎ、新たな索引情報を作成します。
        -
        Parameters:
        info - 引き継ぎ対象の索引情報
        -
        Throws:
        -
        java.lang.NullPointerException - 引数にnullが指定された場合
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        createByColumn

        -
        public static IndexInfo createByColumn(java.lang.String columnName,
        -                       IndexType type)
        -
        必要に応じカラム名と索引種別を指定して索引情報を作成します。
        -
        Parameters:
        columnName - カラム名。指定しない場合はnull
        type - 索引種別。指定しない場合はnull
        -
      • -
      - - - -
        -
      • -

        createByColumnList

        -
        public static IndexInfo createByColumnList(java.util.List<java.lang.String> columnNames,
        -                           IndexType type)
        -
        必要に応じカラム名の列と索引種別を指定して索引情報を作成します。
        -
        Parameters:
        columnNames - カラム名の列。長さ0は許容するが、 nullは指定できない
        type - 索引種別。指定しない場合はnull
        -
        Throws:
        -
        java.lang.NullPointerException - columnNamesnullが指定された場合
        Since:
        -
        4.3
        -
      • -
      - - - -
        -
      • -

        createByName

        -
        public static IndexInfo createByName(java.lang.String name,
        -                     IndexType type)
        -
        必要に応じ索引名と索引種別を指定して索引情報を作成します。
        -
        Parameters:
        name - 索引名。指定しない場合はnull
        type - 索引種別。指定しない場合はnull
        -
      • -
      - - - -
        -
      • -

        getColumn

        -
        public java.lang.Integer getColumn()
        -
        索引に対応する単一のカラムのカラム番号を取得します。
        -
        Returns:
        カラム番号。未設定の場合はnull
        -
        Throws:
        -
        java.lang.IllegalStateException - 複合索引に関するカラム番号の列またはカラム名の列が設定されていた場合
        -
      • -
      - - - -
        -
      • -

        getColumnList

        -
        public java.util.List<java.lang.Integer> getColumnList()
        -
        索引に対応する任意個数のカラムのカラム番号の列を取得します。
        -
        Returns:
        番号の列。未設定の場合は長さ0の列
        Since:
        -
        4.3
        -
      • -
      - - - -
        -
      • -

        getColumnName

        -
        public java.lang.String getColumnName()
        -
        索引に対応する単一のカラムのカラム名を取得します。
        -
        Returns:
        カラム名。未設定の場合はnull
        -
        Throws:
        -
        java.lang.IllegalStateException - 複合索引に関するカラム番号の列またはカラム名の列が設定されていた場合
        -
      • -
      - - - -
        -
      • -

        getColumnNameList

        -
        public java.util.List<java.lang.String> getColumnNameList()
        -
        索引に対応する任意個数のカラムのカラム名の列を取得します。
        -
        Returns:
        カラム名の列。未設定の場合は長さ0の列
        Since:
        -
        4.3
        -
      • -
      - - - -
        -
      • -

        getName

        -
        public java.lang.String getName()
        -
        索引名を取得します。
        -
        Returns:
        索引名。未設定の場合はnull
        -
      • -
      - - - -
        -
      • -

        getType

        -
        public IndexType getType()
        -
        索引種別を取得します。
        -
        Returns:
        索引種別。未設定の場合はnull
        -
      • -
      - - - -
        -
      • -

        setColumn

        -
        public void setColumn(java.lang.Integer column)
        -
        索引に対応する、単一のカラムからなるカラム番号列を設定します。
        -
        Parameters:
        column - 索引名。nullの場合は未設定状態になる
        -
      • -
      - - - -
        -
      • -

        setColumnList

        -
        public void setColumnList(java.util.List<java.lang.Integer> columns)
        -
        索引に対応する任意個数のカラムのカラム番号の列を設定します。
        -
        Parameters:
        columns - カラム番号の列。長さ0は許容するが、 nullは指定できない
        -
        Throws:
        -
        java.lang.NullPointerException - columnsnullが指定された場合
        Since:
        -
        4.3
        -
      • -
      - - - -
        -
      • -

        setColumnName

        -
        public void setColumnName(java.lang.String columnName)
        -
        索引に対応する、単一のカラムからなるカラム名列を設定します。
        -
        Parameters:
        columnName - カラム名。nullの場合は未設定状態になる
        -
      • -
      - - - -
        -
      • -

        setColumnNameList

        -
        public void setColumnNameList(java.util.List<java.lang.String> columnNames)
        -
        索引に対応する任意個数のカラムのカラム名の列を設定します。
        -
        Parameters:
        columnNames - カラム名の列。長さ0は許容するが、 nullは指定できない
        -
        Throws:
        -
        java.lang.NullPointerException - columnNamesnullが指定された場合
        Since:
        -
        4.3
        -
      • -
      - - - -
        -
      • -

        setName

        -
        public void setName(java.lang.String name)
        -
        索引名を設定します。
        -
        Parameters:
        name - 索引名。nullの場合は未設定状態になる
        -
      • -
      - - - -
        -
      • -

        setType

        -
        public void setType(IndexType type)
        -
        索引種別を設定します。
        -
        Parameters:
        type - 索引種別。nullの場合は未設定状態になる
        -
      • -
      -
    • -
    -
  • -
-
-
- - - -
-
-

Enum IndexType

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • java.lang.Enum<IndexType>
    • -
    • -
        -
      • com.toshiba.mwcloud.gs.IndexType
      • -
      -
    • -
    -
  • -
-
-
    -
  • -
    -
    All Implemented Interfaces:
    -
    java.io.Serializable, java.lang.Comparable<IndexType>
    -
    -
    -
    -
    public enum IndexType
    -extends java.lang.Enum<IndexType>
    -
    Containerに設定する索引の種別を示します。
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Enum Constant Summary

      - - - - - - - - - - - - - - - - - -
      Enum Constants 
      Enum Constant and Description
      DEFAULT -
      デフォルトの索引種別を示します。
      -
      HASH -
      ハッシュ索引を示します。
      -
      SPATIAL -
      空間索引を示します。
      -
      TREE -
      ツリー索引を示します。
      -
      -
    • -
    - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - - - - - -
      Methods 
      Modifier and TypeMethod and Description
      static IndexTypevalueOf(java.lang.String name) -
      Returns the enum constant of this type with the specified name.
      -
      static IndexType[]values() -
      Returns an array containing the constants of this enum type, in -the order they are declared.
      -
      -
        -
      • - - -

        Methods inherited from class java.lang.Enum

        -clone, compareTo, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf
      • -
      -
        -
      • - - -

        Methods inherited from class java.lang.Object

        -getClass, notify, notifyAll, wait, wait, wait
      • -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Enum Constant Detail

      - - - -
        -
      • -

        DEFAULT

        -
        public static final IndexType DEFAULT
        -
        デフォルトの索引種別を示します。 -

        この索引種別は、特定の種別を明示せずに索引の操作を行う必要がある場合に用いられるものであり、実在する索引はこの種別以外の種別に分類されます。

        -
        Since:
        -
        3.5
        -
      • -
      - - - -
        -
      • -

        HASH

        -
        public static final IndexType HASH
        -
        ハッシュ索引を示します。 -

        この索引種別は、Collectionにおける次の型のカラムに対して設定できます。

        -
          -
        • STRING
        • -
        • BOOL
        • -
        • BYTE
        • -
        • SHORT
        • -
        • INTEGER
        • -
        • LONG
        • -
        • FLOAT
        • -
        • DOUBLE
        • -
        • TIMESTAMP
        • -
        -

        TimeSeriesに対して設定することはできません。

        -
      • -
      - - - -
        -
      • -

        SPATIAL

        -
        public static final IndexType SPATIAL
        -
        空間索引を示します。 -

        この索引種別は、CollectionにおけるGEOMETRY型のカラムに対してのみ使用できます。TimeSeriesに対して設定することはできません。

        -
      • -
      - - - -
        -
      • -

        TREE

        -
        public static final IndexType TREE
        -
        ツリー索引を示します。 -

        この索引種別は、時系列におけるロウキーと対応するカラムを除く任意の種別のコンテナにおける、次の型のカラムに対して使用できます。

        -
          -
        • STRING
        • -
        • BOOL
        • -
        • BYTE
        • -
        • SHORT
        • -
        • INTEGER
        • -
        • LONG
        • -
        • FLOAT
        • -
        • DOUBLE
        • -
        • TIMESTAMP
        • -
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        valueOf

        -
        public static IndexType valueOf(java.lang.String name)
        -
        Returns the enum constant of this type with the specified name. -The string must match exactly an identifier used to declare an -enum constant in this type. (Extraneous whitespace characters are -not permitted.)
        -
        Parameters:
        name - the name of the enum constant to be returned.
        -
        Returns:
        the enum constant with the specified name
        -
        Throws:
        -
        java.lang.IllegalArgumentException - if this enum type has no constant -with the specified name
        -
        java.lang.NullPointerException - if the argument is null
        -
      • -
      - - - -
        -
      • -

        values

        -
        public static IndexType[] values()
        -
        Returns an array containing the constants of this enum type, in -the order they are declared. This method may be used to iterate -over the constants as follows: -
        -for (IndexType c : IndexType.values())
        -    System.out.println(c);
        -
        -
        Returns:
        an array containing the constants of this enum type, in -the order they are declared
        -
      • -
      -
    • -
    -
  • -
-
-
- - - -
-
-

Enum InterpolationMode

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • java.lang.Enum<InterpolationMode>
    • -
    • -
        -
      • com.toshiba.mwcloud.gs.InterpolationMode
      • -
      -
    • -
    -
  • -
-
-
    -
  • -
    -
    All Implemented Interfaces:
    -
    java.io.Serializable, java.lang.Comparable<InterpolationMode>
    -
    -
    -
    -
    public enum InterpolationMode
    -extends java.lang.Enum<InterpolationMode>
    -
    ロウの補間方法の種別を表します。 -

    時系列ロウの補間機能で使用されます。

    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Enum Constant Summary

      - - - - - - - - - - - -
      Enum Constants 
      Enum Constant and Description
      EMPTY -
      空の値を補間値として用いることを示します。
      -
      LINEAR_OR_PREVIOUS -
      カラムに応じて線形補間または直前ロウの値による補間を行うことを示します。
      -
      -
    • -
    - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - - - - - -
      Methods 
      Modifier and TypeMethod and Description
      static InterpolationModevalueOf(java.lang.String name) -
      Returns the enum constant of this type with the specified name.
      -
      static InterpolationMode[]values() -
      Returns an array containing the constants of this enum type, in -the order they are declared.
      -
      -
        -
      • - - -

        Methods inherited from class java.lang.Enum

        -clone, compareTo, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf
      • -
      -
        -
      • - - -

        Methods inherited from class java.lang.Object

        -getClass, notify, notifyAll, wait, wait, wait
      • -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Enum Constant Detail

      - - - -
        -
      • -

        EMPTY

        -
        public static final InterpolationMode EMPTY
        -
        空の値を補間値として用いることを示します。 -

        ロウキーを除くすべてのロウフィールドについて、Containerにて定義されている空の値を補間値として用いることを示します。

        -
      • -
      - - - -
        -
      • -

        LINEAR_OR_PREVIOUS

        -
        public static final InterpolationMode LINEAR_OR_PREVIOUS
        -
        カラムに応じて線形補間または直前ロウの値による補間を行うことを示します。 -

        補間機能にて指定されたカラムについては、補間対象時刻の前後時刻のロウの値により線形補間を行います。対象とするカラムの型は数値型でなければなりません。

        - -

        補間機能にて特に指定されていないカラムについては、補間対象時刻と隣接する直前の時刻のロウの値を補間値として使用します。対象とするカラムの型に制限はありません。

        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        valueOf

        -
        public static InterpolationMode valueOf(java.lang.String name)
        -
        Returns the enum constant of this type with the specified name. -The string must match exactly an identifier used to declare an -enum constant in this type. (Extraneous whitespace characters are -not permitted.)
        -
        Parameters:
        name - the name of the enum constant to be returned.
        -
        Returns:
        the enum constant with the specified name
        -
        Throws:
        -
        java.lang.IllegalArgumentException - if this enum type has no constant -with the specified name
        -
        java.lang.NullPointerException - if the argument is null
        -
      • -
      - - - -
        -
      • -

        values

        -
        public static InterpolationMode[] values()
        -
        Returns an array containing the constants of this enum type, in -the order they are declared. This method may be used to iterate -over the constants as follows: -
        -for (InterpolationMode c : InterpolationMode.values())
        -    System.out.println(c);
        -
        -
        Returns:
        an array containing the constants of this enum type, in -the order they are declared
        -
      • -
      -
    • -
    -
  • -
-
-
- - - -
-
-

Annotation Type NotNull

-
-
-
-
    -
  • -
    -
    -
    @Retention(value=RUNTIME)
    -@Target(value={TYPE,FIELD,METHOD,PACKAGE})
    -public @interface NotNull
    -
    NOT NULL制約を持つカラムであることを示します。
    -
    Since:
    -
    3.5
    -
    See Also:
    Container
    -
  • -
-
-
- - - -
-
-

Annotation Type Nullable

-
-
-
-
    -
  • -
    -
    -
    @Retention(value=RUNTIME)
    -@Target(value={TYPE,FIELD,METHOD,PACKAGE})
    -public @interface Nullable
    -
    NOT NULL制約を持たないカラムであることを示します。
    -
    Since:
    -
    3.5
    -
    See Also:
    Container
    -
  • -
-
-
- - - -
-
-

Interface PartitionController

-
-
-
-
    -
  • -
    -
    All Superinterfaces:
    -
    java.lang.AutoCloseable, java.io.Closeable
    -
    -
    -
    -
    public interface PartitionController
    -extends java.io.Closeable
    -
    パーティション状態の取得や操作のためのコントローラです。 -

    パーティションとは、データを格納する論理的な領域です。 GridDBクラスタ内のデータ配置に基づいた操作を行うために使用します。

    -
    Since:
    -
    1.5
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Methods 
      Modifier and TypeMethod and Description
      voidassignPreferableHost(int partitionIndex, - java.net.InetAddress host) -
      優先的に選択されるホストのアドレスを設定します。
      -
      voidclose() -
      GridDBとの接続状態を解除し、必要に応じて関連するリソースを解放します。
      -
      java.util.List<java.net.InetAddress>getBackupHosts(int partitionIndex) -
      指定のパーティションに対応するバックアップノードのアドレス一覧を取得します。
      -
      longgetContainerCount(int partitionIndex) -
      指定のパーティションに属するコンテナの総数を取得します。
      -
      java.util.List<java.lang.String>getContainerNames(int partitionIndex, - long start, - java.lang.Long limit) -
      指定のパーティションに所属するコンテナの名前の一覧を取得します。
      -
      java.util.List<java.net.InetAddress>getHosts(int partitionIndex) -
      指定のパーティションに対応するノードのアドレス一覧を取得します。
      -
      java.net.InetAddressgetOwnerHost(int partitionIndex) -
      指定のパーティションに対応するオーナノードのアドレスを取得します。
      -
      intgetPartitionCount() -
      対象とするGridDBクラスタのパーティション数を取得します。
      -
      intgetPartitionIndexOfContainer(java.lang.String containerName) -
      指定のコンテナ名に対応するパーティションインデックスを取得します。
      -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        assignPreferableHost

        -
        void assignPreferableHost(int partitionIndex,
        -                        java.net.InetAddress host)
        -                          throws GSException
        -
        優先的に選択されるホストのアドレスを設定します。 -

        バックアップノードへの接続など、可能な接続先が複数存在する場合に、設定されたアドレスが候補に含まれていれば常に選択されるようになります。それ以外の場合は設定が無視されます。

        -
        Parameters:
        partitionIndex - パーティションインデックス。0以上パーティション数未満の値
        host - 優先的に選択されるホストのアドレス。nullの場合、設定が解除される
        -
        Throws:
        -
        GSException - 範囲外のパーティションインデックスが指定された場合
        -
        GSException - このオブジェクトまたは対応するGridStoreのクローズ後に呼び出された場合
        See Also:
        getBackupHosts(int)
        -
      • -
      - - - -
        -
      • -

        close

        -
        void close()
        -           throws GSException
        -
        GridDBとの接続状態を解除し、必要に応じて関連するリソースを解放します。
        -
        -
        Specified by:
        -
        close in interface java.lang.AutoCloseable
        -
        Specified by:
        -
        close in interface java.io.Closeable
        -
        Throws:
        -
        GSException - 現バージョンでは送出されない
        -
      • -
      - - - -
        -
      • -

        getBackupHosts

        -
        java.util.List<java.net.InetAddress> getBackupHosts(int partitionIndex)
        -                                                    throws GSException
        -
        指定のパーティションに対応するバックアップノードのアドレス一覧を取得します。 -

        バックアップノードとは、 GridStoreFactory.getGridStore(java.util.Properties)における一貫性レベルとして"EVENTUAL"を指定した場合に、優先的に選択されるノードのことです。

        - -

        一覧の順序に関しては不定です。重複するアドレスが含まれることはありません。

        - -

        返却されたリストに対して変更操作を行った場合に、 UnsupportedOperationExceptionなどの実行時例外が発生するかどうかは未定義です。

        -
        Parameters:
        partitionIndex - パーティションインデックス。0以上パーティション数未満の値
        -
        Returns:
        バックアップノードのアドレスを表すInetAddressを要素とする、List
        -
        Throws:
        -
        GSException - 範囲外のパーティションインデックスが指定された場合
        -
        GSException - この処理のタイムアウト、接続障害が発生した場合、このオブジェクトまたは対応するGridStoreのクローズ後に呼び出された場合
        -
      • -
      - - - -
        -
      • -

        getContainerCount

        -
        long getContainerCount(int partitionIndex)
        -                       throws GSException
        -
        指定のパーティションに属するコンテナの総数を取得します。 -

        コンテナ数を求める際の計算量は、コンテナ数にはおおむね依存しません。

        -
        Parameters:
        partitionIndex - パーティションインデックス。0以上パーティション数未満の値
        -
        Returns:
        コンテナ数
        -
        Throws:
        -
        GSException - 範囲外のパーティションインデックスが指定された場合
        -
        GSException - この処理のタイムアウト、接続障害が発生した場合、このオブジェクトまたは対応するGridStoreのクローズ後に呼び出された場合
        See Also:
        getPartitionIndexOfContainer(String)
        -
      • -
      - - - -
        -
      • -

        getContainerNames

        -
        java.util.List<java.lang.String> getContainerNames(int partitionIndex,
        -                                                 long start,
        -                                                 java.lang.Long limit)
        -                                                   throws GSException
        -
        指定のパーティションに所属するコンテナの名前の一覧を取得します。 -

        指定のパーティションについてコンテナの新規作成・構成変更・削除が行われたとしても、該当コンテナを除くとその前後で一覧の取得結果の順序が変わることはありません。それ以外の一覧の順序に関しては不定です。重複する名前が含まれることはありません。

        - -

        取得件数の上限が指定された場合、上限を超える場合、後方のものから切り捨てられます。指定条件に該当するものが存在しない場合、空のリストが返却されます。

        - -

        返却されたリストに対して変更操作を行った場合に、 UnsupportedOperationExceptionなどの実行時例外が発生するかどうかは未定義です。

        -
        Parameters:
        partitionIndex - パーティションインデックス。0以上パーティション数未満の値
        start - 取得範囲の開始位置。0以上の値
        limit - 取得件数の上限。nullの場合、上限なしとみなされる
        -
        Returns:
        コンテナの名前を要素とするList
        -
        Throws:
        -
        GSException - 範囲外のパーティションインデックスが指定された場合
        -
        GSException - この処理のタイムアウト、接続障害が発生した場合、このオブジェクトまたは対応するGridStoreのクローズ後に呼び出された場合
        -
      • -
      - - - -
        -
      • -

        getHosts

        -
        java.util.List<java.net.InetAddress> getHosts(int partitionIndex)
        -                                              throws GSException
        -
        指定のパーティションに対応するノードのアドレス一覧を取得します。 -

        一覧の順序に関しては不定です。重複するアドレスが含まれることはありません。

        - -

        返却されたリストに対して変更操作を行った場合に、 UnsupportedOperationExceptionなどの実行時例外が発生するかどうかは未定義です。

        -
        Parameters:
        partitionIndex - パーティションインデックス。0以上パーティション数未満の値
        -
        Returns:
        ノードのアドレスを表すInetAddressを要素とする、List
        -
        Throws:
        -
        GSException - 範囲外のパーティションインデックスが指定された場合
        -
        GSException - この処理のタイムアウト、接続障害が発生した場合、このオブジェクトまたは対応するGridStoreのクローズ後に呼び出された場合
        -
      • -
      - - - -
        -
      • -

        getOwnerHost

        -
        java.net.InetAddress getOwnerHost(int partitionIndex)
        -                                  throws GSException
        -
        指定のパーティションに対応するオーナノードのアドレスを取得します。 -

        オーナノードとは、 GridStoreFactory.getGridStore(java.util.Properties)における一貫性レベルとして"IMMEDIATE"を指定した場合に、常に選択されるノードのことです。

        -
        Parameters:
        partitionIndex - パーティションインデックス。0以上パーティション数未満の値
        -
        Returns:
        オーナノードのアドレスを表すInetAddress
        -
        Throws:
        -
        GSException - 範囲外のパーティションインデックスが指定された場合
        -
        GSException - この処理のタイムアウト、接続障害が発生した場合、このオブジェクトまたは対応するGridStoreのクローズ後に呼び出された場合
        -
      • -
      - - - -
        -
      • -

        getPartitionCount

        -
        int getPartitionCount()
        -                      throws GSException
        -
        対象とするGridDBクラスタのパーティション数を取得します。 -

        対象とするGridDBクラスタにおけるパーティション数設定の値を取得します。一度取得した結果はキャッシュされ、次にクラスタ障害・クラスタノード障害を検知するまで再びGridDBクラスタに問い合わせることはありません。

        -
        Returns:
        パーティション数
        -
        Throws:
        -
        GSException - この処理のタイムアウト、接続障害が発生した場合、このオブジェクトまたは対応するGridStoreのクローズ後に呼び出された場合
        -
      • -
      - - - -
        -
      • -

        getPartitionIndexOfContainer

        -
        int getPartitionIndexOfContainer(java.lang.String containerName)
        -                                 throws GSException
        -
        指定のコンテナ名に対応するパーティションインデックスを取得します。 -

        一度GridDBクラスタが構築されると、コンテナの所属先のパーティションが変化することはなく、パーティションインデックスも一定となります。指定の名前に対応するコンテナが存在するかどうかは、結果に依存しません。

        - -

        パーティションインデックスの算出に必要とする情報はキャッシュされ、次にクラスタ障害・クラスタノード障害を検知するまで再びGridDBクラスタに問い合わせることはありません。

        -
        Parameters:
        containerName - コンテナ名。nullは指定できない
        -
        Returns:
        指定のコンテナ名に対応するパーティションインデックス
        -
        Throws:
        -
        GSException - コンテナ名として許可されない文字列が指定された場合
        -
        GSException - この処理のタイムアウト、接続障害が発生した場合、このオブジェクトまたは対応するGridStoreのクローズ後に呼び出された場合
        -
        java.lang.NullPointerException - 引数にnullが指定された場合
        -
      • -
      -
    • -
    -
  • -
-
-
- - - -
-
-

Interface Query<R>

-
-
-
-
    -
  • -
    Type Parameters:
    R - 期待される取得結果のRowSet要素の型
    -
    -
    All Superinterfaces:
    -
    java.lang.AutoCloseable, java.io.Closeable
    -
    -
    -
    -
    public interface Query<R>
    -extends java.io.Closeable
    -
    特定のContainerに対応付けられたクエリを保持し、結果取得方法の設定ならびに実行・結果取得を行う機能を持ちます。
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Methods 
      Modifier and TypeMethod and Description
      voidclose() -
      関連するリソースを適宜解放します。
      -
      RowSet<R>fetch() -
      このクエリを実行し、実行結果に対応するロウ集合を取得します。
      -
      RowSet<R>fetch(boolean forUpdate) -
      オプションを指定してこのクエリを実行し、実行結果に対応するロウ集合を取得します。
      -
      RowSet<R>getRowSet() -
      直近に実行した結果のRowSetを取得します。
      -
      voidsetFetchOption(FetchOption option, - java.lang.Object value) -
      結果取得に関するオプションを設定します。
      -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        close

        -
        void close()
        -           throws GSException
        -
        関連するリソースを適宜解放します。
        -
        -
        Specified by:
        -
        close in interface java.lang.AutoCloseable
        -
        Specified by:
        -
        close in interface java.io.Closeable
        -
        Throws:
        -
        GSException - 現バージョンでは送出されない
        See Also:
        Closeable.close()
        -
      • -
      - - - -
        -
      • -

        fetch

        -
        RowSet<R> fetch()
        -                throws GSException
        -
        このクエリを実行し、実行結果に対応するロウ集合を取得します。 -

        更新用ロックを要求せずにfetch(boolean)を呼び出した場合と同様です。

        -
        Throws:
        -
        GSException - 正しくないパラメータ・構文・命令を含むクエリを実行しようとした場合。たとえば、TQLでは、関数の引数に対応しない型のカラムを指定した場合。具体的な制約は、このクエリを作成する機能の各種定義を参照のこと
        -
        GSException - TQLを実行した際、実行結果が期待する結果 RowSetの各要素の型と合致しない場合
        -
        GSException - この処理または関連するトランザクションのタイムアウト、対応するコンテナの削除もしくはスキーマ変更、接続障害が発生した場合
        -
        GSException - このオブジェクトまたは対応するContainerのクローズ後に呼び出された場合
        -
        java.lang.NullPointerException - このクエリを作成する際に与えられたパラメータの中に、許容されないnullが含まれていた場合。GridDB上で実行される TQL文の評価処理の結果として送出されることはない
        See Also:
        fetch(boolean)
        -
      • -
      - - - -
        -
      • -

        fetch

        -
        RowSet<R> fetch(boolean forUpdate)
        -                throws GSException
        -
        オプションを指定してこのクエリを実行し、実行結果に対応するロウ集合を取得します。 -

        forUpdatetrueが指定された場合、取得対象のロウすべてをロックします。ロックすると、対応するトランザクションが有効である間、他のトランザクションからの対象ロウに対する変更操作が阻止されます。対応するコンテナの自動コミットモードが無効の場合のみ、指定できます。

        - -

        新たなロウ集合を取得すると、このクエリについて前回実行した結果の RowSetはクローズされます。

        - -

        一度に大量のロウを取得しようとした場合、GridDBノードが管理する通信バッファのサイズの上限に到達し、失敗することがあります。上限サイズについては、GridDBテクニカルリファレンスを参照してください。

        -
        Throws:
        -
        GSException - 対応するコレクションの自動コミットモード有効であるにもかかわらず、forUpdatetrueが指定された場合
        -
        GSException - ロックできないクエリであるにもかかわらず、 forUpdatetrueが指定された場合。具体的なロックの可否は、このクエリを作成する機能の各種定義を参照のこと
        -
        GSException - 正しくないパラメータ・構文・命令・オプション設定を含むクエリを実行しようとした場合。たとえば、TQLでは、関数の引数に対応しない型のカラムを指定した場合。具体的な制約は、このクエリを作成する機能の各種定義を参照のこと
        -
        GSException - TQLの実行時、求めるRowSetの要素の型と取得結果の型が一致しない場合
        -
        GSException - この処理または関連するトランザクションのタイムアウト、対応するコンテナの削除もしくはスキーマ変更、接続障害が発生した場合
        -
        GSException - このオブジェクトまたは対応するContainerのクローズ後に呼び出された場合
        -
        java.lang.NullPointerException - このクエリを作成する際に与えられたパラメータの中に、許容されないnullが含まれていた場合
        -
      • -
      - - - -
        -
      • -

        getRowSet

        -
        RowSet<R> getRowSet()
        -                    throws GSException
        -
        直近に実行した結果のRowSetを取得します。 -

        一度取得すると、以降新たにこのクエリを実行するまでnullが返却されるようになります。

        - -

        FetchOption.PARTIAL_EXECUTIONが有効に設定されていた場合、クエリ実行処理の続きを行う場合があります。

        -
        Returns:
        直近に実行した結果のRowSet。取得済みの場合、もしくは、一度もクエリを実行したことのない場合はnull
        -
        Throws:
        -
        GSException - この処理または関連するトランザクションのタイムアウト、対応するコンテナの削除もしくはスキーマ変更、接続障害が発生した場合
        -
        GSException - このオブジェクトまたは対応するContainerのクローズ後に呼び出された場合
        Since:
        -
        1.5
        -
      • -
      - - - -
        -
      • -

        setFetchOption

        -
        void setFetchOption(FetchOption option,
        -                  java.lang.Object value)
        -                    throws GSException
        -
        結果取得に関するオプションを設定します。 -

        設定可能なオプション項目と値の定義については、FetchOptionを参照してください。

        -
        Parameters:
        option - オプション項目
        value - オプションの値
        -
        Throws:
        -
        GSException - オプションの値がオプション項目と対応しない場合
        -
        GSException - このオブジェクトまたは対応するContainerのクローズ後に呼び出された場合
        -
        java.lang.NullPointerException - 1つ以上の引数にnullが指定された場合
        See Also:
        FetchOption
        -
      • -
      -
    • -
    -
  • -
-
-
- - - -
-
-

Class QueryAnalysisEntry

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • com.toshiba.mwcloud.gs.QueryAnalysisEntry
    • -
    -
  • -
-
-
    -
  • -
    -
    -
    public class QueryAnalysisEntry
    -extends java.lang.Object
    -
    クエリプランならびにクエリ処理解析結果を構成する一連の情報の一つを示します。 -

    TQLのEXPLAIN文ならびEXPLAIN ANALYZE文の実行結果を保持するために使用します。1つの実行結果は、このエントリの列により表現されます。

    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Constructor Summary

      - - - - - - - - -
      Constructors 
      Constructor and Description
      QueryAnalysisEntry() 
      -
    • -
    - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Methods 
      Modifier and TypeMethod and Description
      booleanequals(java.lang.Object obj) -
      このオブジェクトと他のオブジェクトが等しいかどうかを示します。
      -
      intgetDepth() -
      他のエントリとの関係を表すための、深さを取得します。
      -
      intgetId() -
      一連のエントリ列における、このエントリの位置を示すIDを取得します。
      -
      java.lang.StringgetStatement() -
      このエントリが示す情報に対応するTQL文の一部を取得します。
      -
      java.lang.StringgetType() -
      このエントリが示す情報の種別を取得します。
      -
      java.lang.StringgetValue() -
      このエントリが示す情報に対応付けられた値の文字列表現を取得します。
      -
      java.lang.StringgetValueType() -
      このエントリが示す情報に対応付けられた値の型を取得します。
      -
      inthashCode() -
      このオブジェクトのハッシュコード値を返します。
      -
      voidsetDepth(int depth) -
      他のエントリとの関係を表すための、深さを設定します。
      -
      voidsetId(int id) -
      一連のエントリ列における、このエントリの位置を示すIDを設定します。
      -
      voidsetStatement(java.lang.String statement) -
      このエントリが示す情報に対応するTQL文の一部を設定します。
      -
      voidsetType(java.lang.String type) -
      このエントリが示す情報の種別を設定します。
      -
      voidsetValue(java.lang.String value) -
      このエントリが示す情報に対応付けられた値の文字列表現を設定します。
      -
      voidsetValueType(java.lang.String valueType) -
      このエントリが示す情報に対応付けられた値の型を設定します。
      -
      -
        -
      • - - -

        Methods inherited from class java.lang.Object

        -clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
      • -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        QueryAnalysisEntry

        -
        public QueryAnalysisEntry()
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        equals

        -
        public boolean equals(java.lang.Object obj)
        -
        このオブジェクトと他のオブジェクトが等しいかどうかを示します。 -

        getId()getDepth()などにより得られる各値がすべて等価である場合のみ、指定のオブジェクトと等価であるとみなされます。

        - -

        このメソッドは、Object.hashCode()にて定義されている汎用規約に準拠します。したがって、等価なオブジェクトは等価なハッシュコードを保持します。

        -
        -
        Overrides:
        -
        equals in class java.lang.Object
        -
        Parameters:
        obj - 比較対象の参照オブジェクトまたはnull
        -
        Returns:
        このオブジェクトがobj引数と同じである場合はtrue、それ以外の場合はfalse
        See Also:
        hashCode()
        -
      • -
      - - - -
        -
      • -

        getDepth

        -
        public int getDepth()
        -
        他のエントリとの関係を表すための、深さを取得します。 -

        このエントリより小さな値のIDを順にたどり、このエントリの深さより1だけ浅いエントリが存在した場合、このエントリは、該当するエントリの内容をより詳しく説明するためのものであることを意味します。

        -
      • -
      - - - -
        -
      • -

        getId

        -
        public int getId()
        -
        一連のエントリ列における、このエントリの位置を示すIDを取得します。 -

        TQLを実行した結果を受け取る場合、IDは1から順に割り当てられます。

        -
      • -
      - - - -
        -
      • -

        getStatement

        -
        public java.lang.String getStatement()
        -
        このエントリが示す情報に対応するTQL文の一部を取得します。 -

        対応関係を持たない場合は空文字列を取得します。

        -
      • -
      - - - -
        -
      • -

        getType

        -
        public java.lang.String getType()
        -
        このエントリが示す情報の種別を取得します。 -

        実行時間といった解析結果の種別、クエリプランの構成要素の種別などを表します。

        -
      • -
      - - - -
        -
      • -

        getValue

        -
        public java.lang.String getValue()
        -
        このエントリが示す情報に対応付けられた値の文字列表現を取得します。 -

        値が対応づけられていない場合は空文字列を取得します。

        -
        See Also:
        getValueType()
        -
      • -
      - - - -
        -
      • -

        getValueType

        -
        public java.lang.String getValueType()
        -
        このエントリが示す情報に対応付けられた値の型を取得します。 -

        実行時間といった解析結果などに対応する値の型を取得します。型の名称は、TQLで定義された基本型のうち次のものです。

        -
          -
        • STRING
        • -
        • BOOL
        • -
        • BYTE
        • -
        • SHORT
        • -
        • INTEGER
        • -
        • LONG
        • -
        • FLOAT
        • -
        • DOUBLE
        • -
        - -

        値が対応づけられていない場合は空文字列を取得します。

        -
      • -
      - - - -
        -
      • -

        hashCode

        -
        public int hashCode()
        -
        このオブジェクトのハッシュコード値を返します。 -

        このメソッドは、Object.hashCode()にて定義されている汎用規約に準拠します。したがって、等価なオブジェクトのハッシュコード値は等価です。

        -
        -
        Overrides:
        -
        hashCode in class java.lang.Object
        -
        Returns:
        このオブジェクトのハッシュコード値
        See Also:
        equals(Object)
        -
      • -
      - - - -
        -
      • -

        setDepth

        -
        public void setDepth(int depth)
        -
        他のエントリとの関係を表すための、深さを設定します。
        -
        See Also:
        getDepth()
        -
      • -
      - - - -
        -
      • -

        setId

        -
        public void setId(int id)
        -
        一連のエントリ列における、このエントリの位置を示すIDを設定します。
        -
        See Also:
        getId()
        -
      • -
      - - - -
        -
      • -

        setStatement

        -
        public void setStatement(java.lang.String statement)
        -
        このエントリが示す情報に対応するTQL文の一部を設定します。
        -
        Parameters:
        statement - TQL文の一部またはnull
        See Also:
        getStatement()
        -
      • -
      - - - -
        -
      • -

        setType

        -
        public void setType(java.lang.String type)
        -
        このエントリが示す情報の種別を設定します。
        -
        Parameters:
        type - 種別またはnull
        See Also:
        getType()
        -
      • -
      - - - -
        -
      • -

        setValue

        -
        public void setValue(java.lang.String value)
        -
        このエントリが示す情報に対応付けられた値の文字列表現を設定します。
        -
        Parameters:
        value - 値の文字列表現またはnull
        See Also:
        getValue()
        -
      • -
      - - - -
        -
      • -

        setValueType

        -
        public void setValueType(java.lang.String valueType)
        -
        このエントリが示す情報に対応付けられた値の型を設定します。
        -
        Parameters:
        valueType - 値の型またはnull
        See Also:
        getValueType()
        -
      • -
      -
    • -
    -
  • -
-
-
- - - -
-
-

Enum QueryOrder

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • java.lang.Enum<QueryOrder>
    • -
    • -
        -
      • com.toshiba.mwcloud.gs.QueryOrder
      • -
      -
    • -
    -
  • -
-
-
    -
  • -
    -
    All Implemented Interfaces:
    -
    java.io.Serializable, java.lang.Comparable<QueryOrder>
    -
    -
    -
    -
    public enum QueryOrder
    -extends java.lang.Enum<QueryOrder>
    -
    クエリにおける要求ロウ順序を表します。 -

    各種クエリ機能別に定義される判定対象を基準として、順序指定を行うために使用します。具体的な判定対象は、個別の機能によって異なります。

    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Enum Constant Summary

      - - - - - - - - - - - -
      Enum Constants 
      Enum Constant and Description
      ASCENDING -
      要求ロウ順序が昇順であることを表します。
      -
      DESCENDING -
      要求ロウ順序が降順であることを表します。
      -
      -
    • -
    - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - - - - - -
      Methods 
      Modifier and TypeMethod and Description
      static QueryOrdervalueOf(java.lang.String name) -
      Returns the enum constant of this type with the specified name.
      -
      static QueryOrder[]values() -
      Returns an array containing the constants of this enum type, in -the order they are declared.
      -
      -
        -
      • - - -

        Methods inherited from class java.lang.Enum

        -clone, compareTo, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf
      • -
      -
        -
      • - - -

        Methods inherited from class java.lang.Object

        -getClass, notify, notifyAll, wait, wait, wait
      • -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Enum Constant Detail

      - - - -
        -
      • -

        ASCENDING

        -
        public static final QueryOrder ASCENDING
        -
        要求ロウ順序が昇順であることを表します。
        -
      • -
      - - - -
        -
      • -

        DESCENDING

        -
        public static final QueryOrder DESCENDING
        -
        要求ロウ順序が降順であることを表します。
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        valueOf

        -
        public static QueryOrder valueOf(java.lang.String name)
        -
        Returns the enum constant of this type with the specified name. -The string must match exactly an identifier used to declare an -enum constant in this type. (Extraneous whitespace characters are -not permitted.)
        -
        Parameters:
        name - the name of the enum constant to be returned.
        -
        Returns:
        the enum constant with the specified name
        -
        Throws:
        -
        java.lang.IllegalArgumentException - if this enum type has no constant -with the specified name
        -
        java.lang.NullPointerException - if the argument is null
        -
      • -
      - - - -
        -
      • -

        values

        -
        public static QueryOrder[] values()
        -
        Returns an array containing the constants of this enum type, in -the order they are declared. This method may be used to iterate -over the constants as follows: -
        -for (QueryOrder c : QueryOrder.values())
        -    System.out.println(c);
        -
        -
        Returns:
        an array containing the constants of this enum type, in -the order they are declared
        -
      • -
      -
    • -
    -
  • -
-
-
- - - -
-
-

Interface Row.Key

-
-
-
-
    -
  • -
    -
    All Superinterfaces:
    -
    Row
    -
    -
    -
    Enclosing interface:
    -
    Row
    -
    -
    -
    -
    public static interface Row.Key
    -extends Row
    -
    ロウキーに関するカラムのみから構成されるRowの一種です。 -

    Row.getSchema()より返却されるContainerInfoに含まれるカラム情報は、ロウキーに関するカラムの情報のみとなります。

    -
    Since:
    -
    4.3
    -
  • -
-
-
- -
-
- - - -
-
-

Interface Row.WithKey<K>

-
-
-
-
    -
  • -
    -
    Enclosing interface:
    -
    Row
    -
    -
    -
    -
    public static interface Row.WithKey<K>
    -
    マッピングに用いるロウオブジェクトの型について、常に指定のロウキー型と対応付くことを表します。 -

    このインタフェースを実装するロウオブジェクトの型を指定して、 Container.BindType.of(Class)を通じ型情報を求めると、 Containerインスタンスを生成する際にロウキーの型を明示する必要がなくなります。

    -
    Since:
    -
    4.3
    -
  • -
-
-
- - - -
-
-

Interface Row

-
-
-
-
    -
  • -
    -
    All Known Subinterfaces:
    -
    Row.Key
    -
    -
    -
    -
    public interface Row
    -
    任意のスキーマについて汎用的にフィールド操作できるロウです。
    -
    Since:
    -
    1.5
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Nested Class Summary

      - - - - - - - - - - - - - - - - - - -
      Nested Classes 
      Modifier and TypeInterface and Description
      static interface Row.Key -
      ロウキーに関するカラムのみから構成されるRowの一種です。
      -
      static class com.toshiba.mwcloud.gs.Row.KeyCategory -
      Deprecated. 
      -
      static interface Row.WithKey<K> -
      マッピングに用いるロウオブジェクトの型について、常に指定のロウキー型と対応付くことを表します。
      -
      -
    • -
    - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Methods 
      Modifier and TypeMethod and Description
      Row.KeycreateKey() -
      ロウキーを構成するカラムのみを持ち、それらのカラムについて同一のフィールド値からなる新たなRow.Keyインスタンスを作成します。
      -
      RowcreateRow() -
      同一のフィールド値からなる新たなRowインスタンスを作成します。
      -
      java.sql.BlobgetBlob(int column) -
      指定のBLOB型フィールドの値を取得します。
      -
      booleangetBool(int column) -
      指定のBOOL型フィールドの値を取得します。
      -
      boolean[]getBoolArray(int column) -
      指定のBOOL型配列フィールドの値を取得します。
      -
      bytegetByte(int column) -
      指定のBYTE型フィールドの値を取得します。
      -
      byte[]getByteArray(int column) -
      指定のBYTE型配列フィールドの値を取得します。
      -
      doublegetDouble(int column) -
      指定のDOUBLE型フィールドの値を取得します。
      -
      double[]getDoubleArray(int column) -
      指定のDOUBLE型配列フィールドの値を取得します。
      -
      floatgetFloat(int column) -
      指定のFLOAT型フィールドの値を取得します。
      -
      float[]getFloatArray(int column) -
      指定のFLOAT型配列フィールドの値を取得します。
      -
      GeometrygetGeometry(int column) -
      指定のGEOMETRY型フィールドの値を取得します。
      -
      intgetInteger(int column) -
      指定のINTEGER型フィールドの値を取得します。
      -
      int[]getIntegerArray(int column) -
      指定のINTEGER型配列フィールドの値を取得します。
      -
      longgetLong(int column) -
      指定のLONG型フィールドの値を取得します。
      -
      long[]getLongArray(int column) -
      指定のLONG型配列フィールドの値を取得します。
      -
      ContainerInfogetSchema() -
      このロウに対応するスキーマを取得します。
      -
      shortgetShort(int column) -
      指定のSHORT型フィールドの値を取得します。
      -
      short[]getShortArray(int column) -
      指定のSHORT型配列フィールドの値を取得します。
      -
      java.lang.StringgetString(int column) -
      指定のSTRING型フィールドの値を取得します。
      -
      java.lang.String[]getStringArray(int column) -
      指定のSTRING型配列フィールドの値を取得します。
      -
      java.util.DategetTimestamp(int column) -
      指定のTIMESTAMP型フィールドの値を取得します。
      -
      java.util.Date[]getTimestampArray(int column) -
      指定のTIMESTAMP型配列フィールドの値を取得します。
      -
      java.lang.ObjectgetValue(int column) -
      指定のフィールドの値を取得します。
      -
      booleanisNull(int column) -
      指定のフィールドにNULLが設定されているかどうかを返します。
      -
      voidsetBlob(int column, - java.sql.Blob fieldValue) -
      指定のBLOB型フィールドに値を設定します。
      -
      voidsetBool(int column, - boolean fieldValue) -
      指定のBOOL型フィールドに値を設定します。
      -
      voidsetBoolArray(int column, - boolean[] fieldValue) -
      指定のBOOL型配列フィールドに値を設定します。
      -
      voidsetByte(int column, - byte fieldValue) -
      指定のBYTE型フィールドに値を設定します。
      -
      voidsetByteArray(int column, - byte[] fieldValue) -
      指定のBYTE型配列フィールドに値を設定します。
      -
      voidsetDouble(int column, - double fieldValue) -
      指定のDOUBLE型フィールドに値を設定します。
      -
      voidsetDoubleArray(int column, - double[] fieldValue) -
      指定のDOUBLE型配列フィールドに値を設定します。
      -
      voidsetFloat(int column, - float fieldValue) -
      指定のFLOAT型フィールドに値を設定します。
      -
      voidsetFloatArray(int column, - float[] fieldValue) -
      指定のFLOAT型配列フィールドに値を設定します。
      -
      voidsetGeometry(int column, - Geometry fieldValue) -
      指定のGEOMETRY型フィールドに値を設定します。
      -
      voidsetInteger(int column, - int fieldValue) -
      指定のINTEGER型フィールドに値を設定します。
      -
      voidsetIntegerArray(int column, - int[] fieldValue) -
      指定のINTEGER型配列フィールドに値を設定します。
      -
      voidsetLong(int column, - long fieldValue) -
      指定のLONG型フィールドに値を設定します。
      -
      voidsetLongArray(int column, - long[] fieldValue) -
      指定のLONG型配列フィールドに値を設定します。
      -
      voidsetNull(int column) -
      指定のフィールドにNULLを設定します。
      -
      voidsetShort(int column, - short fieldValue) -
      指定のSHORT型フィールドに値を設定します。
      -
      voidsetShortArray(int column, - short[] fieldValue) -
      指定のSHORT型配列フィールドに値を設定します。
      -
      voidsetString(int column, - java.lang.String fieldValue) -
      指定のSTRING型フィールドに値を設定します。
      -
      voidsetStringArray(int column, - java.lang.String[] fieldValue) -
      指定のSTRING型配列フィールドに値を設定します。
      -
      voidsetTimestamp(int column, - java.util.Date fieldValue) -
      指定のTIMESTAMP型フィールドに値を設定します。
      -
      voidsetTimestampArray(int column, - java.util.Date[] fieldValue) -
      指定のTIMESTAMP型配列フィールドに値を設定します。
      -
      voidsetValue(int column, - java.lang.Object fieldValue) -
      指定のフィールドに値を設定します。
      -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        createKey

        -
        Row.Key createKey()
        -                  throws GSException
        -
        ロウキーを構成するカラムのみを持ち、それらのカラムについて同一のフィールド値からなる新たなRow.Keyインスタンスを作成します。
        -
        Returns:
        作成されたRow.Key
        -
        Throws:
        -
        GSException - ロウキーを持たない場合
        Since:
        -
        4.3
        -
      • -
      - - - -
        -
      • -

        createRow

        -
        Row createRow()
        -              throws GSException
        -
        同一のフィールド値からなる新たなRowインスタンスを作成します。
        -
        Returns:
        作成されたRow
        -
        Throws:
        -
        GSException - 現バージョンでは発生しない
        Since:
        -
        4.3
        -
      • -
      - - - -
        -
      • -

        getBlob

        -
        java.sql.Blob getBlob(int column)
        -                      throws GSException
        -
        指定のBLOB型フィールドの値を取得します。 -

        返却されたオブジェクトの内容を呼び出し後に変更したとしても、このオブジェクトの内容は変化しません。また、このオブジェクトに対する操作により、返却されたオブジェクトの内容が変化することはありません。

        -
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        -
        Returns:
        対象フィールドの値。NULLが設定されている場合はnull
        -
        Throws:
        -
        GSException - 範囲外のカラム番号が指定された場合
        -
        GSException - 指定のカラム番号の型と一致しない場合
        -
      • -
      - - - -
        -
      • -

        getBool

        -
        boolean getBool(int column)
        -                throws GSException
        -
        指定のBOOL型フィールドの値を取得します。
        -
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        -
        Returns:
        対象フィールドの値。NULLが設定されている場合は空の値
        -
        Throws:
        -
        GSException - 範囲外のカラム番号が指定された場合
        -
        GSException - 指定のカラム番号の型と一致しない場合
        -
      • -
      - - - -
        -
      • -

        getBoolArray

        -
        boolean[] getBoolArray(int column)
        -                       throws GSException
        -
        指定のBOOL型配列フィールドの値を取得します。 -

        返却されたオブジェクトの内容を呼び出し後に変更したとしても、このオブジェクトの内容は変化しません。また、このオブジェクトに対する操作により、返却されたオブジェクトの内容が変化することはありません。

        -
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        -
        Returns:
        対象フィールドの値。NULLが設定されている場合はnull
        -
        Throws:
        -
        GSException - 範囲外のカラム番号が指定された場合
        -
        GSException - 指定のカラム番号の型と一致しない場合
        -
      • -
      - - - -
        -
      • -

        getByte

        -
        byte getByte(int column)
        -             throws GSException
        -
        指定のBYTE型フィールドの値を取得します。
        -
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        -
        Returns:
        対象フィールドの値。NULLが設定されている場合は空の値
        -
        Throws:
        -
        GSException - 範囲外のカラム番号が指定された場合
        -
        GSException - 指定のカラム番号の型と一致しない場合
        -
      • -
      - - - -
        -
      • -

        getByteArray

        -
        byte[] getByteArray(int column)
        -                    throws GSException
        -
        指定のBYTE型配列フィールドの値を取得します。 -

        返却されたオブジェクトの内容を呼び出し後に変更したとしても、このオブジェクトの内容は変化しません。また、このオブジェクトに対する操作により、返却されたオブジェクトの内容が変化することはありません。

        -
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        -
        Returns:
        対象フィールドの値。NULLが設定されている場合はnull
        -
        Throws:
        -
        GSException - 範囲外のカラム番号が指定された場合
        -
        GSException - 指定のカラム番号の型と一致しない場合
        -
      • -
      - - - -
        -
      • -

        getDouble

        -
        double getDouble(int column)
        -                 throws GSException
        -
        指定のDOUBLE型フィールドの値を取得します。
        -
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        -
        Returns:
        対象フィールドの値。NULLが設定されている場合は空の値
        -
        Throws:
        -
        GSException - 範囲外のカラム番号が指定された場合
        -
        GSException - 指定のカラム番号の型と一致しない場合
        -
      • -
      - - - -
        -
      • -

        getDoubleArray

        -
        double[] getDoubleArray(int column)
        -                        throws GSException
        -
        指定のDOUBLE型配列フィールドの値を取得します。 -

        返却されたオブジェクトの内容を呼び出し後に変更したとしても、このオブジェクトの内容は変化しません。また、このオブジェクトに対する操作により、返却されたオブジェクトの内容が変化することはありません。

        -
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        -
        Returns:
        対象フィールドの値。NULLが設定されている場合はnull
        -
        Throws:
        -
        GSException - 範囲外のカラム番号が指定された場合
        -
        GSException - 指定のカラム番号の型と一致しない場合
        -
      • -
      - - - -
        -
      • -

        getFloat

        -
        float getFloat(int column)
        -               throws GSException
        -
        指定のFLOAT型フィールドの値を取得します。
        -
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        -
        Returns:
        対象フィールドの値。NULLが設定されている場合は空の値
        -
        Throws:
        -
        GSException - 範囲外のカラム番号が指定された場合
        -
        GSException - 指定のカラム番号の型と一致しない場合
        -
      • -
      - - - -
        -
      • -

        getFloatArray

        -
        float[] getFloatArray(int column)
        -                      throws GSException
        -
        指定のFLOAT型配列フィールドの値を取得します。 -

        返却されたオブジェクトの内容を呼び出し後に変更したとしても、このオブジェクトの内容は変化しません。また、このオブジェクトに対する操作により、返却されたオブジェクトの内容が変化することはありません。

        -
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        -
        Returns:
        対象フィールドの値。NULLが設定されている場合はnull
        -
        Throws:
        -
        GSException - 範囲外のカラム番号が指定された場合
        -
        GSException - 指定のカラム番号の型と一致しない場合
        -
      • -
      - - - -
        -
      • -

        getGeometry

        -
        Geometry getGeometry(int column)
        -                     throws GSException
        -
        指定のGEOMETRY型フィールドの値を取得します。
        -
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        -
        Returns:
        対象フィールドの値。NULLが設定されている場合はnull
        -
        Throws:
        -
        GSException - 範囲外のカラム番号が指定された場合
        -
        GSException - 指定のカラム番号の型と一致しない場合
        -
      • -
      - - - -
        -
      • -

        getInteger

        -
        int getInteger(int column)
        -               throws GSException
        -
        指定のINTEGER型フィールドの値を取得します。
        -
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        -
        Returns:
        対象フィールドの値。NULLが設定されている場合は空の値
        -
        Throws:
        -
        GSException - 範囲外のカラム番号が指定された場合
        -
        GSException - 指定のカラム番号の型と一致しない場合
        -
      • -
      - - - -
        -
      • -

        getIntegerArray

        -
        int[] getIntegerArray(int column)
        -                      throws GSException
        -
        指定のINTEGER型配列フィールドの値を取得します。 -

        返却されたオブジェクトの内容を呼び出し後に変更したとしても、このオブジェクトの内容は変化しません。また、このオブジェクトに対する操作により、返却されたオブジェクトの内容が変化することはありません。

        -
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        -
        Returns:
        対象フィールドの値。NULLが設定されている場合はnull
        -
        Throws:
        -
        GSException - 範囲外のカラム番号が指定された場合
        -
        GSException - 指定のカラム番号の型と一致しない場合
        -
      • -
      - - - -
        -
      • -

        getLong

        -
        long getLong(int column)
        -             throws GSException
        -
        指定のLONG型フィールドの値を取得します。
        -
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        -
        Returns:
        対象フィールドの値。NULLが設定されている場合は空の値
        -
        Throws:
        -
        GSException - 範囲外のカラム番号が指定された場合
        -
        GSException - 指定のカラム番号の型と一致しない場合
        -
      • -
      - - - -
        -
      • -

        getLongArray

        -
        long[] getLongArray(int column)
        -                    throws GSException
        -
        指定のLONG型配列フィールドの値を取得します。 -

        返却されたオブジェクトの内容を呼び出し後に変更したとしても、このオブジェクトの内容は変化しません。また、このオブジェクトに対する操作により、返却されたオブジェクトの内容が変化することはありません。

        -
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        -
        Returns:
        対象フィールドの値。NULLが設定されている場合はnull
        -
        Throws:
        -
        GSException - 範囲外のカラム番号が指定された場合
        -
        GSException - 指定のカラム番号の型と一致しない場合
        -
      • -
      - - - -
        -
      • -

        getSchema

        -
        ContainerInfo getSchema()
        -                        throws GSException
        -
        このロウに対応するスキーマを取得します。 -

        ロウキーの有無を含むカラムレイアウトにする情報のみが設定された ContainerInfoが求まります。コンテナ名、コンテナ種別、索引設定、時系列構成オプションなどその他のコンテナ情報は含まれません。

        -
        Returns:
        スキーマに関するコンテナ情報のみを持つContainerInfo
        -
        Throws:
        -
        GSException - 現バージョンでは送出されない
        -
      • -
      - - - -
        -
      • -

        getShort

        -
        short getShort(int column)
        -               throws GSException
        -
        指定のSHORT型フィールドの値を取得します。
        -
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        -
        Returns:
        対象フィールドの値。NULLが設定されている場合は空の値
        -
        Throws:
        -
        GSException - 範囲外のカラム番号が指定された場合
        -
        GSException - 指定のカラム番号の型と一致しない場合
        -
      • -
      - - - -
        -
      • -

        getShortArray

        -
        short[] getShortArray(int column)
        -                      throws GSException
        -
        指定のSHORT型配列フィールドの値を取得します。 -

        返却されたオブジェクトの内容を呼び出し後に変更したとしても、このオブジェクトの内容は変化しません。また、このオブジェクトに対する操作により、返却されたオブジェクトの内容が変化することはありません。

        -
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        -
        Returns:
        対象フィールドの値。NULLが設定されている場合はnull
        -
        Throws:
        -
        GSException - 範囲外のカラム番号が指定された場合
        -
        GSException - 指定のカラム番号の型と一致しない場合
        -
      • -
      - - - -
        -
      • -

        getString

        -
        java.lang.String getString(int column)
        -                           throws GSException
        -
        指定のSTRING型フィールドの値を取得します。
        -
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        -
        Returns:
        対象フィールドの値。NULLが設定されている場合はnull
        -
        Throws:
        -
        GSException - 範囲外のカラム番号が指定された場合
        -
        GSException - 指定のカラム番号の型と一致しない場合
        -
      • -
      - - - -
        -
      • -

        getStringArray

        -
        java.lang.String[] getStringArray(int column)
        -                                  throws GSException
        -
        指定のSTRING型配列フィールドの値を取得します。 -

        返却されたオブジェクトの内容を呼び出し後に変更したとしても、このオブジェクトの内容は変化しません。また、このオブジェクトに対する操作により、返却されたオブジェクトの内容が変化することはありません。

        -
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        -
        Returns:
        対象フィールドの値。NULLが設定されている場合はnull
        -
        Throws:
        -
        GSException - 範囲外のカラム番号が指定された場合
        -
        GSException - 指定のカラム番号の型と一致しない場合
        -
      • -
      - - - -
        -
      • -

        getTimestamp

        -
        java.util.Date getTimestamp(int column)
        -                            throws GSException
        -
        指定のTIMESTAMP型フィールドの値を取得します。 -

        返却されたオブジェクトの内容を呼び出し後に変更した場合に、このオブジェクトの内容が変化するかどうかは未定義です。また、このオブジェクトに対する操作により、返却されたオブジェクトの内容が変化することはありません。

        -
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        -
        Returns:
        対象フィールドの値。NULLが設定されている場合はnull
        -
        Throws:
        -
        GSException - 範囲外のカラム番号が指定された場合
        -
        GSException - 指定のカラム番号の型と一致しない場合
        -
      • -
      - - - -
        -
      • -

        getTimestampArray

        -
        java.util.Date[] getTimestampArray(int column)
        -                                   throws GSException
        -
        指定のTIMESTAMP型配列フィールドの値を取得します。 -

        返却されたオブジェクトの内容を呼び出し後に変更した場合に、このオブジェクトの内容が変化するかどうかは未定義です。一方、このオブジェクトに対する操作により、返却されたオブジェクトの内容が変化することはありません。

        -
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        -
        Returns:
        対象フィールドの値。NULLが設定されている場合はnull
        -
        Throws:
        -
        GSException - 範囲外のカラム番号が指定された場合
        -
        GSException - 指定のカラム番号の型と一致しない場合
        -
      • -
      - - - -
        -
      • -

        getValue

        -
        java.lang.Object getValue(int column)
        -                          throws GSException
        -
        指定のフィールドの値を取得します。
        -
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        -
        Returns:
        対象フィールドの値。NULLが設定されている場合はnull
        -
        Throws:
        -
        GSException - 範囲外のカラム番号が指定された場合
        -
      • -
      - - - -
        -
      • -

        isNull

        -
        boolean isNull(int column)
        -               throws GSException
        -
        指定のフィールドにNULLが設定されているかどうかを返します。 -

        NOT NULL制約の設定されたカラムが指定された場合、常にfalseを返します。

        -
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        -
        Returns:
        指定のフィールドにNULLが設定されているかどうか
        -
        Throws:
        -
        GSException - 範囲外のカラム番号が指定された場合
        Since:
        -
        3.5
        -
      • -
      - - - -
        -
      • -

        setBlob

        -
        void setBlob(int column,
        -           java.sql.Blob fieldValue)
        -             throws GSException
        -
        指定のBLOB型フィールドに値を設定します。 -

        指定したオブジェクトの内容を呼び出し後に変更したとしても、このオブジェクトの内容は変化しません。

        -
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        fieldValue - 対象フィールドの値
        -
        Throws:
        -
        GSException - 範囲外のカラム番号が指定された場合
        -
        GSException - NOT NULL制約の設定されたカラムに対して、フィールド値としてnullが指定された場合
        -
        GSException - 指定のカラム番号の型と一致しない場合
        -
      • -
      - - - -
        -
      • -

        setBool

        -
        void setBool(int column,
        -           boolean fieldValue)
        -             throws GSException
        -
        指定のBOOL型フィールドに値を設定します。
        -
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        fieldValue - 対象フィールドの値
        -
        Throws:
        -
        GSException - 範囲外のカラム番号が指定された場合
        -
        GSException - 指定のカラム番号の型と一致しない場合
        -
      • -
      - - - -
        -
      • -

        setBoolArray

        -
        void setBoolArray(int column,
        -                boolean[] fieldValue)
        -                  throws GSException
        -
        指定のBOOL型配列フィールドに値を設定します。 -

        指定したオブジェクトの内容を呼び出し後に変更したとしても、このオブジェクトの内容は変化しません。

        -
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        fieldValue - 対象フィールドの値
        -
        Throws:
        -
        GSException - 範囲外のカラム番号が指定された場合
        -
        GSException - NOT NULL制約の設定されたカラムに対して、フィールド値としてnullが指定された場合
        -
        GSException - 指定のカラム番号の型と一致しない場合
        -
      • -
      - - - -
        -
      • -

        setByte

        -
        void setByte(int column,
        -           byte fieldValue)
        -             throws GSException
        -
        指定のBYTE型フィールドに値を設定します。
        -
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        fieldValue - 対象フィールドの値
        -
        Throws:
        -
        GSException - 範囲外のカラム番号が指定された場合
        -
        GSException - 指定のカラム番号の型と一致しない場合
        -
      • -
      - - - -
        -
      • -

        setByteArray

        -
        void setByteArray(int column,
        -                byte[] fieldValue)
        -                  throws GSException
        -
        指定のBYTE型配列フィールドに値を設定します。 -

        指定したオブジェクトの内容を呼び出し後に変更したとしても、このオブジェクトの内容は変化しません。

        -
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        fieldValue - 対象フィールドの値
        -
        Throws:
        -
        GSException - 範囲外のカラム番号が指定された場合
        -
        GSException - NOT NULL制約の設定されたカラムに対して、フィールド値としてnullが指定された場合
        -
        GSException - 指定のカラム番号の型と一致しない場合
        -
      • -
      - - - -
        -
      • -

        setDouble

        -
        void setDouble(int column,
        -             double fieldValue)
        -               throws GSException
        -
        指定のDOUBLE型フィールドに値を設定します。
        -
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        fieldValue - 対象フィールドの値
        -
        Throws:
        -
        GSException - 範囲外のカラム番号が指定された場合
        -
        GSException - 指定のカラム番号の型と一致しない場合
        -
      • -
      - - - -
        -
      • -

        setDoubleArray

        -
        void setDoubleArray(int column,
        -                  double[] fieldValue)
        -                    throws GSException
        -
        指定のDOUBLE型配列フィールドに値を設定します。 -

        指定したオブジェクトの内容を呼び出し後に変更したとしても、このオブジェクトの内容は変化しません。

        -
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        fieldValue - 対象フィールドの値
        -
        Throws:
        -
        GSException - 範囲外のカラム番号が指定された場合
        -
        GSException - NOT NULL制約の設定されたカラムに対して、フィールド値としてnullが指定された場合
        -
        GSException - 指定のカラム番号の型と一致しない場合
        -
      • -
      - - - -
        -
      • -

        setFloat

        -
        void setFloat(int column,
        -            float fieldValue)
        -              throws GSException
        -
        指定のFLOAT型フィールドに値を設定します。
        -
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        fieldValue - 対象フィールドの値
        -
        Throws:
        -
        GSException - 範囲外のカラム番号が指定された場合
        -
        GSException - 指定のカラム番号の型と一致しない場合
        -
      • -
      - - - -
        -
      • -

        setFloatArray

        -
        void setFloatArray(int column,
        -                 float[] fieldValue)
        -                   throws GSException
        -
        指定のFLOAT型配列フィールドに値を設定します。 -

        指定したオブジェクトの内容を呼び出し後に変更したとしても、このオブジェクトの内容は変化しません。

        -
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        fieldValue - 対象フィールドの値
        -
        Throws:
        -
        GSException - 範囲外のカラム番号が指定された場合
        -
        GSException - NOT NULL制約の設定されたカラムに対して、フィールド値としてnullが指定された場合
        -
        GSException - 指定のカラム番号の型と一致しない場合
        -
      • -
      - - - -
        -
      • -

        setGeometry

        -
        void setGeometry(int column,
        -               Geometry fieldValue)
        -                 throws GSException
        -
        指定のGEOMETRY型フィールドに値を設定します。
        -
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        fieldValue - 対象フィールドの値
        -
        Throws:
        -
        GSException - 範囲外のカラム番号が指定された場合
        -
        GSException - NOT NULL制約の設定されたカラムに対して、フィールド値としてnullが指定された場合
        -
        GSException - 指定のカラム番号の型と一致しない場合
        -
      • -
      - - - -
        -
      • -

        setInteger

        -
        void setInteger(int column,
        -              int fieldValue)
        -                throws GSException
        -
        指定のINTEGER型フィールドに値を設定します。
        -
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        fieldValue - 対象フィールドの値
        -
        Throws:
        -
        GSException - 範囲外のカラム番号が指定された場合
        -
        GSException - 指定のカラム番号の型と一致しない場合
        -
      • -
      - - - -
        -
      • -

        setIntegerArray

        -
        void setIntegerArray(int column,
        -                   int[] fieldValue)
        -                     throws GSException
        -
        指定のINTEGER型配列フィールドに値を設定します。 -

        指定したオブジェクトの内容を呼び出し後に変更したとしても、このオブジェクトの内容は変化しません。

        -
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        fieldValue - 対象フィールドの値
        -
        Throws:
        -
        GSException - 範囲外のカラム番号が指定された場合
        -
        GSException - NOT NULL制約の設定されたカラムに対して、フィールド値としてnullが指定された場合
        -
        GSException - 指定のカラム番号の型と一致しない場合
        -
      • -
      - - - -
        -
      • -

        setLong

        -
        void setLong(int column,
        -           long fieldValue)
        -             throws GSException
        -
        指定のLONG型フィールドに値を設定します。
        -
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        fieldValue - 対象フィールドの値
        -
        Throws:
        -
        GSException - 範囲外のカラム番号が指定された場合
        -
        GSException - 指定のカラム番号の型と一致しない場合
        -
      • -
      - - - -
        -
      • -

        setLongArray

        -
        void setLongArray(int column,
        -                long[] fieldValue)
        -                  throws GSException
        -
        指定のLONG型配列フィールドに値を設定します。 -

        指定したオブジェクトの内容を呼び出し後に変更したとしても、このオブジェクトの内容は変化しません。

        -
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        fieldValue - 対象フィールドの値
        -
        Throws:
        -
        GSException - 範囲外のカラム番号が指定された場合
        -
        GSException - NOT NULL制約の設定されたカラムに対して、フィールド値としてnullが指定された場合
        -
        GSException - 指定のカラム番号の型と一致しない場合
        -
      • -
      - - - -
        -
      • -

        setNull

        -
        void setNull(int column)
        -             throws GSException
        -
        指定のフィールドにNULLを設定します。
        -
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        -
        Throws:
        -
        GSException - 範囲外のカラム番号が指定された場合
        -
        GSException - NOT NULL制約の設定されたカラムが指定された場合
        Since:
        -
        3.5
        -
      • -
      - - - -
        -
      • -

        setShort

        -
        void setShort(int column,
        -            short fieldValue)
        -              throws GSException
        -
        指定のSHORT型フィールドに値を設定します。
        -
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        fieldValue - 対象フィールドの値
        -
        Throws:
        -
        GSException - 範囲外のカラム番号が指定された場合
        -
        GSException - 指定のカラム番号の型と一致しない場合
        -
      • -
      - - - -
        -
      • -

        setShortArray

        -
        void setShortArray(int column,
        -                 short[] fieldValue)
        -                   throws GSException
        -
        指定のSHORT型配列フィールドに値を設定します。 -

        指定したオブジェクトの内容を呼び出し後に変更したとしても、このオブジェクトの内容は変化しません。

        -
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        fieldValue - 対象フィールドの値
        -
        Throws:
        -
        GSException - 範囲外のカラム番号が指定された場合
        -
        GSException - NOT NULL制約の設定されたカラムに対して、フィールド値としてnullが指定された場合
        -
        GSException - 指定のカラム番号の型と一致しない場合
        -
      • -
      - - - -
        -
      • -

        setString

        -
        void setString(int column,
        -             java.lang.String fieldValue)
        -               throws GSException
        -
        指定のSTRING型フィールドに値を設定します。
        -
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        fieldValue - 対象フィールドの値
        -
        Throws:
        -
        GSException - 範囲外のカラム番号が指定された場合
        -
        GSException - NOT NULL制約の設定されたカラムに対して、フィールド値としてnullが指定された場合
        -
        GSException - 指定のカラム番号の型と一致しない場合
        -
      • -
      - - - -
        -
      • -

        setStringArray

        -
        void setStringArray(int column,
        -                  java.lang.String[] fieldValue)
        -                    throws GSException
        -
        指定のSTRING型配列フィールドに値を設定します。 -

        指定したオブジェクトの内容を呼び出し後に変更したとしても、このオブジェクトの内容は変化しません。

        -
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        fieldValue - 対象フィールドの値
        -
        Throws:
        -
        GSException - 範囲外のカラム番号が指定された場合
        -
        GSException - NOT NULL制約の設定されたカラムに対して、フィールド値としてnullが指定された場合
        -
        GSException - フィールド値の配列要素にnullが含まれる場合
        -
        GSException - 指定のカラム番号の型と一致しない場合
        -
      • -
      - - - -
        -
      • -

        setTimestamp

        -
        void setTimestamp(int column,
        -                java.util.Date fieldValue)
        -                  throws GSException
        -
        指定のTIMESTAMP型フィールドに値を設定します。 -

        指定したオブジェクトの内容を呼び出し後に変更した場合に、このオブジェクトの内容が変化するかどうかは未定義です。

        -
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        fieldValue - 対象フィールドの値
        -
        Throws:
        -
        GSException - 範囲外のカラム番号が指定された場合
        -
        GSException - NOT NULL制約の設定されたカラムに対して、フィールド値としてnullが指定された場合
        -
        GSException - 指定のカラム番号の型と一致しない場合
        -
      • -
      - - - -
        -
      • -

        setTimestampArray

        -
        void setTimestampArray(int column,
        -                     java.util.Date[] fieldValue)
        -                       throws GSException
        -
        指定のTIMESTAMP型配列フィールドに値を設定します。 -

        指定したオブジェクトの内容を呼び出し後に変更した場合に、このオブジェクトの内容が変化するかどうかは未定義です。

        -
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        fieldValue - 対象フィールドの値
        -
        Throws:
        -
        GSException - 範囲外のカラム番号が指定された場合
        -
        GSException - NOT NULL制約の設定されたカラムに対して、フィールド値としてnullが指定された場合
        -
        GSException - フィールド値の配列要素にnullが含まれる場合
        -
        GSException - 指定のカラム番号の型と一致しない場合
        -
      • -
      - - - -
        -
      • -

        setValue

        -
        void setValue(int column,
        -            java.lang.Object fieldValue)
        -              throws GSException
        -
        指定のフィールドに値を設定します。
        -
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        fieldValue - 対象フィールドの値
        -
        Throws:
        -
        GSException - 範囲外のカラム番号が指定された場合
        -
        GSException - NOT NULL制約の設定されたカラムに対して、フィールド値としてnullが指定された場合
        -
        GSException - 配列型のフィールド値の配列要素にnullが含まれる場合
        -
        GSException - フィールドの値がカラムの型と一致しない場合
        -
      • -
      -
    • -
    -
  • -
-
-
- - - -
-
-

Annotation Type RowField

-
-
-
-
    -
  • -
    -
    -
    @Retention(value=RUNTIME)
    -@Target(value={FIELD,METHOD})
    -public @interface RowField
    -
    Containerの処理におけるマッピング対象のロウフィールドについて、オプションを設定します。 -

    複合ロウキーを構成する各ロウフィールドに対しても、使用できます。複合ロウキーの場合、複合ロウキー全体を一つのオブジェクトとして設定・取得するためのフィールド・メソッドに対しては、使用できません。

    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Optional Element Summary

      - - - - - - - - - - - - - - -
      Optional Elements 
      Modifier and TypeOptional Element and Description
      intcolumnNumber -
      カラム番号を設定します。
      -
      java.lang.Stringname -
      指定のカラム名を使用します。
      -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Element Detail

      - - - -
        -
      • -

        columnNumber

        -
        public abstract int columnNumber
        -
        カラム番号を設定します。 -

        カラム順序を明示的に指定する場合、0以上かつカラム数未満の値を指定します。同一コンテナ上で重複するカラム番号を指定することはできません。また、現バージョンでは、ロウキーは常に先頭カラムになるように設定しなければなりません。デフォルト値の-1を指定した場合、対応するカラムの番号は自動的に決定されます。

        - -

        複合ロウキーを含むロウオブジェクトのうち、ロウキー以外のロウフィールドに対して番号を設定する場合、複合ロウキーを構成する個々のカラムに割り当てられる番号と重複しないようにする必要があります。

        -
        -
        Default:
        -
        -1
        -
        -
      • -
      - - - -
        -
      • -

        name

        -
        public abstract java.lang.String name
        -
        指定のカラム名を使用します。 -

        空の文字を指定した場合、対応するフィールド名またはメソッド名に基づきカラム名を決定します。

        -
        -
        Default:
        -
        ""
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - -
-
-

Annotation Type RowKey

-
-
-
-
    -
  • -
    -
    -
    @Retention(value=RUNTIME)
    -@Target(value={FIELD,METHOD})
    -public @interface RowKey
    -
    Containerのキーと対応することを示します。 -

    複合ロウキーの場合、複合ロウキー全体を一つのオブジェクトとして設定・取得するためのフィールド・メソッドに対して使用します。複合ロウキーを構成する各ロウフィールドに対しては、使用できません。

    -
  • -
-
-
- - - -
-
-

Class RowKeyPredicate<K>

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • com.toshiba.mwcloud.gs.RowKeyPredicate<K>
    • -
    -
  • -
-
-
    -
  • -
    Type Parameters:
    K - 合致条件の評価対象とするロウキーの型
    -
    -
    -
    public class RowKeyPredicate<K>
    -extends java.lang.Object
    -
    ロウキーの合致条件を表します。 -

    GridStore.multiGet(java.util.Map)における取得条件を構成するために使用できます。

    - -

    条件の種別として、範囲条件と個別条件の2つの種別があります。両方の種別の条件を共に指定することはできません。条件の内容を何も指定しない場合、対象とするすべてのロウキーに合致することを表します。

    -
    Since:
    -
    1.5
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Methods 
      Modifier and TypeMethod and Description
      voidadd(K key) -
      個別条件の要素の一つとするロウキーの値を追加します。
      -
      static <K> RowKeyPredicate<K>create(java.lang.Class<K> keyType) -
      指定のClassに対応するGSTypeをロウキーの型とする合致条件を作成します。
      -
      static RowKeyPredicate<Row.Key>create(ContainerInfo info) -
      指定のContainerInfoのロウキーに関するカラム定義に基づく、合致条件を作成します。
      -
      static RowKeyPredicate<java.lang.Object>create(GSType keyType) -
      指定のGSTypeをロウキーの型とする合致条件を作成します。
      -
      java.util.Collection<K>getDistinctKeys() -
      個別条件を構成するロウキーの値の集合を取得します。
      -
      KgetFinish() -
      範囲条件の終了位置とするロウキーの値を取得します。
      -
      ContainerInfogetKeySchema() -
      合致条件の評価対象とするロウキーのスキーマを取得します。
      -
      GSTypegetKeyType() -
      複合ロウキーについての合致条件である場合を除いて、合致条件の評価対象とするロウキーの型を取得します。
      -
      KgetStart() -
      範囲条件の開始位置とするロウキーの値を取得します。
      -
      voidsetFinish(K finishKey) -
      範囲条件の終了位置とするロウキーの値を設定します。
      -
      voidsetStart(K startKey) -
      範囲条件の開始位置とするロウキーの値を設定します。
      -
      -
        -
      • - - -

        Methods inherited from class java.lang.Object

        -clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - - - -
        -
      • -

        add

        -
        public void add(K key)
        -         throws GSException
        -
        個別条件の要素の一つとするロウキーの値を追加します。 -

        追加された値と同一の値のロウキーは合致するものとみなされるようになります。

        -
        Parameters:
        key - 個別条件の要素の一つとするロウキーの値。nullは指定できない
        -
        Throws:
        -
        GSException - 範囲条件がすでに設定されていた場合
        -
        java.lang.ClassCastException - 指定のロウキーの値の型がnull -ではなく、ロウキーに対応するクラスのインスタンスではない場合
        -
        java.lang.NullPointerException - 引数にnullが指定された場合
        -
      • -
      - - - -
        -
      • -

        create

        -
        public static <K> RowKeyPredicate<K> create(java.lang.Class<K> keyType)
        -                                 throws GSException
        -
        指定のClassに対応するGSTypeをロウキーの型とする合致条件を作成します。 -

        合致条件の評価対象とするコンテナは、単一カラムからなるロウキーを持ち、かつ、そのロウキーの型は指定のGSTypeと同一の型でなければなりません。

        - -

        設定可能なロウキーの型は、Containerのいずれかのサブインタフェースにて許容されている型のみです。 ClassGSTypeとの対応関係については、 Containerの定義を参照してください。

        - -

        複合ロウキーなどロウキーを構成するカラムの個数によらずに合致条件を作成するには、create(ContainerInfo)を使用します。

        -
        Parameters:
        keyType - 合致条件の判定対象とするロウキーの型に対応する、Class
        -
        Returns:
        新規に作成されたRowKeyPredicate
        -
        Throws:
        -
        GSException - 指定された型がロウキーとして常にサポート外となる場合
        -
        java.lang.NullPointerException - 引数にnullが指定された場合
        See Also:
        Container
        -
      • -
      - - - -
        -
      • -

        create

        -
        public static RowKeyPredicate<Row.Key> create(ContainerInfo info)
        -                                       throws GSException
        -
        指定のContainerInfoのロウキーに関するカラム定義に基づく、合致条件を作成します。 -

        合致条件の評価対象とするコンテナは、ロウキーを持ち、かつ、指定の ContainerInfoのロウキーに関するカラム定義と対応づく必要があります。ロウキー以外のカラム定義については対応関係の判定に用いられません。

        -
        Parameters:
        info - 合致条件の判定対象とするロウキーのカラムレイアウトを含む、コンテナ情報。その他の内容は無視される
        -
        Returns:
        新規に作成されたRowKeyPredicate
        -
        Throws:
        -
        GSException - 指定の情報がロウキーを含まないか、ロウキーとして常にサポート外となる場合
        -
        java.lang.NullPointerException - 引数にnullが指定された場合
        Since:
        -
        4.3
        -
      • -
      - - - -
        -
      • -

        create

        -
        public static RowKeyPredicate<java.lang.Object> create(GSType keyType)
        -                                                throws GSException
        -
        指定のGSTypeをロウキーの型とする合致条件を作成します。 -

        合致条件の評価対象とするコンテナは、ロウキーを持ち、かつ、ロウキーの型が指定のGSTypeと同一の型でなければなりません。

        - -

        create(Class)とは異なり、アプリケーションのコンパイル時点でロウキーの型が確定しない場合の使用に適します。ただし、条件内容を設定する際のロウキーの型チェックの基準は同一です。

        - -

        設定可能なロウキーの型は、Containerのいずれかのサブインタフェースにて許容されている型のみです。

        -
        Parameters:
        keyType - 合致条件の評価対象とするロウキーの型
        -
        Returns:
        新規に作成されたRowKeyPredicate
        -
        Throws:
        -
        GSException - 指定された型がロウキーとして常にサポート外となる場合
        -
        java.lang.NullPointerException - 引数にnullが指定された場合
        See Also:
        Container
        -
      • -
      - - - -
        -
      • -

        getDistinctKeys

        -
        public java.util.Collection<K> getDistinctKeys()
        -
        個別条件を構成するロウキーの値の集合を取得します。 -

        返却された値に対して変更操作を行った場合に、 UnsupportedOperationExceptionなどの実行時例外が発生するかどうかは未定義です。また、このオブジェクトに対する操作により、返却されたオブジェクトの内容が変化するかどうかは未定義です。

        -
        Returns:
        個別条件を構成するロウキーの値を要素とする Collection
        -
      • -
      - - - -
        -
      • -

        getFinish

        -
        public K getFinish()
        -
        範囲条件の終了位置とするロウキーの値を取得します。
        -
        Returns:
        終了位置とするロウキーの値。設定されていない場合はnull
        -
      • -
      - - - -
        -
      • -

        getKeySchema

        -
        public ContainerInfo getKeySchema()
        -
        合致条件の評価対象とするロウキーのスキーマを取得します。 -

        この合致条件の作成に用いられた情報に、ロウキー以外のカラム情報やスキーマ以外のコンテナ情報が含まれていたとしても、返却されるスキーマ情報には含まれません。

        -
        Returns:
        ロウキーのスキーマに関するコンテナ情報のみを持つ ContainerInfo
        Since:
        -
        4.3
        -
      • -
      - - - -
        -
      • -

        getKeyType

        -
        public GSType getKeyType()
        -
        複合ロウキーについての合致条件である場合を除いて、合致条件の評価対象とするロウキーの型を取得します。 -

        複合ロウキーを含む任意のロウキーについてのスキーマを取得するには、 getKeySchema()}を使用します。

        -
        Returns:
        合致条件の評価対象とするロウキーの型
        -
        Throws:
        -
        java.lang.IllegalStateException - 複合ロウキーについての合致条件である場合に呼び出された場合
        -
      • -
      - - - -
        -
      • -

        getStart

        -
        public K getStart()
        -
        範囲条件の開始位置とするロウキーの値を取得します。
        -
        Returns:
        開始位置とするロウキーの値。設定されていない場合はnull
        -
      • -
      - - - - - -
        -
      • -

        setFinish

        -
        public void setFinish(K finishKey)
        -               throws GSException
        -
        範囲条件の終了位置とするロウキーの値を設定します。 -

        設定された値より大きな値のロウキーは合致しないものとみなされるようになります。

        - -

        STRING型のロウキーまたはその型を含む複合ロウキーのように、大小関係が定義されていないロウキーの場合、条件として設定はできるものの、実際の判定に用いることはできません。

        -
        Parameters:
        finishKey - 終了位置とするロウキーの値。nullの場合、設定が解除される
        -
        Throws:
        -
        GSException - 個別条件がすでに設定されていた場合
        -
        java.lang.ClassCastException - 指定のロウキーの値の型がnull -ではなく、ロウキーに対応するクラスのインスタンスではない場合
        -
      • -
      - - - - - -
        -
      • -

        setStart

        -
        public void setStart(K startKey)
        -              throws GSException
        -
        範囲条件の開始位置とするロウキーの値を設定します。 -

        設定された値より小さな値のロウキーは合致しないものとみなされるようになります。

        - -

        STRING型のロウキーまたはその型を含む複合ロウキーのように、大小関係が定義されていないロウキーの場合、条件として設定はできるものの、実際の判定に用いることはできません。

        -
        Parameters:
        startKey - 開始位置とするロウキーの値。nullの場合、設定が解除される
        -
        Throws:
        -
        GSException - 個別条件がすでに設定されていた場合
        -
        java.lang.ClassCastException - 指定のロウキーの値の型がnull -ではなく、ロウキーに対応するクラスのインスタンスではない場合
        -
      • -
      -
    • -
    -
  • -
-
-
- - - -
-
-

Interface RowSet<R>

-
-
-
-
    -
  • -
    -
    All Superinterfaces:
    -
    java.lang.AutoCloseable, java.io.Closeable
    -
    -
    -
    -
    public interface RowSet<R>
    -extends java.io.Closeable
    -
    クエリ実行より求めたロウの集合を管理します。 -

    ロウ単位・ロウフィールド単位での操作機能を持ち、対象とするロウを指し示すための、ResultSetと同様のカーソル状態を保持します。初期状態のカーソルは、ロウ集合の先頭より手前に位置しています。

    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Methods 
      Modifier and TypeMethod and Description
      voidclose() -
      関連するリソースを適宜解放します。
      -
      booleanhasNext() -
      現在のカーソル位置を基準として、ロウ集合内に後続のロウが存在するかどうかを取得します。
      -
      Rnext() -
      ロウ集合内の後続のロウにカーソル移動し、移動後の位置にあるロウオブジェクトを取得します。
      -
      voidremove() -
      現在のカーソル位置のロウを削除します。
      -
      intsize() -
      サイズ、すなわちロウ集合作成時点におけるロウの数を取得します。
      -
      voidupdate(R rowObj) -
      現在のカーソル位置のロウについて、指定のロウオブジェクトを使用してロウキー以外の値を更新します。
      -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        close

        -
        void close()
        -           throws GSException
        -
        関連するリソースを適宜解放します。
        -
        -
        Specified by:
        -
        close in interface java.lang.AutoCloseable
        -
        Specified by:
        -
        close in interface java.io.Closeable
        -
        Throws:
        -
        GSException - 現バージョンでは送出されない
        See Also:
        Closeable.close()
        -
      • -
      - - - -
        -
      • -

        hasNext

        -
        boolean hasNext()
        -                throws GSException
        -
        現在のカーソル位置を基準として、ロウ集合内に後続のロウが存在するかどうかを取得します。
        -
        Throws:
        -
        GSException - 現バージョンでは送出されない
        -
      • -
      - - - -
        -
      • -

        next

        -
        R next()
        -       throws GSException
        -
        ロウ集合内の後続のロウにカーソル移動し、移動後の位置にあるロウオブジェクトを取得します。 -

        FetchOption.PARTIAL_EXECUTIONが有効に設定されていた場合、クエリ実行処理の続きを行う場合があります。

        -
        Throws:
        -
        GSException - 対象位置のロウが存在しない場合
        -
        GSException - 接続障害によりロウオブジェクトの生成に失敗した場合
        -
        GSException - この処理または関連するトランザクションのタイムアウト、対応するコンテナの削除もしくはスキーマ変更、接続障害が発生した場合
        -
        GSException - このオブジェクトまたは対応するContainerのクローズ後に呼び出された場合
        -
      • -
      - - - -
        -
      • -

        remove

        -
        void remove()
        -            throws GSException
        -
        現在のカーソル位置のロウを削除します。 -

        ロックを有効にして取得したRowSetに対してのみ使用できます。また、Container.remove(Object)と同様、コンテナの種別ならびに設定によっては、さらに制限が設けられています。

        -
        Throws:
        -
        GSException - 対象位置のロウが存在しない場合
        -
        GSException - ロックを有効にせずに取得したRowSetに対して呼び出された場合
        -
        GSException - 特定コンテナ固有の制限に反する操作を行った場合
        -
        GSException - この処理または関連するトランザクションのタイムアウト、対応するコンテナの削除もしくはスキーマ変更、接続障害が発生した場合
        -
        GSException - このオブジェクトまたは対応するContainerのクローズ後に呼び出された場合
        -
      • -
      - - - -
        -
      • -

        size

        -
        int size()
        -
        サイズ、すなわちロウ集合作成時点におけるロウの数を取得します。 -

        FetchOption.PARTIAL_EXECUTIONが有効に設定されていた場合、クエリ実行処理の進行状況によらず、結果を求めることはできません。

        -
        Throws:
        -
        java.lang.IllegalStateException - オプション設定の影響によりロウの数を取得できない場合
        -
      • -
      - - - - - -
        -
      • -

        update

        -
        void update(R rowObj)
        -            throws GSException
        -
        現在のカーソル位置のロウについて、指定のロウオブジェクトを使用してロウキー以外の値を更新します。 -

        nullは指定できません。指定のロウオブジェクトに含まれるロウキーは無視されます。

        - -

        ロックを有効にして取得したRowSetに対してのみ使用できます。また、Container.put(Object, Object)と同様、コンテナの種別ならびに設定によっては、さらに制限が設けられています。

        -
        Throws:
        -
        GSException - 対象位置のロウが存在しない場合
        -
        GSException - ロックを有効にせずに取得したRowSetに対して呼び出された場合
        -
        GSException - 特定コンテナ固有の制限に反する操作を行った場合
        -
        GSException - この処理または関連するトランザクションのタイムアウト、対応するンテナの削除もしくはスキーマ変更、接続障害が発生した場合
        -
        GSException - このオブジェクトまたは対応するContainerのクローズ後に呼び出された場合
        -
        java.lang.ClassCastException - 指定のロウオブジェクトがマッピング処理で使用されるロウオブジェクトの型と対応しない場合
        -
        java.lang.NullPointerException - 引数にnullが指定された場合。また、ロウフィールドに対応するロウオブジェクト内のオブジェクトが1つ以上存在しない場合
        -
      • -
      -
    • -
    -
  • -
-
-
- - - -
-
-

Enum TimeOperator

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • java.lang.Enum<TimeOperator>
    • -
    • -
        -
      • com.toshiba.mwcloud.gs.TimeOperator
      • -
      -
    • -
    -
  • -
-
-
    -
  • -
    -
    All Implemented Interfaces:
    -
    java.io.Serializable, java.lang.Comparable<TimeOperator>
    -
    -
    -
    -
    public enum TimeOperator
    -extends java.lang.Enum<TimeOperator>
    -
    TimeSeriesのキー時刻に基づく、ロウの特定方法を表します。 -

    別途指定する時刻と組み合わせることで、最も近い時刻のキーを持つロウなどを特定できます。該当するロウが存在しない場合の扱いは、この列挙型を使用するそれぞれの機能により異なります。

    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Enum Constant Summary

      - - - - - - - - - - - - - - - - - -
      Enum Constants 
      Enum Constant and Description
      NEXT -
      指定時刻同一またはまたはより後の時刻のロウのうち、最も古いものを求めます。
      -
      NEXT_ONLY -
      指定時刻より後の時刻のロウのうち、最も古いものを求めます。
      -
      PREVIOUS -
      指定時刻と同一またはより前の時刻のロウのうち、最も新しいものを求めます。
      -
      PREVIOUS_ONLY -
      指定より前の時刻のロウのうち、最も新しいものを求めます。
      -
      -
    • -
    - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - - - - - -
      Methods 
      Modifier and TypeMethod and Description
      static TimeOperatorvalueOf(java.lang.String name) -
      Returns the enum constant of this type with the specified name.
      -
      static TimeOperator[]values() -
      Returns an array containing the constants of this enum type, in -the order they are declared.
      -
      -
        -
      • - - -

        Methods inherited from class java.lang.Enum

        -clone, compareTo, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf
      • -
      -
        -
      • - - -

        Methods inherited from class java.lang.Object

        -getClass, notify, notifyAll, wait, wait, wait
      • -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Enum Constant Detail

      - - - -
        -
      • -

        NEXT

        -
        public static final TimeOperator NEXT
        -
        指定時刻同一またはまたはより後の時刻のロウのうち、最も古いものを求めます。
        -
      • -
      - - - -
        -
      • -

        NEXT_ONLY

        -
        public static final TimeOperator NEXT_ONLY
        -
        指定時刻より後の時刻のロウのうち、最も古いものを求めます。
        -
      • -
      - - - -
        -
      • -

        PREVIOUS

        -
        public static final TimeOperator PREVIOUS
        -
        指定時刻と同一またはより前の時刻のロウのうち、最も新しいものを求めます。
        -
      • -
      - - - -
        -
      • -

        PREVIOUS_ONLY

        -
        public static final TimeOperator PREVIOUS_ONLY
        -
        指定より前の時刻のロウのうち、最も新しいものを求めます。
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        valueOf

        -
        public static TimeOperator valueOf(java.lang.String name)
        -
        Returns the enum constant of this type with the specified name. -The string must match exactly an identifier used to declare an -enum constant in this type. (Extraneous whitespace characters are -not permitted.)
        -
        Parameters:
        name - the name of the enum constant to be returned.
        -
        Returns:
        the enum constant with the specified name
        -
        Throws:
        -
        java.lang.IllegalArgumentException - if this enum type has no constant -with the specified name
        -
        java.lang.NullPointerException - if the argument is null
        -
      • -
      - - - -
        -
      • -

        values

        -
        public static TimeOperator[] values()
        -
        Returns an array containing the constants of this enum type, in -the order they are declared. This method may be used to iterate -over the constants as follows: -
        -for (TimeOperator c : TimeOperator.values())
        -    System.out.println(c);
        -
        -
        Returns:
        an array containing the constants of this enum type, in -the order they are declared
        -
      • -
      -
    • -
    -
  • -
-
-
- - - -
-
-

Class TimeSeries.BindType

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • com.toshiba.mwcloud.gs.TimeSeries.BindType
    • -
    -
  • -
-
-
    -
  • -
    -
    Enclosing interface:
    -
    TimeSeries<R>
    -
    -
    -
    -
    public static class TimeSeries.BindType
    -extends java.lang.Object
    -
    TimeSeriesならびにその型パラメータと結びつく Container.BindTypeを構築するための、補助クラスです。
    -
    Since:
    -
    4.3
    -
    See Also:
    Container.BindType
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - -
      Methods 
      Modifier and TypeMethod and Description
      static <R> Container.BindType<java.util.Date,R,? extends TimeSeries<R>>of(java.lang.Class<R> rowClass) -
      指定のロウオブジェクト型、ならびに、TimeSeriesと結びつく Container.BindTypeを取得します。
      -
      -
        -
      • - - -

        Methods inherited from class java.lang.Object

        -clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        of

        -
        public static <R> Container.BindType<java.util.Date,R,? extends TimeSeries<R>> of(java.lang.Class<R> rowClass)
        -                                                                       throws GSException
        -
        指定のロウオブジェクト型、ならびに、TimeSeriesと結びつく Container.BindTypeを取得します。
        -
        Type Parameters:
        R - ロウオブジェクトの型
        Parameters:
        rowClass - ロウオブジェクトの型に対応するクラスオブジェクト
        -
        Throws:
        -
        GSException - ロウキーの型と、ロウオブジェクトの型との間で不整合を検出した場合
        Since:
        -
        4.3
        -
      • -
      -
    • -
    -
  • -
-
-
- - - -
-
-

Interface TimeSeries<R>

-
-
-
-
    -
  • -
    -
    All Superinterfaces:
    -
    java.lang.AutoCloseable, java.io.Closeable, Container<java.util.Date,R>
    -
    -
    -
    -
    public interface TimeSeries<R>
    -extends Container<java.util.Date,R>
    -
    時刻をロウキーとする、時系列処理に特化したコンテナです。 -

    一般的に、範囲取得や集計演算といった処理は、Collectionよりも効率的な実装が選択されます。

    - -

    ロウ操作については、Collectionと異なり一部制限が設けられています。 TimeSeriesPropertiesに基づき圧縮オプションが設定されている場合、次のロウ操作を行えません。

    -
      -
    • 指定ロウの更新
    • -
    • 指定ロウの削除
    • -
    • 指定時刻より新しい時刻のロウが存在する場合の、ロウの新規作成
    • -
    - -

    Container.query(String)GridStore.multiGet(java.util.Map)などより複数のロウの内容を一度に取得する場合、特に指定がなければ、返却されるロウの順序はロウキーの時刻を基準としてQueryOrder.ASCENDING -相当の順序に整列されます。

    - -

    ロック粒度は、1つ以上のロウ集合をひとまとまりとする内部格納単位となります。したがって、特定ロウについてロックする際、そのロウが属する内部格納単位上の他のロウも同時にロックしようとします。

    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Nested Class Summary

      - - - - - - - - - - -
      Nested Classes 
      Modifier and TypeInterface and Description
      static class TimeSeries.BindType -
      TimeSeriesならびにその型パラメータと結びつく Container.BindTypeを構築するための、補助クラスです。
      -
      -
    • -
    - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Methods 
      Modifier and TypeMethod and Description
      AggregationResultaggregate(java.util.Date start, - java.util.Date end, - java.lang.String column, - Aggregation aggregation) -
      開始・終了時刻指定を指定して、ロウ集合またはその特定のカラムに対し集計演算を行います。
      -
      booleanappend(R row) -
      GridDB上の現在時刻をロウキーとして、ロウを新規作成または更新します。
      -
      Rget(java.util.Date key) -
      指定のオプションに従い、ロウキーに対応するロウの内容を取得します。
      -
      Rget(java.util.Date base, - TimeOperator timeOp) -
      指定の時刻を基準として、関係する1つのロウを取得します。
      -
      Rinterpolate(java.util.Date base, - java.lang.String column) -
      指定時刻に相当するロウオブジェクトについて、線形補間などを行い生成します。
      -
      booleanput(java.util.Date key, - R row) -
      必要に応じ別途ロウキーを指定して、ロウを新規作成または更新します。
      -
      Query<R>query(java.util.Date start, - java.util.Date end) -
      開始時刻・終了時刻を指定して、特定範囲のロウ集合を求めるクエリを作成します。
      -
      Query<R>query(java.util.Date start, - java.util.Date end, - QueryOrder order) -
      開始時刻・終了時刻・順序を指定して、特定範囲のロウ集合を求めるクエリを作成します。
      -
      Query<R>query(java.util.Date start, - java.util.Date end, - java.util.Set<java.lang.String> columnSet, - InterpolationMode mode, - int interval, - TimeUnit intervalUnit) -
      特定範囲のロウ集合をサンプリングするクエリを作成します。
      -
      booleanremove(java.util.Date key) -
      指定のロウキーに対応するロウを削除します。
      -
      - -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        aggregate

        -
        AggregationResult aggregate(java.util.Date start,
        -                          java.util.Date end,
        -                          java.lang.String column,
        -                          Aggregation aggregation)
        -                            throws GSException
        -
        開始・終了時刻指定を指定して、ロウ集合またはその特定のカラムに対し集計演算を行います。 -

        columnは、aggregation次第で無視されることがあります。演算対象には、開始・終了時刻と合致する境界上のロウも含まれます。終了時刻より新しい開始時刻を指定した場合、すべてのロウが対象外となります。

        -
        Parameters:
        start - 開始時刻
        end - 終了時刻
        column - 集計対象のカラム名。合計演算のように、特定のカラムを対象としない場合はnull
        aggregation - 集計方法
        -
        Returns:
        集計結果が設定された場合、対応するAggregationResult。設定されなかった場合はnull。詳細はAggregationの定義を参照のこと
        -
        Throws:
        -
        GSException - 指定の演算方法で許可されていない型のカラムを指定した場合
        -
        GSException - この処理またはトランザクションのタイムアウト、このコンテナの削除もしくはスキーマ変更、接続障害が発生した場合、クローズ後に呼び出された場合
        -
        java.lang.NullPointerException - startendaggregationnullが指定された場合
        See Also:
        Aggregation
        -
      • -
      - - - - - -
        -
      • -

        append

        -
        boolean append(R row)
        -               throws GSException
        -
        GridDB上の現在時刻をロウキーとして、ロウを新規作成または更新します。 -

        GridDB上の現在時刻に相当するTIMESTAMP値をロウキーとする点を除き、 put(Date, Object)と同様に振る舞います。指定のロウオブジェクト内のロウキーは無視されます。

        - -

        圧縮オプションが設定された状態の時系列に対しては、 GridDB上の現在時刻より新しい時刻のロウが存在しない場合のみ使用できます。最も新しい時刻を持つ既存ロウの時刻が現在時刻と一致する場合、何も変更は行わず既存ロウの内容を保持します。

        - -

        手動コミットモードの場合、対象のロウがロックされます。また、内部格納単位が同一の他のロウもロックされます。

        -
        Parameters:
        row - 新規作成または更新するロウの内容と対応するロウオブジェクト
        -
        Returns:
        GridDB上の現在時刻と一致するロウが存在したかどうか
        -
        Throws:
        -
        GSException - この時系列について圧縮オプションが設定されており、現在時刻より新しい時刻のロウが存在した場合
        -
        GSException - この処理またはトランザクションのタイムアウト、このコンテナの削除もしくはスキーマ変更、接続障害が発生した場合、クローズ後に呼び出された場合、またはサポート範囲外の値がロウオブジェクトに含まれていた場合
        -
        java.lang.ClassCastException - 指定のキーもしくはロウオブジェクトと、マッピング処理で使用される型との間で対応しないものがある場合
        -
        java.lang.NullPointerException - rownullが指定された場合。また、ロウフィールドに対応するロウオブジェクト内のオブジェクトの中に、設定されていないものが存在した場合
        See Also:
        put(Date, Object), -TimeSeriesProperties.getCompressionMethod()
        -
      • -
      - - - -
        -
      • -

        get

        -
        R get(java.util.Date key)
        -      throws GSException
        -
        指定のオプションに従い、ロウキーに対応するロウの内容を取得します。 -

        Container.get(Object)と同様です。ただし、ロウキーの型が固定であるため、ClassCastExceptionが送出されることはありません。

        -
        -
        Specified by:
        -
        get in interface Container<java.util.Date,R>
        -
        Returns:
        対応するロウが存在したかどうか
        -
        Throws:
        -
        GSException - この処理またはトランザクションのタイムアウト、このコンテナの削除もしくはスキーマ変更、接続障害が発生した場合、クローズ後に呼び出された場合、またはサポート範囲外の値がキーとして設定されていた場合
        -
        java.lang.NullPointerException - 引数にnullが指定された場合
        See Also:
        Container.get(Object)
        -
      • -
      - - - -
        -
      • -

        get

        -
        R get(java.util.Date base,
        -    TimeOperator timeOp)
        -      throws GSException
        -
        指定の時刻を基準として、関係する1つのロウを取得します。
        -
        Parameters:
        base - 基準となる時刻
        timeOp - 取得方法
        -
        Returns:
        条件に一致するロウ。存在しない場合はnull
        -
        Throws:
        -
        GSException - この処理またはトランザクションのタイムアウト、このコンテナの削除もしくはスキーマ変更、接続障害が発生した場合、クローズ後に呼び出された場合、またはサポート範囲外の値が基準時刻として指定された場合
        -
        java.lang.NullPointerException - 引数にnullが指定された場合
        -
      • -
      - - - -
        -
      • -

        interpolate

        -
        R interpolate(java.util.Date base,
        -            java.lang.String column)
        -              throws GSException
        -
        指定時刻に相当するロウオブジェクトについて、線形補間などを行い生成します。 -

        一致する時系列ロウの指定のカラムの値、もしくは、前後時刻のロウの指定カラムの値を線形補間して得られた値を基にロウオブジェクトを生成します。前後時刻のロウの少なくともいずれか、もしくは、一致するロウが存在しない場合は生成されません。

        - -

        補間対象として指定できるカラムの型は、数値型のみです。指定のカラムならびにロウキー以外のフィールドには、指定時刻と同一またはより前の時刻のロウのうち、最も新しい時刻を持つロウのフィールドの値が設定されます。

        -
        Parameters:
        base - 基準となる時刻
        column - 線形補間対象のカラム
        -
        Throws:
        -
        GSException - 対応する名前のカラムが存在しない場合。また、サポートされていない型のカラムが指定された場合
        -
        GSException - この処理またはトランザクションのタイムアウト、このコンテナの削除もしくはスキーマ変更、接続障害が発生した場合、クローズ後に呼び出された場合、またはサポート範囲外の値が基準時刻として指定された場合
        -
        java.lang.NullPointerException - 引数にnullが指定された場合
        -
      • -
      - - - - - -
        -
      • -

        put

        -
        boolean put(java.util.Date key,
        -          R row)
        -            throws GSException
        -
        必要に応じ別途ロウキーを指定して、ロウを新規作成または更新します。 -

        keyにより別途ロウキーを指定した場合はその値を、指定しない場合は指定のロウオブジェクト内のロウキーを基にロウを新規作成します。

        - -

        圧縮オプションが設定された状態の時系列に対しては、最も新しい時刻を持つ既存ロウより新しい時刻のロウのみを新規作成できます。最も新しい時刻を持つ既存ロウの時刻が指定の時刻と一致する場合、何も変更は行わず既存ロウの内容を保持します。

        - -

        手動コミットモードの場合、対象のロウがロックされます。また、内部格納単位が同一の他のロウもロックされます。

        -
        -
        Specified by:
        -
        put in interface Container<java.util.Date,R>
        -
        Parameters:
        key - 処理対象のロウキー
        row - 新規作成または更新するロウの内容と対応するロウオブジェクト
        -
        Returns:
        指定のロウキーと一致するロウが存在したかどうか
        -
        Throws:
        -
        GSException - この時系列について圧縮オプションが設定されており、指定時刻より新しい時刻のロウが存在した場合
        -
        GSException - この処理またはトランザクションのタイムアウト、このコンテナの削除もしくはスキーマ変更、接続障害が発生した場合、クローズ後に呼び出された場合、またはサポート範囲外の値がキーまたはロウオブジェクトに含まれていた場合
        -
        java.lang.ClassCastException - 指定のキーもしくはロウオブジェクトと、マッピング処理で使用される型との間で対応しないものがある場合
        -
        java.lang.NullPointerException - rownullが指定された場合。また、ロウフィールドに対応するロウオブジェクト内のオブジェクトの中に、設定されていないものが存在した場合
        See Also:
        Container.put(Object, Object), -TimeSeriesProperties.getCompressionMethod()
        -
      • -
      - - - -
        -
      • -

        query

        -
        Query<R> query(java.util.Date start,
        -             java.util.Date end)
        -               throws GSException
        -
        開始時刻・終了時刻を指定して、特定範囲のロウ集合を求めるクエリを作成します。 -

        取得対象には、開始・終了時刻と合致する境界上のロウも含まれます。終了時刻より新しい開始時刻を指定した場合、すべてのロウが対象外となります。要求するロウ集合は昇順、すなわち古い時刻から新しい時刻の順となります。

        - -

        Query.fetch(boolean)を通じてロウ集合を求める際、更新用ロックのオプションを有効にすることもできます。

        -
        Parameters:
        start - 開始時刻またはnullnullの場合、この時系列上の最も古いロウの時刻が開始時刻として指定されたものとみなす
        end - 終了時刻またはnullnullの場合、この時系列上の最も新しいロウの時刻が終了時刻として指定されたものとみなす
        -
        Throws:
        -
        GSException - 現バージョンでは送出されない
        -
      • -
      - - - -
        -
      • -

        query

        -
        Query<R> query(java.util.Date start,
        -             java.util.Date end,
        -             QueryOrder order)
        -               throws GSException
        -
        開始時刻・終了時刻・順序を指定して、特定範囲のロウ集合を求めるクエリを作成します。 -

        取得対象には、開始・終了時刻と合致する境界上のロウも含まれます。終了時刻より新しい開始時刻を指定した場合、すべてのロウが対象外となります。

        - -

        Query.fetch(boolean)を通じてロウ集合を求める際、更新用ロックのオプションを有効にすることもできます。

        - -

        nullを指定できない引数でnullを指定したことによる NullPointerExceptionは送出されません。引数に誤りがあった場合、得られたクエリをフェッチする際に例外が送出されます。

        -
        Parameters:
        start - 開始時刻またはnullnullの場合、この時系列上の最も古いロウの時刻が開始時刻として指定されたものとみなす
        end - 終了時刻またはnullnullの場合、この時系列上の最も新しいロウの時刻が終了時刻として指定されたものとみなす
        order - 取得するロウ集合の時刻順序。nullは指定できない。 QueryOrder.ASCENDINGの場合は古い時刻から新しい時刻の順、 QueryOrder.DESCENDINGの場合は新しい時刻から古い時刻の順となる
        -
        Throws:
        -
        GSException - 現バージョンでは送出されない
        -
      • -
      - - - -
        -
      • -

        query

        -
        Query<R> query(java.util.Date start,
        -             java.util.Date end,
        -             java.util.Set<java.lang.String> columnSet,
        -             InterpolationMode mode,
        -             int interval,
        -             TimeUnit intervalUnit)
        -               throws GSException
        -
        特定範囲のロウ集合をサンプリングするクエリを作成します。 -

        サンプリング対象の時刻は、開始時刻に対し非負整数倍のサンプリング間隔を加えた時刻のうち、終了時刻と同じかそれ以前のもののみです。終了時刻より新しい開始時刻を指定した場合、すべてのロウが対象外となります。

        - -

        作成したクエリを実行すると、各サンプリング位置の時刻と一致するロウが存在する場合は該当ロウの値を、存在しない場合はcolumnSetmode引数の指定に従い補間された値を使用しロウ集合を生成します。個別の補間方法については、InterpolationModeの定義を参照してください。

        - -

        補間のために参照する必要のあるロウが存在しない場合、該当するサンプリング時刻のロウは生成されず、該当箇所の数だけ結果件数が減少します。サンプリング間隔をより短く設定すると、補間方法次第では異なるサンプリング時刻であっても同一のロウの内容が使用される可能性が高まります。

        - -

        Query.fetch(boolean)を通じてロウ集合を求める際、更新用ロックのオプションを有効にすることはできません。

        - -

        現バージョンでは、GSExceptionや、nullを指定できない引数でnullを指定したことによるNullPointerExceptionは送出されません。引数に誤りがあった場合、得られたクエリをフェッチする際に例外が送出されます。

        -
        Parameters:
        start - 開始時刻。nullは指定できない
        end - 終了時刻。nullは指定できない
        columnSet - modeに基づき特定の補間処理を適用するカラムの名前の集合。空集合の場合は適用対象のカラムを何も指定しないことを示す。 nullの場合は空集合を指定した場合と同様
        mode - 補間方法。nullは指定できない
        interval - サンプリング間隔。0および負の値は指定できない
        intervalUnit - サンプリング間隔の時間単位。 TimeUnit.YEARTimeUnit.MONTHは指定できない。また、nullは指定できない
        -
        Throws:
        -
        GSException - 現バージョンでは送出されない
        -
      • -
      - - - -
        -
      • -

        remove

        -
        boolean remove(java.util.Date key)
        -               throws GSException
        -
        指定のロウキーに対応するロウを削除します。 -

        ロウキーに対応するカラムが存在する場合のみ使用できます。対応するロウが存在しない場合は何も変更しません。

        - -

        圧縮オプションが設定された状態の時系列に対しては使用できません。

        - -

        手動コミットモードの場合、対象のロウはロックされます。

        -
        -
        Specified by:
        -
        remove in interface Container<java.util.Date,R>
        -
        Returns:
        対応するロウが存在したかどうか
        -
        Throws:
        -
        GSException - ロウキーに対応するカラムが存在しない場合
        -
        GSException - この時系列について圧縮オプションが設定されていた場合
        -
        GSException - この処理またはトランザクションのタイムアウト、このコンテナの削除もしくはスキーマ変更、接続障害が発生した場合、クローズ後に呼び出された場合、またはサポート範囲外の値がキーとして指定された場合
        -
        java.lang.ClassCastException - 指定のロウキーがマッピング処理で使用されるロウキーの型と対応しない場合
        -
        java.lang.NullPointerException - 引数にnullが指定された場合
        See Also:
        Container.remove(Object), -TimeSeriesProperties.getCompressionMethod()
        -
      • -
      -
    • -
    -
  • -
-
-
- - - -
-
-

Class TimeSeriesProperties

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • com.toshiba.mwcloud.gs.TimeSeriesProperties
    • -
    -
  • -
-
-
    -
  • -
    -
    All Implemented Interfaces:
    -
    java.lang.Cloneable
    -
    -
    -
    -
    public class TimeSeriesProperties
    -extends java.lang.Object
    -implements java.lang.Cloneable
    -
    時系列を新規作成または変更する際に使用される、オプションの構成情報を表します。 -

    カラム名の表記、もしくは、個別に圧縮設定できるカラム数の上限などの内容の妥当性について、必ずしも検査するとは限りません。

    -
  • -
-
-
-
    -
  • - - - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Methods 
      Modifier and TypeMethod and Description
      TimeSeriesPropertiesclone() -
      このオブジェクトと同一設定のTimeSeriesPropertiesを作成します。
      -
      CompressionMethodgetCompressionMethod() -
      時系列圧縮方式の種別を取得します。
      -
      java.lang.DoublegetCompressionRate(java.lang.String column) -
      指定のカラムについて、相対誤差あり間引き圧縮における、値がとりうる範囲を基準とした誤差境界値の比率を取得します。
      -
      java.lang.DoublegetCompressionSpan(java.lang.String column) -
      指定のカラムについての、相対誤差あり間引き圧縮で用いられる、値がとりうる範囲の最大値と最小値の差を取得します。
      -
      java.lang.DoublegetCompressionWidth(java.lang.String column) -
      指定のカラムについての、絶対誤差あり間引き圧縮における誤差境界の幅を取得します。
      -
      intgetCompressionWindowSize() -
      間引き圧縮において連続して間引きされるロウの最大期間を取得します。
      -
      TimeUnitgetCompressionWindowSizeUnit() -
      間引き圧縮において連続して間引きされるロウの最大期間の単位を取得します。
      -
      intgetExpirationDivisionCount() -
      期限に到達したロウデータの解放単位と対応する、有効期間に対しての分割数を取得します。
      -
      intgetRowExpirationTime() -
      ロウの有効期限の基準となる経過期間を取得します。
      -
      TimeUnitgetRowExpirationTimeUnit() -
      ロウの有効期限の基準とする経過期間の単位を取得します。
      -
      java.util.Set<java.lang.String>getSpecifiedColumns() -
      追加設定のあるカラムの名前をすべて取得します。
      -
      java.lang.BooleanisCompressionRelative(java.lang.String column) -
      指定のカラムについて、誤差あり間引き圧縮の誤差判定基準値が相対値かどうかを返します。
      -
      voidsetAbsoluteHiCompression(java.lang.String column, - double width) -
      指定のカラムについて、絶対誤差あり間引き圧縮のパラメータを設定します。
      -
      voidsetCompressionMethod(CompressionMethod compressionMethod) -
      時系列圧縮方式の種別を設定します。
      -
      voidsetCompressionWindowSize(int compressionWindowSize, - TimeUnit compressionWindowSizeUnit) -
      間引き圧縮において連続して間引きされるロウの最大期間を設定します。
      -
      voidsetExpirationDivisionCount(int count) -
      有効期間に対する分割数により、期限に到達したロウデータの解放単位を設定します。
      -
      voidsetRelativeHiCompression(java.lang.String column, - double rate, - double span) -
      指定のカラムについて、相対誤差あり間引き圧縮のパラメータを設定します。
      -
      voidsetRowExpiration(int elapsedTime, - TimeUnit timeUnit) -
      ロウの有効期限の基準となる経過期間を設定します。
      -
      -
        -
      • - - -

        Methods inherited from class java.lang.Object

        -equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        TimeSeriesProperties

        -
        public TimeSeriesProperties()
        -
        標準設定のTimeSeriesPropertiesを作成します。
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - - - - - -
        -
      • -

        getCompressionMethod

        -
        public CompressionMethod getCompressionMethod()
        -
        時系列圧縮方式の種別を取得します。
        -
        Returns:
        圧縮方式の種別。nullは返却されない
        -
      • -
      - - - -
        -
      • -

        getCompressionRate

        -
        public java.lang.Double getCompressionRate(java.lang.String column)
        -
        指定のカラムについて、相対誤差あり間引き圧縮における、値がとりうる範囲を基準とした誤差境界値の比率を取得します。 -

        値がとりうる範囲は、getCompressionWidth(String)により取得できます。

        -
        Parameters:
        column - カラム名
        -
        Returns:
        指定のカラム名に対応する設定がある場合はその設定値、ない場合はnull
        -
        Throws:
        -
        java.lang.IllegalArgumentException - 制限に反するカラム名が指定されたことを検知できた場合
        -
        java.lang.NullPointerException - 引数にnullが指定された場合
        -
      • -
      - - - -
        -
      • -

        getCompressionSpan

        -
        public java.lang.Double getCompressionSpan(java.lang.String column)
        -
        指定のカラムについての、相対誤差あり間引き圧縮で用いられる、値がとりうる範囲の最大値と最小値の差を取得します。
        -
        Parameters:
        column - カラム名
        -
        Returns:
        指定のカラム名に対応する設定がある場合はその設定値、ない場合はnull
        -
        Throws:
        -
        java.lang.IllegalArgumentException - 制限に反するカラム名が指定されたことを検知できた場合
        -
        java.lang.NullPointerException - 引数にnullが指定された場合
        -
      • -
      - - - -
        -
      • -

        getCompressionWidth

        -
        public java.lang.Double getCompressionWidth(java.lang.String column)
        -
        指定のカラムについての、絶対誤差あり間引き圧縮における誤差境界の幅を取得します。 -

        誤差境界の幅とは、間引き判定対象の値と間引きした場合に線形補間される値との差として、許容される最大の値です。

        -
        Parameters:
        column - カラム名
        -
        Returns:
        指定のカラム名に対応する設定がある場合はその設定値、ない場合はnull
        -
        Throws:
        -
        java.lang.IllegalArgumentException - 制限に反するカラム名が指定されたことを検知できた場合
        -
        java.lang.NullPointerException - 引数にnullが指定された場合
        -
      • -
      - - - -
        -
      • -

        getCompressionWindowSize

        -
        public int getCompressionWindowSize()
        -
        間引き圧縮において連続して間引きされるロウの最大期間を取得します。
        -
        Returns:
        最大連続間引き期間。無設定の場合は-1
        -
      • -
      - - - -
        -
      • -

        getCompressionWindowSizeUnit

        -
        public TimeUnit getCompressionWindowSizeUnit()
        -
        間引き圧縮において連続して間引きされるロウの最大期間の単位を取得します。
        -
        Returns:
        最大連続間引き期間の単位。無設定の場合はnull
        -
      • -
      - - - -
        -
      • -

        getExpirationDivisionCount

        -
        public int getExpirationDivisionCount()
        -
        期限に到達したロウデータの解放単位と対応する、有効期間に対しての分割数を取得します。
        -
        Returns:
        有効期間に対する分割数。無設定の場合は-1
        Since:
        -
        2.0
        -
        See Also:
        setExpirationDivisionCount(int)
        -
      • -
      - - - -
        -
      • -

        getRowExpirationTime

        -
        public int getRowExpirationTime()
        -
        ロウの有効期限の基準となる経過期間を取得します。
        -
        Returns:
        有効期限の基準となる経過期間。無設定の場合は-1
        -
      • -
      - - - -
        -
      • -

        getRowExpirationTimeUnit

        -
        public TimeUnit getRowExpirationTimeUnit()
        -
        ロウの有効期限の基準とする経過期間の単位を取得します。
        -
        Returns:
        有効期限の基準とする経過期間の単位。無設定の場合はnull
        -
      • -
      - - - -
        -
      • -

        getSpecifiedColumns

        -
        public java.util.Set<java.lang.String> getSpecifiedColumns()
        -
        追加設定のあるカラムの名前をすべて取得します。 -

        返却されたオブジェクトの内容を呼び出し後に変更したとしても、このオブジェクトの内容は変化しません。また、このオブジェクトに対する操作により、返却されたオブジェクトの内容が変化することはありません。

        -
        Returns:
        追加設定のあるカラム名の集合
        -
      • -
      - - - -
        -
      • -

        isCompressionRelative

        -
        public java.lang.Boolean isCompressionRelative(java.lang.String column)
        -
        指定のカラムについて、誤差あり間引き圧縮の誤差判定基準値が相対値かどうかを返します。
        -
        Parameters:
        column - カラム名
        -
        Returns:
        指定のカラム名に対応する設定がある場合はその設定値、ない場合はnull
        -
        Throws:
        -
        java.lang.IllegalArgumentException - 制限に反するカラム名が指定されたことを検知できた場合
        -
        java.lang.NullPointerException - 引数にnullが指定された場合
        -
      • -
      - - - -
        -
      • -

        setAbsoluteHiCompression

        -
        public void setAbsoluteHiCompression(java.lang.String column,
        -                            double width)
        -
        指定のカラムについて、絶対誤差あり間引き圧縮のパラメータを設定します。 -

        異なる圧縮方式が設定されていた場合、間引き圧縮設定に変更されます。

        - -

        パラメータ設定できるカラムの型、ならびに、カラム数の上限は、 setRelativeHiCompression(String, double, double)と同様です。

        -
        Parameters:
        column - カラム名
        width - getCompressionWidth(String)と対応する誤差境界の幅
        -
        Throws:
        -
        java.lang.IllegalArgumentException - 制限に反するカラム名が指定されたことを検知できた場合
        -
        java.lang.NullPointerException - 引数にnullが指定された場合
        -
      • -
      - - - -
        -
      • -

        setCompressionMethod

        -
        public void setCompressionMethod(CompressionMethod compressionMethod)
        -
        時系列圧縮方式の種別を設定します。 -

        異なる圧縮方式に変更した場合、カラム別の設定はすべて解除されます。

        -
        Parameters:
        compressionMethod - 圧縮方式の種別
        -
        Throws:
        -
        java.lang.NullPointerException - 引数にnullが指定された場合
        -
      • -
      - - - -
        -
      • -

        setCompressionWindowSize

        -
        public void setCompressionWindowSize(int compressionWindowSize,
        -                            TimeUnit compressionWindowSizeUnit)
        -
        間引き圧縮において連続して間引きされるロウの最大期間を設定します。 -

        この期間が設定された時系列のロウについて、前方のロウと指定の期間以上時刻が離れていた場合、間引き圧縮として間引き可能な条件を満たしていたとしても、間引かれなくなります。

        - -

        時系列圧縮方式としてCompressionMethod.NOが設定されていた場合、この期間の設定は無視されます。

        - -

        時系列圧縮方式としてCompressionMethod.HIまたは CompressionMethod.SSが設定されており、この期間について設定されなかった場合、TIMESTAMP型の取りうる値の範囲全体が期間として設定されたとみなされます。

        - -

        前方のロウと指定の期間以上時刻が離れておらず、かつ、間引き圧縮として間引き可能な条件を満たしていたとしても、格納先の内部の配置などによっては間引かれない場合があります。

        -
        Parameters:
        compressionWindowSize - 最大連続間引き期間。0 -以下の値は指定できない
        compressionWindowSizeUnit - 最大連続間引き期間を表す単位。 TimeUnit.YEARTimeUnit.MONTHは指定できない
        -
        Throws:
        -
        java.lang.IllegalArgumentException - 範囲外のcompressionWindowSizecompressionWindowSizeUnitが指定された場合
        -
        java.lang.IllegalArgumentException - 制限に反するカラム名が指定されたことを検知できた場合
        -
        java.lang.NullPointerException - 引数にnullが指定された場合
        -
      • -
      - - - -
        -
      • -

        setExpirationDivisionCount

        -
        public void setExpirationDivisionCount(int count)
        -
        有効期間に対する分割数により、期限に到達したロウデータの解放単位を設定します。 -

        分割数を設定すると、期限に到達したロウデータの管理領域を解放するための条件を制御できます。期限に到達したロウデータが分割数に相当する期間だけ集まった時点で解放しようとします。

        - -

        分割数の上限については、GridDBテクニカルリファレンスを参照してください。上限を超えたオプションを指定して時系列を作成することはできません。

        - -

        ロウの有効期限の基準となる経過期間の設定がない場合、この分割数の設定は無視され無設定となります。一方、ロウの有効期限の基準となる経過期間の設定がある場合にこの分割数の設定を省略すると、作成される時系列にはGridDBクラスタ上のデフォルトの分割数が設定されます。

        -
        Parameters:
        count - 有効期間に対する分割数。0以下の値は指定できない
        -
        Throws:
        -
        java.lang.IllegalArgumentException - 0以下の分割数が指定された場合
        Since:
        -
        2.0
        -
      • -
      - - - -
        -
      • -

        setRelativeHiCompression

        -
        public void setRelativeHiCompression(java.lang.String column,
        -                            double rate,
        -                            double span)
        -
        指定のカラムについて、相対誤差あり間引き圧縮のパラメータを設定します。 -

        異なる圧縮方式が設定されていた場合、間引き圧縮設定に変更されます。

        - -

        ratespanの積は、絶対誤差あり間引き圧縮にて getCompressionWidth(String)により得られる値と等価です。

        - -

        パラメータ設定できるカラムの型は、以下のいずれかに限定されます。

        - - -

        1つの時系列に対してパラメータ設定できるカラムの上限数については、 GridDBテクニカルリファレンスを参照してください。上限を超えるオプションは作成できますが、上限を超えたオプションを指定して時系列を作成することはできません。

        -
        Parameters:
        column - カラム名
        rate - spanを基準とした相対誤差境界値。0 -以上1以下でなければならない
        span - 対象のカラムの値がとりうる範囲の最大値と最小値の差
        -
        Throws:
        -
        java.lang.IllegalArgumentException - 制限に反するカラム名が指定されたことを検知できた場合、また、rateに範囲外の値を指定した場合
        -
        java.lang.NullPointerException - 引数にnullが指定された場合
        -
      • -
      - - - -
        -
      • -

        setRowExpiration

        -
        public void setRowExpiration(int elapsedTime,
        -                    TimeUnit timeUnit)
        -
        ロウの有効期限の基準となる経過期間を設定します。 -

        ロウの有効期限の時刻は、ロウキーの時刻から指定の経過期間を加算することで求まります。有効期限の時刻がGridDB上の現在時刻よりも古いロウは、有効期限の切れたロウとみなされます。期限切れのロウは、検索や更新といったロウ操作の対象から外れ、存在しないものとみなされます。対応するGridDB上の内部データは、随時削除されます。

        - -

        有効期限超過の判定に使用される現在時刻は、GridDBの各ノードの実行環境に依存します。したがって、ネットワークの遅延や実行環境の時刻設定のずれなどにより、このVMの時刻より前に期限切れ前のロウにアクセスできなくなる場合や、このVMの時刻より後に期限切れロウにアクセスできる場合があります。意図しないロウの喪失を避けるために、最低限必要な期間よりも大きな値を設定することを推奨します。

        - -

        作成済みの時系列の設定を変更することはできません。

        -
        Parameters:
        elapsedTime - 基準とする経過期間。0以下の値は指定できない
        timeUnit - 経過期間の単位。TimeUnit.YEARTimeUnit.MONTHは指定できない
        -
        Throws:
        -
        java.lang.IllegalArgumentException - 範囲外のelapsedTimetimeUnitが指定された場合
        -
        java.lang.IllegalArgumentException - 制限に反するカラム名が指定されたことを検知できた場合
        -
        java.lang.NullPointerException - 引数にnullが指定された場合
        -
      • -
      -
    • -
    -
  • -
-
-
- - - -
-
-

Enum TimeUnit

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • java.lang.Enum<TimeUnit>
    • -
    • -
        -
      • com.toshiba.mwcloud.gs.TimeUnit
      • -
      -
    • -
    -
  • -
-
-
    -
  • -
    -
    All Implemented Interfaces:
    -
    java.io.Serializable, java.lang.Comparable<TimeUnit>
    -
    -
    -
    -
    public enum TimeUnit
    -extends java.lang.Enum<TimeUnit>
    -
    時系列処理で用いる時間の単位を示します。
    -
  • -
-
-
-
    -
  • - - - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - - - - - -
      Methods 
      Modifier and TypeMethod and Description
      static TimeUnitvalueOf(java.lang.String name) -
      Returns the enum constant of this type with the specified name.
      -
      static TimeUnit[]values() -
      Returns an array containing the constants of this enum type, in -the order they are declared.
      -
      -
        -
      • - - -

        Methods inherited from class java.lang.Enum

        -clone, compareTo, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf
      • -
      -
        -
      • - - -

        Methods inherited from class java.lang.Object

        -getClass, notify, notifyAll, wait, wait, wait
      • -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Enum Constant Detail

      - - - -
        -
      • -

        DAY

        -
        public static final TimeUnit DAY
        -
      • -
      - - - -
        -
      • -

        HOUR

        -
        public static final TimeUnit HOUR
        -
      • -
      - - - -
        -
      • -

        MILLISECOND

        -
        public static final TimeUnit MILLISECOND
        -
      • -
      - - - -
        -
      • -

        MINUTE

        -
        public static final TimeUnit MINUTE
        -
      • -
      - - - -
        -
      • -

        MONTH

        -
        public static final TimeUnit MONTH
        -
      • -
      - - - -
        -
      • -

        SECOND

        -
        public static final TimeUnit SECOND
        -
      • -
      - - - -
        -
      • -

        YEAR

        -
        public static final TimeUnit YEAR
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        valueOf

        -
        public static TimeUnit valueOf(java.lang.String name)
        -
        Returns the enum constant of this type with the specified name. -The string must match exactly an identifier used to declare an -enum constant in this type. (Extraneous whitespace characters are -not permitted.)
        -
        Parameters:
        name - the name of the enum constant to be returned.
        -
        Returns:
        the enum constant with the specified name
        -
        Throws:
        -
        java.lang.IllegalArgumentException - if this enum type has no constant -with the specified name
        -
        java.lang.NullPointerException - if the argument is null
        -
      • -
      - - - -
        -
      • -

        values

        -
        public static TimeUnit[] values()
        -
        Returns an array containing the constants of this enum type, in -the order they are declared. This method may be used to iterate -over the constants as follows: -
        -for (TimeUnit c : TimeUnit.values())
        -    System.out.println(c);
        -
        -
        Returns:
        an array containing the constants of this enum type, in -the order they are declared
        -
      • -
      -
    • -
    -
  • -
-
-
- - - -
-
-

Class TimestampUtils

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • com.toshiba.mwcloud.gs.TimestampUtils
    • -
    -
  • -
-
-
    -
  • -
    -
    -
    public class TimestampUtils
    -extends java.lang.Object
    -
    時刻データを操作するためのユーティリティ機能を提供します。 -

    TQL文の構築や、TQLと同一表記のTIMESTAMP値の処理を補助するために使用できます。

    - -

    実行環境のタイムゾーン、ロケール設定には依存しません。

    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Constructor Summary

      - - - - - - - - -
      Constructors 
      Constructor and Description
      TimestampUtils() -
      Deprecated. 
      -
      -
    • -
    - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Methods 
      Modifier and TypeMethod and Description
      static java.util.Dateadd(java.util.Date timestamp, - int amount, - TimeUnit timeUnit) -
      時刻に一定の値を加算します。
      -
      static java.util.Dateadd(java.util.Date timestamp, - int amount, - TimeUnit timeUnit, - java.util.TimeZone zone) -
      指定のタイムゾーン設定を用い、時刻に一定の値を加算します。
      -
      static java.util.Datecurrent() -
      現在時刻を求めます。
      -
      static java.util.CalendarcurrentCalendar() -
      現在時刻をCalendarとして求めます。
      -
      static java.lang.Stringformat(java.util.Date timestamp) -
      TQLのTIMESTAMP値表記に従い、時刻の文字列表現を求めます。
      -
      static java.lang.Stringformat(java.util.Date timestamp, - java.util.TimeZone zone) -
      指定のタイムゾーン設定を用い、TQLのTIMESTAMP値表記に従って時刻の文字列表現を求めます。
      -
      static java.text.DateFormatgetFormat() -
      TQLのTIMESTAMP値表記と対応する、日付フォーマットを取得します。
      -
      static java.text.DateFormatgetFormat(java.util.TimeZone zone) -
      指定のタイムゾーン設定が適用され、TQLのTIMESTAMP値表記と対応する、日付フォーマットを取得します。
      -
      static java.util.Dateparse(java.lang.String source) -
      TQLのTIMESTAMP値表記に従い、指定の文字列に対応するDateを求めます。
      -
      -
        -
      • - - -

        Methods inherited from class java.lang.Object

        -clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        TimestampUtils

        -
        @Deprecated
        -public TimestampUtils()
        -
        Deprecated. 
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        add

        -
        public static java.util.Date add(java.util.Date timestamp,
        -                 int amount,
        -                 TimeUnit timeUnit)
        -
        時刻に一定の値を加算します。 -

        amountに負の値を指定することで、指定の時刻より前の時刻を求めることができます。

        - -

        現バージョンでは、算出の際に使用されるタイムゾーンはUTCです。

        -
        Parameters:
        timestamp - 対象とする時刻
        amount - 加算する値
        timeUnit - 加算する値の単位
        -
        Returns:
        加算された値
        -
        Throws:
        -
        java.lang.NullPointerException - timestamptimeUnitnullが指定された場合
        -
      • -
      - - - -
        -
      • -

        add

        -
        public static java.util.Date add(java.util.Date timestamp,
        -                 int amount,
        -                 TimeUnit timeUnit,
        -                 java.util.TimeZone zone)
        -
        指定のタイムゾーン設定を用い、時刻に一定の値を加算します。 -

        演算に用いる時間の単位によっては、タイムゾーン設定の影響を受けない場合があります。

        -
        Parameters:
        timestamp - 対象とする時刻
        amount - 加算する値
        timeUnit - 加算する値の単位
        zone - 演算に用いるタイムゾーン設定
        -
        Returns:
        加算された値
        -
        Throws:
        -
        java.lang.NullPointerException - timestamptimeUnitnullが指定された場合
        Since:
        -
        4.3
        -
        See Also:
        add(Date, int, TimeUnit)
        -
      • -
      - - - -
        -
      • -

        current

        -
        public static java.util.Date current()
        -
        現在時刻を求めます。
        -
      • -
      - - - -
        -
      • -

        currentCalendar

        -
        public static java.util.Calendar currentCalendar()
        -
        現在時刻をCalendarとして求めます。 -

        現バージョンでは、タイムゾーンは常にUTCに設定されます。

        -
      • -
      - - - -
        -
      • -

        format

        -
        public static java.lang.String format(java.util.Date timestamp)
        -
        TQLのTIMESTAMP値表記に従い、時刻の文字列表現を求めます。 -

        現バージョンでは、変換の際に使用されるタイムゾーンはUTCです。

        -
        Parameters:
        timestamp - 対象とする時刻
        -
        Throws:
        -
        java.lang.NullPointerException - 引数にnullが指定された場合
        -
      • -
      - - - -
        -
      • -

        format

        -
        public static java.lang.String format(java.util.Date timestamp,
        -                      java.util.TimeZone zone)
        -
        指定のタイムゾーン設定を用い、TQLのTIMESTAMP値表記に従って時刻の文字列表現を求めます。
        -
        Parameters:
        timestamp - 対象とする時刻
        zone - 演算に用いるタイムゾーン設定
        -
        Returns:
        対応する文字列表現
        -
        Throws:
        -
        java.lang.NullPointerException - 引数にnullが指定された場合
        Since:
        -
        4.3
        -
        See Also:
        format(Date)
        -
      • -
      - - - -
        -
      • -

        getFormat

        -
        public static java.text.DateFormat getFormat()
        -
        TQLのTIMESTAMP値表記と対応する、日付フォーマットを取得します。 -

        現バージョンでは、タイムゾーンは常にUTCに設定されます。

        -
        Returns:
        日付フォーマット -

        年の値が負となる時刻は扱えません。

        -
      • -
      - - - -
        -
      • -

        getFormat

        -
        public static java.text.DateFormat getFormat(java.util.TimeZone zone)
        -
        指定のタイムゾーン設定が適用され、TQLのTIMESTAMP値表記と対応する、日付フォーマットを取得します。
        -
        Parameters:
        zone - 適用対象のタイムゾーン設定
        -
        Returns:
        日付フォーマット
        -
        Throws:
        -
        java.lang.NullPointerException - 引数にnullが指定された場合
        Since:
        -
        4.3
        -
      • -
      - - - -
        -
      • -

        parse

        -
        public static java.util.Date parse(java.lang.String source)
        -                            throws java.text.ParseException
        -
        TQLのTIMESTAMP値表記に従い、指定の文字列に対応するDateを求めます。
        -
        Parameters:
        source - 対象とする時刻の文字列表現
        -
        Returns:
        指定の文字列に対応するDate
        -
        Throws:
        -
        java.text.ParseException - 時刻の文字列表記と一致しない文字列が指定された場合
        -
        java.lang.NullPointerException - 引数にnullが指定された場合
        -
      • -
      -
    • -
    -
  • -
-
-
- - - -
-
-

Annotation Type TransientRowField

-
-
-
-
    -
  • -
    -
    -
    @Retention(value=RUNTIME)
    -@Target(value={FIELD,METHOD})
    -public @interface TransientRowField
    -
    Containerの処理において、マッピング対象外のロウフィールドであることを宣言します。
    -
  • -
-
-
- - - -
-
-

Enum TriggerInfo.EventType

-
-
-
    -
  • java.lang.Object
  • -
  • - -
  • -
-
-
    -
  • -
    -
    All Implemented Interfaces:
    -
    java.io.Serializable, java.lang.Comparable<TriggerInfo.EventType>
    -
    -
    -
    Enclosing class:
    -
    TriggerInfo
    -
    -
    -
    -
    public static enum TriggerInfo.EventType
    -extends java.lang.Enum<TriggerInfo.EventType>
    -
    トリガで監視対象とする更新操作種別を表します。
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Enum Constant Summary

      - - - - - - - - - - - -
      Enum Constants 
      Enum Constant and Description
      DELETE -
      コンテナに対するロウ削除を示します。
      -
      PUT -
      コンテナに対するロウ新規作成または更新を示します。
      -
      -
    • -
    - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - - - - - -
      Methods 
      Modifier and TypeMethod and Description
      static TriggerInfo.EventTypevalueOf(java.lang.String name) -
      Returns the enum constant of this type with the specified name.
      -
      static TriggerInfo.EventType[]values() -
      Returns an array containing the constants of this enum type, in -the order they are declared.
      -
      -
        -
      • - - -

        Methods inherited from class java.lang.Enum

        -clone, compareTo, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf
      • -
      -
        -
      • - - -

        Methods inherited from class java.lang.Object

        -getClass, notify, notifyAll, wait, wait, wait
      • -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Enum Constant Detail

      - - - -
        -
      • -

        DELETE

        -
        public static final TriggerInfo.EventType DELETE
        -
        コンテナに対するロウ削除を示します。
        -
      • -
      - - - -
        -
      • -

        PUT

        -
        public static final TriggerInfo.EventType PUT
        -
        コンテナに対するロウ新規作成または更新を示します。
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        valueOf

        -
        public static TriggerInfo.EventType valueOf(java.lang.String name)
        -
        Returns the enum constant of this type with the specified name. -The string must match exactly an identifier used to declare an -enum constant in this type. (Extraneous whitespace characters are -not permitted.)
        -
        Parameters:
        name - the name of the enum constant to be returned.
        -
        Returns:
        the enum constant with the specified name
        -
        Throws:
        -
        java.lang.IllegalArgumentException - if this enum type has no constant -with the specified name
        -
        java.lang.NullPointerException - if the argument is null
        -
      • -
      - - - -
        -
      • -

        values

        -
        public static TriggerInfo.EventType[] values()
        -
        Returns an array containing the constants of this enum type, in -the order they are declared. This method may be used to iterate -over the constants as follows: -
        -for (TriggerInfo.EventType c : TriggerInfo.EventType.values())
        -    System.out.println(c);
        -
        -
        Returns:
        an array containing the constants of this enum type, in -the order they are declared
        -
      • -
      -
    • -
    -
  • -
-
-
- - - -
-
-

Enum TriggerInfo.Type

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • java.lang.Enum<TriggerInfo.Type>
    • -
    • -
        -
      • com.toshiba.mwcloud.gs.TriggerInfo.Type
      • -
      -
    • -
    -
  • -
-
-
    -
  • -
    -
    All Implemented Interfaces:
    -
    java.io.Serializable, java.lang.Comparable<TriggerInfo.Type>
    -
    -
    -
    Enclosing class:
    -
    TriggerInfo
    -
    -
    -
    -
    public static enum TriggerInfo.Type
    -extends java.lang.Enum<TriggerInfo.Type>
    -
    トリガの種別を表します。
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Enum Constant Summary

      - - - - - - - - - - - -
      Enum Constants 
      Enum Constant and Description
      JMS -
      コンテナの更新時にJava Message Service(JMS)で通知するトリガ種別を示します。
      -
      REST -
      コンテナの更新時にRESTで通知するトリガ種別を示します。
      -
      -
    • -
    - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - - - - - -
      Methods 
      Modifier and TypeMethod and Description
      static TriggerInfo.TypevalueOf(java.lang.String name) -
      Returns the enum constant of this type with the specified name.
      -
      static TriggerInfo.Type[]values() -
      Returns an array containing the constants of this enum type, in -the order they are declared.
      -
      -
        -
      • - - -

        Methods inherited from class java.lang.Enum

        -clone, compareTo, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf
      • -
      -
        -
      • - - -

        Methods inherited from class java.lang.Object

        -getClass, notify, notifyAll, wait, wait, wait
      • -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Enum Constant Detail

      - - - -
        -
      • -

        JMS

        -
        public static final TriggerInfo.Type JMS
        -
        コンテナの更新時にJava Message Service(JMS)で通知するトリガ種別を示します。
        -
      • -
      - - - -
        -
      • -

        REST

        -
        public static final TriggerInfo.Type REST
        -
        コンテナの更新時にRESTで通知するトリガ種別を示します。
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        valueOf

        -
        public static TriggerInfo.Type valueOf(java.lang.String name)
        -
        Returns the enum constant of this type with the specified name. -The string must match exactly an identifier used to declare an -enum constant in this type. (Extraneous whitespace characters are -not permitted.)
        -
        Parameters:
        name - the name of the enum constant to be returned.
        -
        Returns:
        the enum constant with the specified name
        -
        Throws:
        -
        java.lang.IllegalArgumentException - if this enum type has no constant -with the specified name
        -
        java.lang.NullPointerException - if the argument is null
        -
      • -
      - - - -
        -
      • -

        values

        -
        public static TriggerInfo.Type[] values()
        -
        Returns an array containing the constants of this enum type, in -the order they are declared. This method may be used to iterate -over the constants as follows: -
        -for (TriggerInfo.Type c : TriggerInfo.Type.values())
        -    System.out.println(c);
        -
        -
        Returns:
        an array containing the constants of this enum type, in -the order they are declared
        -
      • -
      -
    • -
    -
  • -
-
-
- - - -
-
-

Class TriggerInfo

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • com.toshiba.mwcloud.gs.TriggerInfo
    • -
    -
  • -
-
-
    -
  • -
    -
    -
    public class TriggerInfo
    -extends java.lang.Object
    -
    コンテナの更新を監視するためのトリガ情報を表します。 -

    トリガ名の表記などの内容の妥当性について、必ずしも検査するとは限りません。

    -
    Since:
    -
    1.5
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Nested Class Summary

      - - - - - - - - - - - - - - -
      Nested Classes 
      Modifier and TypeClass and Description
      static class TriggerInfo.EventType -
      トリガで監視対象とする更新操作種別を表します。
      -
      static class TriggerInfo.Type -
      トリガの種別を表します。
      -
      -
    • -
    - -
      -
    • - - -

      Constructor Summary

      - - - - - - - - -
      Constructors 
      Constructor and Description
      TriggerInfo() -
      トリガ情報を生成します。
      -
      -
    • -
    - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Methods 
      Modifier and TypeMethod and Description
      java.lang.StringgetJMSDestinationName() -
      JMS通知で使用するデスティネーション名を取得します。
      -
      java.lang.StringgetJMSDestinationType() -
      JMS通知で使用するデスティネーション種別を取得します。
      -
      java.lang.StringgetName() -
      トリガ名を取得します。
      -
      java.lang.StringgetPassword() -
      通知先サーバに接続する際のパスワードを取得します。
      -
      java.util.Set<java.lang.String>getTargetColumns() -
      トリガ発火時に通知対象とするカラム名を取得します。
      -
      java.util.Set<TriggerInfo.EventType>getTargetEvents() -
      トリガ発火対象とする更新操作種別を取得します。
      -
      TriggerInfo.TypegetType() -
      トリガ種別を取得します。
      -
      java.net.URIgetURI() -
      トリガ発火時の通知先URIを取得します。
      -
      java.lang.StringgetUser() -
      通知先サーバに接続する際のユーザ名を取得します。
      -
      voidsetJMSDestinationName(java.lang.String destinationName) -
      JMS通知で使用するデスティネーション名を設定します。
      -
      voidsetJMSDestinationType(java.lang.String destinationType) -
      JMS通知で使用するデスティネーション種別を設定します。
      -
      voidsetName(java.lang.String name) -
      トリガ名を設定します。
      -
      voidsetPassword(java.lang.String password) -
      通知先サーバに接続する際のパスワードを設定します。
      -
      voidsetTargetColumns(java.util.Set<java.lang.String> columnSet) -
      トリガ発火時に通知対象とするカラム名を設定します。
      -
      voidsetTargetEvents(java.util.Set<TriggerInfo.EventType> eventSet) -
      トリガ発火対象とする更新操作種別を設定します。
      -
      voidsetType(TriggerInfo.Type type) -
      トリガ種別を設定します。
      -
      voidsetURI(java.net.URI uri) -
      トリガ発火時の通知先URIを設定します。
      -
      voidsetUser(java.lang.String user) -
      通知先サーバに接続する際のユーザ名を設定します。
      -
      -
        -
      • - - -

        Methods inherited from class java.lang.Object

        -clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        TriggerInfo

        -
        public TriggerInfo()
        -
        トリガ情報を生成します。
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        getJMSDestinationName

        -
        public java.lang.String getJMSDestinationName()
        -
        JMS通知で使用するデスティネーション名を取得します。
        -
      • -
      - - - -
        -
      • -

        getJMSDestinationType

        -
        public java.lang.String getJMSDestinationType()
        -
        JMS通知で使用するデスティネーション種別を取得します。
        -
      • -
      - - - -
        -
      • -

        getName

        -
        public java.lang.String getName()
        -
        トリガ名を取得します。
        -
      • -
      - - - -
        -
      • -

        getPassword

        -
        public java.lang.String getPassword()
        -
        通知先サーバに接続する際のパスワードを取得します。 -

        現バージョンでは、JMS通知でJMSサーバへ接続する場合にのみ使用されます。

        -
      • -
      - - - -
        -
      • -

        getTargetColumns

        -
        public java.util.Set<java.lang.String> getTargetColumns()
        -
        トリガ発火時に通知対象とするカラム名を取得します。 -

        返却された値に対して変更操作を行った場合、 UnsupportedOperationExceptionが発生することがあります。また、このオブジェクトに対する操作により、返却されたオブジェクトの内容が変化することはありません。

        -
      • -
      - - - -
        -
      • -

        getTargetEvents

        -
        public java.util.Set<TriggerInfo.EventType> getTargetEvents()
        -
        トリガ発火対象とする更新操作種別を取得します。 -

        返却された値に対して変更操作を行った場合、 UnsupportedOperationExceptionが発生することがあります。また、このオブジェクトに対する操作により、返却されたオブジェクトの内容が変化することはありません。

        -
      • -
      - - - -
        -
      • -

        getType

        -
        public TriggerInfo.Type getType()
        -
        トリガ種別を取得します。
        -
      • -
      - - - -
        -
      • -

        getURI

        -
        public java.net.URI getURI()
        -
        トリガ発火時の通知先URIを取得します。
        -
      • -
      - - - -
        -
      • -

        getUser

        -
        public java.lang.String getUser()
        -
        通知先サーバに接続する際のユーザ名を取得します。 -

        現バージョンでは、JMS通知でJMSサーバへ接続する場合にのみ使用されます。

        -
      • -
      - - - -
        -
      • -

        setJMSDestinationName

        -
        public void setJMSDestinationName(java.lang.String destinationName)
        -
        JMS通知で使用するデスティネーション名を設定します。 -

        nullが指定された場合、 Container.createTrigger(TriggerInfo)の実行時にエラーとなります。

        -
      • -
      - - - -
        -
      • -

        setJMSDestinationType

        -
        public void setJMSDestinationType(java.lang.String destinationType)
        -
        JMS通知で使用するデスティネーション種別を設定します。 -

        "queue"または"topic"が指定できます。 ASCIIの大文字・小文字表記の違いは区別されます。

        - -

        "queue"または"topic"以外が指定された場合、 Container.createTrigger(TriggerInfo)の実行時にエラーとなります。

        -
      • -
      - - - -
        -
      • -

        setName

        -
        public void setName(java.lang.String name)
        -
        トリガ名を設定します。 -

        空文字列・nullが設定された場合、 Container.createTrigger(TriggerInfo)の実行時にエラーとなります。

        -
      • -
      - - - -
        -
      • -

        setPassword

        -
        public void setPassword(java.lang.String password)
        -
        通知先サーバに接続する際のパスワードを設定します。 -

        現バージョンでは、JMS通知でJMSサーバへ接続する場合にのみ使用されます。

        - -

        設定がない、または空文字列・nullが設定された場合、空文字列をパスワードとして使用し接続します。

        - -

        ユーザ名・パスワードとも設定がない、または空文字列・nullが設定された場合、ユーザ名・パスワードを使用せずに接続します。

        -
      • -
      - - - -
        -
      • -

        setTargetColumns

        -
        public void setTargetColumns(java.util.Set<java.lang.String> columnSet)
        -
        トリガ発火時に通知対象とするカラム名を設定します。 -

        通知対象のカラムを特定する際、ASCIIの大文字・小文字表記の違いは区別されません。同一のカラムを指す複数のカラム名を含めても、そのカラムの値は通知には一度しか設定されません。

        - -

        カラム名の指定がない場合、通知にはいずれのカラムの値も設定されません。

        - -

        指定したオブジェクトの内容を呼び出し後に変更したとしても、このオブジェクトの内容は変化しません。

        -
        Throws:
        -
        java.lang.NullPointerException - 引数にnullが指定された場合
        -
      • -
      - - - -
        -
      • -

        setTargetEvents

        -
        public void setTargetEvents(java.util.Set<TriggerInfo.EventType> eventSet)
        -
        トリガ発火対象とする更新操作種別を設定します。 -

        複数の更新操作を設定した場合は、そのいずれかが行われた場合にトリガが発火します。

        - -

        更新操作の設定がない場合、 Container.createTrigger(TriggerInfo)の実行時にエラーとなります。

        - -

        指定したオブジェクトの内容を呼び出し後に変更したとしても、このオブジェクトの内容は変化しません。

        -
        Throws:
        -
        java.lang.NullPointerException - 引数にnullが指定された場合
        -
      • -
      - - - - - - - -
        -
      • -

        setURI

        -
        public void setURI(java.net.URI uri)
        -
        トリガ発火時の通知先URIを設定します。 -

        nullが設定された場合、 Container.createTrigger(TriggerInfo)の実行時にエラーとなります。

        -
      • -
      - - - -
        -
      • -

        setUser

        -
        public void setUser(java.lang.String user)
        -
        通知先サーバに接続する際のユーザ名を設定します。 -

        現バージョンでは、JMS通知でJMSサーバへ接続する場合にのみ使用されます。

        - -

        設定がない、または空文字列・nullが設定された場合、空文字列をユーザ名として使用し接続します。

        - -

        ユーザ名・パスワードとも設定がない、または空文字列・null -が設定された場合、ユーザ名・パスワードを使用せずに接続します。

        -
      • -
      -
    • -
    -
  • -
-
-
- - -
-

Serialized Form

-
-
-
    -
  • -

    Package com.toshiba.mwcloud.gs

    -
      -
    • - - -

      Class com.toshiba.mwcloud.gs.GSException extends java.io.IOException implements Serializable

      -
      -
      serialVersionUID:
      -
      -7261622831192521426L
      -
      -
        -
      • - - -

        Serialized Fields

        -
          -
        • -

          errorCode

          -
          int errorCode
          -
        • -
        • -

          errorName

          -
          java.lang.String errorName
          -
        • -
        • -

          description

          -
          java.lang.String description
          -
        • -
        • -

          parameters

          -
          java.util.Map<K,V> parameters
          -
        • -
        -
      • -
      -
    • -
    • - - -

      Class com.toshiba.mwcloud.gs.GSRecoverableException extends GSException implements Serializable

      -
      -
      serialVersionUID:
      -
      1241771194878438360L
      -
      -
    • -
    • - - -

      Class com.toshiba.mwcloud.gs.GSTimeoutException extends GSException implements Serializable

      -
      -
      serialVersionUID:
      -
      -2321647495394140580L
      -
      -
    • -
    -
  • -
-
-
- - -
- -
- -
-

1.2 APIサンプル

-
- - - -
- -
-

1.2.1 基本: コレクション操作のサンプル

-
package test;
-
-
-import java.util.Arrays;
-import java.util.Properties;
-
-import com.toshiba.mwcloud.gs.Collection;
-import com.toshiba.mwcloud.gs.GSException;
-import com.toshiba.mwcloud.gs.GridStore;
-import com.toshiba.mwcloud.gs.GridStoreFactory;
-import com.toshiba.mwcloud.gs.Query;
-import com.toshiba.mwcloud.gs.RowKey;
-import com.toshiba.mwcloud.gs.RowSet;
-
-
-// コレクションデータの操作
-public class Sample1 {
-
-	static class Person {
-		@RowKey String name;
-		boolean status;
-		long count;
-		byte[] lob;
-	}
-
-	public static void main(String[] args) throws GSException {
-
-		// GridStoreインスタンスの取得
-		Properties props = new Properties();
-		props.setProperty("notificationAddress", args[0]);
-		props.setProperty("notificationPort", args[1]);
-		props.setProperty("clusterName", args[2]);
-		props.setProperty("user", args[3]);
-		props.setProperty("password", args[4]);
-		GridStore store = GridStoreFactory.getInstance().getGridStore(props);
-
-		// コレクションの作成
-		Collection<String, Person> col = store.putCollection("col01", Person.class);
-
-		// カラムに索引を設定
-		col.createIndex("count");
-
-		// 自動コミットモードをオフ
-		col.setAutoCommit(false);
-
-		// Rowのデータを用意
-		Person person = new Person();
-		person.name = "name01";
-		person.status = false;
-		person.count = 1;
-		person.lob = new byte[] { 65, 66, 67, 68, 69, 70, 71, 72, 73, 74 };
-
-		// KV形式でRowを操作: RowKeyは"name01"
-		boolean update = true;
-		col.put(person);	// 登録
-		person = col.get(person.name, update);	// 取得(更新用にロック)
-		col.remove(person.name);	// 削除
-
-		// KV形式でRowを操作: RowKeyは"name02"
-		col.put("name02", person);	// 登録(RowKeyを指定)
-
-		// トランザクションの確定(ロック解除)
-		col.commit();
-
-		// コレクション内のRowを検索
-		Query<Person> query = col.query("select * where name = 'name02'");
-
-		// 検索したRowの取得と更新
-		RowSet<Person> rs = query.fetch(update);
-		while (rs.hasNext()) {
-			// 検索したRowの更新
-			Person person1 = rs.next();
-			person1.count += 1;
-			rs.update(person1);
-
-			System.out.println("Person:" +
-					" name=" + person1.name +
-					" status=" + person1.status +
-					" count=" + person1.count +
-					" lob=" + Arrays.toString(person1.lob));
-		}
-
-		// トランザクションの確定
-		col.commit();
-
-		// リソースの解放
-		store.close();
-	}
-
-}
-
- - -
- -
- -
-

1.2.2 基本: 時系列操作のサンプル ― 登録・範囲取得

-
package test;
-
-
-import java.util.Date;
-import java.util.Properties;
-
-import com.toshiba.mwcloud.gs.GSException;
-import com.toshiba.mwcloud.gs.GridStore;
-import com.toshiba.mwcloud.gs.GridStoreFactory;
-import com.toshiba.mwcloud.gs.RowKey;
-import com.toshiba.mwcloud.gs.RowSet;
-import com.toshiba.mwcloud.gs.TimeSeries;
-import com.toshiba.mwcloud.gs.TimestampUtils;
-import com.toshiba.mwcloud.gs.TimeUnit;
-
-
-// 時系列データの登録と範囲取得
-public class Sample2 {
-
-	static class Point {
-		@RowKey Date timestamp;
-		boolean active;
-		double voltage;
-	}
-
-	public static void main(String[] args) throws GSException {
-
-		// GridStoreインスタンスの取得
-		Properties props = new Properties();
-		props.setProperty("notificationAddress", args[0]);
-		props.setProperty("notificationPort", args[1]);
-		props.setProperty("clusterName", args[2]);
-		props.setProperty("user", args[3]);
-		props.setProperty("password", args[4]);
-		GridStore store = GridStoreFactory.getInstance().getGridStore(props);
-
-		// 時系列の作成 (既存の場合は取得のみ)
-		TimeSeries<Point> ts = store.putTimeSeries("point01", Point.class);
-
-		// 時系列要素のデータを用意
-		Point point = new Point();
-		point.active = false;
-		point.voltage = 100;
-
-		// 時系列要素の登録(グリッドストア側で時刻設定)
-		ts.append(point);
-
-		// 指定区間の時系列の取得: 6時間前から直近まで
-		Date now = TimestampUtils.current();
-		Date before = TimestampUtils.add(now, -6, TimeUnit.HOUR);
-
-		RowSet<Point> rs = ts.query(before, now).fetch();
-
-		while (rs.hasNext()) {
-			point = rs.next();
-
-			System.out.println(
-					"Time=" + TimestampUtils.format(point.timestamp) +
-					" Active=" + point.active +
-					" Voltage=" + point.voltage);
-		}
-
-		// リソースの解放
-		store.close();
-	}
-
-}
-
- - -
- -
- -
-

1.2.3 基本: 時系列操作のサンプル ― 検索・集計

-
package test;
-
-
-import java.util.Date;
-import java.util.Properties;
-
-import com.toshiba.mwcloud.gs.Aggregation;
-import com.toshiba.mwcloud.gs.AggregationResult;
-import com.toshiba.mwcloud.gs.GSException;
-import com.toshiba.mwcloud.gs.GridStore;
-import com.toshiba.mwcloud.gs.GridStoreFactory;
-import com.toshiba.mwcloud.gs.Query;
-import com.toshiba.mwcloud.gs.RowKey;
-import com.toshiba.mwcloud.gs.RowSet;
-import com.toshiba.mwcloud.gs.TimeOperator;
-import com.toshiba.mwcloud.gs.TimeSeries;
-import com.toshiba.mwcloud.gs.TimestampUtils;
-import com.toshiba.mwcloud.gs.TimeUnit;
-
-
-// 時系列データの検索と集計
-public class Sample3 {
-
-	static class Point {
-		@RowKey Date timestamp;
-		boolean active;
-		double voltage;
-	}
-
-	public static void main(String[] args) throws GSException {
-
-		// 読み取りのみなので、一貫性レベルを緩和(デフォルトはIMMEDIATE)
-		Properties props = new Properties();
-		props.setProperty("notificationAddress", args[0]);
-		props.setProperty("notificationPort", args[1]);
-		props.setProperty("clusterName", args[2]);
-		props.setProperty("user", args[3]);
-		props.setProperty("password", args[4]);
-		props.setProperty("consistency", "EVENTUAL");
-
-		// GridStoreインスタンスの取得
-		GridStore store = GridStoreFactory.getInstance().getGridStore(props);
-
-		// 時系列の取得
-		// ※Sample2と同じPointクラスを使用
-		TimeSeries<Point> ts = store.getTimeSeries("point01", Point.class);
-
-		// 停止中にもかかわらず電圧が基準値以上の箇所を検索
-		Query<Point> query = ts.query(
-				"select * from point01" +
-				" where not active and voltage > 50");
-		RowSet<Point> rs = query.fetch();
-
-		while (rs.hasNext()) {
-			// 各異常ポイントについて調査
-
-			Point hotPoint = rs.next();
-			Date hot = hotPoint.timestamp;
-
-			// 10分前付近のデータを取得
-			Date start = TimestampUtils.add(hot, -10, TimeUnit.MINUTE);
-			Point startPoint = ts.get(start, TimeOperator.NEXT);
-
-			// 前後10分間の平均値を計算
-			Date end = TimestampUtils.add(hot, 10, TimeUnit.MINUTE);
-			AggregationResult avg = ts.aggregate(
-					start, end, "voltage", Aggregation.AVERAGE);
-
-			System.out.println(
-					"[Alert] " + TimestampUtils.format(hot) +
-					" start=" + startPoint.voltage +
-					" hot=" + hotPoint.voltage +
-					" avg=" + avg.getDouble());
-		}
-
-		// リソースの解放
-		store.close();
-	}
-
-}
-
- - -
- -
- -
-

1.2.4 応用: コレクション操作のサンプル ― コンテナ情報を用いてスキーマ定義

-
package test;
-
-
-import java.util.Arrays;
-import java.util.Properties;
-
-import com.toshiba.mwcloud.gs.ColumnInfo;
-import com.toshiba.mwcloud.gs.Container;
-import com.toshiba.mwcloud.gs.ContainerInfo;
-import com.toshiba.mwcloud.gs.ContainerType;
-import com.toshiba.mwcloud.gs.GSException;
-import com.toshiba.mwcloud.gs.GSType;
-import com.toshiba.mwcloud.gs.GridStore;
-import com.toshiba.mwcloud.gs.GridStoreFactory;
-import com.toshiba.mwcloud.gs.Query;
-import com.toshiba.mwcloud.gs.Row;
-import com.toshiba.mwcloud.gs.RowSet;
-
-
-// コンテナ情報を用いてスキーマ定義
-public class Sample4 {
-
-	public static void main(String[] args) throws GSException {
-
-		// GridStoreインスタンスの取得
-		Properties props = new Properties();
-		props.setProperty("notificationAddress", args[0]);
-		props.setProperty("notificationPort", args[1]);
-		props.setProperty("clusterName", args[2]);
-		props.setProperty("user", args[3]);
-		props.setProperty("password", args[4]);
-		GridStore store = GridStoreFactory.getInstance().getGridStore(props);
-
-		// コンテナ情報を作成
-		ContainerInfo info = new ContainerInfo();
-		info.setType(ContainerType.COLLECTION);
-		info.setName("col01");
-		info.setColumnInfoList(Arrays.asList(
-				new ColumnInfo("name", GSType.STRING),
-				new ColumnInfo("status", GSType.BOOL),
-				new ColumnInfo("count", GSType.LONG),
-				new ColumnInfo("lob", GSType.BYTE_ARRAY)));
-		info.setRowKeyAssigned(true);
-
-		// コレクションの作成
-		Container<String, Row> container = store.putContainer(null, info, false);
-
-		// カラムに索引を設定
-		container.createIndex("count");
-
-		// 自動コミットモードをオフ
-		container.setAutoCommit(false);
-
-		// Rowのデータを用意
-		Row row;
-		{
-			String name = "name01";
-			boolean status = false;
-			long count = 1;
-			byte[] lob = new byte[] { 65, 66, 67, 68, 69, 70, 71, 72, 73, 74 };
-
-			row = container.createRow();
-			row.setString(0, name);
-			row.setBool(1, status);
-			row.setLong(2, count);
-			row.setByteArray(3, lob);
-		}
-
-		// KV形式でRowを操作: RowKeyは"name01"
-		boolean update = true;
-		container.put(row);	// 登録
-		row = container.get("name01", update);	// 取得(更新用にロック)
-		container.remove("name01");	// 削除
-
-		// KV形式でRowを操作: RowKeyは"name02"
-		container.put("name02", row);	// 登録(RowKeyを指定)
-
-		// トランザクションの確定(ロック解除)
-		container.commit();
-
-		// コレクション内のRowを検索
-		Query<Row> query = container.query("select * where name = 'name02'");
-
-		// 検索したRowの取得と更新
-		RowSet<Row> rs = query.fetch(update);
-		while (rs.hasNext()) {
-			// 検索したRowの更新
-			row = rs.next();
-
-			String name = row.getString(0);
-			boolean status = row.getBool(1);
-			long count = row.getLong(2);
-			byte[] lob = row.getByteArray(3);
-			count += 1;
-			rs.update(row);
-
-			System.out.println("Person:" +
-					" name=" + name +
-					" status=" + status +
-					" count=" + count +
-					" lob=" + Arrays.toString(lob));
-		}
-
-		// トランザクションの確定
-		container.commit();
-
-		// リソースの解放
-		store.close();
-	}
-
-}
-
- - -
- -
- -
-

1.2.5 応用: コレクション操作のサンプル ― 複数コンテナ一括操作

-
package test;
-
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-
-import com.toshiba.mwcloud.gs.ColumnInfo;
-import com.toshiba.mwcloud.gs.Container;
-import com.toshiba.mwcloud.gs.ContainerInfo;
-import com.toshiba.mwcloud.gs.ContainerType;
-import com.toshiba.mwcloud.gs.GSException;
-import com.toshiba.mwcloud.gs.GSType;
-import com.toshiba.mwcloud.gs.GridStore;
-import com.toshiba.mwcloud.gs.GridStoreFactory;
-import com.toshiba.mwcloud.gs.Query;
-import com.toshiba.mwcloud.gs.Row;
-import com.toshiba.mwcloud.gs.RowKeyPredicate;
-import com.toshiba.mwcloud.gs.RowSet;
-
-
-// 複数コンテナ一括操作
-public class Sample5 {
-
-	public static void main(String[] args) throws GSException {
-		final List<String> containerNameList = Arrays.asList(
-				"col01", "col02", "col03", "col04", "col05");
-		final List<String> keyList = Arrays.asList(
-				"name01", "name02");
-
-		// GridStoreインスタンスの取得
-		Properties props = new Properties();
-		props.setProperty("notificationAddress", args[0]);
-		props.setProperty("notificationPort", args[1]);
-		props.setProperty("clusterName", args[2]);
-		props.setProperty("user", args[3]);
-		props.setProperty("password", args[4]);
-		GridStore store = GridStoreFactory.getInstance().getGridStore(props);
-
-		// コンテナ情報を作成
-		ContainerInfo info = new ContainerInfo();
-		info.setType(ContainerType.COLLECTION);
-		info.setColumnInfoList(Arrays.asList(
-				new ColumnInfo("name", GSType.STRING),
-				new ColumnInfo("status", GSType.BOOL),
-				new ColumnInfo("count", GSType.LONG),
-				new ColumnInfo("lob", GSType.BYTE_ARRAY)));
-		info.setRowKeyAssigned(true);
-
-		// コレクションの作成
-		List<Container<String, Row>> containerList =
-				new ArrayList<Container<String, Row>>();
-		for (String containerName : containerNameList) {
-			Container<String, Row> container =
-					store.putContainer(containerName, info, false);
-			containerList.add(container);
-		}
-
-		// 複数コレクションのRowを一括登録
-		{
-			boolean status = false;
-			long count = 1;
-			byte[] lob = new byte[] { 65, 66, 67, 68, 69, 70, 71, 72, 73, 74 };
-
-			Map<String, List<Row>> inMap = new HashMap<String, List<Row>>();
-			for (String containerName : containerNameList) {
-				List<Row> rowList = new ArrayList<Row>();
-				for (String key : keyList) {
-					Row row = store.createRow(info);
-					row.setString(0, key);
-					row.setBool(1, status);
-					row.setLong(2, count);
-					row.setByteArray(3, lob);
-					count++;
-
-					rowList.add(row);
-				}
-				inMap.put(containerName, rowList);
-			}
-			store.multiPut(inMap);
-		}
-
-		// 複数コレクションのRowを一括取得
-		{
-			// 取得条件を構築
-			Map<String, RowKeyPredicate<String>> predMap =
-					new HashMap<String, RowKeyPredicate<String>>();
-			for (String containerName : containerNameList) {
-				RowKeyPredicate<String> predicate =
-						RowKeyPredicate.create(String.class);
-				for (String key : keyList) {
-					predicate.add(key);
-				}
-				predMap.put(containerName, predicate);
-			}
-
-			Map<String, List<Row>> outMap = store.multiGet(predMap);
-
-			// 取得結果を出力
-			for (Map.Entry<String, List<Row>> entry : outMap.entrySet()) {
-				for (Row row : entry.getValue()) {
-					String name = row.getString(0);
-					long count = row.getLong(2);
-
-					System.out.println("Person[" + entry.getKey() + "]:" +
-							" name=" + name +
-							" count=" + count);
-				}
-			}
-		}
-
-		// 複数コレクションのRowを一括検索(クエリ使用)
-		{
-			List<Query<Row>> queryList = new ArrayList<Query<Row>>();
-			for (Container<String, Row> container : containerList) {
-				String tql = "select * where count >= 0";
-				queryList.add(container.query(tql));
-			}
-
-			store.fetchAll(queryList);
-
-			for (int i = 0; i < queryList.size(); i++) {
-				Query<Row> query = queryList.get(i);
-				RowSet<Row> rs = query.getRowSet();
-				while (rs.hasNext()) {
-					Row row = rs.next();
-
-					String name = row.getString(0);
-					boolean status = row.getBool(1);
-					long count = row.getLong(2);
-					byte[] lob = row.getByteArray(3);
-
-					System.out.println("Person[" + i + "]:" +
-							" name=" + name +
-							" status=" + status +
-							" count=" + count +
-							" lob=" + Arrays.toString(lob));
-				}
-			}
-		}
-
-		// リソースの解放
-		store.close();
-	}
-
-}
-
- - -
-
-
- -
- -
-

2 付録

-
- - - -
- -
-

2.1 値の範囲

-
- - -

-値の上限などの値の範囲を説明します。 -システムの制限値については、GridDBテクニカルリファレンスを参照してください。 -

- -
- -
-

2.1.1 基本型の取りうる値

-
- -

以下の基本型の取りうる値は、次の通りです。 -

- - -
- - - -- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
取りうる値
ブール(BOOL)型真または偽
BYTE型-27から27-1
SHORT型-215から215-1
INTEGER型-231から231-1
LONG型-263から263-1
FLOAT型IEEE754準拠
DOUBLE型IEEE754準拠
時刻(TIMESTAMP)型西暦1970年1月1日のはじめから西暦9999年12月31日の終わりまで(UTC相当)。精度はミリ秒。うるう秒は扱わない
- - - - -
- -

-空間(GEOMETRY)型でTQL演算に使用できる値はST_GeomFromText関数が返す任意の値です。このうちコンテナに格納できる値はQUADRATICSURFACE構造を除いたものです。 -

-

-APIを通じて基本型とマッピングされるオブジェクトの表現範囲は、上記の範囲と異なる場合があります。上記の範囲を超えた値を持つオブジェクトの内容をコンテナに格納することはできませんが、検索条件の構築など、その他操作の可否を規定するものではありません。たとえば、Java APIにて時刻型にマッピングされるjava.util.Dateオブジェクトでは、コンテナに格納できない西暦1970年より前の年の時刻も表現でき、その値をロウキーの条件としてRowKeyPredicateオブジェクトや時系列のサンプリングクエリに含めることができます。しかし、その条件でロウを取得しようとした時点でエラーが検出される可能性があります。マッピングされるオブジェクトの具体的な表現範囲は、個々のオブジェクトの型の定義を参照してください。 -

-
-
-
- -
- -
-

3 商標

-
- - -
    -
  • -GridDBは日本国内における東芝デジタルソリューションズ株式会社の登録商標です。 -
  • -
  • -OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国における登録商標です。文中の社名、商品名等は各社の商標または登録商標である場合があります。 -
  • -
  • -その他製品名は、それぞれの所有者の商標または登録商標です。 - -

    -Copyright (c) 2013-2019 Toshiba Digital Solutions Corporation -

  • -
-
-
-
-
-
- - + + + + +GridDB Java APIリファレンス + + + + + + + + +
+ +

GridDB Java APIリファレンス

+ + + + + + +
+

1 API

+
+ + + +
+ +
+

1.1 API一覧

+
+
+

Package com.toshiba.mwcloud.gs

+
+
GridDBの公開インタフェースを定義します。
+
+

See: Description

+
+
+
    +
  • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Interface Summary 
    InterfaceDescription
    AggregationResult +
    集計演算の結果を保持します。
    +
    Collection<K,R> +
    ロウ集合を汎用的に管理するためのコンテナです。
    +
    Container<K,R> +
    同一タイプのロウ集合からなるGridDBの構成要素に対しての、管理機能を提供します。
    +
    GridStore +
    接続したGridDBシステム内のデータベースに属するデータを操作するための機能を提供します。
    +
    PartitionController +
    パーティション状態の取得や操作のためのコントローラです。
    +
    Query<R> +
    特定のContainerに対応付けられたクエリを保持し、結果取得方法の設定ならびに実行・結果取得を行う機能を持ちます。
    +
    Row +
    任意のスキーマについて汎用的にフィールド操作できるロウです。
    +
    Row.Key +
    ロウキーに関するカラムのみから構成されるRowの一種です。
    +
    Row.WithKey<K> +
    マッピングに用いるロウオブジェクトの型について、常に指定のロウキー型と対応付くことを表します。
    +
    RowSet<R> +
    クエリ実行より求めたロウの集合を管理します。
    +
    TimeSeries<R> +
    時刻をロウキーとする、時系列処理に特化したコンテナです。
    +
    +
  • +
  • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Class Summary 
    ClassDescription
    Collection.BindType +
    Collectionならびにその型パラメータと結びつく Container.BindTypeを構築するための、補助クラスです。
    +
    ColumnInfo +
    カラムのスキーマに関する情報を表します。
    +
    ColumnInfo.Builder +
    ColumnInfoを構築するためのビルダーです。
    +
    Container.BindType<K,R,C extends Container<K,R>> +
    Containerならびにその型パラメータと結びつく型情報を表します。
    +
    ContainerInfo +
    特定のコンテナに関する情報を表します。
    +
    Geometry +
    2次元、もしくは3次元の空間範囲を示すジオメトリデータを管理します。
    +
    GridStoreFactory +
    GridStoreインスタンスを管理します。
    +
    IndexInfo +
    索引の設定内容を表します。
    +
    QueryAnalysisEntry +
    クエリプランならびにクエリ処理解析結果を構成する一連の情報の一つを示します。
    +
    RowKeyPredicate<K> +
    ロウキーの合致条件を表します。
    +
    TimeSeries.BindType +
    TimeSeriesならびにその型パラメータと結びつく Container.BindTypeを構築するための、補助クラスです。
    +
    TimeSeriesProperties +
    時系列を新規作成または変更する際に使用される、オプションの構成情報を表します。
    +
    TimestampUtils +
    時刻データを操作するためのユーティリティ機能を提供します。
    +
    TriggerInfo +
    コンテナの更新を監視するためのトリガ情報を表します。
    +
    +
  • +
  • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Enum Summary 
    EnumDescription
    Aggregation +
    ロウ集合またはその特定のカラムに対する、集計演算の方法を示します。
    +
    CompressionMethod +
    圧縮方式の種別を表します。
    +
    ContainerType +
    コンテナの種別を表します。
    +
    FetchOption +
    クエリ実行結果を取得する際のオプション項目です。
    +
    GeometryOperator +
    空間範囲同士の関係性についての制約を定義します。
    +
    GSType +
    GridDB上のフィールド値の型を表します。
    +
    IndexType +
    Containerに設定する索引の種別を示します。
    +
    InterpolationMode +
    ロウの補間方法の種別を表します。
    +
    QueryOrder +
    クエリにおける要求ロウ順序を表します。
    +
    TimeOperator +
    TimeSeriesのキー時刻に基づく、ロウの特定方法を表します。
    +
    TimeUnit +
    時系列処理で用いる時間の単位を示します。
    +
    TriggerInfo.EventType +
    トリガで監視対象とする更新操作種別を表します。
    +
    TriggerInfo.Type +
    トリガの種別を表します。
    +
    +
  • +
  • + + + + + + + + + + + + + + + + +
    Exception Summary 
    ExceptionDescription
    GSException +
    GridDB機能の処理中に発生した例外状態を示します。
    +
    GSTimeoutException +
    要求した処理が既定の時間内に終了しなかったことを示す例外です。
    +
    +
  • +
  • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Annotation Types Summary 
    Annotation TypeDescription
    NotNull +
    NOT NULL制約を持つカラムであることを示します。
    +
    Nullable +
    NOT NULL制約を持たないカラムであることを示します。
    +
    RowField +
    Containerの処理におけるマッピング対象のロウフィールドについて、オプションを設定します。
    +
    RowKey +
    Containerのキーと対応することを示します。
    +
    TimePrecision +
    Containerの処理におけるマッピング対象のロウフィールドについて、日時精度を設定します。
    +
    TransientRowField +
    Containerの処理において、マッピング対象外のロウフィールドであることを宣言します。
    +
    +
  • +
+ + + +

Package com.toshiba.mwcloud.gs Description

+
GridDBの公開インタフェースを定義します。
+
+ + +
+
+

Enum Aggregation

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • java.lang.Enum<Aggregation>
    • +
    • +
        +
      • com.toshiba.mwcloud.gs.Aggregation
      • +
      +
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    java.io.Serializable, java.lang.Comparable<Aggregation>
    +
    +
    +
    +
    public enum Aggregation
    +extends java.lang.Enum<Aggregation>
    +
    ロウ集合またはその特定のカラムに対する、集計演算の方法を示します。 +

    現バージョンでは、TimeSeriesに対してのみ使用できます。

    + +

    重み付きの演算の場合、キーの値に基づき重み付け値を決定します。 TimeSeriesに対する重み付きの演算の場合、前後それぞれの時刻のロウとの中間時刻間の期間を特定の単位で換算したものを、重み付け値として使用します。ただし、前後いずれかの時刻のロウのみが存在しない場合は、存在しないロウの代わりに重み付け対象のロウを用いて求めた重み付け値を使用します。前後いずれの時刻のロウも存在しない場合は、重み付け値として1 + (単位は前後いずれかのロウが存在する場合と同一)を使用します。

    + +

    演算の内部処理にてオーバーフローが発生した場合、浮動小数点数型では負または正の無限大、整数型では未定義の値が求まります。また、浮動小数点数型にて演算対象に非数(NaN)が含まれていた場合、非数が求まります。

    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Enum Constant Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Enum Constants 
      Enum Constant and Description
      AVERAGE +
      平均を求める演算です。
      +
      COUNT +
      標本数、すなわち対象ロウの個数を求める演算です。
      +
      MAXIMUM +
      最大値を求める演算です。
      +
      MINIMUM +
      最小値を求める演算です。
      +
      STANDARD_DEVIATION +
      標準偏差を求める演算です。
      +
      TOTAL +
      合計を求める演算です。
      +
      VARIANCE +
      分散を求める演算です。
      +
      WEIGHTED_AVERAGE +
      重み付きで平均を求める演算です。
      +
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      static AggregationvalueOf(java.lang.String name) +
      Returns the enum constant of this type with the specified name.
      +
      static Aggregation[]values() +
      Returns an array containing the constants of this enum type, in +the order they are declared.
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Enum

        +clone, compareTo, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf
      • +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +getClass, notify, notifyAll, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Enum Constant Detail

      + + + +
        +
      • +

        AVERAGE

        +
        public static final Aggregation AVERAGE
        +
        平均を求める演算です。 +

        数値型のカラムに対してのみ使用できます。演算結果の型は常にDOUBLEとなります。対象となるロウが1つも存在しない場合、演算結果は設定されません。

        +
      • +
      + + + +
        +
      • +

        COUNT

        +
        public static final Aggregation COUNT
        +
        標本数、すなわち対象ロウの個数を求める演算です。 +

        任意のカラムに対して使用できます。演算結果の型は常にLONGとなります。対象となるロウが1つも存在しない場合、演算結果の値は0となります。

        +
      • +
      + + + +
        +
      • +

        MAXIMUM

        +
        public static final Aggregation MAXIMUM
        +
        最大値を求める演算です。 +

        大小比較できる型、すなわち数値型や時刻型のカラムに対してのみ使用できます。演算結果の型は、対象のカラムと同一の型となります。対象となるロウが1つも存在しない場合、演算結果は設定されません。

        +
      • +
      + + + +
        +
      • +

        MINIMUM

        +
        public static final Aggregation MINIMUM
        +
        最小値を求める演算です。 +

        大小比較できる型、すなわち数値型や時刻型のカラムに対してのみ使用できます。演算結果の型は、対象のカラムと同一の型となります。対象となるロウが1つも存在しない場合、演算結果は設定されません。

        +
      • +
      + + + +
        +
      • +

        STANDARD_DEVIATION

        +
        public static final Aggregation STANDARD_DEVIATION
        +
        標準偏差を求める演算です。 +

        数値型のカラムに対してのみ使用できます。演算結果の型は常にDOUBLEとなります。対象となるロウが1つも存在しない場合、演算結果は設定されません。

        +
      • +
      + + + +
        +
      • +

        TOTAL

        +
        public static final Aggregation TOTAL
        +
        合計を求める演算です。 +

        数値型のカラムに対してのみ使用できます。演算結果の型は、対象のカラムが整数型の場合LONG、浮動小数点型の場合DOUBLEとなります。対象となるロウが1つも存在しない場合、演算結果は設定されません。

        +
      • +
      + + + +
        +
      • +

        VARIANCE

        +
        public static final Aggregation VARIANCE
        +
        分散を求める演算です。 +

        数値型のカラムに対してのみ使用できます。演算結果の型は常にDOUBLEとなります。対象となるロウが1つも存在しない場合、演算結果は設定されません。

        +
      • +
      + + + +
        +
      • +

        WEIGHTED_AVERAGE

        +
        public static final Aggregation WEIGHTED_AVERAGE
        +
        重み付きで平均を求める演算です。 +

        各標本値と重み付け値との積の合計を、各重み付け値の合計で割ることにより求めます。重み付け値の計算方法は、Aggregationの説明を参照してください。

        + +

        この演算は、数値型のカラムに対してのみ使用できます。演算結果の型は常にDOUBLEとなります。対象となるロウが1つも存在しない場合、演算結果は設定されません。

        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        valueOf

        +
        public static Aggregation valueOf(java.lang.String name)
        +
        Returns the enum constant of this type with the specified name. +The string must match exactly an identifier used to declare an +enum constant in this type. (Extraneous whitespace characters are +not permitted.)
        +
        Parameters:
        name - the name of the enum constant to be returned.
        +
        Returns:
        the enum constant with the specified name
        +
        Throws:
        +
        java.lang.IllegalArgumentException - if this enum type has no constant +with the specified name
        +
        java.lang.NullPointerException - if the argument is null
        +
      • +
      + + + +
        +
      • +

        values

        +
        public static Aggregation[] values()
        +
        Returns an array containing the constants of this enum type, in +the order they are declared. This method may be used to iterate +over the constants as follows: +
        +for (Aggregation c : Aggregation.values())
        +    System.out.println(c);
        +
        +
        Returns:
        an array containing the constants of this enum type, in +the order they are declared
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + +
+
+

Interface AggregationResult

+
+
+
+
    +
  • +
    +
    +
    public interface AggregationResult
    +
    集計演算の結果を保持します。 +

    集計演算に関するクエリの実行もしくは TimeSeries.aggregate(Date, Date, String, Aggregation) +により取得できる、集計演算の結果を保持します。整数型カラムに対する演算結果を浮動小数点型として、また、有効桁数の少ない数値型のカラムに対する演算結果をより桁数の多い数値型として受け取ることができます。

    + +

    保持する型は、集計演算の種別や集計対象のカラムの型によって決定されます。具体的な規則はAggregationまたはTQLの仕様を参照してください。

    + +

    取り出しできる型は、保持されている型によって決まります。保持されている型が数値型の場合はDOUBLE型またはLONG型、TIMESTAMP型の場合はTIMESTAMP型の値としてのみ取り出しできます。

    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      java.lang.DoublegetDouble() +
      数値型の集計値をDOUBLE型(Double)として取得します。
      +
      java.lang.LonggetLong() +
      数値型の集計値をLONG型(Long)として取得します。
      +
      java.sql.TimestampgetPreciseTimestamp() +
      時刻型の集計値を高精度のTIMESTAMP型(Timestamp)で取得します。
      +
      java.util.DategetTimestamp() +
      時刻型の集計値を通常精度のTIMESTAMP型(Date)で取得します。
      +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        getDouble

        +
        java.lang.Double getDouble()
        +
        数値型の集計値をDOUBLE型(Double)として取得します。 +

        数値型以外の値を保持している場合、nullを返します。 DOUBLE型以外の数値を保持している場合、DOUBLE型に変換したものを返します。

        +
        Returns:
        DOUBLE型(Double)の集計値。結果が数値型以外の場合は null
        +
      • +
      + + + +
        +
      • +

        getLong

        +
        java.lang.Long getLong()
        +
        数値型の集計値をLONG型(Long)として取得します。 +

        数値型以外の値を保持している場合、nullを返します。 LONG型以外の数値を保持している場合、LONG型に変換したものを返します。

        +
        Returns:
        LONG型(Double)の集計値。結果が数値型以外の場合は null
        +
      • +
      + + + +
        +
      • +

        getPreciseTimestamp

        +
        java.sql.Timestamp getPreciseTimestamp()
        +
        時刻型の集計値を高精度のTIMESTAMP型(Timestamp)で取得します。 +

        TIMESTAMP型以外の値を保持している場合、nullを返します。

        + +

        通常精度のTIMESTAMP値を保持している場合、高精度の値に変換したものを返します。

        +
        Returns:
        高精度のTIMESTAMP型(Timestamp)の集計値。結果がTIMESTAMP型以外の場合はnull
        Since:
        +
        5.3
        +
      • +
      + + + +
        +
      • +

        getTimestamp

        +
        java.util.Date getTimestamp()
        +
        時刻型の集計値を通常精度のTIMESTAMP型(Date)で取得します。 +

        TIMESTAMP型以外の値を保持している場合、nullを返します。

        + +

        高精度のTIMESTAMP値を保持している場合、通常精度の値に変換したものを返します。

        +
        Returns:
        通常精度のTIMESTAMP型(Date)の集計値。結果がTIMESTAMP型以外の場合はnull
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + +
+
+

Class Collection.BindType

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • com.toshiba.mwcloud.gs.Collection.BindType
    • +
    +
  • +
+
+
    +
  • +
    +
    Enclosing interface:
    +
    Collection<K,R>
    +
    +
    +
    +
    public static class Collection.BindType
    +extends java.lang.Object
    +
    Collectionならびにその型パラメータと結びつく Container.BindTypeを構築するための、補助クラスです。
    +
    Since:
    +
    4.3
    +
    See Also:
    Container.BindType
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      static <R> Container.BindType<java.lang.Void,R,? extends Collection<java.lang.Void,R>>noKeyOf(java.lang.Class<R> rowClass) +
      ロウキーを持たず、指定のロウオブジェクト型、ならびに、 Collectionと結びつくContainer.BindTypeを取得します。
      +
      static <K,R> Container.BindType<K,R,? extends Collection<K,R>>of(java.lang.Class<K> keyClass, + java.lang.Class<R> rowClass) +
      指定のロウキー型、指定のロウオブジェクト型、ならびに、 Collectionと結びつくContainer.BindTypeを取得します。
      +
      static <K,R extends Row.WithKey<K>> 
      Container.BindType<K,R,? extends Collection<K,R>>
      of(java.lang.Class<R> rowClass) +
      指定のロウオブジェクト型から得られるロウキーの型、指定のロウオブジェクト型、ならびに、Collectionと結びつく Container.BindTypeを取得します。
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        noKeyOf

        +
        public static <R> Container.BindType<java.lang.Void,R,? extends Collection<java.lang.Void,R>> noKeyOf(java.lang.Class<R> rowClass)
        +                                                                                           throws GSException
        +
        ロウキーを持たず、指定のロウオブジェクト型、ならびに、 Collectionと結びつくContainer.BindTypeを取得します。
        +
        Type Parameters:
        R - ロウオブジェクトの型
        Parameters:
        rowClass - ロウオブジェクトの型に対応するクラスオブジェクト
        +
        Throws:
        +
        GSException - ロウキーの型と、ロウオブジェクトの型との間で不整合を検出した場合
        Since:
        +
        4.3
        +
      • +
      + + + +
        +
      • +

        of

        +
        public static <K,R> Container.BindType<K,R,? extends Collection<K,R>> of(java.lang.Class<K> keyClass,
        +                                                         java.lang.Class<R> rowClass)
        +                                                            throws GSException
        +
        指定のロウキー型、指定のロウオブジェクト型、ならびに、 Collectionと結びつくContainer.BindTypeを取得します。
        +
        Type Parameters:
        K - ロウキーの型
        R - ロウオブジェクトの型
        Parameters:
        keyClass - ロウキーの型に対応するクラスオブジェクト
        rowClass - ロウオブジェクトの型に対応するクラスオブジェクト
        +
        Throws:
        +
        GSException - ロウキーの型と、ロウオブジェクトの型との間で不整合を検出した場合
        Since:
        +
        4.3
        +
      • +
      + + + +
        +
      • +

        of

        +
        public static <K,R extends Row.WithKey<K>> Container.BindType<K,R,? extends Collection<K,R>> of(java.lang.Class<R> rowClass)
        +                                                                                                          throws GSException
        +
        指定のロウオブジェクト型から得られるロウキーの型、指定のロウオブジェクト型、ならびに、Collectionと結びつく Container.BindTypeを取得します。
        +
        Type Parameters:
        K - ロウキーの型
        R - ロウオブジェクトの型
        Parameters:
        rowClass - ロウオブジェクトの型に対応するクラスオブジェクト
        +
        Throws:
        +
        GSException - 指定のロウオブジェクト型からロウキーの型が得られなかった場合
        Since:
        +
        4.3
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + +
+
+

Interface Collection<K,R>

+
+
+
+
    +
  • +
    +
    All Superinterfaces:
    +
    java.lang.AutoCloseable, java.io.Closeable, Container<K,R>
    +
    +
    +
    +
    public interface Collection<K,R>
    +extends Container<K,R>
    +
    ロウ集合を汎用的に管理するためのコンテナです。 +

    ロウキーには次の型が使用できます。

    +
      +
    • 文字列型(String)
    • +
    • INTEGER型(Integer)
    • +
    • LONG型(Long)
    • +
    • TIMESTAMP型(Date)
    • +
    • 上記の型のカラムを単一または複数持つ(複合)ロウキー(Row.Key)
    • +
    +

    ロウキーの設定は必須ではありません。

    + +

    ロウ操作について、コンテナ固有の制限は設けられていません。

    + +

    Container.query(String)もしくはGridStore.multiGet(java.util.Map) +などより複数のロウの内容を一度に取得する場合、特に指定がなければ、返却されるロウの順序は不定となります。

    + +

    ロック粒度はロウ単位です。

    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        query

        +
        Query<R> query(java.lang.String column,
        +             Geometry geometryIntersection,
        +             Geometry geometryDisjoint)
        +               throws GSException
        +
        除外範囲付きの空間範囲条件に合致するロウ集合を求めるための、クエリを作成します。 +

        geometryIntersectionと交差し、かつ、geometryDisjointと交差しないカラム値を持つロウ集合を取得します。交差判定の条件は、 GeometryOperator.INTERSECTと同一です。

        + +

        Query.fetch(boolean)を通じてロウ集合を求める際、更新用ロックのオプションを有効にすることもできます。

        + +

        現バージョンでは、GSExceptionや、nullを指定できない引数でnullを指定したことによるNullPointerExceptionは送出されません。カラム名の誤りなどがあった場合、得られたクエリをフェッチする際に例外が送出されます。

        +
        Parameters:
        column - 比較対象の空間型カラムの名前。nullは指定できない
        geometryIntersection - カラム上の値と交差する範囲を示す空間構造。 nullは指定できない
        geometryDisjoint - カラム上の値と交差しない範囲を示す空間構造。 nullは指定できない
        +
        Throws:
        +
        GSException - 現バージョンでは送出されない
        +
      • +
      + + + +
        +
      • +

        query

        +
        Query<R> query(java.lang.String column,
        +             Geometry geometry,
        +             GeometryOperator geometryOp)
        +               throws GSException
        +
        指定した空間範囲条件に合致するロウ集合を求めるための、クエリを作成します。 +

        Query.fetch(boolean)を通じてロウ集合を求める際、更新用ロックのオプションを有効にすることもできます。

        + +

        現バージョンでは、GSExceptionや、nullを指定できない引数でnullを指定したことによるNullPointerExceptionは送出されません。カラム名の誤りなどがあった場合、得られたクエリをフェッチする際に例外が送出されます。

        +
        Parameters:
        column - 比較対象の空間型カラムの名前。nullは指定できない
        geometry - 比較対象として与える空間構造。nullは指定できない
        geometryOp - 比較方法。nullは指定できない
        +
        Throws:
        +
        GSException - 現バージョンでは送出されない
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + +
+
+

Class ColumnInfo.Builder

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • com.toshiba.mwcloud.gs.ColumnInfo.Builder
    • +
    +
  • +
+
+
    +
  • +
    +
    Enclosing class:
    +
    ColumnInfo
    +
    +
    +
    +
    public static class ColumnInfo.Builder
    +extends java.lang.Object
    +
    ColumnInfoを構築するためのビルダーです。 +

    ColumnInfoを通じて参照できるすべての要素について、それぞれ必要に応じて設定し、ColumnInfoを構築することができます。

    +
    Since:
    +
    5.3
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        ColumnInfo.Builder

        +
        public ColumnInfo.Builder()
        +
        すべての要素が未設定状態のビルダーを構築します。
        +
      • +
      + + + +
        +
      • +

        ColumnInfo.Builder

        +
        public ColumnInfo.Builder(ColumnInfo info)
        +
        指定のColumnInfoのすべての要素を設定したビルダーを構築します。
        +
        Parameters:
        info - 設定元のカラム情報
        +
        Throws:
        +
        java.lang.NullPointerException - 引数にnullが指定された場合
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        set

        +
        public ColumnInfo.Builder set(ColumnInfo info)
        +
        指定のColumnInfoのすべての要素を設定します。 +

        指定のColumnInfoに未設定状態の要素が含まれる場合、このビルダーの元の設定内容に関係なく、該当する要素は未設定状態となります。

        +
        Parameters:
        info - 設定元のカラム情報
        +
        Returns:
        このビルダー
        +
        Throws:
        +
        java.lang.NullPointerException - 引数にnullが指定された場合
        +
      • +
      + + + +
        +
      • +

        setDefaultValueNull

        +
        public ColumnInfo.Builder setDefaultValueNull(java.lang.Boolean defaultValueNull)
        +
        カラムの初期値としてNULLを使用するかどうかを設定します。 +

        指定の引数がnullの場合、未設定状態となります。

        +
        Parameters:
        defaultValueNull - カラムの初期値としてNULLを使用するか
        +
        Returns:
        このビルダー
        See Also:
        ColumnInfo.getDefaultValueNull()
        +
      • +
      + + + +
        +
      • +

        setIndexTypes

        +
        public ColumnInfo.Builder setIndexTypes(java.util.Set<IndexType> indexTypes)
        +
        索引種別の集合を設定します。 +

        指定の引数がnullの場合、未設定状態となります。

        +
        Parameters:
        indexTypes - 索引種別の集合
        +
        Returns:
        このビルダー
        See Also:
        ColumnInfo.getIndexTypes()
        +
      • +
      + + + +
        +
      • +

        setName

        +
        public ColumnInfo.Builder setName(java.lang.String name)
        +
        カラム名を設定します。 +

        指定の引数がnullの場合、未設定状態となります。

        +
        Parameters:
        name - カラム名
        +
        Returns:
        このビルダー
        See Also:
        ColumnInfo.getName()
        +
      • +
      + + + +
        +
      • +

        setNullable

        +
        public ColumnInfo.Builder setNullable(java.lang.Boolean nullable)
        +
        カラムにNOT NULL制約が設定されていないかどうかを設定します。 +

        指定の引数がnullの場合、未設定状態となります。

        +
        Parameters:
        nullable - カラムにNOT NULL制約が設定されていないかどうか
        +
        Returns:
        このビルダー
        See Also:
        ColumnInfo.getNullable()
        +
      • +
      + + + +
        +
      • +

        setTimePrecision

        +
        public ColumnInfo.Builder setTimePrecision(TimeUnit timePrecision)
        +
        日時精度を設定します。 +

        指定の引数がnullの場合、未設定状態となります。

        +
        Parameters:
        timePrecision - 日時精度
        +
        Returns:
        このビルダー
        See Also:
        ColumnInfo.getTimePrecision()
        +
      • +
      + + + +
        +
      • +

        setType

        +
        public ColumnInfo.Builder setType(GSType type)
        +
        カラム型を設定します。 +

        指定の引数がnullの場合、未設定状態となります。

        +
        Parameters:
        type - カラム型
        +
        Returns:
        このビルダー
        See Also:
        ColumnInfo.getType()
        +
      • +
      + + + +
        +
      • +

        toInfo

        +
        public ColumnInfo toInfo()
        +
        このビルダーに設定された内容に基づき、ColumnInfoを構築します。 +

        構築後にこのビルダーの設定が変更されたとしても、返却されるカラム情報が変化することはありません。

        +
        Returns:
        カラム情報
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + +
+
+

Class ColumnInfo

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • com.toshiba.mwcloud.gs.ColumnInfo
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class ColumnInfo
    +extends java.lang.Object
    +
    カラムのスキーマに関する情報を表します。 +

    カラム名の表記、もしくは、カラムの型と索引種別の対応関係などの内容の妥当性について、必ずしも検査するとは限りません。

    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Nested Class Summary

      + + + + + + + + + + +
      Nested Classes 
      Modifier and TypeClass and Description
      static class ColumnInfo.Builder +
      ColumnInfoを構築するためのビルダーです。
      +
      +
    • +
    + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + + + + + + + + + + +
      Constructors 
      Constructor and Description
      ColumnInfo(java.lang.String name, + GSType type) +
      カラム名、型を指定してカラム情報を作成します。
      +
      ColumnInfo(java.lang.String name, + GSType type, + java.lang.Boolean nullable, + java.lang.Boolean defaultValueNull, + java.util.Set<IndexType> indexTypes) +
      カラム名、型、NOT NULL制約の状態、初期値でのNULL使用有無、索引種別の集合を指定してカラム情報を作成します。
      +
      ColumnInfo(java.lang.String name, + GSType type, + java.lang.Boolean nullable, + java.util.Set<IndexType> indexTypes) +
      カラム名、型、NOT NULL制約の状態、索引種別の集合を指定してカラム情報を作成します。
      +
      ColumnInfo(java.lang.String name, + GSType type, + java.util.Set<IndexType> indexTypes) +
      カラム名、型、索引種別の集合を指定してカラム情報を作成します。
      +
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      java.lang.BooleangetDefaultValueNull() +
      カラムの初期値としてNULLを使用するかどうかを取得します。
      +
      java.util.Set<IndexType>getIndexTypes() +
      このカラムのすべての索引種別を取得します。
      +
      java.lang.StringgetName() +
      カラム名を取得します。
      +
      java.lang.BooleangetNullable() +
      カラムにNOT NULL制約が設定されていないかどうかを取得します。
      +
      TimeUnitgetTimePrecision() +
      このカラムの日時型における精度を取得します。
      +
      GSTypegetType() +
      カラムの型、すなわち、カラムに対応する各フィールド値の型を取得します。
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        ColumnInfo

        +
        public ColumnInfo(java.lang.String name,
        +          GSType type)
        +
        カラム名、型を指定してカラム情報を作成します。
        +
        Parameters:
        name - カラム名。nullを指定すると未設定状態となる
        type - カラムの型。nullを指定すると未設定状態となる
        Since:
        +
        1.5
        +
      • +
      + + + +
        +
      • +

        ColumnInfo

        +
        public ColumnInfo(java.lang.String name,
        +          GSType type,
        +          java.lang.Boolean nullable,
        +          java.lang.Boolean defaultValueNull,
        +          java.util.Set<IndexType> indexTypes)
        +
        カラム名、型、NOT NULL制約の状態、初期値でのNULL使用有無、索引種別の集合を指定してカラム情報を作成します。 +

        空ではない索引種別の集合が指定された場合、内容が複製されます。

        +
        Parameters:
        name - カラム名。nullを指定すると未設定状態となる
        type - カラムの型。nullを指定すると未設定状態となる
        nullable - NOT NULL制約が設定されていない場合はtrue、設定されている場合はfalsenullを指定すると未設定状態となる
        defaultValueNull - 初期値としてNULLを使用する場合はtrue、使用しない場合はfalsenullを指定すると未設定状態となる
        indexTypes - 索引種別の集合。nullを指定すると未設定状態となる。空の場合は索引の設定が一つもないとみなされる
        Since:
        +
        4.1
        +
      • +
      + + + +
        +
      • +

        ColumnInfo

        +
        public ColumnInfo(java.lang.String name,
        +          GSType type,
        +          java.lang.Boolean nullable,
        +          java.util.Set<IndexType> indexTypes)
        +
        カラム名、型、NOT NULL制約の状態、索引種別の集合を指定してカラム情報を作成します。 +

        空ではない索引種別の集合が指定された場合、内容が複製されます。

        +
        Parameters:
        name - カラム名。nullを指定すると未設定状態となる
        type - カラムの型。nullを指定すると未設定状態となる
        nullable - NOT NULL制約が設定されていない場合はtrue、設定されている場合はfalsenullを指定すると未設定状態となる
        indexTypes - 索引種別の集合。nullを指定すると未設定状態となる。空の場合は索引の設定が一つもないとみなされる
        Since:
        +
        3.5
        +
      • +
      + + + +
        +
      • +

        ColumnInfo

        +
        public ColumnInfo(java.lang.String name,
        +          GSType type,
        +          java.util.Set<IndexType> indexTypes)
        +
        カラム名、型、索引種別の集合を指定してカラム情報を作成します。 +

        空ではない索引種別の集合が指定された場合、内容が複製されます。

        +
        Parameters:
        name - カラム名。nullを指定すると未設定状態となる
        type - カラムの型。nullを指定すると未設定状態となる
        indexTypes - 索引種別の集合。nullを指定すると未設定状態となる。空の場合は索引の設定が一つもないとみなされる
        Since:
        +
        1.5
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        getDefaultValueNull

        +
        public java.lang.Boolean getDefaultValueNull()
        +
        カラムの初期値としてNULLを使用するかどうかを取得します。
        +
        Returns:
        NULLを使用する場合はtrue、NULL以外の値を使用する場合は false、未設定の場合はnull
        Since:
        +
        4.1
        +
      • +
      + + + +
        +
      • +

        getIndexTypes

        +
        public java.util.Set<IndexType> getIndexTypes()
        +
        このカラムのすべての索引種別を取得します。 +

        返却された値に対して変更操作を行った場合、 UnsupportedOperationExceptionが発生することがあります。また、このオブジェクトに対する操作により、返却されたオブジェクトの内容が変化することはありません。

        +
        Returns:
        索引種別の集合。未設定の場合はnull
        Since:
        +
        1.5
        +
      • +
      + + + +
        +
      • +

        getName

        +
        public java.lang.String getName()
        +
        カラム名を取得します。
        +
        Returns:
        カラム名。未設定の場合はnull
        +
      • +
      + + + +
        +
      • +

        getNullable

        +
        public java.lang.Boolean getNullable()
        +
        カラムにNOT NULL制約が設定されていないかどうかを取得します。
        +
        Returns:
        NOT NULL制約が設定されていない場合はtrue、設定されている場合はfalse、未設定の場合はnull
        Since:
        +
        3.5
        +
      • +
      + + + +
        +
      • +

        getTimePrecision

        +
        public TimeUnit getTimePrecision()
        +
        このカラムの日時型における精度を取得します。 +

        コンテナを定義する際に、現バージョンにて使用できる組み合わせは、以下のみです。

        + + + + + + +
        カラム型日時精度
        TIMESTAMP型 + +
        TIMESTAMP型以外null
        + +

        日時精度を指定したColumnInfoを構築するには、ColumnInfo.Builderを使用します。

        +
        Returns:
        日時精度。未設定の場合はnull
        Since:
        +
        5.3
        +
      • +
      + + + +
        +
      • +

        getType

        +
        public GSType getType()
        +
        カラムの型、すなわち、カラムに対応する各フィールド値の型を取得します。
        +
        Returns:
        カラムの型。未設定の場合はnull
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + +
+
+

Enum CompressionMethod

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • java.lang.Enum<CompressionMethod>
    • +
    • +
        +
      • com.toshiba.mwcloud.gs.CompressionMethod
      • +
      +
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    java.io.Serializable, java.lang.Comparable<CompressionMethod>
    +
    +
    +
    +
    public enum CompressionMethod
    +extends java.lang.Enum<CompressionMethod>
    +
    圧縮方式の種別を表します。 +

    時系列圧縮設定を行う際に使用します。

    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Enum Constant Summary

      + + + + + + + + + + + + + + +
      Enum Constants 
      Enum Constant and Description
      HI +
      誤差あり間引き圧縮方式であることを示します。
      +
      NO +
      無圧縮であることを示します。
      +
      SS +
      誤差なし間引き圧縮方式であることを示します。
      +
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      static CompressionMethodvalueOf(java.lang.String name) +
      Returns the enum constant of this type with the specified name.
      +
      static CompressionMethod[]values() +
      Returns an array containing the constants of this enum type, in +the order they are declared.
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Enum

        +clone, compareTo, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf
      • +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +getClass, notify, notifyAll, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Enum Constant Detail

      + + + +
        +
      • +

        HI

        +
        public static final CompressionMethod HI
        +
        誤差あり間引き圧縮方式であることを示します。 +

        誤差あり間引き圧縮では、前回まで及び直後に登録したデータと同じ傾斜を表すロウは省かれます。同じ傾斜かを判定する条件はユーザが指定できます。指定されたカラムが条件を満たし、それ以外のカラムの値が前回のデータと同じ場合のみ省かれます。省かれたデータはinterpolateやsample処理の際に、指定された誤差の範囲内で復元されます。

        +
      • +
      + + + +
        +
      • +

        NO

        +
        public static final CompressionMethod NO
        +
        無圧縮であることを示します。
        +
      • +
      + + + +
        +
      • +

        SS

        +
        public static final CompressionMethod SS
        +
        誤差なし間引き圧縮方式であることを示します。 +

        誤差なし間引き圧縮では、直前及び直後に登録したロウと同じデータを持つロウは省かれます。省かれたデータはinterpolateやsample処理の際に、誤差を発生することなく復元されます。

        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        valueOf

        +
        public static CompressionMethod valueOf(java.lang.String name)
        +
        Returns the enum constant of this type with the specified name. +The string must match exactly an identifier used to declare an +enum constant in this type. (Extraneous whitespace characters are +not permitted.)
        +
        Parameters:
        name - the name of the enum constant to be returned.
        +
        Returns:
        the enum constant with the specified name
        +
        Throws:
        +
        java.lang.IllegalArgumentException - if this enum type has no constant +with the specified name
        +
        java.lang.NullPointerException - if the argument is null
        +
      • +
      + + + +
        +
      • +

        values

        +
        public static CompressionMethod[] values()
        +
        Returns an array containing the constants of this enum type, in +the order they are declared. This method may be used to iterate +over the constants as follows: +
        +for (CompressionMethod c : CompressionMethod.values())
        +    System.out.println(c);
        +
        +
        Returns:
        an array containing the constants of this enum type, in +the order they are declared
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + +
+
+

Class Container.BindType<K,R,C extends Container<K,R>>

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • com.toshiba.mwcloud.gs.Container.BindType<K,R,C>
    • +
    +
  • +
+
+
    +
  • +
    Type Parameters:
    K - ロウキーの型。ロウキーが存在しない場合はVoidまたは Row.Keyを指定
    R - マッピングに用いるロウオブジェクトの型
    C - 対応するContainerインスタンスにおいて実装されていることを期待する、Containerまたはそのサブインタフェースの型
    +
    +
    Enclosing interface:
    +
    Container<K,R>
    +
    +
    +
    +
    public static class Container.BindType<K,R,C extends Container<K,R>>
    +extends java.lang.Object
    +
    Containerならびにその型パラメータと結びつく型情報を表します。 +

    Containerインスタンスを構築する際に与える複数の型情報について、一つのオブジェクトとしてまとめて保持することができます。

    + +

    ロウキーの型とContainerインスタンスの型との対応関係の妥当性など、内容の妥当性については、このクラスのインスタンスの生成段階で必ずしも検査するとは限りません。

    +
    Since:
    +
    4.3
    +
    See Also:
    GridStore.getContainer(String, Container.BindType)
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      CcastContainer(Container<?,?> container) +
      このオブジェクトが保持するロウキーの型ならびにロウオブジェクトの型を型パラメータとして持つ、Containerまたはそのサブインタフェースの型にキャストします。
      +
      KcastKey(java.lang.Object obj) +
      このオブジェクトが保持するロウキーの型にキャストします。
      +
      RcastRow(java.lang.Object obj) +
      このオブジェクトが保持するロウオブジェクトの型にキャストします。
      +
      java.lang.Class<? extends Container<?,?>>getContainerClass() +
      Containerまたはそのサブインタフェースの型を取得します。
      +
      java.lang.Class<K>getKeyClass() +
      ロウキーの型を取得します。
      +
      java.lang.Class<R>getRowClass() +
      ロウオブジェクトの型を取得します。
      +
      static <R> Container.BindType<java.lang.Void,R,? extends Container<java.lang.Void,R>>noKeyOf(java.lang.Class<R> rowClass) +
      ロウキーを持たず、指定のロウオブジェクト型、ならびに、任意の型の Containerと結びつくContainer.BindTypeを取得します。
      +
      static <K,R> Container.BindType<K,R,? extends Container<K,R>>of(java.lang.Class<K> keyClass, + java.lang.Class<R> rowClass) +
      指定のロウキー型、指定のロウオブジェクト型、ならびに、任意の型の Containerと結びつくContainer.BindTypeを取得します。
      +
      static <K,R extends Row.WithKey<K>> 
      Container.BindType<K,R,? extends Container<K,R>>
      of(java.lang.Class<R> rowClass) +
      指定のロウオブジェクト型から得られるロウキーの型、指定のロウオブジェクト型、ならびに、任意の型のContainerと結びつく Container.BindTypeを取得します。
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        castContainer

        +
        public C castContainer(Container<?,?> container)
        +                                       throws GSException
        +
        このオブジェクトが保持するロウキーの型ならびにロウオブジェクトの型を型パラメータとして持つ、Containerまたはそのサブインタフェースの型にキャストします。
        +
        Parameters:
        container - キャスト対象のContainerインスタンス
        +
        Returns:
        キャストされたオブジェクト
        +
        Throws:
        +
        GSException - キャスト対象のContainerインスタンスと、このオブジェクトが保持する型情報との間で、ロウキーの型ならびにロウオブジェクトの型が一致しない場合
        Since:
        +
        4.3
        +
      • +
      + + + +
        +
      • +

        castKey

        +
        public K castKey(java.lang.Object obj)
        +
        このオブジェクトが保持するロウキーの型にキャストします。
        +
        Parameters:
        obj - キャスト対象のオブジェクト
        +
        Returns:
        キャストされたオブジェクト
        Since:
        +
        4.3
        +
      • +
      + + + +
        +
      • +

        castRow

        +
        public R castRow(java.lang.Object obj)
        +
        このオブジェクトが保持するロウオブジェクトの型にキャストします。
        +
        Parameters:
        obj - キャスト対象のオブジェクト
        +
        Returns:
        キャストされたオブジェクト
        Since:
        +
        4.3
        +
      • +
      + + + +
        +
      • +

        getContainerClass

        +
        public java.lang.Class<? extends Container<?,?>> getContainerClass()
        +
        Containerまたはそのサブインタフェースの型を取得します。
        +
        Returns:
        対応するContainerインスタンスにおいて実装されていることを期待する、Containerまたはそのサブインタフェースの型
        Since:
        +
        4.3
        +
      • +
      + + + +
        +
      • +

        getKeyClass

        +
        public java.lang.Class<K> getKeyClass()
        +
        ロウキーの型を取得します。
        +
        Returns:
        ロウキーの型
        Since:
        +
        4.3
        +
      • +
      + + + +
        +
      • +

        getRowClass

        +
        public java.lang.Class<R> getRowClass()
        +
        ロウオブジェクトの型を取得します。
        +
        Returns:
        ロウオブジェクトの型
        Since:
        +
        4.3
        +
      • +
      + + + +
        +
      • +

        noKeyOf

        +
        public static <R> Container.BindType<java.lang.Void,R,? extends Container<java.lang.Void,R>> noKeyOf(java.lang.Class<R> rowClass)
        +                                                                                          throws GSException
        +
        ロウキーを持たず、指定のロウオブジェクト型、ならびに、任意の型の Containerと結びつくContainer.BindTypeを取得します。
        +
        Type Parameters:
        R - ロウオブジェクトの型
        Parameters:
        rowClass - ロウオブジェクトの型に対応するクラスオブジェクト
        +
        Returns:
        対応する型情報
        +
        Throws:
        +
        GSException - ロウキーの型と、ロウオブジェクトの型との間で不整合を検出した場合
        Since:
        +
        4.3
        +
      • +
      + + + +
        +
      • +

        of

        +
        public static <K,R> Container.BindType<K,R,? extends Container<K,R>> of(java.lang.Class<K> keyClass,
        +                                                        java.lang.Class<R> rowClass)
        +                                                           throws GSException
        +
        指定のロウキー型、指定のロウオブジェクト型、ならびに、任意の型の Containerと結びつくContainer.BindTypeを取得します。
        +
        Type Parameters:
        K - ロウキーの型
        R - ロウオブジェクトの型
        Parameters:
        keyClass - ロウキーの型に対応するクラスオブジェクト
        rowClass - ロウオブジェクトの型に対応するクラスオブジェクト
        +
        Returns:
        対応する型情報
        +
        Throws:
        +
        GSException - ロウキーの型と、ロウオブジェクトの型との間で不整合を検出した場合
        Since:
        +
        4.3
        +
      • +
      + + + +
        +
      • +

        of

        +
        public static <K,R extends Row.WithKey<K>> Container.BindType<K,R,? extends Container<K,R>> of(java.lang.Class<R> rowClass)
        +                                                                                                         throws GSException
        +
        指定のロウオブジェクト型から得られるロウキーの型、指定のロウオブジェクト型、ならびに、任意の型のContainerと結びつく Container.BindTypeを取得します。
        +
        Type Parameters:
        K - ロウキーの型
        R - ロウオブジェクトの型
        Parameters:
        rowClass - ロウオブジェクトの型に対応するクラスオブジェクト
        +
        Returns:
        対応する型情報
        +
        Throws:
        +
        GSException - 指定のロウオブジェクト型からロウキーの型が得られなかった場合
        Since:
        +
        4.3
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + +
+
+

Interface Container<K,R>

+
+
+
+
    +
  • +
    Type Parameters:
    K - ロウキーの型。ロウキーが存在しない場合はVoidまたは Row.Keyを指定
    R - マッピングに用いるロウオブジェクトの型
    +
    +
    All Superinterfaces:
    +
    java.lang.AutoCloseable, java.io.Closeable
    +
    +
    +
    All Known Subinterfaces:
    +
    Collection<K,R>, TimeSeries<R>
    +
    +
    +
    +
    public interface Container<K,R>
    +extends java.io.Closeable
    +
    同一タイプのロウ集合からなるGridDBの構成要素に対しての、管理機能を提供します。 +

    ロウオブジェクトを入出力の基本単位として、各種管理機能を提供します。ロウオブジェクトとGridDB上のロウは、指定のロウオブジェクト型とGridDB上のスキーマとの対応関係に基づいて、相互にマッピングされます。

    + +

    GridDB上のスキーマを構成する各カラムは、ロウオブジェクト内のフィールドやメソッド定義と対応関係を持ちます。 1つのコンテナは1つ以上のカラムにより構成されます。各カラムとの対応関係は、指定の型のpublic・protected・デフォルトアクセスのフィールドまたはgetter・setterメソッドに基づき決定されます。ただし、TransientRowFieldが指定されたフィールドやメソッド、 transientフィールドは対象外です。また、ロウオブジェクトを動的に生成するために、public・protected・デフォルトアクセスのデフォルトコンストラクタを持つ必要があります。内部クラスの場合、静的内部クラスである必要があります。

    + +

    getterは、boolean値を返す場合「is」または「get」、それ以外の型の値を返す場合「get」から始まる名前を持つ、引数なしのメソッドです。 setterは、「set」から始まる名前を持ち、設定対象の値1つのみを引数とするメソッドです。 GridDB上のカラム名は、特に指定のない限り、フィールド名、もしくは、getter・ setterのメソッド名から「get」などの固定の接頭辞を除いたものと対応します。別のカラム名と対応付けるには、RowField.name()を使用します。 getter・setterの一方しか存在しないものは無視されます。同名のフィールドと getter・setterの両方が存在する場合は、getter・setterを使用します。 getter・setter名の大文字・小文字表記が異なる場合、getterのものが優先されます。カラムがロウキーを持つ場合は、対応するフィールドまたはメソッドにRowKeyを設定します。

    + +

    1つのコンテナのカラム間で、ASCIIの大文字・小文字表記だけが異なる名前のものを複数定義することはできません。その他、コンテナ定義におけるカラム名の文字種や長さ、カラム数には制限があります。具体的には、 GridDB機能リファレンスを参照してください。特に記載のない限り、カラム名を指定する操作では、ASCIIの大文字・小文字表記の違いは区別されません。

    + +

    カラムの型と、ロウオブジェクト内の各値の型との対応は、それぞれ次の通りです。

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    カラム型ロウオブジェクト内の各値の型
    STRINGString
    BOOLBooleanまたはboolean
    BYTEByteまたはbyte
    SHORTShortまたはshort
    INTEGERIntegerまたはint
    LONGLongまたはlong
    FLOATFloatまたはfloat
    DOUBLEDoubleまたはdouble
    TIMESTAMP(通常精度:ミリ秒)Date
    TIMESTAMP(高精度:マイクロ・ナノ秒)Timestamp
    GEOMETRYGeometry
    BLOBBlobを実装したクラス
    STRING配列String[]
    BOOL配列boolean[]
    BYTE配列byte[]
    SHORT配列short[]
    INTEGER配列int[]
    LONG配列long[]
    FLOAT配列float[]
    DOUBLE配列double[]
    TIMESTAMP配列java.util.Date[]
    + +

    フィールドの値の表現範囲やサイズには制限があります。具体的には、付録の章の値の範囲の説明、ならびに、GridDB機能リファレンスを参照してください。制限に反する値をコンテナに格納することはできません。

    + +

    ロウキーとして許可されている型や、ロウキーに対応するカラムの有無、ロウ操作の可否といった制約は、このコンテナのサブインタフェースの定義によって異なります。

    + +

    GridDB上のロウにおけるNULLは、NOT NULL制約が設定されていない限り保持することができます。ロウオブジェクトのフィールドまたはgetter・setter +メソッドが参照型の値を入出力できる場合、GridDB上のロウにおけるNULLは nullとして入出力できます。それ以外の場合、NULLはロウオブジェクトにおいて後述の空の値にマッピングされます。

    + +

    ロウオブジェクト型におけるNOT NULL制約は、NotNullならびに Nullableにより明示的に指定できます。NOT NULL制約がいずれの指定対象にも指定されていない場合、ロウキー以外のカラムはNOT NULL +制約なしであるとみなされます。ロウキーは暗黙的にNOT NULL制約が設定された状態となっており、この制約を外すような指定はできません。また、同一の指定対象や、getter、setterメソッド間での矛盾したNOT NULL制約は指定できません。たとえば、ロウオブジェクト型にNotNullNullableが同時に指定された場合、矛盾したNOT NULL制約が指定されたとみなされます。NOT NULL制約の有無に関する指定対象別の優先順位は、次の通りです。

    +
      +
    1. ロウオブジェクトのフィールドまたはgetter・setterメソッド
    2. +
    3. ロウオブジェクトの型
    4. +
    5. ロウオブジェクトのエンクロージング型(例:ロウオブジェクトのクラスを内部クラスとして取り囲むインタフェース)、または、その型から再帰的に求まるエンクロージング型。再帰的に求まるエンクロージング型のうち、制約の指定があり、かつ、最初に見つかった型を優先。
    6. +
    7. ロウオブジェクトの型が属するパッケージ
    8. +
    + +

    空の値は、Rowの作成など各種操作の初期値などとして用いられることのある、フィールド値の一種です。以下のように、カラム型ごとに値が定義されています。

    + + + + + + + + + + + +
    カラム型空の値
    STRING""(長さ0の文字列)
    BOOL偽(false)
    数値型0
    TIMESTAMP1970-01-01T00:00:00Z
    GEOMETRYPOINT(EMPTY)
    BLOB長さ0のBLOBデータ
    配列型要素数0の配列
    + +

    日時精度は、TimePrecision.value()もしくは ColumnInfo.getTimePrecision()により明示的に指定できます。

    + +

    トランザクション処理では、デフォルトで自動コミットモードが有効になっています。自動コミットモードでは、変更操作は逐次確定し、明示的に取り消すことができません。手動コミットモードにおいて、このオブジェクトを介した操作によりクラスタノード上でエラーが検出されGSExceptionが送出された場合、コミット前の更新操作はすべて取り消されます。トランザクション分離レベルはREAD COMMITTEDのみをサポートします。ロック粒度は、コンテナの種別によって異なります。

    + +

    このContainerの生成後またはトランザクション終了後、最初にロウの更新・追加・削除、ならびに更新用ロック獲得が行われた時点で、新たなトランザクションが開始されます。自動コミットモードでは、トランザクションを開始したロウ操作が完了するとトランザクションは自動的にコミットされ終了します。手動コミットモードでは、明示的にトランザクションを制御するか有効期限に到達するまでトランザクションは終了しません。トランザクションをコミットするにはcommit()、アボートするにはabort()を使用します。このContainerまたはその生成元のGridStoreがクローズされた場合もトランザクションはアボートされ終了します。また、トランザクションを開始させた操作を行った時刻を起点として、GridDB上で定められている期間だけ経過すると有効期限に到達します。有効期限到達後にアボートすることなく、続けてロウ操作やトランザクションコミットを行おうとすると、GSExceptionが送出されるようになります。

    + +

    あるコンテナへの操作要求に対するクラスタノード上での処理が開始され、終了するまでの間、同一のコンテナに対する操作が待機させられる場合があります。ここでの操作には、コンテナのスキーマや索引などの定義変更、コンテナ情報の参照、ロウ操作などが含まれます。一貫性レベルがIMMEDIATEGridStoreインスタンスを通じてコンテナを操作する場合、同一のコンテナに対するIMMEDIATE設定での他の操作処理の途中、原則としては待機させられます。また、コンテナに対する他の操作処理の途中の状態に基づいて処理が行われることは、原則としてはありません。例外事項については、個別の操作ごとの説明を参照してください。

    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Nested Class Summary

      + + + + + + + + + + +
      Nested Classes 
      Modifier and TypeInterface and Description
      static class Container.BindType<K,R,C extends Container<K,R>> +
      Containerならびにその型パラメータと結びつく型情報を表します。
      +
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      voidabort() +
      手動コミットモードにおいて、現在のトランザクションの操作結果を元に戻し、トランザクションを終了します。
      +
      voidclose() +
      GridDBとの接続状態を解除し、必要に応じて関連するリソースを解放します。
      +
      voidcommit() +
      手動コミットモードにおいて、現在のトランザクションにおける操作結果を確定させ、トランザクションを終了します。
      +
      java.sql.BlobcreateBlob() +
      このContainerに対して巨大なバイナリデータを格納するためのBlobを作成します。
      +
      voidcreateIndex(IndexInfo info) +
      IndexInfoで設定されている内容に従い、索引を作成します。
      +
      voidcreateIndex(java.lang.String columnName) +
      指定された名前のカラムに対し、デフォルトの種別で名前のない索引を作成します。
      +
      voidcreateIndex(java.lang.String columnName, + IndexType type) +
      指定された名前のカラムに対し、指定された種別で名前のない索引を作成します。
      +
      RcreateRow() +
      このコンテナのカラムレイアウトに基づき、ロウオブジェクトを新規作成します。
      +
      voidcreateTrigger(TriggerInfo info) +
      トリガを設定します。
      +
      voiddropIndex(IndexInfo info) +
      IndexInfoで設定されている内容に一致する、すべての索引を削除します。
      +
      voiddropIndex(java.lang.String columnName) +
      指定された名前のカラムのうち、デフォルトの種別の索引のみを削除します。
      +
      voiddropIndex(java.lang.String columnName, + IndexType type) +
      指定された名前のカラムのうち、指定された種別の索引のみを削除します。
      +
      voiddropTrigger(java.lang.String name) +
      トリガを削除します。
      +
      voidflush() +
      これまでの更新結果をSSDなどの不揮発性記憶媒体に書き出し、すべてのクラスタノードが突然停止したとしても内容が失われないようにします。
      +
      Rget(K key) +
      指定のロウキーに対応するロウの内容を取得します。
      +
      Rget(K key, + boolean forUpdate) +
      指定のオプションに従い、ロウキーに対応するロウの内容を取得します。
      +
      Container.BindType<K,R,? extends Container<K,R>>getBindType() +
      このオブジェクトと結びつく型情報を取得します。
      +
      ContainerTypegetType() +
      このコンテナの種別を取得します。
      +
      booleanput(java.util.Collection<R> rowCollection) +
      指定のロウオブジェクト集合に基づき、任意個数のロウをまとめて新規作成または更新します。
      +
      booleanput(K key, + R row) +
      必要に応じ別途ロウキーを指定して、ロウを新規作成または更新します。
      +
      booleanput(R row) +
      常にロウオブジェクトのみを指定して、ロウを新規作成または更新します。
      +
      Query<R>query(java.lang.String tql) +
      指定のTQL文を実行するためのクエリを作成します。
      +
      <S> Query<S>query(java.lang.String tql, + java.lang.Class<S> rowType) +
      指定のTQL文・対応付け用クラスを使用する、クエリオブジェクトを作成します。
      +
      booleanremove(K key) +
      指定のロウキーに対応するロウを削除します。
      +
      voidsetAutoCommit(boolean enabled) +
      コミットモードの設定を変更します。
      +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        abort

        +
        void abort()
        +           throws GSException
        +
        手動コミットモードにおいて、現在のトランザクションの操作結果を元に戻し、トランザクションを終了します。
        +
        Throws:
        +
        GSException - 自動コミットモードのときに呼び出された場合
        +
        GSException - この処理またはトランザクションのタイムアウト、このコンテナの削除、接続障害が発生した場合、またはクローズ後に呼び出された場合
        +
      • +
      + + + +
        +
      • +

        close

        +
        void close()
        +           throws GSException
        +
        GridDBとの接続状態を解除し、必要に応じて関連するリソースを解放します。 +

        トランザクションを保持している場合、未コミットの更新内容はすべて元に戻されます。

        + +

        GSExceptionが送出された場合であっても、接続状態の解除やローカルのリソース解放処理は適宜実施されます。ただし、GridDB上のトランザクション状態などは残る可能性があります。すでにクローズ済みの場合、このメソッドを呼び出しても解放処理は行われません。

        +
        +
        Specified by:
        +
        close in interface java.lang.AutoCloseable
        +
        Specified by:
        +
        close in interface java.io.Closeable
        +
        Throws:
        +
        GSException - 接続障害が発生した場合
        +
      • +
      + + + +
        +
      • +

        commit

        +
        void commit()
        +            throws GSException
        +
        手動コミットモードにおいて、現在のトランザクションにおける操作結果を確定させ、トランザクションを終了します。
        +
        Throws:
        +
        GSException - 自動コミットモードのときに呼び出された場合
        +
        GSException - この処理またはトランザクションのタイムアウト、このコンテナの削除、接続障害が発生した場合、またはクローズ後に呼び出された場合
        +
      • +
      + + + +
        +
      • +

        createBlob

        +
        java.sql.Blob createBlob()
        +                         throws GSException
        +
        このContainerに対して巨大なバイナリデータを格納するためのBlobを作成します。 +

        作成されたBlobは、ロウのフィールドとして利用できます。まず、Blob.setBinaryStream(long)などを用いてバイナリデータをセットし、続いてput(Object)などを用いてContainerに格納します。

        + +

        このメソッドにより得られたBlobに対し、少なくとも次のメソッドを呼び出すことができます。

        +
          +
        • Blob.length()
        • +
        • Blob.setBinaryStream(long)
        • +
        • Blob.setBytes(long, byte[])
        • +
        • Blob.setBytes(long, byte[], int, int)
        • +
        • Blob.free()
        • +
        + +

        ロウオブジェクトに設定するBLOBは、必ずしもこのメソッドで作成した Blobを使う必要はありません。SerialBlobなど、Blobを実装した他のクラスのインスタンスを設定することもできます。また、作成されたBlobに有効期間はありません。

        + +

        現バージョンでは、ロウ全体をクライアントのメモリ上にキャッシュするため、このVMのメモリ使用量の制限を超えるような巨大なデータは登録できない可能性があります。

        + +

        現バージョンでは、GSExceptionが送出されることはありません。

        +
        Throws:
        +
        GSException
        +
      • +
      + + + +
        +
      • +

        createIndex

        +
        void createIndex(IndexInfo info)
        +                 throws GSException
        +
        IndexInfoで設定されている内容に従い、索引を作成します。 +

        作成対象の索引のカラムについては、カラム名列またはカラム番号列の少なくとも一方が設定されており、かつ、対応するコンテナにおいて実在するものが設定されている必要があります。カラム名列とカラム番号列が共に設定されている場合、対応するカラム列が順序を含め一致している必要があります。

        + +

        索引種別が設定されていないかIndexType.DEFAULTが設定されていた場合、後述の基準に従い、デフォルト種別の索引が選択されます。

        + +

        1つのコンテナの索引間で、ASCIIの大文字・小文字表記だけが異なる名前のものを複数定義することはできません。その他、索引の定義において使用できる索引名の文字種や長さには制限があります。具体的には、 GridDB機能リファレンスを参照してください。特に記載のない限り、索引名を指定する操作では、ASCIIの大文字・小文字表記の違いは区別されません。

        + +

        既存の同名の索引が存在した場合、後述の条件を満たす同一設定の IndexInfoを指定しなければならず、その場合新たな索引は作成されません。一方、既存の異なる名前の索引または名前のない索引と同一設定の IndexInfoを指定することはできません。

        + +

        索引名が設定されていない場合は、名前のない索引の作成が要求されたものとみなされます。名前を除いて同一設定の索引がすでに存在していた場合、名前のない索引でなければならず、その場合新たな索引は作成されません。

        + +

        現バージョンでは、少なくともContainerを通じて作成された索引において、次の条件を満たす場合に索引名を除いて同一設定の索引であるとみなされます。

        +
          +
        • 索引対象のカラム列が順序を含め一致すること。カラム名列、カラム番号列、単一カラム指定、といった、カラム列の指定方法の違いは無視される
        • +
        • 索引種別が一致すること。デフォルト指定の有無といった索引種別の指定方法の違いは無視される
        • +
        + +

        現バージョンにおける、GridStoreFactory.getInstance()を基に生成されたContainerインスタンスでは、コンテナの種別、対応するカラムの型などに基づき、次の索引種別がデフォルトとして選択されます。

        + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        カラムの型コレクション時系列
        STRINGIndexType.TREEIndexType.TREE
        BOOLIndexType.TREEIndexType.TREE
        数値型IndexType.TREEIndexType.TREE
        TIMESTAMPIndexType.TREEIndexType.TREE※制限あり
        GEOMETRYIndexType.SPATIAL(なし)
        BLOB(なし)(なし)
        配列型(なし)(なし)
        +

        時系列のロウキー(TIMESTAMP型)には索引を設定できません。また、カラム列を構成するカラム型によってデフォルト種別が異なる場合には、選択できません。

        + +

        このContainerインスタンスが未コミットのトランザクションを保持していた場合、コミットしてから作成を行います。処理対象のコンテナにおいて実行中の他のトランザクションが存在する場合、それらの終了を待機してから作成を行います。すでに索引が存在しており新たな索引が作成されなかった場合、他のトランザクションによって待機するかどうかは未定義です。またこの場合、このContainerインスタンスが保持している未コミットのトランザクションが常にコミットされるかどうかは未定義です。

        + +

        現バージョンでは、コンテナの規模など諸条件を満たした場合、索引の作成開始から終了までの間に、処理対象のコンテナに対してコンテナ情報の参照、一部の索引操作、トリガ操作、ロウ操作(更新含む)を行える場合があります。それ以外の操作は、Containerでの定義通り待機させる場合があります。索引の作成途中に別の操作が行われる場合は、作成途中の索引に関する情報はコンテナ情報には含まれません。

        +
        Throws:
        +
        GSException - 作成対象のカラム、索引名が上記の規則に合致しない場合
        +
        GSException - この処理のタイムアウト、このコンテナの削除もしくはスキーマ変更、接続障害が発生した場合、またはクローズ後に呼び出された場合
        +
        GSException - 指定のカラムにおいてサポートされていない索引種別が指定された場合
        +
        java.lang.NullPointerException - 引数にnullが指定された場合
        Since:
        +
        3.5
        +
      • +
      + + + +
        +
      • +

        createIndex

        +
        void createIndex(java.lang.String columnName)
        +                 throws GSException
        +
        指定された名前のカラムに対し、デフォルトの種別で名前のない索引を作成します。 +

        カラム名のみが設定されたIndexInfoを指定して createIndex(IndexInfo)を呼び出した場合と同様に振る舞います。

        +
        Throws:
        +
        GSException - 指定のカラム名がcreateIndex(IndexInfo)の規則に合致しない場合
        +
        GSException - この処理のタイムアウト、このコンテナの削除もしくはスキーマ変更、接続障害が発生した場合、またはクローズ後に呼び出された場合
        +
        GSException - 索引設定がサポートされていないカラムが指定された場合
        +
        java.lang.NullPointerException - 引数にnullが指定された場合
        +
      • +
      + + + +
        +
      • +

        createIndex

        +
        void createIndex(java.lang.String columnName,
        +               IndexType type)
        +                 throws GSException
        +
        指定された名前のカラムに対し、指定された種別で名前のない索引を作成します。 +

        カラム名と種別のみが設定されたIndexInfoを指定して createIndex(IndexInfo)を呼び出した場合と同様に振る舞います。

        +
        Throws:
        +
        GSException - 指定のカラム名と種別が createIndex(IndexInfo)の規則に合致しない場合
        +
        GSException - この処理のタイムアウト、このコンテナの削除もしくはスキーマ変更、接続障害が発生した場合、またはクローズ後に呼び出された場合
        +
        GSException - 指定のカラムにおいてサポートされていない索引種別が指定された場合
        +
        java.lang.NullPointerException - 1つ以上の引数にnullが指定された場合
        +
      • +
      + + + +
        +
      • +

        createRow

        +
        R createRow()
        +            throws GSException
        +
        このコンテナのカラムレイアウトに基づき、ロウオブジェクトを新規作成します。 +

        コンテナのロウオブジェクトの型がRowの場合、作成されるRowの各フィールドには GridStore.createRow(ContainerInfo)により作成した場合と同様に既定の初期値が設定されます。またこの場合、作成されたRowに対する操作は、このContainerオブジェクトのクローズ有無に影響しません。

        +
        Throws:
        +
        GSException - ユーザ定義型のロウオブジェクトを作成する場合に例外が送出された場合
        +
        GSException - クローズ後に呼び出された場合
        Since:
        +
        1.5
        +
      • +
      + + + +
        +
      • +

        createTrigger

        +
        void createTrigger(TriggerInfo info)
        +                   throws GSException
        +
        トリガを設定します。 +

        このコンテナに対して特定の種別の更新操作が行われた場合に、指定のURIに通知が送信されるようになります。指定されたトリガと同名のトリガが存在した場合、設定内容が上書きされます。

        + +

        トリガ設定内容の詳細は、TriggerInfoの定義を参照してください。トリガ名、トリガ種別、通知条件、通知先URI、通知内容の詳細は以下の通りです。

        + + トリガ名 +

        トリガ種別や通知条件などの違いによらず、1つのコンテナのトリガ間で、 ASCIIの大文字・小文字表記を含め同一の名前のものを複数定義することはできません。その他、トリガの定義において使用できるトリガ名の文字種や長さには制限があります。具体的には、GridDB機能リファレンスを参照してください。特に記載のない限り、トリガ名を指定する操作では、 ASCIIの大文字・小文字表記の違いが区別されます。

        + + トリガ種別 +

        次のトリガ種別をサポートします。 + + + + + + + + + + + +
        名称説明
        RESTコンテナに指定された種別の更新操作が行われた際に、指定されたURIにREST(HTTP POSTメソッド)で通知するトリガです。
        Java Message Service(JMS)コンテナに指定された種別の更新操作が行われた際に、指定されたURIのJMSサーバへJMSメッセージを通知するトリガです。 JMSプロバイダとしてApache ActiveMQを使用します。
        + + 通知条件 +

        このコンテナに対するロウ新規作成/更新 (put(Object)put(Object, Object)put(java.util.Collection)GridStore.multiPut(java.util.Map)RowSet.update(Object))・削除(remove(Object)RowSet.remove()) +操作命令の実行直後に通知を行います。監視対象として複数の操作が指定された場合は、そのうちのいずれかが実行された際に通知を行います。

        + +

        通知を行った時点でのレプリケーションの完了は保証されません。自動コミットモード無効で実行されたロウ新規作成/更新・削除命令に対応する通知については、通知を行った時点でトランザクションが未コミットであったり、通知後にトランザクションがアボートされたりした場合、通知を受けた時点で通知に含まれるデータが取得できないことがあります。

        + +

        複数ロウ一括操作の場合、1件のロウ操作ごとに通知を行います。指定されたURIに通知を行っても一定時間以内に応答がない場合、タイムアウトし再送は行いません。 GridDBクラスタに障害が発生した場合、ある更新操作に対応する通知が行われないことのほか、複数回通知されることがあります。

        + + 通知先URI +

        +通知先URIは次の書式で記述します。

        +
        + (メソッド名)://(ホスト名):(ポート番号)/(パス)
        +

        ただし、トリガ種別がRESTの場合、メソッド名にはhttpのみ指定できます。

        + + 通知内容 +

        更新が行われたコンテナ名、更新操作名、更新されたロウデータの指定したカラムの値を通知します。更新操作名は、ロウ新規作成/更新では"put"、削除では"delete"となります。

        + +

        通知する値は、ロウ新規作成では新規作成直後、更新では更新後、削除では削除前のロウデータについての、指定カラムの値となります。カラムの型がTIMESTAMPの場合、1970-01-01T00:00:00Z +からの経過ミリ秒を示す整数が値として設定されます。カラムの型がBLOB型、GEOMETRY型、配列型の場合、空文字列が値として設定されます。

        + + 通知方法―RESTの場合 +

        以下のようなJSON文字列を、MIMEタイプapplication/jsonで送信します。

        +
        + {
        +   "container" : "(コンテナ名)",
        +   "event" : "(更新操作名)",
        +   "row" : {
        +     "(カラム名)" : (カラムデータ),
        +     "(カラム名)" : (カラムデータ),
        +     ...
        +   }
        + }
        + + 通知方法―JMSの場合 +

        javax.jms.TextMessageを、指定されたデスティネーション種別・デスティネーション名で送信します。

        + +

        コンテナ名は、 javax.jms.Message#setStringProperty("@container", "(コンテナ名)") +で設定されます。更新操作名は、 javax.jms.Message#setStringProperty("@event", "(更新操作名)") +で設定されます。

        + +

        カラムの値は、カラムの型に応じた javax.jms.Message#setXXXProperty("(カラム名)", (カラムデータ)) +で設定されます。

        + +

        トリガが設定されているコンテナに対して GridStore.putCollection(String, Class, boolean)GridStore.putTimeSeries(String, Class, TimeSeriesProperties, boolean) +などによりカラムレイアウトが変更された際に、トリガの通知対象となっているカラムの削除または名称変更があった場合、該当するカラムはトリガの通知対象から削除されます。

        + +

        GridDBからの通知の際に、設定されている通知先URIへのリクエストに対応するサーバが応答しなかった場合、タイムアウト時刻までの待機処理が発生します。この待機処理は、このコンテナならびに他の一部のコンテナの更新に対する通知が遅れる要因となります。したがって、無効となった通知先URIを持つトリガは dropTrigger(String)により削除することが推奨されます。

        + +

        一つのコンテナに対して設定できるトリガの最大数、ならびに、トリガの各種設定値の上限については、GridDB機能リファレンスを参照してください。

        +
        Parameters:
        info - 設定対象のトリガ情報
        +
        Throws:
        +
        GSException - トリガ名がnull、空、またはその他の規則に合致しない場合
        +
        GSException - 監視対象更新操作の指定がない場合
        +
        GSException - 通知先URIが規定の構文に合致しない場合
        +
        GSException - トリガ種別でJMSが指定され、かつJMSデスティネーション種別がnull、または空、または指定の書式に合致しない場合
        +
        GSException - トリガ種別でJMSが指定され、かつJMSデスティネーション名がnull、または空の場合
        +
        GSException - この処理のタイムアウト、このコンテナの削除、接続障害が発生した場合、またはクローズ後に呼び出された場合
        +
        java.lang.NullPointerException - 引数にnullが指定された場合
        Since:
        +
        1.5
        +
      • +
      + + + +
        +
      • +

        dropIndex

        +
        void dropIndex(IndexInfo info)
        +               throws GSException
        +
        IndexInfoで設定されている内容に一致する、すべての索引を削除します。 +

        IndexInfoの設定内容は、削除対象の索引を絞り込む条件として使用されます。絞り込み条件は、カラム列、索引種別、索引名の3つに分類されます。それぞれ設定するかどうかは任意です。いずれも設定されていない場合は、作成済みのすべての索引が削除されます。

        + +

        カラム名列またはカラム番号列が設定されている場合、対応するコンテナにおいて実在するものである必要があります。カラム名列とカラム番号列が共に設定されている場合、対応するカラムが互いに一致している必要があります。カラム名列ならびにカラム番号列が共に設定されていない場合、他の絞り込み条件(索引種別、索引名)を満たす任意のカラム列に対する索引が削除対象となります。

        + +

        索引種別が設定されている場合、指定の種別の索引のみが削除対象となります。IndexType.DEFAULTが設定されている場合、 createIndex(IndexInfo)の基準に従い、デフォルト種別の索引が選択されます。索引をサポートしていないカラムや指定の種別の索引をサポートしていないカラムについては、削除対象にはなりません。索引種別が設定されていない場合、他の絞り込み条件(カラム列、索引名)を満たす任意の種別の索引が削除対象となります。

        + +

        索引名が設定されている場合、指定の名前の索引のみが削除対象となります。索引名の同一性は、createIndex(IndexInfo)の基準に従います。索引名が設定されていない場合、他の絞り込み条件(カラム列、索引種別)を満たす、任意の名前の索引ならびに名前のない索引が削除対象となります。

        + +

        削除対象となる索引が一つも存在しない場合、索引の削除は行われません。

        + +

        トランザクションの扱いは、createIndex(IndexInfo)と同様です。また、複数の索引が削除対象となった場合に、一部の索引のみが削除された状態で他のトランザクションが実行されることがありうるかどうかは未定義です。

        + +

        索引の削除要求の完了直後の状態に関しては、 GridStore.dropContainer(String)と同様です。

        +
        Throws:
        +
        GSException - 削除対象のカラム、索引名が上記の規則に合致しない場合
        +
        GSException - この処理のタイムアウト、このコンテナの削除もしくはスキーマ変更、接続障害が発生した場合、またはクローズ後に呼び出された場合
        +
        java.lang.NullPointerException - 引数にnullが指定された場合
        Since:
        +
        3.5
        +
      • +
      + + + +
        +
      • +

        dropIndex

        +
        void dropIndex(java.lang.String columnName)
        +               throws GSException
        +
        指定された名前のカラムのうち、デフォルトの種別の索引のみを削除します。 +

        カラム名とデフォルトの種別が設定されたIndexInfoを指定して dropIndex(IndexInfo)を呼び出した場合と同様に振る舞います。

        +
        Throws:
        +
        GSException - 指定のカラム名がdropIndex(IndexInfo)の規則に合致しない場合
        +
        GSException - この処理のタイムアウト、このコンテナの削除もしくはスキーマ変更、接続障害が発生した場合、またはクローズ後に呼び出された場合
        +
        java.lang.NullPointerException - 引数にnullが指定された場合
        +
      • +
      + + + +
        +
      • +

        dropIndex

        +
        void dropIndex(java.lang.String columnName,
        +             IndexType type)
        +               throws GSException
        +
        指定された名前のカラムのうち、指定された種別の索引のみを削除します。 +

        カラム名と種別が設定されたIndexInfoを指定して dropIndex(IndexInfo)を呼び出した場合と同様に振る舞います。

        +
        Throws:
        +
        GSException - 指定のカラム名がdropIndex(IndexInfo)の規則に合致しない場合
        +
        GSException - この処理のタイムアウト、このコンテナの削除もしくはスキーマ変更、接続障害が発生した場合、またはクローズ後に呼び出された場合
        +
        java.lang.NullPointerException - 1つ以上の引数にnullが指定された場合
        +
      • +
      + + + +
        +
      • +

        dropTrigger

        +
        void dropTrigger(java.lang.String name)
        +                 throws GSException
        +
        トリガを削除します。 +

        指定された名前のトリガが存在しない場合は何も変更しません。

        +
        Throws:
        +
        GSException - この処理のタイムアウト、このコンテナの削除、接続障害が発生した場合、またはクローズ後に呼び出された場合
        +
        java.lang.NullPointerException - 引数にnullが指定された場合
        Since:
        +
        1.5
        +
      • +
      + + + +
        +
      • +

        flush

        +
        void flush()
        +           throws GSException
        +
        これまでの更新結果をSSDなどの不揮発性記憶媒体に書き出し、すべてのクラスタノードが突然停止したとしても内容が失われないようにします。 +

        通常より信頼性が要求される処理のために使用します。ただし、頻繁に実行すると性能低下を引き起こす可能性が高まります。

        + +

        書き出し対象のクラスタノードの範囲など、挙動の詳細はGridDB上の設定によって変化します。

        +
        Throws:
        +
        GSException - この処理のタイムアウト、このコンテナの削除、接続障害が発生した場合、またはクローズ後に呼び出された場合
        +
      • +
      + + + + + + + + + + + +
        +
      • +

        get

        +
        R get(K key,
        +    boolean forUpdate)
        +      throws GSException
        +
        指定のオプションに従い、ロウキーに対応するロウの内容を取得します。 +

        ロウキーに対応するカラムが存在する場合のみ使用できます。

        + +

        手動コミットモードにおいて更新用ロックを要求した場合、トランザクションが終了するかタイムアウトするまで対象ロウのロックを維持します。ロックされたロウに対する他のトランザクションからの更新・削除操作は、このトランザクションが終了するかタイムアウトするまで待機するようになります。対象ロウが削除されたとしても、ロックは維持されます。

        + +

        自動コミットモードの場合、更新用ロックを要求できません。

        +
        Parameters:
        forUpdate - 更新用ロックを要求するかどうか
        +
        Returns:
        対応するロウオブジェクト。存在しない場合はnull
        +
        Throws:
        +
        GSException - ロウキーに対応するカラムが存在しない場合
        +
        GSException - 自動コミットモードにもかかわらず、更新用ロックを要求しようとした場合
        +
        GSException - この処理またはトランザクションのタイムアウト、このコンテナの削除もしくはスキーマ変更、接続障害が発生した場合、クローズ後に呼び出された場合、またはサポート範囲外の値がキーとして設定されていた場合
        +
        java.lang.ClassCastException - 指定のロウキーがマッピング処理で使用されるロウキーの型と対応しない場合
        +
        java.lang.NullPointerException - keynullが指定された場合
        +
      • +
      + + + +
        +
      • +

        getBindType

        +
        Container.BindType<K,R,? extends Container<K,R>> getBindType()
        +                                                             throws GSException
        +
        このオブジェクトと結びつく型情報を取得します。 +

        取得する型情報には、このオブジェクトを構築する際に与えられたロウキーの型、ロウオブジェクトの型と同一のものが設定されます。

        + +

        Containerまたはそのサブインタフェースの型については、構築時に与えられた型と同一になるとは限らず、そのサブインタフェースの型が求まる可能性があります。また、ContainerTypeにより区別されるコンテナ種別と一対一で対応することは保証しません。

        +
        Returns:
        このオブジェクトと結びつく型情報
        +
        Throws:
        +
        GSException - クローズ後に呼び出された場合
        Since:
        +
        4.3
        +
      • +
      + + + +
        +
      • +

        getType

        +
        ContainerType getType()
        +                      throws GSException
        +
        このコンテナの種別を取得します。 +

        現バージョンでは、インスタンス生成時点で常に種別が確定するため、この操作によりGridDBクラスタに問い合わせを行うことはありません。

        +
        Throws:
        +
        GSException - クローズ後に呼び出された場合
        Since:
        +
        1.5
        +
      • +
      + + + +
        +
      • +

        put

        +
        boolean put(java.util.Collection<R> rowCollection)
        +            throws GSException
        +
        指定のロウオブジェクト集合に基づき、任意個数のロウをまとめて新規作成または更新します。 +

        指定のロウオブジェクト集合の各ロウについて、イテレータからの取り出し順序に従ってput(Object)を呼び出した場合と同様に新規作成または更新操作を行います。

        + +

        指定のロウオブジェクト集合内に同一のロウキーを持つ複数のロウが存在する場合、ロウオブジェクト集合のイテレータからの取り出し順序を基準として、同一のロウキーを持つ最も後方にあるロウオブジェクトの内容が反映されます。

        + +

        コンテナの種別ならびに設定によっては、操作できるロウの内容について put(Object)と同様の制限が設けられています。具体的な制限事項は、サブインタフェースの定義を参照してください。

        + +

        手動コミットモードの場合、対象のロウがロックされます。

        + +

        自動コミットモードのときに、コンテナならびにロウに対する処理の途中で例外が発生した場合、コンテナの一部のロウに対する操作結果のみが反映されたままとなることがあります。

        +
        Returns:
        現バージョンでは、常にfalse
        +
        Throws:
        +
        GSException - 特定コンテナ種別固有の制限に反する操作を行った場合
        +
        GSException - この処理またはトランザクションのタイムアウト、このコンテナの削除もしくはスキーマ変更、接続障害が発生した場合、クローズ後に呼び出された場合、またはサポート範囲外の値がロウオブジェクトに含まれていた場合
        +
        java.lang.ClassCastException - 指定の各ロウオブジェクトがマッピング処理で使用されるロウオブジェクトの型と対応しない場合
        +
        java.lang.NullPointerException - rowCollectionまたはその要素として nullが指定された場合。また、put(Object, Object)と同様ロウオブジェクトの特定の箇所にnullが含まれていた場合
        See Also:
        put(Object)
        +
      • +
      + + + + + +
        +
      • +

        put

        +
        boolean put(K key,
        +          R row)
        +            throws GSException
        +
        必要に応じ別途ロウキーを指定して、ロウを新規作成または更新します。 +

        ロウキーに対応するカラムが存在する場合、ロウキーとコンテナの状態を基に、ロウを新規作成するか、更新するかを決定します。この際、対応するロウがコンテナ内に存在しない場合は新規作成、存在する場合は更新します。ロウオブジェクトとは別にロウキーを指定した場合、ロウオブジェクト内のロウキーより優先して使用されます。

        + +

        ロウキーに対応するカラムを持たない場合、常に新規のロウを作成します。別途指定するロウキーには、常にnullを指定します。

        + +

        コンテナの種別ならびに設定によっては、制限が設けられています。具体的な制限事項は、サブインタフェースの定義を参照してください。

        + +

        手動コミットモードの場合、対象のロウはロックされます。

        +
        Parameters:
        key - 処理対象のロウキー
        row - 新規作成または更新するロウの内容と対応するロウオブジェクト
        +
        Returns:
        指定のロウキーと一致するロウが存在したかどうか
        +
        Throws:
        +
        GSException - ロウキーに対応するカラムが存在しないにもかかわらず、キーが指定された場合
        +
        GSException - 特定コンテナ固有の制限に反する操作を行った場合
        +
        GSException - この処理またはトランザクションのタイムアウト、このコンテナの削除もしくはスキーマ変更、接続障害が発生した場合、クローズ後に呼び出された場合、またはサポート範囲外の値がキーまたはロウオブジェクトに含まれていた場合
        +
        java.lang.ClassCastException - 指定のキーもしくはロウオブジェクトと、マッピング処理で使用される型との間で対応しないものがある場合
        +
        java.lang.NullPointerException - rownullが指定された場合。また、ロウフィールドに対応するロウオブジェクト内のオブジェクトについて、NOT NULL制約があるにも関わらずnullが設定されている場合や、配列型の場合にnullの要素が含まれている場合
        +
      • +
      + + + + + +
        +
      • +

        put

        +
        boolean put(R row)
        +            throws GSException
        +
        常にロウオブジェクトのみを指定して、ロウを新規作成または更新します。 +

        指定のロウオブジェクト内のロウキーを使用する点を除き、 put(Object, Object)と同等です。

        +
        Throws:
        +
        GSException
        See Also:
        put(Object, Object)
        +
      • +
      + + + +
        +
      • +

        query

        +
        Query<R> query(java.lang.String tql)
        +               throws GSException
        +
        指定のTQL文を実行するためのクエリを作成します。 +

        選択式に集計演算を含むクエリなど、実行結果の出力形式がこのコンテナのロウの形式と対応しないクエリに対しては、使用できません。代わりに、query(String, Class)が利用できます。

        + +

        Query.fetch(boolean)を通じてロウ集合を求める際に更新用ロックのオプションを有効できるのは、このコンテナ上に実在しないロウが選択されることのないクエリのみです。たとえば、補間演算を含むクエリに対しては有効にできません。

        + +

        現バージョンでは、TQL文の誤りによるGSExceptionや、 nullを指定できない引数でnullを指定したことによる NullPointerExceptionは送出されません。引数に誤りがあった場合、得られたクエリをフェッチする際に例外が送出されます。

        +
        Parameters:
        tql - TQL文。nullは指定できない
        +
        Throws:
        +
        GSException - 現バージョンでは送出されない
        See Also:
        query(String, Class)
        +
      • +
      + + + +
        +
      • +

        query

        +
        <S> Query<S> query(java.lang.String tql,
        +                 java.lang.Class<S> rowType)
        +               throws GSException
        +
        指定のTQL文・対応付け用クラスを使用する、クエリオブジェクトを作成します。 +

        集計演算のように、このコンテナのロウと異なる型の結果を期待する場合に使用します。

        +

        rowTypeには次の型またはnullのみを指定できます。

        +
        +
        コンテナのロウの型
        +
        query(String)と同様、このコンテナと対応する型のロウデータを受け取ります。
        +
        AggregationResult
        +
        集計演算の実行結果を受け取ります。
        +
        QueryAnalysisEntry
        +
        EXPLAIN文ならびEXPLAIN ANALYZE文の実行結果を受け取ります。
        +
        null
        +
        実行結果に応じた適切な型により結果を受け取ります。
        +
        +

        上記以外の値は指定できません。

        + +

        Query.fetch(boolean)を通じてロウ集合を求める際に更新用ロックのオプションを有効できるのは、このコンテナ上に実在しないロウが選択されることのないクエリのみです。たとえば、補間演算を含むクエリに対しては有効にできません。

        + +

        現バージョンでは、TQL文の誤りによるGSExceptionや、 nullを指定できない引数でnullを指定したことによる NullPointerExceptionは送出されません。引数に誤りがあった場合、得られたクエリをフェッチする際に例外が送出されます。

        +
        Parameters:
        tql - TQL文。nullは指定できない
        rowType - 期待するロウオブジェクトの型またはnull
        +
        Throws:
        +
        GSException - サポートされない型をrowTypeに指定した場合
        +
      • +
      + + + + + +
        +
      • +

        remove

        +
        boolean remove(K key)
        +               throws GSException
        +
        指定のロウキーに対応するロウを削除します。 +

        ロウキーに対応するカラムが存在する場合のみ使用できます。対応するロウが存在しない場合は何も変更しません。

        + +

        コンテナの種別ならびに設定によっては、制限が設けられています。具体的な制限事項は、サブインタフェースの定義を参照してください。

        + +

        手動コミットモードの場合、対象のロウはロックされます。

        +
        Returns:
        対応するロウが存在したかどうか
        +
        Throws:
        +
        GSException - ロウキーに対応するカラムが存在しない場合
        +
        GSException - 特定コンテナ固有の制限に反する操作を行った場合
        +
        GSException - この処理またはトランザクションのタイムアウト、このコンテナの削除もしくはスキーマ変更、接続障害が発生した場合、クローズ後に呼び出された場合、またはサポート範囲外の値がキーとして指定された場合
        +
        java.lang.ClassCastException - 指定のロウキーがマッピング処理で使用されるロウキーの型と対応しない場合
        +
        java.lang.NullPointerException - 引数にnullが指定された場合
        +
      • +
      + + + +
        +
      • +

        setAutoCommit

        +
        void setAutoCommit(boolean enabled)
        +                   throws GSException
        +
        コミットモードの設定を変更します。 +

        自動コミットモードでは、直接トランザクション状態を制御できず、変更操作が逐次コミットされます。自動コミットモードが有効でない場合、すなわち手動コミットモードの場合は、直接commit()を呼び出すかトランザクションがタイムアウトしない限り、このコンテナ内で同一のトランザクションが使用され続け、変更操作はコミットされません。

        + +

        自動コミットモードが無効から有効に切り替わる際、未コミットの変更内容は暗黙的にコミットされます。コミットモードに変更がない場合、トランザクション状態は変更されません。この挙動は、 Connection.setAutoCommit(boolean)と同様です。

        +
        Throws:
        +
        GSException - モード変更に伴いコミット処理を要求した際に、この処理またはトランザクションのタイムアウト、このコンテナの削除、接続障害が発生した場合、またはクローズ後に呼び出された場合
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + +
+
+

Class ContainerInfo

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • com.toshiba.mwcloud.gs.ContainerInfo
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class ContainerInfo
    +extends java.lang.Object
    +
    特定のコンテナに関する情報を表します。 +

    コンテナ名の表記、もしくは、コンテナ種別と時系列オプションの有無の対応などの内容の妥当性について、必ずしも検査するとは限りません。

    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + + + + + + + + + + +
      Constructors 
      Constructor and Description
      ContainerInfo() +
      空のコンテナ情報を作成します。
      +
      ContainerInfo(ContainerInfo containerInfo) +
      指定のコンテナ情報を複製します。
      +
      ContainerInfo(java.lang.String name, + ContainerType type, + java.util.List<ColumnInfo> columnInfoList, + boolean rowKeyAssigned) +
      複合ロウキーを持たない場合に限定し、カラムレイアウトに関する情報を指定してコンテナ情報を作成します。
      +
      ContainerInfo(java.lang.String name, + ContainerType type, + java.util.List<ColumnInfo> columnInfoList, + java.util.List<java.lang.Integer> rowKeyColumnList) +
      任意のロウキー構成を含む、カラムレイアウトに関する情報を指定してコンテナ情報を作成します。
      +
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      intgetColumnCount() +
      カラム数を取得します。
      +
      ColumnInfogetColumnInfo(int column) +
      指定カラムに関する情報を取得します。
      +
      java.lang.StringgetDataAffinity() +
      データ配置最適化のために用いられる、コンテナ間の類似性を示す文字列を取得します。
      +
      java.util.List<IndexInfo>getIndexInfoList() +
      索引情報の一覧を取得します。
      +
      java.lang.StringgetName() +
      コンテナ名を取得します。
      +
      java.util.List<java.lang.Integer>getRowKeyColumnList() +
      ロウキーを構成するカラムの一覧を取得します。
      +
      TimeSeriesPropertiesgetTimeSeriesProperties() +
      時系列構成オプションを取得します。
      +
      java.util.List<TriggerInfo>getTriggerInfoList() +
      トリガ情報の一覧を取得します。
      +
      ContainerTypegetType() +
      コンテナの種別を取得します。
      +
      booleanisColumnOrderIgnorable() +
      カラム順序が無視できるかどうかを返します。
      +
      booleanisRowKeyAssigned() +
      複合ロウキーが設定されていない場合に限定し、ロウキーに対応するカラムの有無を取得します。
      +
      voidsetColumnInfoList(java.util.List<ColumnInfo> columnInfoList) +
      すべてのカラムの情報をまとめて設定します。
      +
      voidsetColumnOrderIgnorable(boolean ignorable) +
      カラム順序が無視できるかどうかを設定します。
      +
      voidsetDataAffinity(java.lang.String dataAffinity) +
      データ配置最適化のために用いられる、コンテナ間の類似性(データアフィニティ)を示す文字列を設定します。
      +
      voidsetIndexInfoList(java.util.List<IndexInfo> indexInfoList) +
      索引情報の一覧を設定します。
      +
      voidsetName(java.lang.String name) +
      コンテナ名を設定します。
      +
      voidsetRowKeyAssigned(boolean assigned) +
      ロウキーに対応するカラムの有無を設定します。
      +
      voidsetRowKeyColumnList(java.util.List<java.lang.Integer> rowKeyColumnList) +
      ロウキーを構成するカラムの一覧を設定します。
      +
      voidsetTimeSeriesProperties(TimeSeriesProperties props) +
      時系列構成オプションを設定します。
      +
      voidsetTriggerInfoList(java.util.List<TriggerInfo> triggerInfoList) +
      トリガ情報の一覧を設定します。
      +
      voidsetType(ContainerType type) +
      コンテナ種別を設定します。
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        ContainerInfo

        +
        public ContainerInfo()
        +
        空のコンテナ情報を作成します。
        +
        Since:
        +
        1.5
        +
      • +
      + + + +
        +
      • +

        ContainerInfo

        +
        public ContainerInfo(ContainerInfo containerInfo)
        +
        指定のコンテナ情報を複製します。
        +
        Parameters:
        containerInfo - 複製元のコンテナ情報。nullは指定できない
        +
        Throws:
        +
        java.lang.NullPointerException - 引数にnullが指定された場合
        Since:
        +
        1.5
        +
      • +
      + + + +
        +
      • +

        ContainerInfo

        +
        public ContainerInfo(java.lang.String name,
        +             ContainerType type,
        +             java.util.List<ColumnInfo> columnInfoList,
        +             boolean rowKeyAssigned)
        +
        複合ロウキーを持たない場合に限定し、カラムレイアウトに関する情報を指定してコンテナ情報を作成します。
        +
        Parameters:
        name - コンテナ名。nullを指定すると未設定状態となる
        type - コンテナ種別。nullを指定すると未設定状態となる
        columnInfoList - カラム情報のリスト。nullは指定できない
        rowKeyAssigned - ロウキーに対応するカラムの有無。単一カラムからなるロウキーを持つ場合はtrue、持たない場合はfalse
        +
        Throws:
        +
        java.lang.NullPointerException - columnInfoListnullが指定された場合
        Since:
        +
        1.5
        +
      • +
      + + + +
        +
      • +

        ContainerInfo

        +
        public ContainerInfo(java.lang.String name,
        +             ContainerType type,
        +             java.util.List<ColumnInfo> columnInfoList,
        +             java.util.List<java.lang.Integer> rowKeyColumnList)
        +
        任意のロウキー構成を含む、カラムレイアウトに関する情報を指定してコンテナ情報を作成します。
        +
        Parameters:
        name - コンテナ名。nullを指定すると未設定状態となる
        type - コンテナ種別。nullを指定すると未設定状態となる
        columnInfoList - カラム情報のリスト。nullは指定できない
        rowKeyColumnList - ロウキーを構成するカラム列についての、0 +から始まるカラム番号一覧。長さ0のリストまたはnullを指定すると、ロウキーなしとみなされる
        +
        Throws:
        +
        java.lang.NullPointerException - columnInfoListnullが指定された場合
        Since:
        +
        4.3
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        getColumnCount

        +
        public int getColumnCount()
        +
        カラム数を取得します。
        +
        Returns:
        カラム数。カラムレイアウト未設定の場合は0
        +
      • +
      + + + +
        +
      • +

        getColumnInfo

        +
        public ColumnInfo getColumnInfo(int column)
        +
        指定カラムに関する情報を取得します。
        +
        Parameters:
        column - カラムを特定するための番号。0以上かつカラム数未満の値
        +
        Returns:
        指定カラム番号に対応するカラム情報
        +
        Throws:
        +
        java.lang.IllegalArgumentException - 範囲外のカラム番号を指定した場合
        See Also:
        RowField.columnNumber()
        +
      • +
      + + + +
        +
      • +

        getDataAffinity

        +
        public java.lang.String getDataAffinity()
        +
        データ配置最適化のために用いられる、コンテナ間の類似性を示す文字列を取得します。
        +
        Returns:
        時系列間の類似性を示す文字列。標準設定の場合はnull
        Since:
        +
        2.1
        +
        See Also:
        setDataAffinity(String)
        +
      • +
      + + + +
        +
      • +

        getIndexInfoList

        +
        public java.util.List<IndexInfo> getIndexInfoList()
        +
        索引情報の一覧を取得します。 +

        返却された値に対して変更操作を行った場合、 UnsupportedOperationExceptionが発生することがあります。また、このオブジェクトに対する操作により、返却されたオブジェクトの内容が変化することはありません。

        +
        Returns:
        索引情報の一覧
        Since:
        +
        3.5
        +
      • +
      + + + +
        +
      • +

        getName

        +
        public java.lang.String getName()
        +
        コンテナ名を取得します。
        +
        Returns:
        コンテナ名。未設定の場合はnull
        +
      • +
      + + + +
        +
      • +

        getRowKeyColumnList

        +
        public java.util.List<java.lang.Integer> getRowKeyColumnList()
        +
        ロウキーを構成するカラムの一覧を取得します。 +

        返却された値に対して変更操作を行った場合、 UnsupportedOperationExceptionが発生することがあります。また、このオブジェクトに対する操作により、返却されたオブジェクトの内容が変化することはありません。

        +
        Returns:
        ロウキーを構成するカラム列についての、0から始まるカラム番号一覧。対応するコンテナがロウキーを持たない場合は長さ0 +のリスト
        Since:
        +
        4.3
        +
      • +
      + + + +
        +
      • +

        getTimeSeriesProperties

        +
        public TimeSeriesProperties getTimeSeriesProperties()
        +
        時系列構成オプションを取得します。 +

        返却されたオブジェクトの内容を呼び出し後に変更した場合に、このオブジェクトの内容が変化するかどうかは未定義です。また、このオブジェクトに対する操作により、返却されたオブジェクトの内容が変化するかどうかは未定義です。

        +
        Returns:
        時系列構成オプション。未設定の場合はnull
        Since:
        +
        1.5
        +
      • +
      + + + +
        +
      • +

        getTriggerInfoList

        +
        public java.util.List<TriggerInfo> getTriggerInfoList()
        +
        トリガ情報の一覧を取得します。 +

        返却された値に対して変更操作を行った場合、 UnsupportedOperationExceptionが発生することがあります。また、このオブジェクトに対する操作により、返却されたオブジェクトの内容が変化することはありません。

        +
        Returns:
        トリガ情報の一覧
        Since:
        +
        1.5
        +
      • +
      + + + +
        +
      • +

        getType

        +
        public ContainerType getType()
        +
        コンテナの種別を取得します。
        +
        Returns:
        コンテナの種別。未設定の場合はnull
        See Also:
        ContainerType
        +
      • +
      + + + +
        +
      • +

        isColumnOrderIgnorable

        +
        public boolean isColumnOrderIgnorable()
        +
        カラム順序が無視できるかどうかを返します。
        +
        Returns:
        カラム順序が無視できるか
        Since:
        +
        1.5
        +
      • +
      + + + +
        +
      • +

        isRowKeyAssigned

        +
        public boolean isRowKeyAssigned()
        +
        複合ロウキーが設定されていない場合に限定し、ロウキーに対応するカラムの有無を取得します。 +

        このメソッドがtrueを返却する場合、ロウキーに対応するカラム番号は0です。

        + +

        任意のロウキー構成を参照するには、getRowKeyColumnList()を使用します。

        +
        Returns:
        ロウキーの有無
        +
        Throws:
        +
        java.lang.IllegalStateException - 複合ロウキーが設定されていた場合
        +
      • +
      + + + +
        +
      • +

        setColumnInfoList

        +
        public void setColumnInfoList(java.util.List<ColumnInfo> columnInfoList)
        +
        すべてのカラムの情報をまとめて設定します。 +

        カラム順序を無視しない場合、指定のカラム情報の並びが実際のコンテナのカラムの並びと対応します。

        + +

        ロウキーに対応するカラムの有無の設定状態によらず、設定を解除することができます。

        + +

        指定したオブジェクトの内容を呼び出し後に変更したとしても、このオブジェクトの内容は変化しません。

        +
        Parameters:
        columnInfoList - カラム情報のリスト。nullまたは空のリスト場合、設定が解除される
        Since:
        +
        1.5
        +
        See Also:
        setColumnOrderIgnorable(boolean)
        +
      • +
      + + + +
        +
      • +

        setColumnOrderIgnorable

        +
        public void setColumnOrderIgnorable(boolean ignorable)
        +
        カラム順序が無視できるかどうかを設定します。 +

        デフォルトでは無視しない(false)状態に設定されています。

        +
        Parameters:
        ignorable - カラム順序が無視できるか
        Since:
        +
        1.5
        +
        See Also:
        GridStore.putContainer(String, ContainerInfo, boolean)
        +
      • +
      + + + +
        +
      • +

        setDataAffinity

        +
        public void setDataAffinity(java.lang.String dataAffinity)
        +
        データ配置最適化のために用いられる、コンテナ間の類似性(データアフィニティ)を示す文字列を設定します。 +

        同一クラスタノード上の同一管理領域内に格納されるコンテナについて、配置先を最適化するために使用されます。

        + +

        データアフィニティが同一のコンテナの内容は、近接する配置先に格納される可能性が高くなります。また、解放期限が設定され、近接する配置先に格納された時系列について、登録頻度などの変更パターンが類似している場合、解放期限に到達したロウの解放処理が効率的に行われる可能性が高くなります。

        + +

        コンテナの定義において使用できるデータアフィニティ文字列の文字種や長さには制限があります。具体的には、GridDB機能リファレンスを参照してください。ただし、文字列を設定した時点で必ずしもすべての制限を検査するとは限りません。特に記載のない限り、データアフィニティ文字列が使用される操作では、ASCIIの大文字・小文字表記の違いが区別されます。

        +
        Parameters:
        dataAffinity - コンテナ間の類似性を示す文字列。nullが指定された場合は標準設定を優先することを示す。規則に合致しない文字列は指定できない場合がある
        +
        Throws:
        +
        java.lang.IllegalArgumentException - 制限に反する文字列が指定されたことを検知できた場合
        Since:
        +
        2.1
        +
      • +
      + + + +
        +
      • +

        setIndexInfoList

        +
        public void setIndexInfoList(java.util.List<IndexInfo> indexInfoList)
        +
        索引情報の一覧を設定します。 +

        指定したオブジェクトの内容を呼び出し後に変更したとしても、このオブジェクトの内容は変化しません。

        +
        Parameters:
        indexInfoList - 索引情報の一覧。nullまたは空のリスト場合、設定が解除される
        Since:
        +
        3.5
        +
      • +
      + + + +
        +
      • +

        setName

        +
        public void setName(java.lang.String name)
        +
        コンテナ名を設定します。
        +
        Parameters:
        name - コンテナ名。nullの場合、設定が解除される
        Since:
        +
        1.5
        +
      • +
      + + + +
        +
      • +

        setRowKeyAssigned

        +
        public void setRowKeyAssigned(boolean assigned)
        +
        ロウキーに対応するカラムの有無を設定します。 +

        デフォルトではロウキーなしに設定されています。

        + +

        カラムレイアウトの設定状態によらず使用できます。

        +
        Parameters:
        assigned - ロウキーに対応するカラムの有無。ロウキーを持つ場合は true、持たない場合はfalse
        Since:
        +
        1.5
        +
      • +
      + + + +
        +
      • +

        setRowKeyColumnList

        +
        public void setRowKeyColumnList(java.util.List<java.lang.Integer> rowKeyColumnList)
        +
        ロウキーを構成するカラムの一覧を設定します。 +

        指定したオブジェクトの内容を呼び出し後に変更したとしても、このオブジェクトの内容は変化しません。

        +
        Parameters:
        rowKeyColumnList - ロウキーを構成するカラム列についての、0 +から始まるカラム番号一覧。長さ0のリストまたはnullを指定すると、ロウキーなしとみなされる
        Since:
        +
        4.3
        +
      • +
      + + + +
        +
      • +

        setTimeSeriesProperties

        +
        public void setTimeSeriesProperties(TimeSeriesProperties props)
        +
        時系列構成オプションを設定します。 +

        コンテナ種別の設定状態によらず使用できます。

        + +

        指定したオブジェクトの内容を呼び出し後に変更したとしても、このオブジェクトの内容は変化しません。

        +
        Parameters:
        props - 時系列構成オプション。nullの場合、設定が解除される
        Since:
        +
        1.5
        +
      • +
      + + + +
        +
      • +

        setTriggerInfoList

        +
        public void setTriggerInfoList(java.util.List<TriggerInfo> triggerInfoList)
        +
        トリガ情報の一覧を設定します。 +

        返却された値に対して変更操作を行った場合、 UnsupportedOperationExceptionが発生することがあります。また、このオブジェクトに対する操作により、返却されたオブジェクトの内容が変化することはありません。

        +
        Parameters:
        triggerInfoList - トリガ情報のリスト。nullまたは空のリスト場合、設定が解除される
        Since:
        +
        1.5
        +
      • +
      + + + +
        +
      • +

        setType

        +
        public void setType(ContainerType type)
        +
        コンテナ種別を設定します。
        +
        Parameters:
        type - コンテナ種別。nullの場合、設定が解除される
        Since:
        +
        1.5
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + +
+
+

Enum ContainerType

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • java.lang.Enum<ContainerType>
    • +
    • +
        +
      • com.toshiba.mwcloud.gs.ContainerType
      • +
      +
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    java.io.Serializable, java.lang.Comparable<ContainerType>
    +
    +
    +
    +
    public enum ContainerType
    +extends java.lang.Enum<ContainerType>
    +
    コンテナの種別を表します。
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Enum Constant Summary

      + + + + + + + + + + + +
      Enum Constants 
      Enum Constant and Description
      COLLECTION +
      対象のコンテナがコレクションであることを示します。
      +
      TIME_SERIES +
      対象のコンテナが時系列であることを示します。
      +
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      static ContainerTypevalueOf(java.lang.String name) +
      Returns the enum constant of this type with the specified name.
      +
      static ContainerType[]values() +
      Returns an array containing the constants of this enum type, in +the order they are declared.
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Enum

        +clone, compareTo, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf
      • +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +getClass, notify, notifyAll, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Enum Constant Detail

      + + + +
        +
      • +

        COLLECTION

        +
        public static final ContainerType COLLECTION
        +
        対象のコンテナがコレクションであることを示します。
        +
      • +
      + + + +
        +
      • +

        TIME_SERIES

        +
        public static final ContainerType TIME_SERIES
        +
        対象のコンテナが時系列であることを示します。
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        valueOf

        +
        public static ContainerType valueOf(java.lang.String name)
        +
        Returns the enum constant of this type with the specified name. +The string must match exactly an identifier used to declare an +enum constant in this type. (Extraneous whitespace characters are +not permitted.)
        +
        Parameters:
        name - the name of the enum constant to be returned.
        +
        Returns:
        the enum constant with the specified name
        +
        Throws:
        +
        java.lang.IllegalArgumentException - if this enum type has no constant +with the specified name
        +
        java.lang.NullPointerException - if the argument is null
        +
      • +
      + + + +
        +
      • +

        values

        +
        public static ContainerType[] values()
        +
        Returns an array containing the constants of this enum type, in +the order they are declared. This method may be used to iterate +over the constants as follows: +
        +for (ContainerType c : ContainerType.values())
        +    System.out.println(c);
        +
        +
        Returns:
        an array containing the constants of this enum type, in +the order they are declared
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + +
+
+

Enum FetchOption

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • java.lang.Enum<FetchOption>
    • +
    • +
        +
      • com.toshiba.mwcloud.gs.FetchOption
      • +
      +
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    java.io.Serializable, java.lang.Comparable<FetchOption>
    +
    +
    +
    +
    public enum FetchOption
    +extends java.lang.Enum<FetchOption>
    +
    クエリ実行結果を取得する際のオプション項目です。
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Enum Constant Summary

      + + + + + + + + + + + +
      Enum Constants 
      Enum Constant and Description
      LIMIT +
      取得するロウの数の最大値を設定するために使用します。
      +
      PARTIAL_EXECUTION +
      部分実行モードを設定するために使用します。
      +
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      static FetchOptionvalueOf(java.lang.String name) +
      Returns the enum constant of this type with the specified name.
      +
      static FetchOption[]values() +
      Returns an array containing the constants of this enum type, in +the order they are declared.
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Enum

        +clone, compareTo, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf
      • +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +getClass, notify, notifyAll, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Enum Constant Detail

      + + + +
        +
      • +

        LIMIT

        +
        public static final FetchOption LIMIT
        +
        取得するロウの数の最大値を設定するために使用します。 +

        実行結果のロウ数が最大値を超えた場合、RowSetで得られる順番で先頭から最大値の分だけが取得できます。それ以降のロウは取得できません。

        + +

        サポートされる設定値の型は、IntegerまたはLongです。負の値は指定できません。設定が省略された場合、上限は設定されません。

        +
      • +
      + + + +
        +
      • +

        PARTIAL_EXECUTION

        +
        public static final FetchOption PARTIAL_EXECUTION
        +
        部分実行モードを設定するために使用します。 +

        部分実行モードでは、クエリの中間処理や結果送受信に用いるバッファのサイズなどがなるべく一定の範囲に収まるよう、必要に応じて実行対象のデータ範囲を分割し、この部分範囲ごとに実行とフェッチをリクエストすることがあります。そのため、RowSetを取得した時点で一部の範囲の結果が求まっていないことや、結果ロウを順に参照していく段階で、残りの範囲を部分的に実行していくことがあります。

        + +

        部分実行モードは、現バージョンでは次の条件すべてを満たすクエリに使用できます。また、LIMITオプションと併用することができます。条件を満たさない場合でも、各種フェッチオプションの設定時点ではエラーを検知しない場合があります。

        +
          +
        • TQL文からなるクエリであること
        • +
        • TQL文において、選択式が「*」のみからなり、ORDER BY節を含まないこと
        • +
        • 対応するContainerが個々の部分的なクエリ実行時点において常に自動コミットモードに設定されていること
        • +
        + +

        部分実行モードでは、対応するContainerのトランザクション分離レベルや状態に基づき、個々の部分的なクエリ実行時点において参照可能なロウが使用されます。ただし、クエリ全体の実行開始時点で存在しないロウは、実行対象から外れる場合があります。

        + +

        部分実行モードを有効にした場合にRowSetに対して使用できない操作や特有の挙動については、個別の定義を参照してください。

        + +

        サポートされる設定値の型は、Booleanのみです。部分実行モードを有効にするには、Boolean.TRUEと一致する値を指定します。現バージョンでは、未設定の場合には部分実行モードを有効にしません。

        +
        Since:
        +
        4.0
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        valueOf

        +
        public static FetchOption valueOf(java.lang.String name)
        +
        Returns the enum constant of this type with the specified name. +The string must match exactly an identifier used to declare an +enum constant in this type. (Extraneous whitespace characters are +not permitted.)
        +
        Parameters:
        name - the name of the enum constant to be returned.
        +
        Returns:
        the enum constant with the specified name
        +
        Throws:
        +
        java.lang.IllegalArgumentException - if this enum type has no constant +with the specified name
        +
        java.lang.NullPointerException - if the argument is null
        +
      • +
      + + + +
        +
      • +

        values

        +
        public static FetchOption[] values()
        +
        Returns an array containing the constants of this enum type, in +the order they are declared. This method may be used to iterate +over the constants as follows: +
        +for (FetchOption c : FetchOption.values())
        +    System.out.println(c);
        +
        +
        Returns:
        an array containing the constants of this enum type, in +the order they are declared
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + +
+
+

Class GSException

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • java.lang.Throwable
    • +
    • +
        +
      • java.lang.Exception
      • +
      • +
          +
        • java.io.IOException
        • +
        • +
            +
          • com.toshiba.mwcloud.gs.GSException
          • +
          +
        • +
        +
      • +
      +
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    java.io.Serializable
    +
    +
    +
    Direct Known Subclasses:
    +
    GSTimeoutException
    +
    +
    +
    +
    public class GSException
    +extends java.io.IOException
    +
    GridDB機能の処理中に発生した例外状態を示します。
    +
    See Also:
    Serialized Form
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Constructors 
      Constructor and Description
      GSException() +
      詳細メッセージを持たない例外を構築します。
      +
      GSException(int errorCode, + java.lang.String description) +
      エラー番号および詳細メッセージを指定して、例外を構築します。
      +
      GSException(int errorCode, + java.lang.String errorName, + java.lang.String description, + java.util.Map<java.lang.String,java.lang.String> parameters, + java.lang.Throwable cause) +
      エラー番号、エラー名、詳細メッセージ、パラメータのマップ、および原因を指定して、例外を構築します。
      +
      GSException(int errorCode, + java.lang.String errorName, + java.lang.String description, + java.lang.Throwable cause) +
      エラー番号、エラー名、詳細メッセージ、および原因を指定して、例外を構築します。
      +
      GSException(int errorCode, + java.lang.String description, + java.lang.Throwable cause) +
      エラー番号、詳細メッセージ、および原因を指定して、例外を構築します。
      +
      GSException(int errorCode, + java.lang.Throwable cause) +
      エラー番号および原因を指定して、例外を構築します。
      +
      GSException(java.lang.String message) +
      詳細メッセージを指定して、例外を構築します。
      +
      GSException(java.lang.String message, + java.lang.Throwable cause) +
      詳細メッセージおよび原因を指定して、例外を構築します。
      +
      GSException(java.lang.Throwable cause) +
      原因を指定して、例外を構築します。
      +
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      intgetErrorCode() +
      エラー番号を取得します。
      +
      java.lang.StringgetMessage()
      java.util.Map<java.lang.String,java.lang.String>getParameters() +
      エラーに関するパラメータのマップを取得します。
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Throwable

        +addSuppressed, fillInStackTrace, getCause, getLocalizedMessage, getStackTrace, getSuppressed, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString
      • +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        GSException

        +
        public GSException()
        +
        詳細メッセージを持たない例外を構築します。
        +
        See Also:
        Exception.Exception()
        +
      • +
      + + + +
        +
      • +

        GSException

        +
        public GSException(int errorCode,
        +           java.lang.String description)
        +
        エラー番号および詳細メッセージを指定して、例外を構築します。
        +
        Parameters:
        errorCode - エラー番号
        description - 詳細メッセージまたはnull
        See Also:
        Exception.Exception(String)
        +
      • +
      + + + +
        +
      • +

        GSException

        +
        public GSException(int errorCode,
        +           java.lang.String errorName,
        +           java.lang.String description,
        +           java.util.Map<java.lang.String,java.lang.String> parameters,
        +           java.lang.Throwable cause)
        +
        エラー番号、エラー名、詳細メッセージ、パラメータのマップ、および原因を指定して、例外を構築します。
        +
        Parameters:
        errorCode - エラー番号
        errorName - エラー名またはnull
        description - 詳細メッセージまたはnull
        parameters - パラメータのマップまたはnull
        cause - 原因またはnull
        See Also:
        Exception.Exception(String, Throwable)
        +
      • +
      + + + +
        +
      • +

        GSException

        +
        public GSException(int errorCode,
        +           java.lang.String errorName,
        +           java.lang.String description,
        +           java.lang.Throwable cause)
        +
        エラー番号、エラー名、詳細メッセージ、および原因を指定して、例外を構築します。
        +
        Parameters:
        errorCode - エラー番号
        errorName - エラー名またはnull
        description - 詳細メッセージまたはnull
        cause - 原因またはnull
        See Also:
        Exception.Exception(String, Throwable)
        +
      • +
      + + + +
        +
      • +

        GSException

        +
        public GSException(int errorCode,
        +           java.lang.String description,
        +           java.lang.Throwable cause)
        +
        エラー番号、詳細メッセージ、および原因を指定して、例外を構築します。
        +
        Parameters:
        errorCode - エラー番号
        description - 詳細メッセージまたはnull
        cause - 原因またはnull
        See Also:
        Exception.Exception(String, Throwable)
        +
      • +
      + + + +
        +
      • +

        GSException

        +
        public GSException(int errorCode,
        +           java.lang.Throwable cause)
        +
        エラー番号および原因を指定して、例外を構築します。
        +
        Parameters:
        errorCode - エラー番号
        cause - 原因またはnull
        See Also:
        Exception.Exception(Throwable)
        +
      • +
      + + + +
        +
      • +

        GSException

        +
        public GSException(java.lang.String message)
        +
        詳細メッセージを指定して、例外を構築します。
        +
        Parameters:
        message - 詳細メッセージまたはnull
        See Also:
        Exception.Exception(String)
        +
      • +
      + + + +
        +
      • +

        GSException

        +
        public GSException(java.lang.String message,
        +           java.lang.Throwable cause)
        +
        詳細メッセージおよび原因を指定して、例外を構築します。
        +
        Parameters:
        message - 詳細メッセージまたはnull
        cause - 原因またはnull
        See Also:
        Exception.Exception(String, Throwable)
        +
      • +
      + + + +
        +
      • +

        GSException

        +
        public GSException(java.lang.Throwable cause)
        +
        原因を指定して、例外を構築します。
        +
        Parameters:
        cause - 原因またはnull
        See Also:
        Exception.Exception(Throwable)
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        getErrorCode

        +
        public int getErrorCode()
        +
        エラー番号を取得します。 +

        対応する番号が存在しない場合は0を返します。

        +
      • +
      + + + +
        +
      • +

        getMessage

        +
        public java.lang.String getMessage()
        +
        +
        Overrides:
        +
        getMessage in class java.lang.Throwable
        +
        +
      • +
      + + + +
        +
      • +

        getParameters

        +
        public java.util.Map<java.lang.String,java.lang.String> getParameters()
        +
        エラーに関するパラメータのマップを取得します。 +

        エラーに関する内容について、特定の情報だけを取り出すために使用します。返却されるマップは、パラメータ名とパラメータ値の組からなるエントリの集合により構成されます。マップに含まれるパラメータについては、この例外を送出しうる個々のインタフェースまたは関連するインタフェースの定義を参照してください。

        + +

        返却されるマップに含まれる情報は、getMessage()より求まる文字列にも原則として含まれます。一方、この文字列から特定の情報だけを一定の文字列解析規則で取り出せるとは限りません。特定のバージョンのある状況下では取り出せたとしても、別の条件では意図しない情報が求まるなどして取り出せない可能性があります。返却されるマップを使用することで、インタフェースの定義で明記された一部の情報については、文字列解析を行わずに取り出せます。

        + +

        返却されるマップの内容だけを記録し、メッセージ文字列などその他の例外の内容を記録しなかった場合、記録された内容からエラーの原因を特定することが困難となる可能性があります。

        +
      • +
      +
    • +
    +
  • +
+
+
+ + + +
+
+

Class GSTimeoutException

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • java.lang.Throwable
    • +
    • + +
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    java.io.Serializable
    +
    +
    +
    +
    public class GSTimeoutException
    +extends GSException
    +
    要求した処理が既定の時間内に終了しなかったことを示す例外です。
    +
    Since:
    +
    1.5
    +
    See Also:
    Serialized Form
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Constructors 
      Constructor and Description
      GSTimeoutException() +
      詳細メッセージを持たない例外を構築します。
      +
      GSTimeoutException(int errorCode, + java.lang.String description) +
      エラー番号および詳細メッセージを指定して、例外を構築します。
      +
      GSTimeoutException(int errorCode, + java.lang.String errorName, + java.lang.String description, + java.util.Map<java.lang.String,java.lang.String> parameters, + java.lang.Throwable cause) +
      エラー番号、エラー名、詳細メッセージ、パラメータのマップ、および原因を指定して、例外を構築します。
      +
      GSTimeoutException(int errorCode, + java.lang.String errorName, + java.lang.String description, + java.lang.Throwable cause) +
      エラー番号、エラー名、詳細メッセージ、および原因を指定して、例外を構築します。
      +
      GSTimeoutException(int errorCode, + java.lang.String description, + java.lang.Throwable cause) +
      エラー番号、詳細メッセージ、および原因を指定して、例外を構築します。
      +
      GSTimeoutException(int errorCode, + java.lang.Throwable cause) +
      エラー番号および原因を指定して、例外を構築します。
      +
      GSTimeoutException(java.lang.String message) +
      詳細メッセージを指定して、例外を構築します。
      +
      GSTimeoutException(java.lang.String message, + java.lang.Throwable cause) +
      詳細メッセージおよび原因を指定して、例外を構築します。
      +
      GSTimeoutException(java.lang.Throwable cause) +
      原因を指定して、例外を構築します。
      +
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + +
        +
      • + + +

        Methods inherited from class java.lang.Throwable

        +addSuppressed, fillInStackTrace, getCause, getLocalizedMessage, getStackTrace, getSuppressed, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString
      • +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        GSTimeoutException

        +
        public GSTimeoutException()
        +
        詳細メッセージを持たない例外を構築します。
        +
        See Also:
        GSException.GSException()
        +
      • +
      + + + +
        +
      • +

        GSTimeoutException

        +
        public GSTimeoutException(int errorCode,
        +                  java.lang.String description)
        +
        エラー番号および詳細メッセージを指定して、例外を構築します。
        +
        Parameters:
        errorCode - エラー番号
        description - 詳細メッセージまたはnull
        See Also:
        GSException.GSException(int, String)
        +
      • +
      + + + +
        +
      • +

        GSTimeoutException

        +
        public GSTimeoutException(int errorCode,
        +                  java.lang.String errorName,
        +                  java.lang.String description,
        +                  java.util.Map<java.lang.String,java.lang.String> parameters,
        +                  java.lang.Throwable cause)
        +
        エラー番号、エラー名、詳細メッセージ、パラメータのマップ、および原因を指定して、例外を構築します。
        +
        Parameters:
        errorCode - エラー番号
        errorName - エラー名またはnull
        description - 詳細メッセージまたはnull
        parameters - パラメータのマップまたはnull
        cause - 原因またはnull
        See Also:
        GSException.GSException(int, String, String, Map, Throwable)
        +
      • +
      + + + +
        +
      • +

        GSTimeoutException

        +
        public GSTimeoutException(int errorCode,
        +                  java.lang.String errorName,
        +                  java.lang.String description,
        +                  java.lang.Throwable cause)
        +
        エラー番号、エラー名、詳細メッセージ、および原因を指定して、例外を構築します。
        +
        Parameters:
        errorCode - エラー番号
        errorName - エラー名またはnull
        description - 詳細メッセージまたはnull
        cause - 原因またはnull
        See Also:
        GSException.GSException(int, String, String, Throwable)
        +
      • +
      + + + +
        +
      • +

        GSTimeoutException

        +
        public GSTimeoutException(int errorCode,
        +                  java.lang.String description,
        +                  java.lang.Throwable cause)
        +
        エラー番号、詳細メッセージ、および原因を指定して、例外を構築します。
        +
        Parameters:
        errorCode - エラー番号
        description - 詳細メッセージまたはnull
        cause - 原因またはnull
        See Also:
        GSException.GSException(int, String, Throwable)
        +
      • +
      + + + +
        +
      • +

        GSTimeoutException

        +
        public GSTimeoutException(int errorCode,
        +                  java.lang.Throwable cause)
        +
        エラー番号および原因を指定して、例外を構築します。
        +
        Parameters:
        errorCode - エラー番号
        cause - 原因またはnull
        See Also:
        GSException.GSException(int, Throwable)
        +
      • +
      + + + +
        +
      • +

        GSTimeoutException

        +
        public GSTimeoutException(java.lang.String message)
        +
        詳細メッセージを指定して、例外を構築します。
        +
        Parameters:
        message - 詳細メッセージまたはnull
        See Also:
        GSException.GSException(String)
        +
      • +
      + + + +
        +
      • +

        GSTimeoutException

        +
        public GSTimeoutException(java.lang.String message,
        +                  java.lang.Throwable cause)
        +
        詳細メッセージおよび原因を指定して、例外を構築します。
        +
        Parameters:
        message - 詳細メッセージまたはnull
        cause - 原因またはnull
        See Also:
        GSException.GSException(String, Throwable)
        +
      • +
      + + + +
        +
      • +

        GSTimeoutException

        +
        public GSTimeoutException(java.lang.Throwable cause)
        +
        原因を指定して、例外を構築します。
        +
        Parameters:
        cause - 原因またはnull
        See Also:
        GSException.GSException(Throwable)
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + +
+
+

Enum GSType

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • java.lang.Enum<GSType>
    • +
    • +
        +
      • com.toshiba.mwcloud.gs.GSType
      • +
      +
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    java.io.Serializable, java.lang.Comparable<GSType>
    +
    +
    +
    +
    public enum GSType
    +extends java.lang.Enum<GSType>
    +
    GridDB上のフィールド値の型を表します。
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Enum Constant Detail

      + + + +
        +
      • +

        BLOB

        +
        public static final GSType BLOB
        +
      • +
      + + + +
        +
      • +

        BOOL

        +
        public static final GSType BOOL
        +
      • +
      + + + +
        +
      • +

        BOOL_ARRAY

        +
        public static final GSType BOOL_ARRAY
        +
      • +
      + + + +
        +
      • +

        BYTE

        +
        public static final GSType BYTE
        +
      • +
      + + + +
        +
      • +

        BYTE_ARRAY

        +
        public static final GSType BYTE_ARRAY
        +
      • +
      + + + +
        +
      • +

        DOUBLE

        +
        public static final GSType DOUBLE
        +
      • +
      + + + +
        +
      • +

        DOUBLE_ARRAY

        +
        public static final GSType DOUBLE_ARRAY
        +
      • +
      + + + +
        +
      • +

        FLOAT

        +
        public static final GSType FLOAT
        +
      • +
      + + + +
        +
      • +

        FLOAT_ARRAY

        +
        public static final GSType FLOAT_ARRAY
        +
      • +
      + + + +
        +
      • +

        GEOMETRY

        +
        public static final GSType GEOMETRY
        +
      • +
      + + + +
        +
      • +

        INTEGER

        +
        public static final GSType INTEGER
        +
      • +
      + + + +
        +
      • +

        INTEGER_ARRAY

        +
        public static final GSType INTEGER_ARRAY
        +
      • +
      + + + +
        +
      • +

        LONG

        +
        public static final GSType LONG
        +
      • +
      + + + +
        +
      • +

        LONG_ARRAY

        +
        public static final GSType LONG_ARRAY
        +
      • +
      + + + +
        +
      • +

        SHORT

        +
        public static final GSType SHORT
        +
      • +
      + + + +
        +
      • +

        SHORT_ARRAY

        +
        public static final GSType SHORT_ARRAY
        +
      • +
      + + + +
        +
      • +

        STRING

        +
        public static final GSType STRING
        +
      • +
      + + + +
        +
      • +

        STRING_ARRAY

        +
        public static final GSType STRING_ARRAY
        +
      • +
      + + + +
        +
      • +

        TIMESTAMP

        +
        public static final GSType TIMESTAMP
        +
      • +
      + + + +
        +
      • +

        TIMESTAMP_ARRAY

        +
        public static final GSType TIMESTAMP_ARRAY
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        valueOf

        +
        public static GSType valueOf(java.lang.String name)
        +
        Returns the enum constant of this type with the specified name. +The string must match exactly an identifier used to declare an +enum constant in this type. (Extraneous whitespace characters are +not permitted.)
        +
        Parameters:
        name - the name of the enum constant to be returned.
        +
        Returns:
        the enum constant with the specified name
        +
        Throws:
        +
        java.lang.IllegalArgumentException - if this enum type has no constant +with the specified name
        +
        java.lang.NullPointerException - if the argument is null
        +
      • +
      + + + +
        +
      • +

        values

        +
        public static GSType[] values()
        +
        Returns an array containing the constants of this enum type, in +the order they are declared. This method may be used to iterate +over the constants as follows: +
        +for (GSType c : GSType.values())
        +    System.out.println(c);
        +
        +
        Returns:
        an array containing the constants of this enum type, in +the order they are declared
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + +
+
+

Class Geometry

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • com.toshiba.mwcloud.gs.Geometry
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class Geometry
    +extends java.lang.Object
    +
    2次元、もしくは3次元の空間範囲を示すジオメトリデータを管理します。 +

    このクラスのインスタンスは不変です。また、このクラスのインスタンスに対するメソッド呼び出しはスレッド安全です。

    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      booleanequals(java.lang.Object obj) +
      このオブジェクトと他のオブジェクトが等しいかどうかを示します。
      +
      inthashCode() +
      このオブジェクトのハッシュコード値を返します。
      +
      java.lang.StringtoString() +
      WKT(Well-Known Text)形式による文字列表現(WKT表現)を返します。
      +
      static GeometryvalueOf(java.lang.String value) +
      WKT(Well-Known Text)形式によるジオメトリデータの文字列表現(WKT表現)から Geometryを作成します。
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, finalize, getClass, notify, notifyAll, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        equals

        +
        public boolean equals(java.lang.Object obj)
        +
        このオブジェクトと他のオブジェクトが等しいかどうかを示します。 +

        valueOf(String)により生成したオブジェクトについて、生成元のWKT表現が文字列として互いに等価ではない場合であっても、区切り文字としての空白文字の有無やデフォルト値のSRID表記の有無といった表記の揺れ以外の違いがない場合は等価であるとみなされます。たとえば、次の3つのWKT表現より生成されるオブジェクトは、等価であるとみなされます。

        +
        + POLYGON((0 0,10 0,10 10,0 10,0 0))
        + POLYGON( (0 0,10 0,10 10,0 10,0 0) )
        + POLYGON((0 0,10 0,10 10,0 10,0 0);-1)
        + +

        一方、領域を構成する閉じた線の始点・終点位置が異なるなどして、 WKT表現が文字列として等価になりえないものの同一の空間領域を指すオブジェクトは、等価ではないとみなされます。たとえば、次の2つのWKT表現より生成されるオブジェクトは、等価ではないとみなされます。

        +
        + POLYGON((0 0,10 0,10 10,0 10,0 0))
        + POLYGON((0 10,0 0,10 0,10 10,0 10))
        + +

        このメソッドは、Object.hashCode()にて定義されている汎用規約に準拠します。したがって、等価なオブジェクトは等価なハッシュコードを保持します。

        +
        +
        Overrides:
        +
        equals in class java.lang.Object
        +
        Parameters:
        obj - 比較対象の参照オブジェクト
        +
        Returns:
        このオブジェクトがobj引数と同じである場合はtrue、それ以外の場合はfalse
        See Also:
        hashCode()
        +
      • +
      + + + +
        +
      • +

        hashCode

        +
        public int hashCode()
        +
        このオブジェクトのハッシュコード値を返します。 +

        このメソッドは、Object.hashCode()にて定義されている汎用規約に準拠します。したがって、等価なオブジェクトのハッシュコード値は等価です。

        +
        +
        Overrides:
        +
        hashCode in class java.lang.Object
        +
        Returns:
        このオブジェクトのハッシュコード値
        See Also:
        equals(Object)
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public java.lang.String toString()
        +
        WKT(Well-Known Text)形式による文字列表現(WKT表現)を返します。 +

        返却される文字列は、区切り文字としての空白文字の有無やデフォルト値のSRID表記の有無といった表記の揺れによっては、 valueOf(String)により生成した際に指定したWKT表現と比べて等価ではない文字列となる場合があります。

        +
        +
        Overrides:
        +
        toString in class java.lang.Object
        +
        +
      • +
      + + + +
        +
      • +

        valueOf

        +
        public static Geometry valueOf(java.lang.String value)
        +                        throws java.lang.IllegalArgumentException
        +
        WKT(Well-Known Text)形式によるジオメトリデータの文字列表現(WKT表現)から Geometryを作成します。 +

        サポート対象のWKT表現は、TQLのST_GeomFromText関数が扱う表現範囲と同一です。ただし、空間構造QUADRATICSURFACEはコンテナに格納することはできず、検索条件としてのみ使用できます。

        +
        Parameters:
        value - 生成対象のWKT表現。nullは指定できない
        +
        Returns:
        WKT表現より生成されたGeometryインスタンス
        +
        Throws:
        +
        java.lang.IllegalArgumentException - 指定の文字列がWKT形式と一致しない場合
        +
        java.lang.NullPointerException - 引数にnullが指定された場合
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + +
+
+

Enum GeometryOperator

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • java.lang.Enum<GeometryOperator>
    • +
    • +
        +
      • com.toshiba.mwcloud.gs.GeometryOperator
      • +
      +
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    java.io.Serializable, java.lang.Comparable<GeometryOperator>
    +
    +
    +
    +
    public enum GeometryOperator
    +extends java.lang.Enum<GeometryOperator>
    +
    空間範囲同士の関係性についての制約を定義します。 +

    空間範囲検索の条件指定のために使用します。

    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Enum Constant Summary

      + + + + + + + + +
      Enum Constants 
      Enum Constant and Description
      INTERSECT +
      双方の空間範囲またはその外接構造が交差する関係にあることを示します。
      +
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      static GeometryOperatorvalueOf(java.lang.String name) +
      Returns the enum constant of this type with the specified name.
      +
      static GeometryOperator[]values() +
      Returns an array containing the constants of this enum type, in +the order they are declared.
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Enum

        +clone, compareTo, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf
      • +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +getClass, notify, notifyAll, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Enum Constant Detail

      + + + +
        +
      • +

        INTERSECT

        +
        public static final GeometryOperator INTERSECT
        +
        双方の空間範囲またはその外接構造が交差する関係にあることを示します。 +

        双方の外接直方体(Minimum Bounding Box)、もしくは外接直方体と 2次曲面が交差する関係にあることを示します。交差判定の条件は、TQLのST_MBRIntersects関数、もしくは ST_QSFMBRIntersects関数と同一です。

        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        valueOf

        +
        public static GeometryOperator valueOf(java.lang.String name)
        +
        Returns the enum constant of this type with the specified name. +The string must match exactly an identifier used to declare an +enum constant in this type. (Extraneous whitespace characters are +not permitted.)
        +
        Parameters:
        name - the name of the enum constant to be returned.
        +
        Returns:
        the enum constant with the specified name
        +
        Throws:
        +
        java.lang.IllegalArgumentException - if this enum type has no constant +with the specified name
        +
        java.lang.NullPointerException - if the argument is null
        +
      • +
      + + + +
        +
      • +

        values

        +
        public static GeometryOperator[] values()
        +
        Returns an array containing the constants of this enum type, in +the order they are declared. This method may be used to iterate +over the constants as follows: +
        +for (GeometryOperator c : GeometryOperator.values())
        +    System.out.println(c);
        +
        +
        Returns:
        an array containing the constants of this enum type, in +the order they are declared
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + +
+
+

Interface GridStore

+
+
+
+
    +
  • +
    +
    All Superinterfaces:
    +
    java.lang.AutoCloseable, java.io.Closeable
    +
    +
    +
    +
    public interface GridStore
    +extends java.io.Closeable
    +
    接続したGridDBシステム内のデータベースに属するデータを操作するための機能を提供します。 +

    コレクションや時系列といったコンテナの追加・削除・構成変更、ならびに、コンテナを構成するロウの操作機能を提供します。

    + +

    コンテナ種別などの違いによらず、1つのデータベースのコンテナ間で、 ASCIIの大文字・小文字表記だけが異なる名前のものを複数定義することはできません。コンテナ名は、ベースコンテナ名単独、もしくは、ベースコンテナ名の後ろにノードアフィニティ名をアットマーク「@」で連結した形式で表記します。その他、コンテナの定義において使用できるコンテナ名の文字種や長さには制限があります。具体的には、GridDB機能リファレンスを参照してください。特に記載のない限り、コンテナ名を指定する操作では、ASCIIの大文字・小文字表記の違いは区別されません。

    + +

    このインタフェースまたはこのインタフェースを通じて得られたインスタンスのインタフェースが送出するGSExceptionは、エラーに関する次のパラメータを含むことがあります。

    + + + + + + +
    パラメータ名説明
    address接続先クラスタノードのアドレス・ポート。ホスト名またはIPアドレスとポート番号とをコロン「:」で連結した文字列により構成されます。このインタフェースまたはこのインタフェースを通じて得られたインスタンスのインタフェースにおいて、クラスタへのアクセスを伴う操作を呼び出した際にエラーを検知すると、このパラメータを含むことがあります。このパラメータを含む場合、パラメータが示すクラスタノードにおいてエラーの詳細が記録されていることがあります。
    container例外に関係しうるコンテナの名前。任意個数のコンテナを一括して扱う操作において、そのうち少なくとも一つのコンテナについての操作を行えないことが判明した場合に、このパラメータを含むことがあります。任意個数のコンテナを扱う具体的な操作については、個々のインタフェースの定義を参照してください。クラスタノードへのリクエスト準備段階でのリソース不足など、どのコンテナの問題か特定し切れないことがあるため、どのようなエラーでもこのパラメータを含むとは限りません。また、複数のコンテナについて操作できない可能性があったとしても、パラメータに含まれるのは高々一つのコンテナの名前のみです。
    + +

    各メソッドのスレッド安全性は保証されません。

    +
    See Also:
    Collection, +TimeSeries, +Container, +GSException.getParameters()
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      voidclose() +
      GridDBとの接続状態を解除し、必要に応じて関連するリソースを解放します。
      +
      RowcreateRow(ContainerInfo info) +
      ContainerInfoを指定して、Rowを新規作成します。
      +
      Row.KeycreateRowKey(ContainerInfo info) +
      ContainerInfoを指定して、Row.Keyを新規作成します。
      +
      voiddropCollection(java.lang.String name) +
      指定の名前を持つコレクションを削除します。
      +
      voiddropContainer(java.lang.String name) +
      指定の名前を持つコンテナを削除します。
      +
      voiddropTimeSeries(java.lang.String name) +
      指定の名前を持つ時系列を削除します。
      +
      voidfetchAll(java.util.List<? extends Query<?>> queryList) +
      指定された任意個数のQueryについて、可能な限りリクエスト単位を大きくしてクエリ実行とフェッチを行います。
      +
      <K> Collection<K,Row>getCollection(java.lang.String name) +
      Rowによりロウ操作できるCollectionオブジェクトを取得します。
      +
      <K,R> Collection<K,R>getCollection(java.lang.String name, + java.lang.Class<R> rowType) +
      指定の名前のコレクションを操作するためのCollectionオブジェクトを取得します。
      +
      <K> Container<K,Row>getContainer(java.lang.String name) +
      Rowによりロウ操作できるContainerオブジェクトを取得します。
      +
      <K,R,C extends Container<K,R>> 
      C
      getContainer(java.lang.String name, + Container.BindType<K,R,C> bindType) +
      Container.BindTypeを指定して、Containerオブジェクトを取得します。
      +
      ContainerInfogetContainerInfo(java.lang.String name) +
      指定の名前のコンテナに関する情報を取得します。
      +
      PartitionControllergetPartitionController() +
      対応するGridDBクラスタについてのPartitionControllerを取得します。
      +
      TimeSeries<Row>getTimeSeries(java.lang.String name) +
      Rowによりロウ操作できるTimeSeriesオブジェクトを取得します。
      +
      <R> TimeSeries<R>getTimeSeries(java.lang.String name, + java.lang.Class<R> rowType) +
      指定の名前の時系列を操作するためのTimeSeriesオブジェクトを取得します。
      +
      java.util.Map<java.lang.String,java.util.List<Row>>multiGet(java.util.Map<java.lang.String,? extends RowKeyPredicate<?>> containerPredicateMap) +
      指定の条件に基づき、任意のコンテナの任意個数・範囲のロウについて、可能な限りリクエスト単位を大きくして取得します。
      +
      voidmultiPut(java.util.Map<java.lang.String,java.util.List<Row>> containerRowsMap) +
      任意のコンテナの任意個数のロウについて、可能な限りリクエスト単位を大きくして新規作成または更新操作を行います。
      +
      <K,R> Collection<K,R>putCollection(java.lang.String name, + java.lang.Class<R> rowType) +
      コレクションを新規作成または変更します。
      +
      <K,R> Collection<K,R>putCollection(java.lang.String name, + java.lang.Class<R> rowType, + boolean modifiable) +
      変更オプションを指定して、コレクションを新規作成または変更します。
      +
      <K> Collection<K,Row>putCollection(java.lang.String name, + ContainerInfo info, + boolean modifiable) +
      ContainerInfoを指定して、コレクションを新規作成または変更します。
      +
      <K,R> Container<K,R>putContainer(java.lang.String name, + java.lang.Class<R> rowType, + ContainerInfo info, + boolean modifiable) +
      ロウオブジェクトの型とContainerInfoを指定して、コンテナを新規作成または変更します。
      +
      <K,R,C extends Container<K,R>> 
      C
      putContainer(java.lang.String name, + Container.BindType<K,R,C> bindType) +
      Container.BindTypeを指定して、コンテナを新規作成または変更します。
      +
      <K,R,C extends Container<K,R>> 
      C
      putContainer(java.lang.String name, + Container.BindType<K,R,C> bindType, + ContainerInfo info, + boolean modifiable) +
      Container.BindTypeContainerInfoを指定して、コンテナを新規作成または変更します。
      +
      <K> Container<K,Row>putContainer(java.lang.String name, + ContainerInfo info, + boolean modifiable) +
      ContainerInfoを指定して、コンテナを新規作成または変更します。
      +
      <R> TimeSeries<R>putTimeSeries(java.lang.String name, + java.lang.Class<R> rowType) +
      時系列を新規作成または変更します。
      +
      <R> TimeSeries<R>putTimeSeries(java.lang.String name, + java.lang.Class<R> rowType, + TimeSeriesProperties props, + boolean modifiable) +
      追加設定や変更オプションを指定して、時系列を新規作成または変更します。
      +
      TimeSeries<Row>putTimeSeries(java.lang.String name, + ContainerInfo info, + boolean modifiable) +
      ContainerInfoを指定して、時系列を新規作成または変更します。
      +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        close

        +
        void close()
        +           throws GSException
        +
        GridDBとの接続状態を解除し、必要に応じて関連するリソースを解放します。 +

        GSExceptionが送出された場合であっても、接続状態は解除やローカルのリソース解放は適宜実施されます。ただし、GridDB上のトランザクション状態などは残る可能性があります。すでにクローズ済みの場合、このメソッドを呼び出しても何の効果もありません。

        +
        +
        Specified by:
        +
        close in interface java.lang.AutoCloseable
        +
        Specified by:
        +
        close in interface java.io.Closeable
        +
        Throws:
        +
        GSException - 接続障害が発生した場合
        +
      • +
      + + + +
        +
      • +

        createRow

        +
        Row createRow(ContainerInfo info)
        +              throws GSException
        +
        ContainerInfoを指定して、Rowを新規作成します。 +

        Containerにて規定された制約に合致するよう、 ColumnInfoのリストならびにロウキーの構成を含むカラムレイアウトをContainerInfoに指定します。

        + +

        また、コンテナ種別をContainerInfoに含めることで、特定のコンテナ種別固有の制約に合致するかどうかを検証できます。ただし、作成されたRowに対してRow.getSchema() +を呼び出したとしても、コンテナ種別は含まれません。

        + +

        作成されたRowの各フィールドには、指定のContainerInfoに含まれる各カラムのColumnInfoに基づいた初期値が設定されます。初期値として、ColumnInfo.getDefaultValueNull()の戻り値に応じた次の値が使用されます。

        + + + + + + + + + + + + + + + + + + + + + +
        ColumnInfo.getDefaultValueNull()の戻り値初期値
        trueNULL。ただし制約に反するロウは作成できない。
        false空の値。Containerの定義を参照。
        null現バージョンでは、戻り値がfalseの場合と同様。
        + +

        作成されたRowに対する操作は、このGridStoreオブジェクトのクローズ有無に影響しません。

        +
        Parameters:
        info - カラムレイアウトを含むコンテナ情報。その他の内容は無視される
        +
        Returns:
        作成されたRow
        +
        Throws:
        +
        GSException - コンテナ種別もしくはカラムレイアウトの制約に合致しない場合
        +
        GSException - クローズ後に呼び出された場合
        +
        java.lang.NullPointerException - 引数にnullが指定された場合
        Since:
        +
        1.5
        +
        See Also:
        Container
        +
      • +
      + + + +
        +
      • +

        createRowKey

        +
        Row.Key createRowKey(ContainerInfo info)
        +                     throws GSException
        +
        ContainerInfoを指定して、Row.Keyを新規作成します。 +

        ロウキー以外のカラムに関する情報は無視されます。それ以外は createRow(ContainerInfo)と同様に振る舞います。

        +
        Parameters:
        info - カラムレイアウトを含むコンテナ情報。その他の内容は無視される
        +
        Returns:
        作成されたRow.Key
        +
        Throws:
        +
        GSException - ロウキーを持たないコンテナ情報が指定された場合
        +
        GSException - コンテナ種別もしくはカラムレイアウトの制約に合致しない場合
        +
        GSException - クローズ後に呼び出された場合
        +
        java.lang.NullPointerException - 引数にnullが指定された場合
        Since:
        +
        4.3
        +
      • +
      + + + +
        +
      • +

        dropCollection

        +
        void dropCollection(java.lang.String name)
        +                    throws GSException
        +
        指定の名前を持つコレクションを削除します。 +

        削除済みの場合の扱い、トランザクションの扱い、削除要求完了直後の状態に関しては、dropContainer(String)と同様です。

        +
        Parameters:
        name - 処理対象のコレクションの名前
        +
        Throws:
        +
        GSException - 種別の異なるコンテナを削除しようとした場合
        +
        GSException - この処理のタイムアウト、接続障害が発生した場合、またはクローズ後に呼び出された場合
        +
        java.lang.NullPointerException - 引数にnullが指定された場合
        +
      • +
      + + + +
        +
      • +

        dropContainer

        +
        void dropContainer(java.lang.String name)
        +                   throws GSException
        +
        指定の名前を持つコンテナを削除します。 +

        削除済みの場合は何も変更しません。

        + +

        処理対象のコンテナにおいて実行中のトランザクションが存在する場合、それらの終了を待機してから削除を行います。

        + +

        コンテナの削除要求が完了した直後は、削除したコンテナの索引やロウなどのために使用されていたメモリやストレージ領域を他の用途にただちに再利用できない場合があります。また、削除処理に関連した処理がクラスタ上で動作することにより、削除前と比べて負荷が高まる期間が一定程度継続する場合があります。

        +
        Parameters:
        name - 処理対象のコンテナの名前
        +
        Throws:
        +
        GSException - この処理のタイムアウト、接続障害が発生した場合、またはクローズ後に呼び出された場合
        +
        java.lang.NullPointerException - 引数にnullが指定された場合
        Since:
        +
        1.5
        +
        See Also:
        dropCollection(String), +dropTimeSeries(String)
        +
      • +
      + + + +
        +
      • +

        dropTimeSeries

        +
        void dropTimeSeries(java.lang.String name)
        +                    throws GSException
        +
        指定の名前を持つ時系列を削除します。 +

        削除済みの場合の扱い、トランザクションの扱い、削除要求完了直後の状態に関しては、dropContainer(String)と同様です。

        +
        Parameters:
        name - 処理対象の時系列の名前
        +
        Throws:
        +
        GSException - 種別の異なるコンテナを削除しようとした場合
        +
        GSException - この処理のタイムアウト、接続障害が発生した場合、またはクローズ後に呼び出された場合
        +
        java.lang.NullPointerException - 引数にnullが指定された場合
        +
      • +
      + + + +
        +
      • +

        fetchAll

        +
        void fetchAll(java.util.List<? extends Query<?>> queryList)
        +              throws GSException
        +
        指定された任意個数のQueryについて、可能な限りリクエスト単位を大きくしてクエリ実行とフェッチを行います。 +

        指定のリストに含まれる各Queryに対して、個別にQuery.fetch() +を行った場合と同様にクエリ実行とフェッチを行い、結果のRowSetを設定します。各Queryの実行結果を取り出すには、Query.getRowSet() +を使用します。ただし、個別に行う場合と違い、同一の格納先などの可能な限り大きな単位で対象ノードに対しリクエストしようとします。これにより、リストの要素数が多くなるほど、対象ノードとやりとりする回数が削減される可能性が高くなります。リスト内のQueryの実行順序は不定です。

        + +

        指定のリストには、このGridStoreオブジェクトを介して得られた、対応するContainerを含めクローズされていないQuery +のみを含めることができます。 Query.fetch()と同様、各Queryが持つ最後に生成された RowSetがクローズされます。同一のインスタンスがリストに複数含まれていた場合、それぞれ異なるインスタンスであった場合と同様に振る舞います。

        + +

        他のコンテナ・ロウ操作と同様、異なるコンテナ間での整合性は保証されません。したがって、あるコンテナに対する処理の結果は、その処理の開始前に完了した他の操作命令の影響を受けることがあります。

        + +

        指定のQueryに対応する各Containerのコミットモードが自動コミットモード、手動コミットモードのいずれであったとしても、使用できます。トランザクション状態はクエリの実行結果に反映されます。正常に操作が完了した場合、トランザクションタイムアウト時間に到達しない限り、対応する各Containerのトランザクションをアボートすることはありません。

        + +

        Queryに対する処理の途中で例外が発生した場合、一部のQueryについてのみ新たなRowSet +が設定されることがあります。また、指定のQueryに対応する各Containerの未コミットのトランザクションについては、アボートされることがあります。

        + +

        一度に大量のロウを取得しようとした場合、GridDBノードが管理する通信バッファのサイズの上限に到達し、失敗することがあります。上限サイズについては、GridDB機能リファレンスを参照してください。

        + +

        送出するGSExceptionは、containerパラメータを含むことがあります。エラーに関するパラメータの詳細は、GridStoreの定義を参照してください。

        +
        Parameters:
        queryList - 対象とするQueryのリスト
        +
        Throws:
        +
        GSException - このGridStoreオブジェクトを介して得られた Query以外のQueryが含まれていた場合
        +
        GSException - 正しくないパラメータ・構文・命令を含むクエリを実行しようとした場合。たとえば、TQLでは、関数の引数に対応しない型のカラムを指定した場合。具体的な制約は、このクエリを作成する機能の各種定義を参照のこと
        +
        GSException - TQLを実行した際、実行結果が期待する結果 RowSetの各要素の型と合致しない場合
        +
        GSException - この処理または関連するトランザクションのタイムアウト、対応するコンテナの削除もしくはスキーマ変更、接続障害が発生した場合、または対応するコンテナのクローズ後に呼び出された場合
        +
        java.lang.NullPointerException - 引数queryListnullが指定された場合、または、引数queryListの要素としてnullが含まれていた場合
        +
        java.lang.NullPointerException - このクエリを作成する際に与えられたパラメータの中に、許容されないnullが含まれていた場合。GridDB上で実行される TQL文の評価処理の結果として送出されることはない
        Since:
        +
        1.5
        +
        See Also:
        Query.fetch()
        +
      • +
      + + + +
        +
      • +

        getCollection

        +
        <K> Collection<K,Row> getCollection(java.lang.String name)
        +                                throws GSException
        +
        Rowによりロウ操作できるCollectionオブジェクトを取得します。 +

        期待するコンテナ種別がContainerType.COLLECTIONに限定され、返却される型がCollectionとなる点を除き、 getContainer(String)と同様に振る舞います。

        +
        Returns:
        コレクションが存在する場合は対応するCollection、存在しない場合はnull
        +
        Throws:
        +
        GSException - 同名の時系列が存在する場合
        +
        GSException - この処理のタイムアウト、接続障害が発生した場合、またはクローズ後に呼び出された場合
        +
        java.lang.NullPointerException - 引数にnullが指定された場合
        Since:
        +
        1.5
        +
        See Also:
        getContainer(String)
        +
      • +
      + + + +
        +
      • +

        getCollection

        +
        <K,R> Collection<K,R> getCollection(java.lang.String name,
        +                                  java.lang.Class<R> rowType)
        +                              throws GSException
        +
        指定の名前のコレクションを操作するためのCollectionオブジェクトを取得します。 +

        指定の型とカラムレイアウトとの対応関係については、Containerの定義を参照してください。

        +
        Parameters:
        name - 処理対象のコレクションの名前
        rowType - 処理対象のコレクションのカラムレイアウトと対応するロウオブジェクトの型
        +
        Returns:
        コレクションが存在する場合は対応するCollection、存在しない場合はnull
        +
        Throws:
        +
        GSException - 同名の時系列が存在する場合
        +
        GSException - 指定の型と既存のカラムレイアウトが一致しない場合
        +
        GSException - 指定の型がロウオブジェクトの型として適切でない場合。詳しくはContainerの定義を参照
        +
        GSException - この処理のタイムアウト、接続障害が発生した場合、またはクローズ後に呼び出された場合
        +
        java.lang.NullPointerException - 1つ以上の引数にnullが指定された場合
        +
      • +
      + + + +
        +
      • +

        getContainer

        +
        <K> Container<K,Row> getContainer(java.lang.String name)
        +                              throws GSException
        +
        Rowによりロウ操作できるContainerオブジェクトを取得します。 +

        次の点を除き、getCollection(String, Class) +もしくはgetTimeSeries(String, Class)と同様に振る舞います。

        +
          +
        • 既存のコンテナの種別ならびにカラムレイアウトに基づきContainer +オブジェクトを返却する
        • +
        • コンテナの種別ならびにカラムレイアウトを指定しないため、これらの不一致に伴うエラーが発生しない
        • +
        • 返却されるContainerのロウオブジェクトの型が常にRowとなる
        • +
        +

        それぞれの同名の引数nameの用法についても同様です。

        +
        Parameters:
        name - 処理対象のコンテナの名前
        +
        Returns:
        コンテナが存在する場合は対応するContainer、存在しない場合はnull。コンテナが存在し、種別が ContainerType.COLLECTIONであった場合はCollectionContainerType.TIME_SERIESであった場合はTimeSeriesのインスタンスとなる。
        +
        Throws:
        +
        GSException - この処理のタイムアウト、接続障害が発生した場合、またはクローズ後に呼び出された場合
        +
        java.lang.NullPointerException - 引数にnullが指定された場合
        Since:
        +
        1.5
        +
        See Also:
        getCollection(String, Class), +getTimeSeries(String, Class)
        +
      • +
      + + + +
        +
      • +

        getContainer

        +
        <K,R,C extends Container<K,R>> C getContainer(java.lang.String name,
        +                                            Container.BindType<K,R,C> bindType)
        +                                 throws GSException
        +
        Container.BindTypeを指定して、Containerオブジェクトを取得します。 +

        指定のbindTypeに応じて、次のいずれかのメソッドと同様に振る舞います。

        +
        +
        Parameters:
        name - 処理対象のコンテナの名前
        bindType - 処理対象のコンテナと結びつく型情報
        +
        Returns:
        対応するContainerまたはそのサブインタフェースの型のインスタンス
        +
        Throws:
        +
        GSException - nameならびにbindType引数の内容が規則に合致しない場合
        +
        GSException - 指定の型がロウオブジェクトの型として適切でない場合。詳しくはContainerの定義を参照
        +
        GSException - この処理のタイムアウト、接続障害が発生した場合、またはクローズ後に呼び出された場合
        +
        java.lang.NullPointerException - bindType引数にnullが指定された場合
        Since:
        +
        4.3
        +
      • +
      + + + +
        +
      • +

        getContainerInfo

        +
        ContainerInfo getContainerInfo(java.lang.String name)
        +                               throws GSException
        +
        指定の名前のコンテナに関する情報を取得します。 +

        返却されるContainerInfoに含まれるコンテナ名は、GridDB上に格納されているものが設定されます。したがって、指定したコンテナ名と比較すると、 ASCIIの大文字・小文字表記が異なる場合があります。

        + +

        カラム順序を無視するかどうかについては、無視しない状態に設定されます。この設定は、ContainerInfo.isColumnOrderIgnorable()を通じて確認できます。

        + +

        現バージョンでは、初期値でのNULL使用有無は未設定状態で求まります。ただし今後のバージョンでは設定される可能性があります。この設定は、各カラムのColumnInfo.getDefaultValueNull()を通じて確認できます。

        +
        Parameters:
        name - 処理対象のコンテナの名前
        +
        Returns:
        指定の名前のコンテナに関する情報
        +
        Throws:
        +
        GSException - GSExceptionこの処理のタイムアウト、接続障害が発生した場合、またはクローズ後に呼び出された場合
        +
        java.lang.NullPointerException - 引数にnullが指定された場合
        +
      • +
      + + + + + + + +
        +
      • +

        getTimeSeries

        +
        TimeSeries<Row> getTimeSeries(java.lang.String name)
        +                              throws GSException
        +
        Rowによりロウ操作できるTimeSeriesオブジェクトを取得します。 +

        期待するコンテナ種別がContainerType.TIME_SERIESに限定され、返却される型がTimeSeriesとなる点を除き、 getTimeSeries(String)と同様に振る舞います。

        +
        Returns:
        時系列が存在する場合は対応するTimeSeries、存在しない場合はnull
        +
        Throws:
        +
        GSException - 同名のコレクションが存在する場合
        +
        GSException - この処理のタイムアウト、接続障害が発生した場合、またはクローズ後に呼び出された場合
        +
        java.lang.NullPointerException - 引数にnullが指定された場合
        Since:
        +
        1.5
        +
        See Also:
        getContainer(String)
        +
      • +
      + + + +
        +
      • +

        getTimeSeries

        +
        <R> TimeSeries<R> getTimeSeries(java.lang.String name,
        +                              java.lang.Class<R> rowType)
        +                            throws GSException
        +
        指定の名前の時系列を操作するためのTimeSeriesオブジェクトを取得します。 +

        指定の型とカラムレイアウトとの対応関係については、Containerの定義を参照してください。

        +
        Parameters:
        name - 処理対象の時系列の名前
        rowType - 処理対象の時系列のカラムレイアウトと対応するロウオブジェクトの型
        +
        Returns:
        時系列が存在する場合は対応するTimeSeries、存在しない場合はnull
        +
        Throws:
        +
        GSException - 同名のコレクションが存在する場合
        +
        GSException - 指定の型と既存のカラムレイアウトが一致しない場合
        +
        GSException - 指定の型がロウオブジェクトの型として適切でない場合。詳しくはContainerの定義を参照
        +
        GSException - この処理のタイムアウト、接続障害が発生した場合、またはクローズ後に呼び出された場合
        +
        java.lang.NullPointerException - 1つ以上の引数にnullが指定された場合
        +
      • +
      + + + +
        +
      • +

        multiGet

        +
        java.util.Map<java.lang.String,java.util.List<Row>> multiGet(java.util.Map<java.lang.String,? extends RowKeyPredicate<?>> containerPredicateMap)
        +                                                             throws GSException
        +
        指定の条件に基づき、任意のコンテナの任意個数・範囲のロウについて、可能な限りリクエスト単位を大きくして取得します。 +

        指定のマップに含まれる条件に従い、個別にContainer.get(Object) +もしくはQuery.fetch()を呼び出した場合と同様に、ロウの内容を取得します。ただし、個別に行う場合と違い、同一の格納先などの可能な限り大きな単位で対象ノードに対しリクエストしようとします。これにより、対象コンテナの総数や条件に合致するロウの総数が多くなるほど、対象ノードとやりとりする回数が削減される可能性が高くなります。

        + +

        指定のマップは、コンテナ名をキー、RowKeyPredicateで表現される取得条件を値とする任意個数のエントリから構成されます。同一のRowKeyPredicateインスタンスを複数含めることもできます。また、対象とするコンテナとして、コンテナ種別やカラムレイアウトが異なるものを混在させることができます。ただし、コンテナの構成によっては評価できない取得条件が存在します。具体的な制限については、RowKeyPredicateに対する各種設定機能の定義を参照してください。マップのキーまたは値としてnullを含めることはできません。

        + +

        返却されるマップは、コンテナ名をキー、ロウオブジェクトのリストを値とするエントリにより構成されます。また、返却されるマップには、取得条件として指定したマップに含まれるコンテナ名のうち、リクエスト時点で実在するコンテナに関するエントリのみが含まれます。 ASCIIの大文字・小文字表記だけが異なり同一のコンテナを指すコンテナ名の設定された、複数のエントリが指定のマップに含まれていた場合、返却されるマップにはこれらを1つにまとめたエントリが格納されます。同一のリストに複数のロウオブジェクトが含まれる場合、格納される順序はコンテナ種別と対応するContainerのサブインタフェースの定義に従います。指定のコンテナに対応するロウが1つも存在しない場合、対応するロウオブジェクトのリストは空になります。

        + +

        返却されたマップもしくはマップに含まれるリストに対して変更操作を行った場合に、 UnsupportedOperationExceptionなどの実行時例外が発生するかどうかは未定義です。

        + +

        他のコンテナ・ロウ操作と同様、異なるコンテナ間での整合性は保証されません。したがって、あるコンテナに対する処理の結果は、その処理の開始前に完了した他の操作命令の影響を受けることがあります。

        + +

        Container.get(Object, boolean)もしくは Query.fetch(boolean)のように、トランザクションを維持し、更新用ロックを要求することはできません。

        + +

        一度に大量のロウを取得しようとした場合、GridDBノードが管理する通信バッファのサイズの上限に到達し、失敗することがあります。上限サイズについては、GridDB機能リファレンスを参照してください。

        + +

        送出するGSExceptionは、containerパラメータを含むことがあります。エラーに関するパラメータの詳細は、GridStoreの定義を参照してください。

        +
        Parameters:
        containerPredicateMap - 対象とするコンテナの名前と条件からなるマップ
        +
        Returns:
        条件に合致するロウ集合をコンテナ別に保持するマップ
        +
        Throws:
        +
        GSException - 指定のコンテナに関して評価できない取得条件が指定された場合
        +
        GSException - この処理またはトランザクションのタイムアウト、接続障害が発生した場合、クローズ後に呼び出された場合
        +
        java.lang.NullPointerException - 引数containerPredicateMapとして nullが指定された場合、このマップのキーまたは値としてnullが含まれていた場合
        Since:
        +
        1.5
        +
        See Also:
        Container.get(Object), +Query.fetch(), +RowKeyPredicate
        +
      • +
      + + + +
        +
      • +

        multiPut

        +
        void multiPut(java.util.Map<java.lang.String,java.util.List<Row>> containerRowsMap)
        +              throws GSException
        +
        任意のコンテナの任意個数のロウについて、可能な限りリクエスト単位を大きくして新規作成または更新操作を行います。 +

        指定のマップに含まれる各ロウオブジェクトについて、個別に Container.put(Object)を呼び出した場合と同様に新規作成または更新操作を行います。ただし、個別に行う場合と違い、同一の格納先などの可能な限り大きな単位で対象ノードに対しリクエストしようとします。これにより、対象コンテナの総数や指定のロウオブジェクトの総数が多くなるほど、対象ノードとやりとりする回数が削減される可能性が高くなります。

        + +

        指定のマップは、コンテナ名をキー、ロウオブジェクトのリストを値とする任意個数のエントリから構成されます。対象とするコンテナとして、コンテナ種別やカラムレイアウトが異なるものを混在させることができます。ただし、すでに存在するコンテナでなければなりません。マップのキーまたは値としてnullを含めることはできません。

        + +

        各ロウオブジェクトのリストには、対象のコンテナと同一のカラムレイアウトの Rowのみを任意個数含めることができます。現バージョンでは、カラム順序についてもすべて同一でなければなりません。リストの要素としてnullを含めることはできません。

        + +

        コンテナの種別ならびに設定によっては、操作できるロウの内容について Container.put(Object)と同様の制限が設けられています。具体的な制限事項は、Containerのサブインタフェースの定義を参照してください。

        + +

        指定のマップ内に同一コンテナを対象とした同一ロウキーを持つ複数のロウオブジェクトが存在する場合、異なるリスト間であればマップエントリ集合のイテレータからの取り出し順、同一リスト内であればリストの要素順を基準として、同値のロウキーを持つ最も後方にあるロウオブジェクトの内容が反映されます。

        + +

        トランザクションを維持し、ロックを保持し続けることはできません。ただし、既存のトランザクションが対象ロウに影響するロックを確保している場合、すべてのロックが解放されるまで待機し続けます。

        + +

        他のコンテナ・ロウ操作と同様、異なるコンテナ間での整合性は保証されません。したがって、あるコンテナに対する処理の結果は、その処理の開始前に完了した他の操作命令の影響を受けることがあります。

        + +

        各コンテナならびにロウに対する処理の途中で例外が発生した場合、一部のコンテナの一部のロウに対する操作結果のみが反映されたままとなることがあります。

        + +

        送出するGSExceptionは、containerパラメータを含むことがあります。エラーに関するパラメータの詳細は、GridStoreの定義を参照してください。

        +
        Parameters:
        containerRowsMap - 対象とするコンテナの名前とロウオブジェクトのリストからなるマップ
        +
        Throws:
        +
        GSException - 対象とするコンテナが存在しない場合、また、対象とするコンテナとロウオブジェクトとのカラムレイアウトが一致しない場合
        +
        GSException - 特定コンテナ種別固有の制限に反する操作を行った場合
        +
        GSException - この処理またはトランザクションのタイムアウト、接続障害が発生した場合、クローズ後に呼び出された場合、またはサポート範囲外の値がロウオブジェクトに含まれていた場合
        +
        java.lang.NullPointerException - 引数containerRowsMapとして nullが指定された場合、このマップのキーまたは値としてnullが含まれていた場合、もしくは、マップを構成するリストの要素としてnullが含まれていた場合
        Since:
        +
        1.5
        +
        See Also:
        Container.put(Object)
        +
      • +
      + + + +
        +
      • +

        putCollection

        +
        <K,R> Collection<K,R> putCollection(java.lang.String name,
        +                                  java.lang.Class<R> rowType)
        +                              throws GSException
        +
        コレクションを新規作成または変更します。 +

        同名のコンテナが存在しない場合、指定のクラスにより定義されたカラムレイアウトに従い、新規にコレクションを作成します。すでに同名のコンテナが存在し、既存のカラムレイアウトの内容がすべて一致する場合、実行中のトランザクションを待機する点を除き getCollection(String, Class)と同様に振る舞います。

        + +

        指定の型とカラムレイアウトとの対応関係については、Containerの定義を参照してください。

        + +

        すでに同名のコレクションが存在し、かつ、該当するコレクションにおいて実行中のトランザクションが存在する場合、それらの終了を待機してから処理を行います。

        +
        Parameters:
        name - 処理対象のコレクションの名前
        rowType - 処理対象のコレクションのカラムレイアウトと対応するロウオブジェクトの型
        +
        Returns:
        対応するCollection
        +
        Throws:
        +
        GSException - 同名のコレクションが存在する場合。または、既存の同名の時系列に関してカラムレイアウトならびに追加設定の内容が一致しない場合
        +
        GSException - この処理のタイムアウト、接続障害が発生した場合、またはクローズ後に呼び出された場合
        +
        java.lang.NullPointerException - 1つ以上の引数にnullが指定された場合
        +
      • +
      + + + +
        +
      • +

        putCollection

        +
        <K,R> Collection<K,R> putCollection(java.lang.String name,
        +                                  java.lang.Class<R> rowType,
        +                                  boolean modifiable)
        +                              throws GSException
        +
        変更オプションを指定して、コレクションを新規作成または変更します。 +

        同名のコンテナが存在しない場合、指定のクラスにより定義されたカラムレイアウトに従い、新規にコレクションを作成します。すでに同名のコレクションが存在し、既存のカラムレイアウトの内容がすべて一致する場合、実行中のトランザクションを待機する点を除き getCollection(String, Class)と同様に振る舞います。

        + +

        modifiabletrueであり、すでに同名のコレクションが存在する場合、必要に応じカラムレイアウトを変更します。変更する際、要求したカラムと同一の名前・型の既存のカラムは保持されます。一致しないカラムのうち、既存のコレクションにない名前のカラムは追加し、要求側にないカラムはデータも含め削除します。型が異なる同名のカラムが存在する場合は失敗します。また、ロウキーに対応するカラムの追加と削除はできません。

        + +

        コンテナにトリガが設定されており、カラムレイアウト変更によってトリガが通知対象としているカラムが削除された場合、そのカラムはトリガの通知対象から削除されます。

        + +

        新たに追加されるカラムの値は、Containerにて定義されている空の値を初期値として初期化されます。

        + +

        指定の型とカラムレイアウトとの対応関係については、Containerの定義を参照してください。

        + +

        すでに同名のコレクションが存在し、かつ、該当するコレクションにおいて実行中のトランザクションが存在する場合、それらの終了を待機してから処理を行います。

        + +

        ロウキーを持つコレクションを新規に作成する場合、ロウキーに対し、 Container.createIndex(String)にて定義されているデフォルト種別の索引が作成されます。この索引は、削除することができます。

        + +

        現バージョンでは、コンテナの規模など諸条件を満たした場合、カラムレイアウトの変更開始から終了までの間に、処理対象のコンテナに対してコンテナ情報の参照、更新ロックなしでのロウの参照操作を行える場合があります。それ以外の操作は、Containerでの定義通り待機させる場合があります。カラムレイアウトの変更途中に別の操作が行われる場合は、変更前のカラムレイアウトが使用されます。

        +
        Parameters:
        name - 処理対象のコレクションの名前
        rowType - 処理対象のコレクションのカラムレイアウトと対応するロウオブジェクトの型
        modifiable - 既存コレクションのカラムレイアウト変更を許可するかどうか
        +
        Returns:
        対応するCollection
        +
        Throws:
        +
        GSException - 同名の時系列が存在する場合。または、modifiablefalseであり、既存の同名のコレクションに関してカラムレイアウトの内容が一致しない場合や、 modifiabletrueであり、既存の同名のコレクションに関して変更できない項目を変更しようとした場合
        +
        GSException - 指定の型がロウオブジェクトの型として適切でない場合。詳しくはContainerの定義を参照
        +
        GSException - この処理のタイムアウト、接続障害が発生した場合、またはクローズ後に呼び出された場合
        +
        java.lang.NullPointerException - 1つ以上の引数にnullが指定された場合
        +
      • +
      + + + + + + + +
        +
      • +

        putContainer

        +
        <K,R> Container<K,R> putContainer(java.lang.String name,
        +                                java.lang.Class<R> rowType,
        +                                ContainerInfo info,
        +                                boolean modifiable)
        +                            throws GSException
        +
        ロウオブジェクトの型とContainerInfoを指定して、コンテナを新規作成または変更します。 +

        主に、ロウオブジェクトの型を指定して、追加設定を持つコンテナを新規作成する場合に使用します。

        + +

        カラムレイアウトならびにカラム順序の無視設定をContainerInfoに指定できない点を除けば、 putContainer(String, ContainerInfo, boolean)と同様です。

        +
        Parameters:
        name - 処理対象のコンテナの名前
        rowType - 処理対象のコレクションのカラムレイアウトと対応するロウオブジェクトの型
        info - 処理対象のコンテナの情報。nullの場合は無視される
        modifiable - 既存コンテナのカラムレイアウト変更を許可するかどうか
        +
        Returns:
        対応するContainer。コンテナ種別として ContainerType.COLLECTIONを指定した場合はCollectionContainerType.TIME_SERIESを指定した場合はTimeSeriesのインスタンスとなる。
        +
        Throws:
        +
        GSException - nameならびにinfo引数の内容が規則に合致しない場合。また、指定のコンテナ種別に対応するコンテナ新規作成・変更メソッドの規則に合致しない場合
        +
        GSException - 指定の型がロウオブジェクトの型として適切でない場合。詳しくはContainerの定義を参照
        +
        GSException - この処理のタイムアウト、接続障害が発生した場合、またはクローズ後に呼び出された場合
        +
        java.lang.NullPointerException - rowType引数にnullが指定された場合
        Since:
        +
        2.1
        +
        See Also:
        putContainer(String, ContainerInfo, boolean), +putCollection(String, Class, boolean), +putTimeSeries(String, Class, TimeSeriesProperties, boolean)
        +
      • +
      + + + +
        +
      • +

        putContainer

        +
        <K,R,C extends Container<K,R>> C putContainer(java.lang.String name,
        +                                            Container.BindType<K,R,C> bindType)
        +                                 throws GSException
        +
        Container.BindTypeを指定して、コンテナを新規作成または変更します。 +

        コンテナ情報を指定せず、カラムレイアウト変更を許可しないで putContainer(String, Container.BindType, ContainerInfo, boolean) +を呼び出した場合と、同様に振る舞います。

        +
        Parameters:
        name - 処理対象のコンテナの名前
        bindType - 処理対象のコンテナと結びつく型情報
        +
        Returns:
        対応するContainerまたはそのサブインタフェースの型のインスタンス
        +
        Throws:
        +
        GSException - namebindTypeの内容が規則に合致しない場合。また、指定のコンテナ種別に対応するコンテナ新規作成・変更メソッドの規則に合致しない場合
        +
        GSException - 指定の型がロウオブジェクトの型として適切でない場合。詳しくはContainerの定義を参照
        +
        GSException - この処理のタイムアウト、接続障害が発生した場合、またはクローズ後に呼び出された場合
        +
        java.lang.NullPointerException - bindType引数にnullが指定された場合
        Since:
        +
        4.3
        +
      • +
      + + + +
        +
      • +

        putContainer

        +
        <K,R,C extends Container<K,R>> C putContainer(java.lang.String name,
        +                                            Container.BindType<K,R,C> bindType,
        +                                            ContainerInfo info,
        +                                            boolean modifiable)
        +                                 throws GSException
        +
        Container.BindTypeContainerInfoを指定して、コンテナを新規作成または変更します。 +

        指定のbindTypeに応じて、次のいずれかのメソッドと同様に振る舞います。

        +
        +
        Parameters:
        name - 処理対象のコンテナの名前
        bindType - 処理対象のコンテナと結びつく型情報
        info - 処理対象のコンテナの情報。nullの場合は無視される
        modifiable - 既存コンテナのカラムレイアウト変更を許可するかどうか
        +
        Returns:
        対応するContainerまたはそのサブインタフェースの型のインスタンス
        +
        Throws:
        +
        GSException - namebindType、ならびに、 info引数の内容が規則に合致しない場合。また、指定のコンテナ種別に対応するコンテナ新規作成・変更メソッドの規則に合致しない場合
        +
        GSException - 指定の型がロウオブジェクトの型として適切でない場合。詳しくはContainerの定義を参照
        +
        GSException - この処理のタイムアウト、接続障害が発生した場合、またはクローズ後に呼び出された場合
        +
        java.lang.NullPointerException - bindType引数にnullが指定された場合
        Since:
        +
        4.3
        +
      • +
      + + + +
        +
      • +

        putContainer

        +
        <K> Container<K,Row> putContainer(java.lang.String name,
        +                                ContainerInfo info,
        +                                boolean modifiable)
        +                              throws GSException
        +
        ContainerInfoを指定して、コンテナを新規作成または変更します。 +

        次の点を除き、putCollection(String, Class, boolean) +もしくはputTimeSeries(String, Class, TimeSeriesProperties, boolean) +と同様に振る舞います。

        +
          +
        • ContainerInfoを用いてコンテナ種別、カラムレイアウト、ならびに、必要に応じ時系列構成オプションを指定する
        • +
        • 返却されるContainerのロウオブジェクトの型が常にRowとなる
        • +
        +

        それぞれの同名の引数modifiableの用法についても同様です。

        + +

        コンテナに関する情報の指定方法の一覧は次の通りです。

        + + + + + + + + + + + + + + + + + + + + +
        項目引数説明
        コンテナ名nameまたはinfo少なくともいずれかの引数にnullではない値を指定する。両方に指定する場合、異なる値を指定してはならない。
        コンテナ種別infonullではない値を指定する。 ContainerType.COLLECTIONを指定した場合、 putCollection(String, Class, boolean)と同様の振る舞いとなる。 ContainerType.TIME_SERIESを指定した場合、 putTimeSeries(String, Class, TimeSeriesProperties, boolean)と同様の振る舞いとなる。
        カラムレイアウトinfoContainerにて規定された制約に合致するよう ColumnInfoのリストならびにロウキーの構成を設定する。ただし現バージョンでは、ColumnInfo.getDefaultValueNull()null以外を返すようなColumnInfoを含めることはできない。
        カラム順序の無視info無視する場合、同名の既存のコンテナのカラム順序と一致するかどうかを検証しない。
        時系列構成オプションinfoコンテナ種別がContainerType.TIME_SERIESの場合のみ、 nullではない値を指定できる。
        索引設定info現バージョンでは無視される。今後のバージョンでは、 Container.createIndex(String, IndexType)の規則に合致しない設定が含まれていた場合、例外が送出される可能性がある。
        トリガ設定info現バージョンでは無視される。今後のバージョンでは、 Container.createTrigger(TriggerInfo)の規則に合致しない設定が含まれていた場合、例外が送出される可能性がある。
        コンテナ類似性infonull以外を指定し新規作成する場合、指定の内容が反映される。既存コンテナの設定を変更することはできない。nullを指定した場合は無視される。
        +
        Parameters:
        name - 処理対象のコンテナの名前
        info - 処理対象のコンテナの情報
        modifiable - 既存コンテナのカラムレイアウト変更を許可するかどうか
        +
        Returns:
        対応するContainer。コンテナ種別として ContainerType.COLLECTIONを指定した場合はCollectionContainerType.TIME_SERIESを指定した場合はTimeSeriesのインスタンスとなる。
        +
        Throws:
        +
        GSException - nameならびにinfo引数の内容が規則に合致しない場合。また、指定のコンテナ種別に対応するコンテナ新規作成・変更メソッドの規則に合致しない場合
        +
        GSException - この処理のタイムアウト、接続障害が発生した場合、またはクローズ後に呼び出された場合
        +
        java.lang.NullPointerException - info引数にnullが指定された場合
        Since:
        +
        1.5
        +
        See Also:
        putCollection(String, Class, boolean), +putTimeSeries(String, Class, TimeSeriesProperties, boolean), +Container
        +
      • +
      + + + +
        +
      • +

        putTimeSeries

        +
        <R> TimeSeries<R> putTimeSeries(java.lang.String name,
        +                              java.lang.Class<R> rowType)
        +                            throws GSException
        +
        時系列を新規作成または変更します。 +

        同名のコンテナが存在しない場合、指定のクラスにより定義されたカラムレイアウトに従い、新規に時系列を作成します。すでに同名の時系列が存在し、既存のカラムレイアウトの内容がすべて一致する場合、実行中のトランザクションを待機する点を除き getTimeSeries(String, Class)と同様に振る舞います。

        + +

        指定の型とカラムレイアウトとの対応関係については、Containerの定義を参照してください。

        + +

        すでに同名の時系列が存在し、かつ、該当する時系列において実行中のトランザクションが存在する場合、それらの終了を待機してから処理を行います。

        +
        Parameters:
        name - 処理対象の時系列の名前
        rowType - 処理対象の時系列のカラムレイアウトと対応するロウオブジェクトの型
        +
        Returns:
        対応するTimeSeries
        +
        Throws:
        +
        GSException - 同名のコレクションが存在する場合。または、既存の同名の時系列に関してカラムレイアウトならびに追加設定の内容が一致しない場合
        +
        GSException - 指定の型がロウオブジェクトの型として適切でない場合。詳しくはContainerの定義を参照
        +
        GSException - この処理のタイムアウト、接続障害が発生した場合、またはクローズ後に呼び出された場合
        +
        java.lang.NullPointerException - 1つ以上の引数にnullが指定された場合
        +
      • +
      + + + +
        +
      • +

        putTimeSeries

        +
        <R> TimeSeries<R> putTimeSeries(java.lang.String name,
        +                              java.lang.Class<R> rowType,
        +                              TimeSeriesProperties props,
        +                              boolean modifiable)
        +                            throws GSException
        +
        追加設定や変更オプションを指定して、時系列を新規作成または変更します。 +

        同名のコンテナが存在しない場合、指定のクラスにより定義されたカラムレイアウトや追加設定に従い、新規に時系列を作成します。すでに同名の時系列が存在し、既存のカラムレイアウトならびに追加設定の内容がすべて一致する場合、実行中のトランザクションを待機する点を除き getTimeSeries(String, Class)と同様に振る舞います。

        + +

        modifiabletrueであり、すでに同名の時系列が存在する場合、必要に応じカラムレイアウトを変更します。変更する際、要求したカラムと同一の名前・型の既存のカラムは保持されます。一致しないカラムのうち、既存の時系列にない名前のカラムは追加し、要求側にないカラムはデータも含め削除します。型が異なる同名のカラムが存在する場合は失敗します。また、ロウキーに対応するカラムの追加と削除、時系列構成オプションの変更はできません。時系列構成オプションを指定する場合は、既存の設定内容とすべて同値にする必要があります。

        + +

        コンテナにトリガが設定されており、カラムレイアウト変更によってトリガが通知対象としているカラムが削除された場合、そのカラムはトリガの通知対象から削除されます。

        + +

        新たに追加されるカラムの初期値については、 putCollection(String, Class, boolean)の定義を参照してください。

        + +

        指定の型とカラムレイアウトとの対応関係については、Containerの定義を参照してください。

        + +

        すでに同名の時系列が存在し、かつ、該当する時系列において実行中のトランザクションが存在する場合、それらの終了を待機してから処理を行います。

        +
        Parameters:
        name - 処理対象の時系列の名前
        rowType - 処理対象の時系列のカラムレイアウトと対応するロウオブジェクトの型
        props - 時系列の構成オプション。nullを指定すると、同名の時系列が存在する場合は既存の設定が継承され、存在しない場合は初期状態のTimeSeriesPropertiesを指定したものとみなされる。
        modifiable - 既存時系列のカラムレイアウト変更を許可するかどうか
        +
        Returns:
        対応するTimeSeries
        +
        Throws:
        +
        GSException - 同名のコレクションが存在する場合。または、modifiablefalseであり、既存の同名の時系列に関してカラムレイアウトならびに追加設定の内容が一致しない場合や、 modifiabletrueであり、既存の同名の時系列に関して変更できない項目を変更しようとした場合
        +
        GSException - 指定の型がロウオブジェクトの型として適切でない場合。詳しくはContainerの定義を参照
        +
        GSException - この処理のタイムアウト、接続障害が発生した場合、またはクローズ後に呼び出された場合
        +
        java.lang.NullPointerException - 1つ以上の引数にnullが指定された場合
        +
      • +
      + + + + +
    • +
    +
  • +
+
+
+ + + +
+
+

Class GridStoreFactory

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • com.toshiba.mwcloud.gs.GridStoreFactory
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    java.io.Closeable, java.lang.AutoCloseable
    +
    +
    +
    +
    public abstract class GridStoreFactory
    +extends java.lang.Object
    +implements java.io.Closeable
    +
    GridStoreインスタンスを管理します。 +

    GridStoreインスタンス共通のクライアント設定や使用済みのコネクションを管理します。

    + +

    GridDBにアクセスするためには、このファクトリを介して GridStoreインスタンスを取得する必要があります。

    + +

    このクラスの公開メソッドは、すべてスレッド安全です。

    + +

    追加の環境設定を行うことで、次の機能を使用できるようになります。

    + +

    クライアントロギング

    +

    クラスパスにロギングライブラリを含めることで、ログ出力を有効にした場合にログを出力できます。

    +

    ロギングフレームワークはSLF4Jを使用します。ロガーの名称は「com.toshiba.mwcloud.gs.GridStoreLogger」で始まります。また、SLF4Jのバージョンは1.6.0以上を推奨しています。

    + +

    クライアント設定ファイル

    +

    設定ファイル「gs_client.properties」を含むディレクトリと、設定ライブラリ「gridstore-conf.jar」をクラスパスに共に含めることで、GridStoreFactoryに設定ファイルの内容を適用することができます。設定ファイルを用いることで、アプリケーションコードを修正せずに、接続設定を変更できます。設定ファイルには以下のPropertiesオブジェクトと同じプロパティ項目を指定できます。設定ファイルの内容はPropertiesオブジェクトの設定より優先的に適用されます。

    +
    factoryカテゴリプロパティ
    +
    有効なプロパティの項目はsetProperties(Properties)の仕様に準拠します。
    +
    以下のように「factory.」をプロパティ名の前に付けて記述します。
    factory.maxConnectionPoolSize = 10
    +
    +
    storeカテゴリプロパティ
    +
    有効なプロパティの項目はgetGridStore(Properties)の仕様に準拠します。
    +
    以下のように「store.」をプロパティ名の前に付けて記述します。
    store.clusterName = Project1
    +
    +
    +

    以下の場合は例外が発生します。

    +
    • 設定ファイルを含む複数のディレクトリがクラスパスに含まれる場合
    • +
    • 設定ライブラリのみがクラスパスに含まれる場合
    • +
    • 存在しないカテゴリ名が指定された場合
    • プロパティ名がカテゴリ名のみからなる場合
    +

    また、設定ファイルを含むディレクトリのみがクラスパスに含まれ、設定ライブラリがクラスパスに含まれない場合には、設定ファイルの内容は適用されません。

    +
    +
    + +

    SSL接続

    +

    アドバンスド機能用ライブラリ「gridstore-advanced.jar」をクラスパスに含めることで、クラスタもしくはアドレスプロバイダへのTCP接続においてSSL接続を選択できるようになります。

    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + + + +
      Constructors 
      ModifierConstructor and Description
      protected GridStoreFactory() 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      abstract voidclose() +
      このファクトリより作成されたGridStoreをすべてクローズし、必要に応じて関連するリソースを解放します。
      +
      abstract GridStoregetGridStore(java.util.Properties properties) +
      指定のプロパティを持つGridStoreを取得します。
      +
      static GridStoreFactorygetInstance() +
      デフォルトのインスタンスを取得します。
      +
      abstract voidsetProperties(java.util.Properties properties) +
      このファクトリの設定を変更します。
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        GridStoreFactory

        +
        protected GridStoreFactory()
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        close

        +
        public abstract void close()
        +                    throws GSException
        +
        このファクトリより作成されたGridStoreをすべてクローズし、必要に応じて関連するリソースを解放します。 +

        GSExceptionが送出された場合でも、関連するコネクションリソースはすべて解放されます。すでにクローズ済みの場合、このメソッドを呼び出しても何の効果もありません。なお、現在のVMの終了時にも呼び出されます。

        +
        +
        Specified by:
        +
        close in interface java.io.Closeable
        +
        Specified by:
        +
        close in interface java.lang.AutoCloseable
        +
        Throws:
        +
        GSException - クローズ処理中に接続障害などが発生した場合
        See Also:
        Closeable.close()
        +
      • +
      + + + +
        +
      • +

        getGridStore

        +
        public abstract GridStore getGridStore(java.util.Properties properties)
        +                                throws GSException
        +
        指定のプロパティを持つGridStoreを取得します。 +

        GridStoreを取得した時点では、各Containerを管理するマスタノード(以下、マスタ)のアドレス探索を必要に応じて行うだけであり、認証処理は行われません。実際に各Containerに対応するノードに接続する必要が生じたタイミングで、認証処理が行われます。

        + +

        以下のプロパティを指定できます。サポート外の名称のプロパティは無視されます。

        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        名称説明
        host接続先ホスト名。IPアドレス(IPv4のみ)も可。マスタを手動指定する場合は必須。マスタを自動検出する場合は設定しない。 notificationMemberおよびnotificationProviderプロパティと同時に指定することはできない
        port接続先ポート番号。0から65535までの数値の文字列表現。マスタを手動指定する場合は必須。マスタを自動検出する場合は設定しない
        notificationAddressマスタ自動検出に用いられる通知情報を受信するためのIPアドレス (IPv4のみ)。省略時はデフォルトのアドレスを使用。 notificationMemberおよびnotificationProviderプロパティと同時に指定することはできない
        notificationPortマスタ自動検出に用いられる通知情報を受信するためのポート番号。 0から65535までの数値の文字列表現。省略時はデフォルトのポートを使用
        clusterNameクラスタ名。接続先のクラスタに設定されているクラスタ名と一致するかどうかを確認するために使用される。省略時もしくは空文字列を指定した場合、クラスタ名の確認は行われない
        database接続先のデータベース名。省略時は全てのユーザがアクセス可能な「public」データベースに自動接続される。接続ユーザは接続データベースに属するコンテナを操作できる。
        userユーザ名
        passwordユーザ認証用のパスワード
        consistency一貫性レベル。次のいずれかの文字列を指定できる。
        +
        "IMMEDIATE"
        +
        他のクライアントからの更新結果は、該当トランザクションの完了後即座に反映される
        +
        "EVENTUAL"
        +
        他のクライアントからの更新結果は、該当トランザクションが完了した後でも反映されない場合がある。Containerに対する更新操作は実行できない
        +
        +省略時は"IMMEDIATE"が指定されたものとみなされる
        transactionTimeoutトランザクションタイムアウト時間の最低値。関係するContainerにおける各トランザクションの開始時点から適用。 0以上Integer.MAX_VALUEまでの値の文字列表現であり、単位は秒。ただし、タイムアウト時間として有効に機能する範囲に上限があり、上限を超える指定は上限値が指定されたものとみなされる。 0の場合、後続のトランザクション処理がタイムアウトエラーになるかどうかは常に不定となる。省略時は接続先GridDB上のデフォルト値を使用
        failoverTimeoutフェイルオーバ処理にて新たな接続先が見つかるまで待機する時間の最低値。 0以上Integer.MAX_VALUEまでの数値の文字列表現であり、単位は秒。0の場合、フェイルオーバ処理を行わない。省略時はこのファクトリの設定値を使用
        containerCacheSizeコンテナキャッシュに格納するコンテナ情報の最大個数。 0以上Integer.MAX_VALUEまでの数値の文字列表現。値が0の場合、コンテナキャッシュを使用しないことを意味する。 Containerを取得する際にキャッシュにヒットした場合は、 GridDBへのコンテナ情報の問い合わせを行わない。省略時は既存の設定値を使用。バージョン1.5よりサポート
        dataAffinityPatternデータアフィニティ機能のアフィニティ文字列について、次のようにコンテナ名のパターンとペアで任意個数指定する。
        (コンテナ名パターン1)=(アフィニティ文字列1),(コンテナ名パターン2)=(アフィニティ文字列2),...
        + ContainerInfo.setDataAffinity(String)が未指定の Containerを追加する際に、コンテナ名が指定したいずれかのコンテナ名パターンに合致する場合に、ペアで指定したアフィニティ文字列が適用される。複数のコンテナ名パターンが合致する場合は、記述された順番で最初に合致したパターンが用いられる。コンテナ名パターンはワイルドカード「%」を使用できる他は、コンテナ名の規則に準拠する。アフィニティ文字列はContainerInfo.setDataAffinity(String)の規則に準拠する。パターンやその区切りに使用される記号をコンテナ名などに用いるには、「\」を用いてエスケープする。ただしコンテナ名やアフィニティ文字列の規則に反する記号は使用できない。バージョン2.7よりサポート
        notificationMember固定リスト方式を使用して構成されたクラスタに接続する場合に、クラスタノードのアドレス・ポートのリストを次のように指定する。
        (アドレス1):(ポート1),(アドレス2):(ポート2),...
        + notificationAddressおよびnotificationProviderプロパティと同時に指定することはできない。バージョン2.9よりサポート
        notificationProviderプロバイダ方式を使用して構成されたクラスタに接続する場合に、アドレスプロバイダのURLを指定する。notificationAddressおよび notificationMemberプロパティと同時に指定することはできない。バージョン2.9よりサポート
        applicationNameアプリケーションの名前。アプリケーションの識別を補助するための情報として、接続先のクラスタ上での各種管理情報の出力の際に含められる場合がある。ただし、アプリケーションの同一性をどのように定義するかについては関与しない。省略時はアプリケーション名の指定がなかったものとみなされる。空文字列は指定できない。バージョン4.2よりサポート
        timeZoneタイムゾーン情報。 TQLでのTIMESTAMP値演算などに使用される。「±hh:mm」または「±hhmm」形式によるオフセット値 (±+または-hhは時、 mmは分)、「Z」(+00:00に相当)、「auto」(実行環境に応じ自動設定)のいずれかを指定する。 autoが使用できるのは夏時間を持たないタイムゾーンに限定される。バージョン4.3よりサポート
        authentication認証種別。次のいずれかの文字列を指定できる。
        +
        "INTERNAL"
        +
        クラスタ上で管理されているアカウント情報に基づいた、内部認証
        +
        "LDAP"
        +
        クラスタ外にあるLDAPサーバで管理されているアカウント情報に基づいた、外部認証。LDAP接続設定のないクラスタに接続する場合、もしくは、管理ユーザを使用する場合は指定できない
        +
        +省略時は自動的に認証種別が選択される。原則として指定は不要。非管理ユーザについて内部認証と外部認証を併用するクラスタへの接続の際に、内部認証を用いる場合などに指定する。バージョン4.5よりサポート
        sslModeクラスタへの接続においてSSLの使用有無の判断に用いられるモード。次のいずれかの文字列を指定できる。
        +
        "DISABLED"
        +
        SSLを常に使用しない
        +
        "PREFERRED"
        +
        可能な限りSSLを使用する。SSL接続・非SSL接続共に使用できる場合は SSL接続を使用する
        +
        "VERIFY"
        +
        SSLを常に使用する。サーバ検証あり
        +
        + SSL接続を選択できる環境設定(詳細: GridStoreFactory)の場合のみ指定できる。それ以外の場合はプロパティの値によらず指定できない。 SSL接続を選択できる場合、省略時は"PREFERRED"が指定されたものとみなされる。バージョン4.5よりサポート。VERIFYはバージョン4.6よりサポート
        connectionRouteクラスタ接続時における通信経路。次の文字列を指定できる。
        +
        "PUBLIC"
        +
        クラスタの外部通信経路が設定されている場合に、外部通信経路を経由した接続を行う
        +
        +省略時は通常のクラスタ通信経路を用いた接続が行われる。外部接続が必要な場合のみ指定する。バージョン5.1.1よりサポート
        + +

        クラスタ名、データベース名、ユーザ名、パスワードについては、 ASCIIの大文字・小文字表記の違いがいずれも区別されます。その他、これらの定義に使用できる文字種や長さの上限などの制限については、 GridDB機能リファレンスを参照してください。ただし、制限に反する文字列をプロパティ値として指定した場合、各ノードへの接続のタイミングまでエラーが検知されないことや、認証情報の不一致など別のエラーになることがあります。

        + +

        取得のたびに、新たなGridStoreインスタンスが生成されます。異なるGridStoreインスタンスならびに関連するオブジェクトに対する操作は、スレッド安全です。すなわち、ある2つのオブジェクトがそれぞれGridStore +インスタンスを基にして生成されたものまたはGridStoreインスタンスそのものであり、かつ、該当する関連GridStoreインスタンスが異なる場合、一方のオブジェクトに対してどのスレッドからどのタイミングでメソッドが呼び出されていたとしても、他方のオブジェクトのメソッドを呼び出すことができます。ただし、GridStore自体のスレッド安全性は保証されていないため、同一GridStoreインスタンスに対して複数スレッドから任意のタイミングでメソッド呼び出しすることはできません。

        +
        Parameters:
        properties - 取得設定を指示するためのプロパティ
        +
        Throws:
        +
        GSException - 指定のホストについて名前解決できなかった場合
        +
        GSException - 指定のプロパティが上で説明した形式・制限に合致しないことを検知できた場合
        +
        GSException - すでにクローズ済みの場合
        +
        java.lang.NullPointerException - propertiesnullが指定された場合
        +
      • +
      + + + +
        +
      • +

        getInstance

        +
        public static GridStoreFactory getInstance()
        +
        デフォルトのインスタンスを取得します。 +

        このクラスのロード時に、GridStoreFactoryクラスのデフォルトのサブクラスがロードされ、インスタンスが生成されます。

        +
      • +
      + + + +
        +
      • +

        setProperties

        +
        public abstract void setProperties(java.util.Properties properties)
        +                            throws GSException
        +
        このファクトリの設定を変更します。 +

        設定の変更は、このファクトリより生成されたGridStore、ならびに、今後このファクトリで生成されるGridStoreに反映されます。

        + +

        以下のプロパティを指定できます。サポート外の名称のプロパティは無視されます。

        + + + + + + +
        名称説明
        maxConnectionPoolSize内部で使用されるコネクションプールの最大コネクション数。0以上 Integer.MAX_VALUEまでの数値の文字列表現。値が0の場合、コネクションプールを使用しないことを意味する。省略時は既存の設定値を使用
        failoverTimeout +フェイルオーバ処理にて新たな接続先が見つかるまで待機する時間の最低値。0以上 Integer.MAX_VALUEまでの数値の文字列表現であり、単位は秒。 0の場合、フェイルオーバ処理を行わない。省略時は既存の設定値を使用
        +
        Throws:
        +
        GSException - 指定のプロパティが上で説明した形式に合致しない場合
        +
        GSException - すでにクローズ済みの場合
        +
        java.lang.NullPointerException - propertiesnullが指定された場合
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + +
+
+

Class IndexInfo

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • com.toshiba.mwcloud.gs.IndexInfo
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class IndexInfo
    +extends java.lang.Object
    +
    索引の設定内容を表します。 +

    カラム名の表記やカラム番号の妥当性について、必ずしも検査するとは限りません。

    +
    Since:
    +
    3.5
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + + + + +
      Constructors 
      Constructor and Description
      IndexInfo() +
      空の索引情報を作成します。
      +
      IndexInfo(IndexInfo info) +
      指定の内容を引き継ぎ、新たな索引情報を作成します。
      +
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      static IndexInfocreateByColumn(java.lang.String columnName, + IndexType type) +
      必要に応じカラム名と索引種別を指定して索引情報を作成します。
      +
      static IndexInfocreateByColumnList(java.util.List<java.lang.String> columnNames, + IndexType type) +
      必要に応じカラム名の列と索引種別を指定して索引情報を作成します。
      +
      static IndexInfocreateByName(java.lang.String name, + IndexType type) +
      必要に応じ索引名と索引種別を指定して索引情報を作成します。
      +
      java.lang.IntegergetColumn() +
      索引に対応する単一のカラムのカラム番号を取得します。
      +
      java.util.List<java.lang.Integer>getColumnList() +
      索引に対応する任意個数のカラムのカラム番号の列を取得します。
      +
      java.lang.StringgetColumnName() +
      索引に対応する単一のカラムのカラム名を取得します。
      +
      java.util.List<java.lang.String>getColumnNameList() +
      索引に対応する任意個数のカラムのカラム名の列を取得します。
      +
      java.lang.StringgetName() +
      索引名を取得します。
      +
      IndexTypegetType() +
      索引種別を取得します。
      +
      voidsetColumn(java.lang.Integer column) +
      索引に対応する、単一のカラムからなるカラム番号列を設定します。
      +
      voidsetColumnList(java.util.List<java.lang.Integer> columns) +
      索引に対応する任意個数のカラムのカラム番号の列を設定します。
      +
      voidsetColumnName(java.lang.String columnName) +
      索引に対応する、単一のカラムからなるカラム名列を設定します。
      +
      voidsetColumnNameList(java.util.List<java.lang.String> columnNames) +
      索引に対応する任意個数のカラムのカラム名の列を設定します。
      +
      voidsetName(java.lang.String name) +
      索引名を設定します。
      +
      voidsetType(IndexType type) +
      索引種別を設定します。
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        IndexInfo

        +
        public IndexInfo()
        +
        空の索引情報を作成します。 +

        索引種別、索引名、カラム番号、カラム名がいずれも未設定の状態の索引情報を作成します。

        +
      • +
      + + + +
        +
      • +

        IndexInfo

        +
        public IndexInfo(IndexInfo info)
        +
        指定の内容を引き継ぎ、新たな索引情報を作成します。
        +
        Parameters:
        info - 引き継ぎ対象の索引情報
        +
        Throws:
        +
        java.lang.NullPointerException - 引数にnullが指定された場合
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        createByColumn

        +
        public static IndexInfo createByColumn(java.lang.String columnName,
        +                       IndexType type)
        +
        必要に応じカラム名と索引種別を指定して索引情報を作成します。
        +
        Parameters:
        columnName - カラム名。指定しない場合はnull
        type - 索引種別。指定しない場合はnull
        +
      • +
      + + + +
        +
      • +

        createByColumnList

        +
        public static IndexInfo createByColumnList(java.util.List<java.lang.String> columnNames,
        +                           IndexType type)
        +
        必要に応じカラム名の列と索引種別を指定して索引情報を作成します。
        +
        Parameters:
        columnNames - カラム名の列。長さ0は許容するが、 nullは指定できない
        type - 索引種別。指定しない場合はnull
        +
        Throws:
        +
        java.lang.NullPointerException - columnNamesnullが指定された場合
        Since:
        +
        4.3
        +
      • +
      + + + +
        +
      • +

        createByName

        +
        public static IndexInfo createByName(java.lang.String name,
        +                     IndexType type)
        +
        必要に応じ索引名と索引種別を指定して索引情報を作成します。
        +
        Parameters:
        name - 索引名。指定しない場合はnull
        type - 索引種別。指定しない場合はnull
        +
      • +
      + + + +
        +
      • +

        getColumn

        +
        public java.lang.Integer getColumn()
        +
        索引に対応する単一のカラムのカラム番号を取得します。
        +
        Returns:
        カラム番号。未設定の場合はnull
        +
        Throws:
        +
        java.lang.IllegalStateException - 複合索引に関するカラム番号の列またはカラム名の列が設定されていた場合
        +
      • +
      + + + +
        +
      • +

        getColumnList

        +
        public java.util.List<java.lang.Integer> getColumnList()
        +
        索引に対応する任意個数のカラムのカラム番号の列を取得します。
        +
        Returns:
        番号の列。未設定の場合は長さ0の列
        Since:
        +
        4.3
        +
      • +
      + + + +
        +
      • +

        getColumnName

        +
        public java.lang.String getColumnName()
        +
        索引に対応する単一のカラムのカラム名を取得します。
        +
        Returns:
        カラム名。未設定の場合はnull
        +
        Throws:
        +
        java.lang.IllegalStateException - 複合索引に関するカラム番号の列またはカラム名の列が設定されていた場合
        +
      • +
      + + + +
        +
      • +

        getColumnNameList

        +
        public java.util.List<java.lang.String> getColumnNameList()
        +
        索引に対応する任意個数のカラムのカラム名の列を取得します。
        +
        Returns:
        カラム名の列。未設定の場合は長さ0の列
        Since:
        +
        4.3
        +
      • +
      + + + +
        +
      • +

        getName

        +
        public java.lang.String getName()
        +
        索引名を取得します。
        +
        Returns:
        索引名。未設定の場合はnull
        +
      • +
      + + + +
        +
      • +

        getType

        +
        public IndexType getType()
        +
        索引種別を取得します。
        +
        Returns:
        索引種別。未設定の場合はnull
        +
      • +
      + + + +
        +
      • +

        setColumn

        +
        public void setColumn(java.lang.Integer column)
        +
        索引に対応する、単一のカラムからなるカラム番号列を設定します。
        +
        Parameters:
        column - カラム番号。nullの場合は未設定状態になる
        +
      • +
      + + + +
        +
      • +

        setColumnList

        +
        public void setColumnList(java.util.List<java.lang.Integer> columns)
        +
        索引に対応する任意個数のカラムのカラム番号の列を設定します。
        +
        Parameters:
        columns - カラム番号の列。長さ0は許容するが、 nullは指定できない
        +
        Throws:
        +
        java.lang.NullPointerException - columnsnullが指定された場合
        Since:
        +
        4.3
        +
      • +
      + + + +
        +
      • +

        setColumnName

        +
        public void setColumnName(java.lang.String columnName)
        +
        索引に対応する、単一のカラムからなるカラム名列を設定します。
        +
        Parameters:
        columnName - カラム名。nullの場合は未設定状態になる
        +
      • +
      + + + +
        +
      • +

        setColumnNameList

        +
        public void setColumnNameList(java.util.List<java.lang.String> columnNames)
        +
        索引に対応する任意個数のカラムのカラム名の列を設定します。
        +
        Parameters:
        columnNames - カラム名の列。長さ0は許容するが、 nullは指定できない
        +
        Throws:
        +
        java.lang.NullPointerException - columnNamesnullが指定された場合
        Since:
        +
        4.3
        +
      • +
      + + + +
        +
      • +

        setName

        +
        public void setName(java.lang.String name)
        +
        索引名を設定します。
        +
        Parameters:
        name - 索引名。nullの場合は未設定状態になる
        +
      • +
      + + + +
        +
      • +

        setType

        +
        public void setType(IndexType type)
        +
        索引種別を設定します。
        +
        Parameters:
        type - 索引種別。nullの場合は未設定状態になる
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + +
+
+

Enum IndexType

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • java.lang.Enum<IndexType>
    • +
    • +
        +
      • com.toshiba.mwcloud.gs.IndexType
      • +
      +
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    java.io.Serializable, java.lang.Comparable<IndexType>
    +
    +
    +
    +
    public enum IndexType
    +extends java.lang.Enum<IndexType>
    +
    Containerに設定する索引の種別を示します。
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Enum Constant Summary

      + + + + + + + + + + + + + + + + + +
      Enum Constants 
      Enum Constant and Description
      DEFAULT +
      デフォルトの索引種別を示します。
      +
      HASH +
      ハッシュ索引を示します。
      +
      SPATIAL +
      空間索引を示します。
      +
      TREE +
      ツリー索引を示します。
      +
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      static IndexTypevalueOf(java.lang.String name) +
      Returns the enum constant of this type with the specified name.
      +
      static IndexType[]values() +
      Returns an array containing the constants of this enum type, in +the order they are declared.
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Enum

        +clone, compareTo, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf
      • +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +getClass, notify, notifyAll, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Enum Constant Detail

      + + + +
        +
      • +

        DEFAULT

        +
        public static final IndexType DEFAULT
        +
        デフォルトの索引種別を示します。 +

        この索引種別は、特定の種別を明示せずに索引の操作を行う必要がある場合に用いられるものであり、実在する索引はこの種別以外の種別に分類されます。

        +
        Since:
        +
        3.5
        +
      • +
      + + + +
        +
      • +

        HASH

        +
        public static final IndexType HASH
        +
        ハッシュ索引を示します。 +

        この索引種別は、Collectionにおける次の型のカラムに対して設定できます。

        +
          +
        • STRING
        • +
        • BOOL
        • +
        • BYTE
        • +
        • SHORT
        • +
        • INTEGER
        • +
        • LONG
        • +
        • FLOAT
        • +
        • DOUBLE
        • +
        • TIMESTAMP
        • +
        +

        TimeSeriesに対して設定することはできません。

        +
      • +
      + + + +
        +
      • +

        SPATIAL

        +
        public static final IndexType SPATIAL
        +
        空間索引を示します。 +

        この索引種別は、CollectionにおけるGEOMETRY型のカラムに対してのみ使用できます。TimeSeriesに対して設定することはできません。

        +
      • +
      + + + +
        +
      • +

        TREE

        +
        public static final IndexType TREE
        +
        ツリー索引を示します。 +

        この索引種別は、時系列におけるロウキーと対応するカラムを除く任意の種別のコンテナにおける、次の型のカラムに対して使用できます。

        +
          +
        • STRING
        • +
        • BOOL
        • +
        • BYTE
        • +
        • SHORT
        • +
        • INTEGER
        • +
        • LONG
        • +
        • FLOAT
        • +
        • DOUBLE
        • +
        • TIMESTAMP
        • +
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        valueOf

        +
        public static IndexType valueOf(java.lang.String name)
        +
        Returns the enum constant of this type with the specified name. +The string must match exactly an identifier used to declare an +enum constant in this type. (Extraneous whitespace characters are +not permitted.)
        +
        Parameters:
        name - the name of the enum constant to be returned.
        +
        Returns:
        the enum constant with the specified name
        +
        Throws:
        +
        java.lang.IllegalArgumentException - if this enum type has no constant +with the specified name
        +
        java.lang.NullPointerException - if the argument is null
        +
      • +
      + + + +
        +
      • +

        values

        +
        public static IndexType[] values()
        +
        Returns an array containing the constants of this enum type, in +the order they are declared. This method may be used to iterate +over the constants as follows: +
        +for (IndexType c : IndexType.values())
        +    System.out.println(c);
        +
        +
        Returns:
        an array containing the constants of this enum type, in +the order they are declared
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + +
+
+

Enum InterpolationMode

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • java.lang.Enum<InterpolationMode>
    • +
    • +
        +
      • com.toshiba.mwcloud.gs.InterpolationMode
      • +
      +
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    java.io.Serializable, java.lang.Comparable<InterpolationMode>
    +
    +
    +
    +
    public enum InterpolationMode
    +extends java.lang.Enum<InterpolationMode>
    +
    ロウの補間方法の種別を表します。 +

    時系列ロウの補間機能で使用されます。

    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Enum Constant Summary

      + + + + + + + + + + + +
      Enum Constants 
      Enum Constant and Description
      EMPTY +
      空の値を補間値として用いることを示します。
      +
      LINEAR_OR_PREVIOUS +
      カラムに応じて線形補間または直前ロウの値による補間を行うことを示します。
      +
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      static InterpolationModevalueOf(java.lang.String name) +
      Returns the enum constant of this type with the specified name.
      +
      static InterpolationMode[]values() +
      Returns an array containing the constants of this enum type, in +the order they are declared.
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Enum

        +clone, compareTo, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf
      • +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +getClass, notify, notifyAll, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Enum Constant Detail

      + + + +
        +
      • +

        EMPTY

        +
        public static final InterpolationMode EMPTY
        +
        空の値を補間値として用いることを示します。 +

        ロウキーを除くすべてのロウフィールドについて、Containerにて定義されている空の値を補間値として用いることを示します。

        +
      • +
      + + + +
        +
      • +

        LINEAR_OR_PREVIOUS

        +
        public static final InterpolationMode LINEAR_OR_PREVIOUS
        +
        カラムに応じて線形補間または直前ロウの値による補間を行うことを示します。 +

        補間機能にて指定されたカラムについては、補間対象時刻の前後時刻のロウの値により線形補間を行います。対象とするカラムの型は数値型でなければなりません。

        + +

        補間機能にて特に指定されていないカラムについては、補間対象時刻と隣接する直前の時刻のロウの値を補間値として使用します。対象とするカラムの型に制限はありません。

        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        valueOf

        +
        public static InterpolationMode valueOf(java.lang.String name)
        +
        Returns the enum constant of this type with the specified name. +The string must match exactly an identifier used to declare an +enum constant in this type. (Extraneous whitespace characters are +not permitted.)
        +
        Parameters:
        name - the name of the enum constant to be returned.
        +
        Returns:
        the enum constant with the specified name
        +
        Throws:
        +
        java.lang.IllegalArgumentException - if this enum type has no constant +with the specified name
        +
        java.lang.NullPointerException - if the argument is null
        +
      • +
      + + + +
        +
      • +

        values

        +
        public static InterpolationMode[] values()
        +
        Returns an array containing the constants of this enum type, in +the order they are declared. This method may be used to iterate +over the constants as follows: +
        +for (InterpolationMode c : InterpolationMode.values())
        +    System.out.println(c);
        +
        +
        Returns:
        an array containing the constants of this enum type, in +the order they are declared
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + +
+
+

Annotation Type NotNull

+
+
+
+
    +
  • +
    +
    +
    @Retention(value=RUNTIME)
    +@Target(value={TYPE,FIELD,METHOD,PACKAGE})
    +public @interface NotNull
    +
    NOT NULL制約を持つカラムであることを示します。
    +
    Since:
    +
    3.5
    +
    See Also:
    Container
    +
  • +
+
+
+ + + +
+
+

Annotation Type Nullable

+
+
+
+
    +
  • +
    +
    +
    @Retention(value=RUNTIME)
    +@Target(value={TYPE,FIELD,METHOD,PACKAGE})
    +public @interface Nullable
    +
    NOT NULL制約を持たないカラムであることを示します。
    +
    Since:
    +
    3.5
    +
    See Also:
    Container
    +
  • +
+
+
+ + + +
+
+

Interface PartitionController

+
+
+
+
    +
  • +
    +
    All Superinterfaces:
    +
    java.lang.AutoCloseable, java.io.Closeable
    +
    +
    +
    +
    public interface PartitionController
    +extends java.io.Closeable
    +
    パーティション状態の取得や操作のためのコントローラです。 +

    パーティションとは、データを格納する論理的な領域です。 GridDBクラスタ内のデータ配置に基づいた操作を行うために使用します。

    +
    Since:
    +
    1.5
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      voidassignPreferableHost(int partitionIndex, + java.net.InetAddress host) +
      優先的に選択されるホストのアドレスを設定します。
      +
      voidclose() +
      GridDBとの接続状態を解除し、必要に応じて関連するリソースを解放します。
      +
      java.util.List<java.net.InetAddress>getBackupHosts(int partitionIndex) +
      指定のパーティションに対応するバックアップノードのアドレス一覧を取得します。
      +
      longgetContainerCount(int partitionIndex) +
      指定のパーティションに属するコンテナの総数を取得します。
      +
      java.util.List<java.lang.String>getContainerNames(int partitionIndex, + long start, + java.lang.Long limit) +
      指定のパーティションに所属するコンテナの名前の一覧を取得します。
      +
      java.util.List<java.net.InetAddress>getHosts(int partitionIndex) +
      指定のパーティションに対応するノードのアドレス一覧を取得します。
      +
      java.net.InetAddressgetOwnerHost(int partitionIndex) +
      指定のパーティションに対応するオーナノードのアドレスを取得します。
      +
      intgetPartitionCount() +
      対象とするGridDBクラスタのパーティション数を取得します。
      +
      intgetPartitionIndexOfContainer(java.lang.String containerName) +
      指定のコンテナ名に対応するパーティションインデックスを取得します。
      +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        assignPreferableHost

        +
        void assignPreferableHost(int partitionIndex,
        +                        java.net.InetAddress host)
        +                          throws GSException
        +
        優先的に選択されるホストのアドレスを設定します。 +

        バックアップノードへの接続など、可能な接続先が複数存在する場合に、設定されたアドレスが候補に含まれていれば常に選択されるようになります。それ以外の場合は設定が無視されます。

        +
        Parameters:
        partitionIndex - パーティションインデックス。0以上パーティション数未満の値
        host - 優先的に選択されるホストのアドレス。nullの場合、設定が解除される
        +
        Throws:
        +
        GSException - 範囲外のパーティションインデックスが指定された場合
        +
        GSException - このオブジェクトまたは対応するGridStoreのクローズ後に呼び出された場合
        See Also:
        getBackupHosts(int)
        +
      • +
      + + + +
        +
      • +

        close

        +
        void close()
        +           throws GSException
        +
        GridDBとの接続状態を解除し、必要に応じて関連するリソースを解放します。
        +
        +
        Specified by:
        +
        close in interface java.lang.AutoCloseable
        +
        Specified by:
        +
        close in interface java.io.Closeable
        +
        Throws:
        +
        GSException - 現バージョンでは送出されない
        +
      • +
      + + + +
        +
      • +

        getBackupHosts

        +
        java.util.List<java.net.InetAddress> getBackupHosts(int partitionIndex)
        +                                                    throws GSException
        +
        指定のパーティションに対応するバックアップノードのアドレス一覧を取得します。 +

        バックアップノードとは、 GridStoreFactory.getGridStore(java.util.Properties)における一貫性レベルとして"EVENTUAL"を指定した場合に、優先的に選択されるノードのことです。

        + +

        一覧の順序に関しては不定です。重複するアドレスが含まれることはありません。

        + +

        返却されたリストに対して変更操作を行った場合に、 UnsupportedOperationExceptionなどの実行時例外が発生するかどうかは未定義です。

        +
        Parameters:
        partitionIndex - パーティションインデックス。0以上パーティション数未満の値
        +
        Returns:
        バックアップノードのアドレスを表すInetAddressを要素とする、List
        +
        Throws:
        +
        GSException - 範囲外のパーティションインデックスが指定された場合
        +
        GSException - この処理のタイムアウト、接続障害が発生した場合、このオブジェクトまたは対応するGridStoreのクローズ後に呼び出された場合
        +
      • +
      + + + +
        +
      • +

        getContainerCount

        +
        long getContainerCount(int partitionIndex)
        +                       throws GSException
        +
        指定のパーティションに属するコンテナの総数を取得します。 +

        コンテナ数を求める際の計算量は、コンテナ数にはおおむね依存しません。

        +
        Parameters:
        partitionIndex - パーティションインデックス。0以上パーティション数未満の値
        +
        Returns:
        コンテナ数
        +
        Throws:
        +
        GSException - 範囲外のパーティションインデックスが指定された場合
        +
        GSException - この処理のタイムアウト、接続障害が発生した場合、このオブジェクトまたは対応するGridStoreのクローズ後に呼び出された場合
        See Also:
        getPartitionIndexOfContainer(String)
        +
      • +
      + + + +
        +
      • +

        getContainerNames

        +
        java.util.List<java.lang.String> getContainerNames(int partitionIndex,
        +                                                 long start,
        +                                                 java.lang.Long limit)
        +                                                   throws GSException
        +
        指定のパーティションに所属するコンテナの名前の一覧を取得します。 +

        指定のパーティションについてコンテナの新規作成・構成変更・削除が行われたとしても、該当コンテナを除くとその前後で一覧の取得結果の順序が変わることはありません。それ以外の一覧の順序に関しては不定です。重複する名前が含まれることはありません。

        + +

        取得件数の上限が指定された場合、上限を超える場合、後方のものから切り捨てられます。指定条件に該当するものが存在しない場合、空のリストが返却されます。

        + +

        返却されたリストに対して変更操作を行った場合に、 UnsupportedOperationExceptionなどの実行時例外が発生するかどうかは未定義です。

        +
        Parameters:
        partitionIndex - パーティションインデックス。0以上パーティション数未満の値
        start - 取得範囲の開始位置。0以上の値
        limit - 取得件数の上限。nullの場合、上限なしとみなされる
        +
        Returns:
        コンテナの名前を要素とするList
        +
        Throws:
        +
        GSException - 範囲外のパーティションインデックスが指定された場合
        +
        GSException - この処理のタイムアウト、接続障害が発生した場合、このオブジェクトまたは対応するGridStoreのクローズ後に呼び出された場合
        +
      • +
      + + + +
        +
      • +

        getHosts

        +
        java.util.List<java.net.InetAddress> getHosts(int partitionIndex)
        +                                              throws GSException
        +
        指定のパーティションに対応するノードのアドレス一覧を取得します。 +

        一覧の順序に関しては不定です。重複するアドレスが含まれることはありません。

        + +

        返却されたリストに対して変更操作を行った場合に、 UnsupportedOperationExceptionなどの実行時例外が発生するかどうかは未定義です。

        +
        Parameters:
        partitionIndex - パーティションインデックス。0以上パーティション数未満の値
        +
        Returns:
        ノードのアドレスを表すInetAddressを要素とする、List
        +
        Throws:
        +
        GSException - 範囲外のパーティションインデックスが指定された場合
        +
        GSException - この処理のタイムアウト、接続障害が発生した場合、このオブジェクトまたは対応するGridStoreのクローズ後に呼び出された場合
        +
      • +
      + + + +
        +
      • +

        getOwnerHost

        +
        java.net.InetAddress getOwnerHost(int partitionIndex)
        +                                  throws GSException
        +
        指定のパーティションに対応するオーナノードのアドレスを取得します。 +

        オーナノードとは、 GridStoreFactory.getGridStore(java.util.Properties)における一貫性レベルとして"IMMEDIATE"を指定した場合に、常に選択されるノードのことです。

        +
        Parameters:
        partitionIndex - パーティションインデックス。0以上パーティション数未満の値
        +
        Returns:
        オーナノードのアドレスを表すInetAddress
        +
        Throws:
        +
        GSException - 範囲外のパーティションインデックスが指定された場合
        +
        GSException - この処理のタイムアウト、接続障害が発生した場合、このオブジェクトまたは対応するGridStoreのクローズ後に呼び出された場合
        +
      • +
      + + + +
        +
      • +

        getPartitionCount

        +
        int getPartitionCount()
        +                      throws GSException
        +
        対象とするGridDBクラスタのパーティション数を取得します。 +

        対象とするGridDBクラスタにおけるパーティション数設定の値を取得します。一度取得した結果はキャッシュされ、次にクラスタ障害・クラスタノード障害を検知するまで再びGridDBクラスタに問い合わせることはありません。

        +
        Returns:
        パーティション数
        +
        Throws:
        +
        GSException - この処理のタイムアウト、接続障害が発生した場合、このオブジェクトまたは対応するGridStoreのクローズ後に呼び出された場合
        +
      • +
      + + + +
        +
      • +

        getPartitionIndexOfContainer

        +
        int getPartitionIndexOfContainer(java.lang.String containerName)
        +                                 throws GSException
        +
        指定のコンテナ名に対応するパーティションインデックスを取得します。 +

        一度GridDBクラスタが構築されると、コンテナの所属先のパーティションが変化することはなく、パーティションインデックスも一定となります。指定の名前に対応するコンテナが存在するかどうかは、結果に依存しません。

        + +

        パーティションインデックスの算出に必要とする情報はキャッシュされ、次にクラスタ障害・クラスタノード障害を検知するまで再びGridDBクラスタに問い合わせることはありません。

        +
        Parameters:
        containerName - コンテナ名。nullは指定できない
        +
        Returns:
        指定のコンテナ名に対応するパーティションインデックス
        +
        Throws:
        +
        GSException - コンテナ名として許可されない文字列が指定された場合
        +
        GSException - この処理のタイムアウト、接続障害が発生した場合、このオブジェクトまたは対応するGridStoreのクローズ後に呼び出された場合
        +
        java.lang.NullPointerException - 引数にnullが指定された場合
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + +
+
+

Interface Query<R>

+
+
+
+
    +
  • +
    Type Parameters:
    R - 期待される取得結果のRowSet要素の型
    +
    +
    All Superinterfaces:
    +
    java.lang.AutoCloseable, java.io.Closeable
    +
    +
    +
    +
    public interface Query<R>
    +extends java.io.Closeable
    +
    特定のContainerに対応付けられたクエリを保持し、結果取得方法の設定ならびに実行・結果取得を行う機能を持ちます。
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      voidclose() +
      関連するリソースを適宜解放します。
      +
      RowSet<R>fetch() +
      このクエリを実行し、実行結果に対応するロウ集合を取得します。
      +
      RowSet<R>fetch(boolean forUpdate) +
      オプションを指定してこのクエリを実行し、実行結果に対応するロウ集合を取得します。
      +
      RowSet<R>getRowSet() +
      直近に実行した結果のRowSetを取得します。
      +
      voidsetFetchOption(FetchOption option, + java.lang.Object value) +
      結果取得に関するオプションを設定します。
      +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        close

        +
        void close()
        +           throws GSException
        +
        関連するリソースを適宜解放します。
        +
        +
        Specified by:
        +
        close in interface java.lang.AutoCloseable
        +
        Specified by:
        +
        close in interface java.io.Closeable
        +
        Throws:
        +
        GSException - 現バージョンでは送出されない
        See Also:
        Closeable.close()
        +
      • +
      + + + +
        +
      • +

        fetch

        +
        RowSet<R> fetch()
        +                throws GSException
        +
        このクエリを実行し、実行結果に対応するロウ集合を取得します。 +

        更新用ロックを要求せずにfetch(boolean)を呼び出した場合と同様です。

        +
        Throws:
        +
        GSException - 正しくないパラメータ・構文・命令を含むクエリを実行しようとした場合。たとえば、TQLでは、関数の引数に対応しない型のカラムを指定した場合。具体的な制約は、このクエリを作成する機能の各種定義を参照のこと
        +
        GSException - TQLを実行した際、実行結果が期待する結果 RowSetの各要素の型と合致しない場合
        +
        GSException - この処理または関連するトランザクションのタイムアウト、対応するコンテナの削除もしくはスキーマ変更、接続障害が発生した場合
        +
        GSException - このオブジェクトまたは対応するContainerのクローズ後に呼び出された場合
        +
        java.lang.NullPointerException - このクエリを作成する際に与えられたパラメータの中に、許容されないnullが含まれていた場合。GridDB上で実行される TQL文の評価処理の結果として送出されることはない
        See Also:
        fetch(boolean)
        +
      • +
      + + + +
        +
      • +

        fetch

        +
        RowSet<R> fetch(boolean forUpdate)
        +                throws GSException
        +
        オプションを指定してこのクエリを実行し、実行結果に対応するロウ集合を取得します。 +

        forUpdatetrueが指定された場合、取得対象のロウすべてをロックします。ロックすると、対応するトランザクションが有効である間、他のトランザクションからの対象ロウに対する変更操作が阻止されます。対応するコンテナの自動コミットモードが無効の場合のみ、指定できます。

        + +

        新たなロウ集合を取得すると、このクエリについて前回実行した結果の RowSetはクローズされます。

        + +

        一度に大量のロウを取得しようとした場合、GridDBノードが管理する通信バッファのサイズの上限に到達し、失敗することがあります。上限サイズについては、GridDB機能リファレンスを参照してください。

        +
        Throws:
        +
        GSException - 対応するコレクションの自動コミットモード有効であるにもかかわらず、forUpdatetrueが指定された場合
        +
        GSException - ロックできないクエリであるにもかかわらず、 forUpdatetrueが指定された場合。具体的なロックの可否は、このクエリを作成する機能の各種定義を参照のこと
        +
        GSException - 正しくないパラメータ・構文・命令・オプション設定を含むクエリを実行しようとした場合。たとえば、TQLでは、関数の引数に対応しない型のカラムを指定した場合。具体的な制約は、このクエリを作成する機能の各種定義を参照のこと
        +
        GSException - TQLの実行時、求めるRowSetの要素の型と取得結果の型が一致しない場合
        +
        GSException - この処理または関連するトランザクションのタイムアウト、対応するコンテナの削除もしくはスキーマ変更、接続障害が発生した場合
        +
        GSException - このオブジェクトまたは対応するContainerのクローズ後に呼び出された場合
        +
        java.lang.NullPointerException - このクエリを作成する際に与えられたパラメータの中に、許容されないnullが含まれていた場合
        +
      • +
      + + + +
        +
      • +

        getRowSet

        +
        RowSet<R> getRowSet()
        +                    throws GSException
        +
        直近に実行した結果のRowSetを取得します。 +

        一度取得すると、以降新たにこのクエリを実行するまでnullが返却されるようになります。

        + +

        FetchOption.PARTIAL_EXECUTIONが有効に設定されていた場合、クエリ実行処理の続きを行う場合があります。

        +
        Returns:
        直近に実行した結果のRowSet。取得済みの場合、もしくは、一度もクエリを実行したことのない場合はnull
        +
        Throws:
        +
        GSException - この処理または関連するトランザクションのタイムアウト、対応するコンテナの削除もしくはスキーマ変更、接続障害が発生した場合
        +
        GSException - このオブジェクトまたは対応するContainerのクローズ後に呼び出された場合
        Since:
        +
        1.5
        +
      • +
      + + + +
        +
      • +

        setFetchOption

        +
        void setFetchOption(FetchOption option,
        +                  java.lang.Object value)
        +                    throws GSException
        +
        結果取得に関するオプションを設定します。 +

        設定可能なオプション項目と値の定義については、FetchOptionを参照してください。

        +
        Parameters:
        option - オプション項目
        value - オプションの値
        +
        Throws:
        +
        GSException - オプションの値がオプション項目と対応しない場合
        +
        GSException - このオブジェクトまたは対応するContainerのクローズ後に呼び出された場合
        +
        java.lang.NullPointerException - 1つ以上の引数にnullが指定された場合
        See Also:
        FetchOption
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + +
+
+

Class QueryAnalysisEntry

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • com.toshiba.mwcloud.gs.QueryAnalysisEntry
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class QueryAnalysisEntry
    +extends java.lang.Object
    +
    クエリプランならびにクエリ処理解析結果を構成する一連の情報の一つを示します。 +

    TQLのEXPLAIN文ならびEXPLAIN ANALYZE文の実行結果を保持するために使用します。1つの実行結果は、このエントリの列により表現されます。

    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      QueryAnalysisEntry() 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      booleanequals(java.lang.Object obj) +
      このオブジェクトと他のオブジェクトが等しいかどうかを示します。
      +
      intgetDepth() +
      他のエントリとの関係を表すための、深さを取得します。
      +
      intgetId() +
      一連のエントリ列における、このエントリの位置を示すIDを取得します。
      +
      java.lang.StringgetStatement() +
      このエントリが示す情報に対応するTQL文の一部を取得します。
      +
      java.lang.StringgetType() +
      このエントリが示す情報の種別を取得します。
      +
      java.lang.StringgetValue() +
      このエントリが示す情報に対応付けられた値の文字列表現を取得します。
      +
      java.lang.StringgetValueType() +
      このエントリが示す情報に対応付けられた値の型を取得します。
      +
      inthashCode() +
      このオブジェクトのハッシュコード値を返します。
      +
      voidsetDepth(int depth) +
      他のエントリとの関係を表すための、深さを設定します。
      +
      voidsetId(int id) +
      一連のエントリ列における、このエントリの位置を示すIDを設定します。
      +
      voidsetStatement(java.lang.String statement) +
      このエントリが示す情報に対応するTQL文の一部を設定します。
      +
      voidsetType(java.lang.String type) +
      このエントリが示す情報の種別を設定します。
      +
      voidsetValue(java.lang.String value) +
      このエントリが示す情報に対応付けられた値の文字列表現を設定します。
      +
      voidsetValueType(java.lang.String valueType) +
      このエントリが示す情報に対応付けられた値の型を設定します。
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        QueryAnalysisEntry

        +
        public QueryAnalysisEntry()
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        equals

        +
        public boolean equals(java.lang.Object obj)
        +
        このオブジェクトと他のオブジェクトが等しいかどうかを示します。 +

        getId()getDepth()などにより得られる各値がすべて等価である場合のみ、指定のオブジェクトと等価であるとみなされます。

        + +

        このメソッドは、Object.hashCode()にて定義されている汎用規約に準拠します。したがって、等価なオブジェクトは等価なハッシュコードを保持します。

        +
        +
        Overrides:
        +
        equals in class java.lang.Object
        +
        Parameters:
        obj - 比較対象の参照オブジェクトまたはnull
        +
        Returns:
        このオブジェクトがobj引数と同じである場合はtrue、それ以外の場合はfalse
        See Also:
        hashCode()
        +
      • +
      + + + +
        +
      • +

        getDepth

        +
        public int getDepth()
        +
        他のエントリとの関係を表すための、深さを取得します。 +

        このエントリより小さな値のIDを順にたどり、このエントリの深さより1だけ浅いエントリが存在した場合、このエントリは、該当するエントリの内容をより詳しく説明するためのものであることを意味します。

        +
      • +
      + + + +
        +
      • +

        getId

        +
        public int getId()
        +
        一連のエントリ列における、このエントリの位置を示すIDを取得します。 +

        TQLを実行した結果を受け取る場合、IDは1から順に割り当てられます。

        +
      • +
      + + + +
        +
      • +

        getStatement

        +
        public java.lang.String getStatement()
        +
        このエントリが示す情報に対応するTQL文の一部を取得します。 +

        対応関係を持たない場合は空文字列を取得します。

        +
      • +
      + + + +
        +
      • +

        getType

        +
        public java.lang.String getType()
        +
        このエントリが示す情報の種別を取得します。 +

        実行時間といった解析結果の種別、クエリプランの構成要素の種別などを表します。

        +
      • +
      + + + +
        +
      • +

        getValue

        +
        public java.lang.String getValue()
        +
        このエントリが示す情報に対応付けられた値の文字列表現を取得します。 +

        値が対応づけられていない場合は空文字列を取得します。

        +
        See Also:
        getValueType()
        +
      • +
      + + + +
        +
      • +

        getValueType

        +
        public java.lang.String getValueType()
        +
        このエントリが示す情報に対応付けられた値の型を取得します。 +

        実行時間といった解析結果などに対応する値の型を取得します。型の名称は、TQLで定義された基本型のうち次のものです。

        +
          +
        • STRING
        • +
        • BOOL
        • +
        • BYTE
        • +
        • SHORT
        • +
        • INTEGER
        • +
        • LONG
        • +
        • FLOAT
        • +
        • DOUBLE
        • +
        + +

        値が対応づけられていない場合は空文字列を取得します。

        +
      • +
      + + + +
        +
      • +

        hashCode

        +
        public int hashCode()
        +
        このオブジェクトのハッシュコード値を返します。 +

        このメソッドは、Object.hashCode()にて定義されている汎用規約に準拠します。したがって、等価なオブジェクトのハッシュコード値は等価です。

        +
        +
        Overrides:
        +
        hashCode in class java.lang.Object
        +
        Returns:
        このオブジェクトのハッシュコード値
        See Also:
        equals(Object)
        +
      • +
      + + + +
        +
      • +

        setDepth

        +
        public void setDepth(int depth)
        +
        他のエントリとの関係を表すための、深さを設定します。
        +
        See Also:
        getDepth()
        +
      • +
      + + + +
        +
      • +

        setId

        +
        public void setId(int id)
        +
        一連のエントリ列における、このエントリの位置を示すIDを設定します。
        +
        See Also:
        getId()
        +
      • +
      + + + +
        +
      • +

        setStatement

        +
        public void setStatement(java.lang.String statement)
        +
        このエントリが示す情報に対応するTQL文の一部を設定します。
        +
        Parameters:
        statement - TQL文の一部またはnull
        See Also:
        getStatement()
        +
      • +
      + + + +
        +
      • +

        setType

        +
        public void setType(java.lang.String type)
        +
        このエントリが示す情報の種別を設定します。
        +
        Parameters:
        type - 種別またはnull
        See Also:
        getType()
        +
      • +
      + + + +
        +
      • +

        setValue

        +
        public void setValue(java.lang.String value)
        +
        このエントリが示す情報に対応付けられた値の文字列表現を設定します。
        +
        Parameters:
        value - 値の文字列表現またはnull
        See Also:
        getValue()
        +
      • +
      + + + +
        +
      • +

        setValueType

        +
        public void setValueType(java.lang.String valueType)
        +
        このエントリが示す情報に対応付けられた値の型を設定します。
        +
        Parameters:
        valueType - 値の型またはnull
        See Also:
        getValueType()
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + +
+
+

Enum QueryOrder

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • java.lang.Enum<QueryOrder>
    • +
    • +
        +
      • com.toshiba.mwcloud.gs.QueryOrder
      • +
      +
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    java.io.Serializable, java.lang.Comparable<QueryOrder>
    +
    +
    +
    +
    public enum QueryOrder
    +extends java.lang.Enum<QueryOrder>
    +
    クエリにおける要求ロウ順序を表します。 +

    各種クエリ機能別に定義される判定対象を基準として、順序指定を行うために使用します。具体的な判定対象は、個別の機能によって異なります。

    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Enum Constant Summary

      + + + + + + + + + + + +
      Enum Constants 
      Enum Constant and Description
      ASCENDING +
      要求ロウ順序が昇順であることを表します。
      +
      DESCENDING +
      要求ロウ順序が降順であることを表します。
      +
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      static QueryOrdervalueOf(java.lang.String name) +
      Returns the enum constant of this type with the specified name.
      +
      static QueryOrder[]values() +
      Returns an array containing the constants of this enum type, in +the order they are declared.
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Enum

        +clone, compareTo, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf
      • +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +getClass, notify, notifyAll, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Enum Constant Detail

      + + + +
        +
      • +

        ASCENDING

        +
        public static final QueryOrder ASCENDING
        +
        要求ロウ順序が昇順であることを表します。
        +
      • +
      + + + +
        +
      • +

        DESCENDING

        +
        public static final QueryOrder DESCENDING
        +
        要求ロウ順序が降順であることを表します。
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        valueOf

        +
        public static QueryOrder valueOf(java.lang.String name)
        +
        Returns the enum constant of this type with the specified name. +The string must match exactly an identifier used to declare an +enum constant in this type. (Extraneous whitespace characters are +not permitted.)
        +
        Parameters:
        name - the name of the enum constant to be returned.
        +
        Returns:
        the enum constant with the specified name
        +
        Throws:
        +
        java.lang.IllegalArgumentException - if this enum type has no constant +with the specified name
        +
        java.lang.NullPointerException - if the argument is null
        +
      • +
      + + + +
        +
      • +

        values

        +
        public static QueryOrder[] values()
        +
        Returns an array containing the constants of this enum type, in +the order they are declared. This method may be used to iterate +over the constants as follows: +
        +for (QueryOrder c : QueryOrder.values())
        +    System.out.println(c);
        +
        +
        Returns:
        an array containing the constants of this enum type, in +the order they are declared
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + +
+
+

Interface Row.Key

+
+
+
+
    +
  • +
    +
    All Superinterfaces:
    +
    Row
    +
    +
    +
    Enclosing interface:
    +
    Row
    +
    +
    +
    +
    public static interface Row.Key
    +extends Row
    +
    ロウキーに関するカラムのみから構成されるRowの一種です。 +

    Row.getSchema()より返却されるContainerInfoに含まれるカラム情報は、ロウキーに関するカラムの情報のみとなります。

    +
    Since:
    +
    4.3
    +
  • +
+
+ +
+ + + +
+
+

Interface Row.WithKey<K>

+
+
+
+
    +
  • +
    +
    Enclosing interface:
    +
    Row
    +
    +
    +
    +
    public static interface Row.WithKey<K>
    +
    マッピングに用いるロウオブジェクトの型について、常に指定のロウキー型と対応付くことを表します。 +

    このインタフェースを実装するロウオブジェクトの型を指定して、 Container.BindType.of(Class)を通じ型情報を求めると、 Containerインスタンスを生成する際にロウキーの型を明示する必要がなくなります。

    +
    Since:
    +
    4.3
    +
  • +
+
+
+ + + +
+
+

Interface Row

+
+
+
+
    +
  • +
    +
    All Known Subinterfaces:
    +
    Row.Key
    +
    +
    +
    +
    public interface Row
    +
    任意のスキーマについて汎用的にフィールド操作できるロウです。
    +
    Since:
    +
    1.5
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Nested Class Summary

      + + + + + + + + + + + + + + +
      Nested Classes 
      Modifier and TypeInterface and Description
      static interface Row.Key +
      ロウキーに関するカラムのみから構成されるRowの一種です。
      +
      static interface Row.WithKey<K> +
      マッピングに用いるロウオブジェクトの型について、常に指定のロウキー型と対応付くことを表します。
      +
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      Row.KeycreateKey() +
      ロウキーを構成するカラムのみを持ち、それらのカラムについて同一のフィールド値からなる新たなRow.Keyインスタンスを作成します。
      +
      RowcreateRow() +
      同一のフィールド値からなる新たなRowインスタンスを作成します。
      +
      java.sql.BlobgetBlob(int column) +
      指定のBLOB型フィールドの値を取得します。
      +
      booleangetBool(int column) +
      指定のBOOL型フィールドの値を取得します。
      +
      boolean[]getBoolArray(int column) +
      指定のBOOL型配列フィールドの値を取得します。
      +
      bytegetByte(int column) +
      指定のBYTE型フィールドの値を取得します。
      +
      byte[]getByteArray(int column) +
      指定のBYTE型配列フィールドの値を取得します。
      +
      doublegetDouble(int column) +
      指定のDOUBLE型フィールドの値を取得します。
      +
      double[]getDoubleArray(int column) +
      指定のDOUBLE型配列フィールドの値を取得します。
      +
      floatgetFloat(int column) +
      指定のFLOAT型フィールドの値を取得します。
      +
      float[]getFloatArray(int column) +
      指定のFLOAT型配列フィールドの値を取得します。
      +
      GeometrygetGeometry(int column) +
      指定のGEOMETRY型フィールドの値を取得します。
      +
      intgetInteger(int column) +
      指定のINTEGER型フィールドの値を取得します。
      +
      int[]getIntegerArray(int column) +
      指定のINTEGER型配列フィールドの値を取得します。
      +
      longgetLong(int column) +
      指定のLONG型フィールドの値を取得します。
      +
      long[]getLongArray(int column) +
      指定のLONG型配列フィールドの値を取得します。
      +
      java.sql.TimestampgetPreciseTimestamp(int column) +
      指定の高精度のTIMESTAMP型フィールドの値を取得します。
      +
      ContainerInfogetSchema() +
      このロウに対応するスキーマを取得します。
      +
      shortgetShort(int column) +
      指定のSHORT型フィールドの値を取得します。
      +
      short[]getShortArray(int column) +
      指定のSHORT型配列フィールドの値を取得します。
      +
      java.lang.StringgetString(int column) +
      指定のSTRING型フィールドの値を取得します。
      +
      java.lang.String[]getStringArray(int column) +
      指定のSTRING型配列フィールドの値を取得します。
      +
      java.util.DategetTimestamp(int column) +
      指定の通常精度のTIMESTAMP型フィールドの値を取得します。
      +
      java.util.Date[]getTimestampArray(int column) +
      指定のTIMESTAMP型配列フィールドの値を取得します。
      +
      java.lang.ObjectgetValue(int column) +
      指定のフィールドの値を取得します。
      +
      booleanisNull(int column) +
      指定のフィールドにNULLが設定されているかどうかを返します。
      +
      voidsetBlob(int column, + java.sql.Blob fieldValue) +
      指定のBLOB型フィールドに値を設定します。
      +
      voidsetBool(int column, + boolean fieldValue) +
      指定のBOOL型フィールドに値を設定します。
      +
      voidsetBoolArray(int column, + boolean[] fieldValue) +
      指定のBOOL型配列フィールドに値を設定します。
      +
      voidsetByte(int column, + byte fieldValue) +
      指定のBYTE型フィールドに値を設定します。
      +
      voidsetByteArray(int column, + byte[] fieldValue) +
      指定のBYTE型配列フィールドに値を設定します。
      +
      voidsetDouble(int column, + double fieldValue) +
      指定のDOUBLE型フィールドに値を設定します。
      +
      voidsetDoubleArray(int column, + double[] fieldValue) +
      指定のDOUBLE型配列フィールドに値を設定します。
      +
      voidsetFloat(int column, + float fieldValue) +
      指定のFLOAT型フィールドに値を設定します。
      +
      voidsetFloatArray(int column, + float[] fieldValue) +
      指定のFLOAT型配列フィールドに値を設定します。
      +
      voidsetGeometry(int column, + Geometry fieldValue) +
      指定のGEOMETRY型フィールドに値を設定します。
      +
      voidsetInteger(int column, + int fieldValue) +
      指定のINTEGER型フィールドに値を設定します。
      +
      voidsetIntegerArray(int column, + int[] fieldValue) +
      指定のINTEGER型配列フィールドに値を設定します。
      +
      voidsetLong(int column, + long fieldValue) +
      指定のLONG型フィールドに値を設定します。
      +
      voidsetLongArray(int column, + long[] fieldValue) +
      指定のLONG型配列フィールドに値を設定します。
      +
      voidsetNull(int column) +
      指定のフィールドにNULLを設定します。
      +
      voidsetPreciseTimestamp(int column, + java.sql.Timestamp fieldValue) +
      指定の高精度のTIMESTAMP型フィールドに値を設定します。
      +
      voidsetShort(int column, + short fieldValue) +
      指定のSHORT型フィールドに値を設定します。
      +
      voidsetShortArray(int column, + short[] fieldValue) +
      指定のSHORT型配列フィールドに値を設定します。
      +
      voidsetString(int column, + java.lang.String fieldValue) +
      指定のSTRING型フィールドに値を設定します。
      +
      voidsetStringArray(int column, + java.lang.String[] fieldValue) +
      指定のSTRING型配列フィールドに値を設定します。
      +
      voidsetTimestamp(int column, + java.util.Date fieldValue) +
      指定の通常精度のTIMESTAMP型フィールドに値を設定します。
      +
      voidsetTimestampArray(int column, + java.util.Date[] fieldValue) +
      指定のTIMESTAMP型配列フィールドに値を設定します。
      +
      voidsetValue(int column, + java.lang.Object fieldValue) +
      指定のフィールドに値を設定します。
      +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        createKey

        +
        Row.Key createKey()
        +                  throws GSException
        +
        ロウキーを構成するカラムのみを持ち、それらのカラムについて同一のフィールド値からなる新たなRow.Keyインスタンスを作成します。
        +
        Returns:
        作成されたRow.Key
        +
        Throws:
        +
        GSException - ロウキーを持たない場合
        Since:
        +
        4.3
        +
      • +
      + + + +
        +
      • +

        createRow

        +
        Row createRow()
        +              throws GSException
        +
        同一のフィールド値からなる新たなRowインスタンスを作成します。
        +
        Returns:
        作成されたRow
        +
        Throws:
        +
        GSException - 現バージョンでは送出されない
        Since:
        +
        4.3
        +
      • +
      + + + +
        +
      • +

        getBlob

        +
        java.sql.Blob getBlob(int column)
        +                      throws GSException
        +
        指定のBLOB型フィールドの値を取得します。 +

        返却されたオブジェクトの内容を呼び出し後に変更したとしても、このオブジェクトの内容は変化しません。また、このオブジェクトに対する操作により、返却されたオブジェクトの内容が変化することはありません。

        +
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        +
        Returns:
        対象フィールドの値。NULLが設定されている場合はnull
        +
        Throws:
        +
        GSException - 範囲外のカラム番号が指定された場合
        +
        GSException - 指定のカラム番号の型と一致しない場合
        +
      • +
      + + + +
        +
      • +

        getBool

        +
        boolean getBool(int column)
        +                throws GSException
        +
        指定のBOOL型フィールドの値を取得します。
        +
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        +
        Returns:
        対象フィールドの値。NULLが設定されている場合は空の値
        +
        Throws:
        +
        GSException - 範囲外のカラム番号が指定された場合
        +
        GSException - 指定のカラム番号の型と一致しない場合
        +
      • +
      + + + +
        +
      • +

        getBoolArray

        +
        boolean[] getBoolArray(int column)
        +                       throws GSException
        +
        指定のBOOL型配列フィールドの値を取得します。 +

        返却されたオブジェクトの内容を呼び出し後に変更したとしても、このオブジェクトの内容は変化しません。また、このオブジェクトに対する操作により、返却されたオブジェクトの内容が変化することはありません。

        +
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        +
        Returns:
        対象フィールドの値。NULLが設定されている場合はnull
        +
        Throws:
        +
        GSException - 範囲外のカラム番号が指定された場合
        +
        GSException - 指定のカラム番号の型と一致しない場合
        +
      • +
      + + + +
        +
      • +

        getByte

        +
        byte getByte(int column)
        +             throws GSException
        +
        指定のBYTE型フィールドの値を取得します。
        +
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        +
        Returns:
        対象フィールドの値。NULLが設定されている場合は空の値
        +
        Throws:
        +
        GSException - 範囲外のカラム番号が指定された場合
        +
        GSException - 指定のカラム番号の型と一致しない場合
        +
      • +
      + + + +
        +
      • +

        getByteArray

        +
        byte[] getByteArray(int column)
        +                    throws GSException
        +
        指定のBYTE型配列フィールドの値を取得します。 +

        返却されたオブジェクトの内容を呼び出し後に変更したとしても、このオブジェクトの内容は変化しません。また、このオブジェクトに対する操作により、返却されたオブジェクトの内容が変化することはありません。

        +
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        +
        Returns:
        対象フィールドの値。NULLが設定されている場合はnull
        +
        Throws:
        +
        GSException - 範囲外のカラム番号が指定された場合
        +
        GSException - 指定のカラム番号の型と一致しない場合
        +
      • +
      + + + +
        +
      • +

        getDouble

        +
        double getDouble(int column)
        +                 throws GSException
        +
        指定のDOUBLE型フィールドの値を取得します。
        +
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        +
        Returns:
        対象フィールドの値。NULLが設定されている場合は空の値
        +
        Throws:
        +
        GSException - 範囲外のカラム番号が指定された場合
        +
        GSException - 指定のカラム番号の型と一致しない場合
        +
      • +
      + + + +
        +
      • +

        getDoubleArray

        +
        double[] getDoubleArray(int column)
        +                        throws GSException
        +
        指定のDOUBLE型配列フィールドの値を取得します。 +

        返却されたオブジェクトの内容を呼び出し後に変更したとしても、このオブジェクトの内容は変化しません。また、このオブジェクトに対する操作により、返却されたオブジェクトの内容が変化することはありません。

        +
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        +
        Returns:
        対象フィールドの値。NULLが設定されている場合はnull
        +
        Throws:
        +
        GSException - 範囲外のカラム番号が指定された場合
        +
        GSException - 指定のカラム番号の型と一致しない場合
        +
      • +
      + + + +
        +
      • +

        getFloat

        +
        float getFloat(int column)
        +               throws GSException
        +
        指定のFLOAT型フィールドの値を取得します。
        +
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        +
        Returns:
        対象フィールドの値。NULLが設定されている場合は空の値
        +
        Throws:
        +
        GSException - 範囲外のカラム番号が指定された場合
        +
        GSException - 指定のカラム番号の型と一致しない場合
        +
      • +
      + + + +
        +
      • +

        getFloatArray

        +
        float[] getFloatArray(int column)
        +                      throws GSException
        +
        指定のFLOAT型配列フィールドの値を取得します。 +

        返却されたオブジェクトの内容を呼び出し後に変更したとしても、このオブジェクトの内容は変化しません。また、このオブジェクトに対する操作により、返却されたオブジェクトの内容が変化することはありません。

        +
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        +
        Returns:
        対象フィールドの値。NULLが設定されている場合はnull
        +
        Throws:
        +
        GSException - 範囲外のカラム番号が指定された場合
        +
        GSException - 指定のカラム番号の型と一致しない場合
        +
      • +
      + + + +
        +
      • +

        getGeometry

        +
        Geometry getGeometry(int column)
        +                     throws GSException
        +
        指定のGEOMETRY型フィールドの値を取得します。
        +
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        +
        Returns:
        対象フィールドの値。NULLが設定されている場合はnull
        +
        Throws:
        +
        GSException - 範囲外のカラム番号が指定された場合
        +
        GSException - 指定のカラム番号の型と一致しない場合
        +
      • +
      + + + +
        +
      • +

        getInteger

        +
        int getInteger(int column)
        +               throws GSException
        +
        指定のINTEGER型フィールドの値を取得します。
        +
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        +
        Returns:
        対象フィールドの値。NULLが設定されている場合は空の値
        +
        Throws:
        +
        GSException - 範囲外のカラム番号が指定された場合
        +
        GSException - 指定のカラム番号の型と一致しない場合
        +
      • +
      + + + +
        +
      • +

        getIntegerArray

        +
        int[] getIntegerArray(int column)
        +                      throws GSException
        +
        指定のINTEGER型配列フィールドの値を取得します。 +

        返却されたオブジェクトの内容を呼び出し後に変更したとしても、このオブジェクトの内容は変化しません。また、このオブジェクトに対する操作により、返却されたオブジェクトの内容が変化することはありません。

        +
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        +
        Returns:
        対象フィールドの値。NULLが設定されている場合はnull
        +
        Throws:
        +
        GSException - 範囲外のカラム番号が指定された場合
        +
        GSException - 指定のカラム番号の型と一致しない場合
        +
      • +
      + + + +
        +
      • +

        getLong

        +
        long getLong(int column)
        +             throws GSException
        +
        指定のLONG型フィールドの値を取得します。
        +
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        +
        Returns:
        対象フィールドの値。NULLが設定されている場合は空の値
        +
        Throws:
        +
        GSException - 範囲外のカラム番号が指定された場合
        +
        GSException - 指定のカラム番号の型と一致しない場合
        +
      • +
      + + + +
        +
      • +

        getLongArray

        +
        long[] getLongArray(int column)
        +                    throws GSException
        +
        指定のLONG型配列フィールドの値を取得します。 +

        返却されたオブジェクトの内容を呼び出し後に変更したとしても、このオブジェクトの内容は変化しません。また、このオブジェクトに対する操作により、返却されたオブジェクトの内容が変化することはありません。

        +
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        +
        Returns:
        対象フィールドの値。NULLが設定されている場合はnull
        +
        Throws:
        +
        GSException - 範囲外のカラム番号が指定された場合
        +
        GSException - 指定のカラム番号の型と一致しない場合
        +
      • +
      + + + +
        +
      • +

        getPreciseTimestamp

        +
        java.sql.Timestamp getPreciseTimestamp(int column)
        +                                       throws GSException
        +
        指定の高精度のTIMESTAMP型フィールドの値を取得します。 +

        返却されたオブジェクトの内容を呼び出し後に変更した場合に、このオブジェクトの内容が変化するかどうかは未定義です。また、このオブジェクトに対する操作により、返却されたオブジェクトの内容が変化することはありません。

        + +

        現バージョンでは、通常精度のTIMESTAMP型フィールドから値を取得することはできません。

        +
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        +
        Returns:
        対象フィールドの値。NULLが設定されている場合はnull
        +
        Throws:
        +
        GSException - 範囲外のカラム番号が指定された場合
        +
        GSException - 指定のカラム番号の型・精度種別と一致しない場合
        Since:
        +
        5.3
        +
      • +
      + + + +
        +
      • +

        getSchema

        +
        ContainerInfo getSchema()
        +                        throws GSException
        +
        このロウに対応するスキーマを取得します。 +

        ロウキーの有無を含むカラムレイアウトにする情報のみが設定された ContainerInfoが求まります。コンテナ名、コンテナ種別、索引設定、時系列構成オプションなどその他のコンテナ情報は含まれません。

        +
        Returns:
        スキーマに関するコンテナ情報のみを持つContainerInfo
        +
        Throws:
        +
        GSException - 現バージョンでは送出されない
        +
      • +
      + + + +
        +
      • +

        getShort

        +
        short getShort(int column)
        +               throws GSException
        +
        指定のSHORT型フィールドの値を取得します。
        +
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        +
        Returns:
        対象フィールドの値。NULLが設定されている場合は空の値
        +
        Throws:
        +
        GSException - 範囲外のカラム番号が指定された場合
        +
        GSException - 指定のカラム番号の型と一致しない場合
        +
      • +
      + + + +
        +
      • +

        getShortArray

        +
        short[] getShortArray(int column)
        +                      throws GSException
        +
        指定のSHORT型配列フィールドの値を取得します。 +

        返却されたオブジェクトの内容を呼び出し後に変更したとしても、このオブジェクトの内容は変化しません。また、このオブジェクトに対する操作により、返却されたオブジェクトの内容が変化することはありません。

        +
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        +
        Returns:
        対象フィールドの値。NULLが設定されている場合はnull
        +
        Throws:
        +
        GSException - 範囲外のカラム番号が指定された場合
        +
        GSException - 指定のカラム番号の型と一致しない場合
        +
      • +
      + + + +
        +
      • +

        getString

        +
        java.lang.String getString(int column)
        +                           throws GSException
        +
        指定のSTRING型フィールドの値を取得します。
        +
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        +
        Returns:
        対象フィールドの値。NULLが設定されている場合はnull
        +
        Throws:
        +
        GSException - 範囲外のカラム番号が指定された場合
        +
        GSException - 指定のカラム番号の型と一致しない場合
        +
      • +
      + + + +
        +
      • +

        getStringArray

        +
        java.lang.String[] getStringArray(int column)
        +                                  throws GSException
        +
        指定のSTRING型配列フィールドの値を取得します。 +

        返却されたオブジェクトの内容を呼び出し後に変更したとしても、このオブジェクトの内容は変化しません。また、このオブジェクトに対する操作により、返却されたオブジェクトの内容が変化することはありません。

        +
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        +
        Returns:
        対象フィールドの値。NULLが設定されている場合はnull
        +
        Throws:
        +
        GSException - 範囲外のカラム番号が指定された場合
        +
        GSException - 指定のカラム番号の型と一致しない場合
        +
      • +
      + + + +
        +
      • +

        getTimestamp

        +
        java.util.Date getTimestamp(int column)
        +                            throws GSException
        +
        指定の通常精度のTIMESTAMP型フィールドの値を取得します。 +

        返却されたオブジェクトの内容を呼び出し後に変更した場合に、このオブジェクトの内容が変化するかどうかは未定義です。また、このオブジェクトに対する操作により、返却されたオブジェクトの内容が変化することはありません。

        + +

        現バージョンでは、高精度のTIMESTAMP型フィールドから値を取得することはできません。

        +
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        +
        Returns:
        対象フィールドの値。NULLが設定されている場合はnull
        +
        Throws:
        +
        GSException - 範囲外のカラム番号が指定された場合
        +
        GSException - 指定のカラム番号の型・精度種別と一致しない場合
        +
      • +
      + + + +
        +
      • +

        getTimestampArray

        +
        java.util.Date[] getTimestampArray(int column)
        +                                   throws GSException
        +
        指定のTIMESTAMP型配列フィールドの値を取得します。 +

        返却されたオブジェクトの内容を呼び出し後に変更した場合に、このオブジェクトの内容が変化するかどうかは未定義です。一方、このオブジェクトに対する操作により、返却されたオブジェクトの内容が変化することはありません。

        +
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        +
        Returns:
        対象フィールドの値。NULLが設定されている場合はnull
        +
        Throws:
        +
        GSException - 範囲外のカラム番号が指定された場合
        +
        GSException - 指定のカラム番号の型と一致しない場合
        +
      • +
      + + + +
        +
      • +

        getValue

        +
        java.lang.Object getValue(int column)
        +                          throws GSException
        +
        指定のフィールドの値を取得します。
        +
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        +
        Returns:
        対象フィールドの値。NULLが設定されている場合はnull
        +
        Throws:
        +
        GSException - 範囲外のカラム番号が指定された場合
        +
      • +
      + + + +
        +
      • +

        isNull

        +
        boolean isNull(int column)
        +               throws GSException
        +
        指定のフィールドにNULLが設定されているかどうかを返します。 +

        NOT NULL制約の設定されたカラムが指定された場合、常にfalseを返します。

        +
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        +
        Returns:
        指定のフィールドにNULLが設定されているかどうか
        +
        Throws:
        +
        GSException - 範囲外のカラム番号が指定された場合
        Since:
        +
        3.5
        +
      • +
      + + + +
        +
      • +

        setBlob

        +
        void setBlob(int column,
        +           java.sql.Blob fieldValue)
        +             throws GSException
        +
        指定のBLOB型フィールドに値を設定します。 +

        指定したオブジェクトの内容を呼び出し後に変更したとしても、このオブジェクトの内容は変化しません。

        +
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        fieldValue - 対象フィールドの値
        +
        Throws:
        +
        GSException - 範囲外のカラム番号が指定された場合
        +
        GSException - NOT NULL制約の設定されたカラムに対して、フィールド値としてnullが指定された場合
        +
        GSException - 指定のカラム番号の型と一致しない場合
        +
      • +
      + + + +
        +
      • +

        setBool

        +
        void setBool(int column,
        +           boolean fieldValue)
        +             throws GSException
        +
        指定のBOOL型フィールドに値を設定します。
        +
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        fieldValue - 対象フィールドの値
        +
        Throws:
        +
        GSException - 範囲外のカラム番号が指定された場合
        +
        GSException - 指定のカラム番号の型と一致しない場合
        +
      • +
      + + + +
        +
      • +

        setBoolArray

        +
        void setBoolArray(int column,
        +                boolean[] fieldValue)
        +                  throws GSException
        +
        指定のBOOL型配列フィールドに値を設定します。 +

        指定したオブジェクトの内容を呼び出し後に変更したとしても、このオブジェクトの内容は変化しません。

        +
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        fieldValue - 対象フィールドの値
        +
        Throws:
        +
        GSException - 範囲外のカラム番号が指定された場合
        +
        GSException - NOT NULL制約の設定されたカラムに対して、フィールド値としてnullが指定された場合
        +
        GSException - 指定のカラム番号の型と一致しない場合
        +
      • +
      + + + +
        +
      • +

        setByte

        +
        void setByte(int column,
        +           byte fieldValue)
        +             throws GSException
        +
        指定のBYTE型フィールドに値を設定します。
        +
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        fieldValue - 対象フィールドの値
        +
        Throws:
        +
        GSException - 範囲外のカラム番号が指定された場合
        +
        GSException - 指定のカラム番号の型と一致しない場合
        +
      • +
      + + + +
        +
      • +

        setByteArray

        +
        void setByteArray(int column,
        +                byte[] fieldValue)
        +                  throws GSException
        +
        指定のBYTE型配列フィールドに値を設定します。 +

        指定したオブジェクトの内容を呼び出し後に変更したとしても、このオブジェクトの内容は変化しません。

        +
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        fieldValue - 対象フィールドの値
        +
        Throws:
        +
        GSException - 範囲外のカラム番号が指定された場合
        +
        GSException - NOT NULL制約の設定されたカラムに対して、フィールド値としてnullが指定された場合
        +
        GSException - 指定のカラム番号の型と一致しない場合
        +
      • +
      + + + +
        +
      • +

        setDouble

        +
        void setDouble(int column,
        +             double fieldValue)
        +               throws GSException
        +
        指定のDOUBLE型フィールドに値を設定します。
        +
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        fieldValue - 対象フィールドの値
        +
        Throws:
        +
        GSException - 範囲外のカラム番号が指定された場合
        +
        GSException - 指定のカラム番号の型と一致しない場合
        +
      • +
      + + + +
        +
      • +

        setDoubleArray

        +
        void setDoubleArray(int column,
        +                  double[] fieldValue)
        +                    throws GSException
        +
        指定のDOUBLE型配列フィールドに値を設定します。 +

        指定したオブジェクトの内容を呼び出し後に変更したとしても、このオブジェクトの内容は変化しません。

        +
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        fieldValue - 対象フィールドの値
        +
        Throws:
        +
        GSException - 範囲外のカラム番号が指定された場合
        +
        GSException - NOT NULL制約の設定されたカラムに対して、フィールド値としてnullが指定された場合
        +
        GSException - 指定のカラム番号の型と一致しない場合
        +
      • +
      + + + +
        +
      • +

        setFloat

        +
        void setFloat(int column,
        +            float fieldValue)
        +              throws GSException
        +
        指定のFLOAT型フィールドに値を設定します。
        +
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        fieldValue - 対象フィールドの値
        +
        Throws:
        +
        GSException - 範囲外のカラム番号が指定された場合
        +
        GSException - 指定のカラム番号の型と一致しない場合
        +
      • +
      + + + +
        +
      • +

        setFloatArray

        +
        void setFloatArray(int column,
        +                 float[] fieldValue)
        +                   throws GSException
        +
        指定のFLOAT型配列フィールドに値を設定します。 +

        指定したオブジェクトの内容を呼び出し後に変更したとしても、このオブジェクトの内容は変化しません。

        +
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        fieldValue - 対象フィールドの値
        +
        Throws:
        +
        GSException - 範囲外のカラム番号が指定された場合
        +
        GSException - NOT NULL制約の設定されたカラムに対して、フィールド値としてnullが指定された場合
        +
        GSException - 指定のカラム番号の型と一致しない場合
        +
      • +
      + + + +
        +
      • +

        setGeometry

        +
        void setGeometry(int column,
        +               Geometry fieldValue)
        +                 throws GSException
        +
        指定のGEOMETRY型フィールドに値を設定します。
        +
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        fieldValue - 対象フィールドの値
        +
        Throws:
        +
        GSException - 範囲外のカラム番号が指定された場合
        +
        GSException - NOT NULL制約の設定されたカラムに対して、フィールド値としてnullが指定された場合
        +
        GSException - 指定のカラム番号の型と一致しない場合
        +
      • +
      + + + +
        +
      • +

        setInteger

        +
        void setInteger(int column,
        +              int fieldValue)
        +                throws GSException
        +
        指定のINTEGER型フィールドに値を設定します。
        +
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        fieldValue - 対象フィールドの値
        +
        Throws:
        +
        GSException - 範囲外のカラム番号が指定された場合
        +
        GSException - 指定のカラム番号の型と一致しない場合
        +
      • +
      + + + +
        +
      • +

        setIntegerArray

        +
        void setIntegerArray(int column,
        +                   int[] fieldValue)
        +                     throws GSException
        +
        指定のINTEGER型配列フィールドに値を設定します。 +

        指定したオブジェクトの内容を呼び出し後に変更したとしても、このオブジェクトの内容は変化しません。

        +
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        fieldValue - 対象フィールドの値
        +
        Throws:
        +
        GSException - 範囲外のカラム番号が指定された場合
        +
        GSException - NOT NULL制約の設定されたカラムに対して、フィールド値としてnullが指定された場合
        +
        GSException - 指定のカラム番号の型と一致しない場合
        +
      • +
      + + + +
        +
      • +

        setLong

        +
        void setLong(int column,
        +           long fieldValue)
        +             throws GSException
        +
        指定のLONG型フィールドに値を設定します。
        +
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        fieldValue - 対象フィールドの値
        +
        Throws:
        +
        GSException - 範囲外のカラム番号が指定された場合
        +
        GSException - 指定のカラム番号の型と一致しない場合
        +
      • +
      + + + +
        +
      • +

        setLongArray

        +
        void setLongArray(int column,
        +                long[] fieldValue)
        +                  throws GSException
        +
        指定のLONG型配列フィールドに値を設定します。 +

        指定したオブジェクトの内容を呼び出し後に変更したとしても、このオブジェクトの内容は変化しません。

        +
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        fieldValue - 対象フィールドの値
        +
        Throws:
        +
        GSException - 範囲外のカラム番号が指定された場合
        +
        GSException - NOT NULL制約の設定されたカラムに対して、フィールド値としてnullが指定された場合
        +
        GSException - 指定のカラム番号の型と一致しない場合
        +
      • +
      + + + +
        +
      • +

        setNull

        +
        void setNull(int column)
        +             throws GSException
        +
        指定のフィールドにNULLを設定します。
        +
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        +
        Throws:
        +
        GSException - 範囲外のカラム番号が指定された場合
        +
        GSException - NOT NULL制約の設定されたカラムが指定された場合
        Since:
        +
        3.5
        +
      • +
      + + + +
        +
      • +

        setPreciseTimestamp

        +
        void setPreciseTimestamp(int column,
        +                       java.sql.Timestamp fieldValue)
        +                         throws GSException
        +
        指定の高精度のTIMESTAMP型フィールドに値を設定します。 +

        指定したオブジェクトの内容を呼び出し後に変更した場合に、このオブジェクトの内容が変化するかどうかは未定義です。

        + +

        現バージョンでは、通常精度のTIMESTAMP型フィールドに値を設定することはできません。

        +
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        fieldValue - 対象フィールドの値
        +
        Throws:
        +
        GSException - 範囲外のカラム番号が指定された場合
        +
        GSException - NOT NULL制約の設定されたカラムに対して、フィールド値としてnullが指定された場合
        +
        GSException - 指定のカラム番号の型・精度種別と一致しない場合
        Since:
        +
        5.3
        +
      • +
      + + + +
        +
      • +

        setShort

        +
        void setShort(int column,
        +            short fieldValue)
        +              throws GSException
        +
        指定のSHORT型フィールドに値を設定します。
        +
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        fieldValue - 対象フィールドの値
        +
        Throws:
        +
        GSException - 範囲外のカラム番号が指定された場合
        +
        GSException - 指定のカラム番号の型と一致しない場合
        +
      • +
      + + + +
        +
      • +

        setShortArray

        +
        void setShortArray(int column,
        +                 short[] fieldValue)
        +                   throws GSException
        +
        指定のSHORT型配列フィールドに値を設定します。 +

        指定したオブジェクトの内容を呼び出し後に変更したとしても、このオブジェクトの内容は変化しません。

        +
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        fieldValue - 対象フィールドの値
        +
        Throws:
        +
        GSException - 範囲外のカラム番号が指定された場合
        +
        GSException - NOT NULL制約の設定されたカラムに対して、フィールド値としてnullが指定された場合
        +
        GSException - 指定のカラム番号の型と一致しない場合
        +
      • +
      + + + +
        +
      • +

        setString

        +
        void setString(int column,
        +             java.lang.String fieldValue)
        +               throws GSException
        +
        指定のSTRING型フィールドに値を設定します。
        +
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        fieldValue - 対象フィールドの値
        +
        Throws:
        +
        GSException - 範囲外のカラム番号が指定された場合
        +
        GSException - NOT NULL制約の設定されたカラムに対して、フィールド値としてnullが指定された場合
        +
        GSException - 指定のカラム番号の型と一致しない場合
        +
      • +
      + + + +
        +
      • +

        setStringArray

        +
        void setStringArray(int column,
        +                  java.lang.String[] fieldValue)
        +                    throws GSException
        +
        指定のSTRING型配列フィールドに値を設定します。 +

        指定したオブジェクトの内容を呼び出し後に変更したとしても、このオブジェクトの内容は変化しません。

        +
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        fieldValue - 対象フィールドの値
        +
        Throws:
        +
        GSException - 範囲外のカラム番号が指定された場合
        +
        GSException - NOT NULL制約の設定されたカラムに対して、フィールド値としてnullが指定された場合
        +
        GSException - フィールド値の配列要素にnullが含まれる場合
        +
        GSException - 指定のカラム番号の型と一致しない場合
        +
      • +
      + + + +
        +
      • +

        setTimestamp

        +
        void setTimestamp(int column,
        +                java.util.Date fieldValue)
        +                  throws GSException
        +
        指定の通常精度のTIMESTAMP型フィールドに値を設定します。 +

        指定したオブジェクトの内容を呼び出し後に変更した場合に、このオブジェクトの内容が変化するかどうかは未定義です。

        + +

        現バージョンでは、高精度のTIMESTAMP型フィールドに値を設定することはできません。

        +
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        fieldValue - 対象フィールドの値
        +
        Throws:
        +
        GSException - 範囲外のカラム番号が指定された場合
        +
        GSException - NOT NULL制約の設定されたカラムに対して、フィールド値としてnullが指定された場合
        +
        GSException - 指定のカラム番号の型・精度種別と一致しない場合
        +
      • +
      + + + +
        +
      • +

        setTimestampArray

        +
        void setTimestampArray(int column,
        +                     java.util.Date[] fieldValue)
        +                       throws GSException
        +
        指定のTIMESTAMP型配列フィールドに値を設定します。 +

        指定したオブジェクトの内容を呼び出し後に変更した場合に、このオブジェクトの内容が変化するかどうかは未定義です。

        +
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        fieldValue - 対象フィールドの値
        +
        Throws:
        +
        GSException - 範囲外のカラム番号が指定された場合
        +
        GSException - NOT NULL制約の設定されたカラムに対して、フィールド値としてnullが指定された場合
        +
        GSException - フィールド値の配列要素にnullが含まれる場合
        +
        GSException - 指定のカラム番号の型と一致しない場合
        +
      • +
      + + + +
        +
      • +

        setValue

        +
        void setValue(int column,
        +            java.lang.Object fieldValue)
        +              throws GSException
        +
        指定のフィールドに値を設定します。
        +
        Parameters:
        column - 対象フィールドのカラム番号。0以上かつカラム数未満の値
        fieldValue - 対象フィールドの値
        +
        Throws:
        +
        GSException - 範囲外のカラム番号が指定された場合
        +
        GSException - NOT NULL制約の設定されたカラムに対して、フィールド値としてnullが指定された場合
        +
        GSException - 配列型のフィールド値の配列要素にnullが含まれる場合
        +
        GSException - フィールドの値がカラムの型と一致しない場合
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + +
+
+

Annotation Type RowField

+
+
+
+
    +
  • +
    +
    +
    @Retention(value=RUNTIME)
    +@Target(value={FIELD,METHOD})
    +public @interface RowField
    +
    Containerの処理におけるマッピング対象のロウフィールドについて、オプションを設定します。 +

    複合ロウキーを構成する各ロウフィールドに対しても、使用できます。複合ロウキーの場合、複合ロウキー全体を一つのオブジェクトとして設定・取得するためのフィールド・メソッドに対しては、使用できません。

    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Optional Element Summary

      + + + + + + + + + + + + + + +
      Optional Elements 
      Modifier and TypeOptional Element and Description
      intcolumnNumber +
      カラム番号を設定します。
      +
      java.lang.Stringname +
      指定のカラム名を使用します。
      +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Element Detail

      + + + +
        +
      • +

        columnNumber

        +
        public abstract int columnNumber
        +
        カラム番号を設定します。 +

        カラム順序を明示的に指定する場合、0以上かつカラム数未満の値を指定します。同一コンテナ上で重複するカラム番号を指定することはできません。また、現バージョンでは、ロウキーは常に先頭カラムになるように設定しなければなりません。デフォルト値の-1を指定した場合、対応するカラムの番号は自動的に決定されます。

        + +

        複合ロウキーを含むロウオブジェクトのうち、ロウキー以外のロウフィールドに対して番号を設定する場合、複合ロウキーを構成する個々のカラムに割り当てられる番号と重複しないようにする必要があります。

        +
        +
        Default:
        +
        -1
        +
        +
      • +
      + + + +
        +
      • +

        name

        +
        public abstract java.lang.String name
        +
        指定のカラム名を使用します。 +

        空の文字を指定した場合、対応するフィールド名またはメソッド名に基づきカラム名を決定します。

        +
        +
        Default:
        +
        ""
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + +
+
+

Annotation Type RowKey

+
+
+
+
    +
  • +
    +
    +
    @Retention(value=RUNTIME)
    +@Target(value={FIELD,METHOD})
    +public @interface RowKey
    +
    Containerのキーと対応することを示します。 +

    複合ロウキーの場合、複合ロウキー全体を一つのオブジェクトとして設定・取得するためのフィールド・メソッドに対して使用します。複合ロウキーを構成する各ロウフィールドに対しては、使用できません。

    +
  • +
+
+
+ + + +
+
+

Class RowKeyPredicate<K>

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • com.toshiba.mwcloud.gs.RowKeyPredicate<K>
    • +
    +
  • +
+
+
    +
  • +
    Type Parameters:
    K - 合致条件の評価対象とするロウキーの型
    +
    +
    +
    public class RowKeyPredicate<K>
    +extends java.lang.Object
    +
    ロウキーの合致条件を表します。 +

    GridStore.multiGet(java.util.Map)における取得条件を構成するために使用できます。

    + +

    条件の種別として、範囲条件と個別条件の2つの種別があります。両方の種別の条件を共に指定することはできません。条件の内容を何も指定しない場合、対象とするすべてのロウキーに合致することを表します。

    +
    Since:
    +
    1.5
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      voidadd(K key) +
      個別条件の要素の一つとするロウキーの値を追加します。
      +
      static <K> RowKeyPredicate<K>create(java.lang.Class<K> keyType) +
      指定のClassに対応するGSTypeをロウキーの型とする合致条件を作成します。
      +
      static <K> RowKeyPredicate<K>create(java.lang.Class<K> keyType, + TimeUnit timePrecision) +
      指定のClassならびに日時精度と対応するGSTypeをロウキーの型とする合致条件を作成します。
      +
      static RowKeyPredicate<Row.Key>create(ContainerInfo info) +
      指定のContainerInfoのロウキーに関するカラム定義に基づく、合致条件を作成します。
      +
      static RowKeyPredicate<java.lang.Object>create(GSType keyType) +
      指定のGSTypeをロウキーの型とする合致条件を作成します。
      +
      static RowKeyPredicate<java.lang.Object>create(GSType keyType, + TimeUnit timePrecision) +
      指定のGSTypeならびに日時精度をロウキーの型とする合致条件を作成します。
      +
      java.util.Collection<K>getDistinctKeys() +
      個別条件を構成するロウキーの値の集合を取得します。
      +
      KgetFinish() +
      範囲条件の終了位置とするロウキーの値を取得します。
      +
      ContainerInfogetKeySchema() +
      合致条件の評価対象とするロウキーのスキーマを取得します。
      +
      GSTypegetKeyType() +
      複合ロウキーについての合致条件である場合を除いて、合致条件の評価対象とするロウキーの型を取得します。
      +
      KgetStart() +
      範囲条件の開始位置とするロウキーの値を取得します。
      +
      voidsetFinish(K finishKey) +
      範囲条件の終了位置とするロウキーの値を設定します。
      +
      voidsetStart(K startKey) +
      範囲条件の開始位置とするロウキーの値を設定します。
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Method Detail

      + + + + + +
        +
      • +

        add

        +
        public void add(K key)
        +         throws GSException
        +
        個別条件の要素の一つとするロウキーの値を追加します。 +

        追加された値と同一の値のロウキーは合致するものとみなされるようになります。

        +
        Parameters:
        key - 個別条件の要素の一つとするロウキーの値。nullは指定できない
        +
        Throws:
        +
        GSException - 範囲条件がすでに設定されていた場合
        +
        java.lang.ClassCastException - 指定のロウキーの値の型がnull +ではなく、ロウキーに対応するクラスのインスタンスではない場合
        +
        java.lang.NullPointerException - 引数にnullが指定された場合
        +
      • +
      + + + +
        +
      • +

        create

        +
        public static <K> RowKeyPredicate<K> create(java.lang.Class<K> keyType)
        +                                 throws GSException
        +
        指定のClassに対応するGSTypeをロウキーの型とする合致条件を作成します。 +

        合致条件の評価対象とするコンテナは、単一カラムからなるロウキーを持ち、かつ、そのロウキーの型は指定のGSTypeと同一の型でなければなりません。

        + +

        また、カラムの精度を合わせる必要があります。

        + +

        設定可能なロウキーの型・精度は、Containerのいずれかのサブインタフェースにて許容されている型のみです。 ClassGSTypeとの対応関係については、 Containerの定義を参照してください。

        + +

        複合ロウキーなどロウキーを構成するカラムの個数によらずに合致条件を作成するには、create(ContainerInfo)を使用します。

        +
        Parameters:
        keyType - 合致条件の判定対象とするロウキーの型に対応する、Class
        +
        Returns:
        新規に作成されたRowKeyPredicate
        +
        Throws:
        +
        GSException - 指定された型がロウキーとして常にサポート外となる場合
        +
        java.lang.NullPointerException - 引数にnullが指定された場合
        See Also:
        Container
        +
      • +
      + + + +
        +
      • +

        create

        +
        public static <K> RowKeyPredicate<K> create(java.lang.Class<K> keyType,
        +                            TimeUnit timePrecision)
        +                                 throws GSException
        +
        指定のClassならびに日時精度と対応するGSTypeをロウキーの型とする合致条件を作成します。 +

        合致条件の評価対象とするコンテナは、単一カラムからなるロウキーを持ち、かつ、そのロウキーの型は指定のGSTypeと同一の型でなければなりません。

        + +

        また、カラムの精度を合わせる必要があります。

        + +

        設定可能なロウキーの型は、Containerのいずれかのサブインタフェースにて許容されている型のみです。 ClassGSTypeとの対応関係については、 Containerの定義を参照してください。

        + +

        複合ロウキーなどロウキーを構成するカラムの個数によらずに合致条件を作成するには、create(ContainerInfo)を使用します。

        +
        Parameters:
        keyType - 合致条件の判定対象とするロウキーの型に対応する、Class
        timePrecision - 合致条件の評価対象とするロウキーの日時精度
        +
        Returns:
        新規に作成されたRowKeyPredicate
        +
        Throws:
        +
        GSException - 指定された型がロウキーとして常にサポート外となる場合
        +
        java.lang.NullPointerException - keyType引数にnullが指定された場合
        Since:
        +
        5.3
        +
        See Also:
        Container
        +
      • +
      + + + +
        +
      • +

        create

        +
        public static RowKeyPredicate<Row.Key> create(ContainerInfo info)
        +                                       throws GSException
        +
        指定のContainerInfoのロウキーに関するカラム定義に基づく、合致条件を作成します。 +

        合致条件の評価対象とするコンテナは、ロウキーを持ち、かつ、指定の ContainerInfoのロウキーに関するカラム定義と対応づく必要があります。ロウキー以外のカラム定義については対応関係の判定に用いられません。

        +
        Parameters:
        info - 合致条件の判定対象とするロウキーのカラムレイアウトを含む、コンテナ情報。その他の内容は無視される
        +
        Returns:
        新規に作成されたRowKeyPredicate
        +
        Throws:
        +
        GSException - 指定の情報がロウキーを含まないか、ロウキーとして常にサポート外となる場合
        +
        java.lang.NullPointerException - 引数にnullが指定された場合
        Since:
        +
        4.3
        +
      • +
      + + + +
        +
      • +

        create

        +
        public static RowKeyPredicate<java.lang.Object> create(GSType keyType)
        +                                                throws GSException
        +
        指定のGSTypeをロウキーの型とする合致条件を作成します。 +

        合致条件の評価対象とするコンテナは、ロウキーを持ち、かつ、ロウキーの型が指定のGSTypeと同一の型でなければなりません。

        + +

        また、カラムの精度を合わせる必要があります。

        + +

        create(Class)とは異なり、アプリケーションのコンパイル時点でロウキーの型が確定しない場合の使用に適します。ただし、条件内容を設定する際のロウキーの型・精度チェックの基準は同一です。

        + +

        設定可能なロウキーの型は、Containerのいずれかのサブインタフェースにて許容されている型のみです。

        +
        Parameters:
        keyType - 合致条件の評価対象とするロウキーの型
        +
        Returns:
        新規に作成されたRowKeyPredicate
        +
        Throws:
        +
        GSException - 指定された型がロウキーとして常にサポート外となる場合
        +
        java.lang.NullPointerException - 引数にnullが指定された場合
        See Also:
        Container
        +
      • +
      + + + +
        +
      • +

        create

        +
        public static RowKeyPredicate<java.lang.Object> create(GSType keyType,
        +                                       TimeUnit timePrecision)
        +                                                throws GSException
        +
        指定のGSTypeならびに日時精度をロウキーの型とする合致条件を作成します。 +

        合致条件の評価対象とするコンテナは、ロウキーを持ち、かつ、ロウキーの型が指定のGSTypeと同一の型でなければなりません。

        + +

        また、カラムの精度を合わせる必要があります。

        + +

        create(Class)とは異なり、アプリケーションのコンパイル時点でロウキーの型が確定しない場合の使用に適します。ただし、条件内容を設定する際のロウキーの型・精度チェックの基準は同一です。

        + +

        設定可能なロウキーの型は、Containerのいずれかのサブインタフェースにて許容されている型のみです。

        +
        Parameters:
        keyType - 合致条件の評価対象とするロウキーの型
        timePrecision - 合致条件の評価対象とするロウキーの日時精度
        +
        Returns:
        新規に作成されたRowKeyPredicate
        +
        Throws:
        +
        GSException - 指定された型がロウキーとして常にサポート外となる場合
        +
        java.lang.NullPointerException - keyType引数にnullが指定された場合
        Since:
        +
        5.3
        +
        See Also:
        Container
        +
      • +
      + + + +
        +
      • +

        getDistinctKeys

        +
        public java.util.Collection<K> getDistinctKeys()
        +
        個別条件を構成するロウキーの値の集合を取得します。 +

        返却された値に対して変更操作を行った場合に、 UnsupportedOperationExceptionなどの実行時例外が発生するかどうかは未定義です。また、このオブジェクトに対する操作により、返却されたオブジェクトの内容が変化するかどうかは未定義です。

        +
        Returns:
        個別条件を構成するロウキーの値を要素とする Collection
        +
      • +
      + + + +
        +
      • +

        getFinish

        +
        public K getFinish()
        +
        範囲条件の終了位置とするロウキーの値を取得します。
        +
        Returns:
        終了位置とするロウキーの値。設定されていない場合はnull
        +
      • +
      + + + +
        +
      • +

        getKeySchema

        +
        public ContainerInfo getKeySchema()
        +
        合致条件の評価対象とするロウキーのスキーマを取得します。 +

        この合致条件の作成に用いられた情報に、ロウキー以外のカラム情報やスキーマ以外のコンテナ情報が含まれていたとしても、返却されるスキーマ情報には含まれません。

        +
        Returns:
        ロウキーのスキーマに関するコンテナ情報のみを持つ ContainerInfo
        Since:
        +
        4.3
        +
      • +
      + + + +
        +
      • +

        getKeyType

        +
        public GSType getKeyType()
        +
        複合ロウキーについての合致条件である場合を除いて、合致条件の評価対象とするロウキーの型を取得します。 +

        複合ロウキーを含む任意のロウキーについてのスキーマを取得するには、 getKeySchema()を使用します。

        +
        Returns:
        合致条件の評価対象とするロウキーの型
        +
        Throws:
        +
        java.lang.IllegalStateException - 複合ロウキーについての合致条件である場合に呼び出された場合
        +
      • +
      + + + +
        +
      • +

        getStart

        +
        public K getStart()
        +
        範囲条件の開始位置とするロウキーの値を取得します。
        +
        Returns:
        開始位置とするロウキーの値。設定されていない場合はnull
        +
      • +
      + + + + + +
        +
      • +

        setFinish

        +
        public void setFinish(K finishKey)
        +               throws GSException
        +
        範囲条件の終了位置とするロウキーの値を設定します。 +

        設定された値より大きな値のロウキーは合致しないものとみなされるようになります。

        + +

        STRING型のロウキーまたはその型を含む複合ロウキーのように、大小関係が定義されていないロウキーの場合、条件として設定はできるものの、実際の判定に用いることはできません。

        +
        Parameters:
        finishKey - 終了位置とするロウキーの値。nullの場合、設定が解除される
        +
        Throws:
        +
        GSException - 個別条件がすでに設定されていた場合
        +
        java.lang.ClassCastException - 指定のロウキーの値の型がnull +ではなく、ロウキーに対応するクラスのインスタンスではない場合
        +
      • +
      + + + + + +
        +
      • +

        setStart

        +
        public void setStart(K startKey)
        +              throws GSException
        +
        範囲条件の開始位置とするロウキーの値を設定します。 +

        設定された値より小さな値のロウキーは合致しないものとみなされるようになります。

        + +

        STRING型のロウキーまたはその型を含む複合ロウキーのように、大小関係が定義されていないロウキーの場合、条件として設定はできるものの、実際の判定に用いることはできません。

        +
        Parameters:
        startKey - 開始位置とするロウキーの値。nullの場合、設定が解除される
        +
        Throws:
        +
        GSException - 個別条件がすでに設定されていた場合
        +
        java.lang.ClassCastException - 指定のロウキーの値の型がnull +ではなく、ロウキーに対応するクラスのインスタンスではない場合
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + +
+
+

Interface RowSet<R>

+
+
+
+
    +
  • +
    +
    All Superinterfaces:
    +
    java.lang.AutoCloseable, java.io.Closeable
    +
    +
    +
    +
    public interface RowSet<R>
    +extends java.io.Closeable
    +
    クエリ実行より求めたロウの集合を管理します。 +

    ロウ単位・ロウフィールド単位での操作機能を持ち、対象とするロウを指し示すための、ResultSetと同様のカーソル状態を保持します。初期状態のカーソルは、ロウ集合の先頭より手前に位置しています。

    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      voidclose() +
      関連するリソースを適宜解放します。
      +
      ContainerInfogetSchema() +
      このロウ集合に対応するスキーマを取得します。
      +
      booleanhasNext() +
      現在のカーソル位置を基準として、ロウ集合内に後続のロウが存在するかどうかを取得します。
      +
      Rnext() +
      ロウ集合内の後続のロウにカーソル移動し、移動後の位置にあるロウオブジェクトを取得します。
      +
      voidremove() +
      現在のカーソル位置のロウを削除します。
      +
      intsize() +
      サイズ、すなわちロウ集合作成時点におけるロウの数を取得します。
      +
      voidupdate(R rowObj) +
      現在のカーソル位置のロウについて、指定のロウオブジェクトを使用してロウキー以外の値を更新します。
      +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        close

        +
        void close()
        +           throws GSException
        +
        関連するリソースを適宜解放します。
        +
        +
        Specified by:
        +
        close in interface java.lang.AutoCloseable
        +
        Specified by:
        +
        close in interface java.io.Closeable
        +
        Throws:
        +
        GSException - 現バージョンでは送出されない
        See Also:
        Closeable.close()
        +
      • +
      + + + +
        +
      • +

        getSchema

        +
        ContainerInfo getSchema()
        +                        throws GSException
        +
        このロウ集合に対応するスキーマを取得します。 +

        ロウキーの有無を含むカラムレイアウトにする情報のみが設定された ContainerInfoが求まります。コンテナ名、コンテナ種別、索引設定、時系列構成オプションなどその他のコンテナ情報は含まれません。

        + +

        このロウ集合がAggregationResultインスタンスのロウを扱うものとして構成されており、かつ、1件もロウを含まない場合、現バージョンでは nullを返します。

        +
        Returns:
        スキーマに関するコンテナ情報のみを持つContainerInfo
        +
        Throws:
        +
        GSException - 現バージョンでは送出されない
        Since:
        +
        5.3
        +
      • +
      + + + +
        +
      • +

        hasNext

        +
        boolean hasNext()
        +                throws GSException
        +
        現在のカーソル位置を基準として、ロウ集合内に後続のロウが存在するかどうかを取得します。
        +
        Throws:
        +
        GSException - 現バージョンでは送出されない
        +
      • +
      + + + +
        +
      • +

        next

        +
        R next()
        +       throws GSException
        +
        ロウ集合内の後続のロウにカーソル移動し、移動後の位置にあるロウオブジェクトを取得します。 +

        FetchOption.PARTIAL_EXECUTIONが有効に設定されていた場合、クエリ実行処理の続きを行う場合があります。

        +
        Throws:
        +
        GSException - 対象位置のロウが存在しない場合
        +
        GSException - 接続障害によりロウオブジェクトの生成に失敗した場合
        +
        GSException - この処理または関連するトランザクションのタイムアウト、対応するコンテナの削除もしくはスキーマ変更、接続障害が発生した場合
        +
        GSException - このオブジェクトまたは対応するContainerのクローズ後に呼び出された場合
        +
      • +
      + + + +
        +
      • +

        remove

        +
        void remove()
        +            throws GSException
        +
        現在のカーソル位置のロウを削除します。 +

        ロックを有効にして取得したRowSetに対してのみ使用できます。また、Container.remove(Object)と同様、コンテナの種別ならびに設定によっては、さらに制限が設けられています。

        +
        Throws:
        +
        GSException - 対象位置のロウが存在しない場合
        +
        GSException - ロックを有効にせずに取得したRowSetに対して呼び出された場合
        +
        GSException - 特定コンテナ固有の制限に反する操作を行った場合
        +
        GSException - この処理または関連するトランザクションのタイムアウト、対応するコンテナの削除もしくはスキーマ変更、接続障害が発生した場合
        +
        GSException - このオブジェクトまたは対応するContainerのクローズ後に呼び出された場合
        +
      • +
      + + + +
        +
      • +

        size

        +
        int size()
        +
        サイズ、すなわちロウ集合作成時点におけるロウの数を取得します。 +

        FetchOption.PARTIAL_EXECUTIONが有効に設定されていた場合、クエリ実行処理の進行状況によらず、結果を求めることはできません。

        +
        Throws:
        +
        java.lang.IllegalStateException - オプション設定の影響によりロウの数を取得できない場合
        +
      • +
      + + + + + +
        +
      • +

        update

        +
        void update(R rowObj)
        +            throws GSException
        +
        現在のカーソル位置のロウについて、指定のロウオブジェクトを使用してロウキー以外の値を更新します。 +

        nullは指定できません。指定のロウオブジェクトに含まれるロウキーは無視されます。

        + +

        ロックを有効にして取得したRowSetに対してのみ使用できます。また、Container.put(Object, Object)と同様、コンテナの種別ならびに設定によっては、さらに制限が設けられています。

        +
        Throws:
        +
        GSException - 対象位置のロウが存在しない場合
        +
        GSException - ロックを有効にせずに取得したRowSetに対して呼び出された場合
        +
        GSException - 特定コンテナ固有の制限に反する操作を行った場合
        +
        GSException - この処理または関連するトランザクションのタイムアウト、対応するンテナの削除もしくはスキーマ変更、接続障害が発生した場合
        +
        GSException - このオブジェクトまたは対応するContainerのクローズ後に呼び出された場合
        +
        java.lang.ClassCastException - 指定のロウオブジェクトがマッピング処理で使用されるロウオブジェクトの型と対応しない場合
        +
        java.lang.NullPointerException - 引数にnullが指定された場合。また、ロウフィールドに対応するロウオブジェクト内のオブジェクトが1つ以上存在しない場合
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + +
+
+

Enum TimeOperator

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • java.lang.Enum<TimeOperator>
    • +
    • +
        +
      • com.toshiba.mwcloud.gs.TimeOperator
      • +
      +
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    java.io.Serializable, java.lang.Comparable<TimeOperator>
    +
    +
    +
    +
    public enum TimeOperator
    +extends java.lang.Enum<TimeOperator>
    +
    TimeSeriesのキー時刻に基づく、ロウの特定方法を表します。 +

    別途指定する時刻と組み合わせることで、最も近い時刻のキーを持つロウなどを特定できます。該当するロウが存在しない場合の扱いは、この列挙型を使用するそれぞれの機能により異なります。

    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Enum Constant Summary

      + + + + + + + + + + + + + + + + + +
      Enum Constants 
      Enum Constant and Description
      NEXT +
      指定時刻同一またはまたはより後の時刻のロウのうち、最も古いものを求めます。
      +
      NEXT_ONLY +
      指定時刻より後の時刻のロウのうち、最も古いものを求めます。
      +
      PREVIOUS +
      指定時刻と同一またはより前の時刻のロウのうち、最も新しいものを求めます。
      +
      PREVIOUS_ONLY +
      指定より前の時刻のロウのうち、最も新しいものを求めます。
      +
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      static TimeOperatorvalueOf(java.lang.String name) +
      Returns the enum constant of this type with the specified name.
      +
      static TimeOperator[]values() +
      Returns an array containing the constants of this enum type, in +the order they are declared.
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Enum

        +clone, compareTo, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf
      • +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +getClass, notify, notifyAll, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Enum Constant Detail

      + + + +
        +
      • +

        NEXT

        +
        public static final TimeOperator NEXT
        +
        指定時刻同一またはまたはより後の時刻のロウのうち、最も古いものを求めます。
        +
      • +
      + + + +
        +
      • +

        NEXT_ONLY

        +
        public static final TimeOperator NEXT_ONLY
        +
        指定時刻より後の時刻のロウのうち、最も古いものを求めます。
        +
      • +
      + + + +
        +
      • +

        PREVIOUS

        +
        public static final TimeOperator PREVIOUS
        +
        指定時刻と同一またはより前の時刻のロウのうち、最も新しいものを求めます。
        +
      • +
      + + + +
        +
      • +

        PREVIOUS_ONLY

        +
        public static final TimeOperator PREVIOUS_ONLY
        +
        指定より前の時刻のロウのうち、最も新しいものを求めます。
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        valueOf

        +
        public static TimeOperator valueOf(java.lang.String name)
        +
        Returns the enum constant of this type with the specified name. +The string must match exactly an identifier used to declare an +enum constant in this type. (Extraneous whitespace characters are +not permitted.)
        +
        Parameters:
        name - the name of the enum constant to be returned.
        +
        Returns:
        the enum constant with the specified name
        +
        Throws:
        +
        java.lang.IllegalArgumentException - if this enum type has no constant +with the specified name
        +
        java.lang.NullPointerException - if the argument is null
        +
      • +
      + + + +
        +
      • +

        values

        +
        public static TimeOperator[] values()
        +
        Returns an array containing the constants of this enum type, in +the order they are declared. This method may be used to iterate +over the constants as follows: +
        +for (TimeOperator c : TimeOperator.values())
        +    System.out.println(c);
        +
        +
        Returns:
        an array containing the constants of this enum type, in +the order they are declared
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + +
+
+

Annotation Type TimePrecision

+
+
+
+
    +
  • +
    +
    +
    @Retention(value=RUNTIME)
    +@Target(value={FIELD,METHOD})
    +public @interface TimePrecision
    +
    Containerの処理におけるマッピング対象のロウフィールドについて、日時精度を設定します。 +

    このアノテーションが付与されていないロウフィールドは、日時精度の指定がなかったものとみなされます。

    + +

    日時精度とカラム型との対応は、ColumnInfo.getTimePrecision()の記載の通りです。

    +
    Since:
    +
    5.3
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Required Element Summary

      + + + + + + + + + + +
      Required Elements 
      Modifier and TypeRequired Element and Description
      TimeUnitvalue +
      日時精度を返却します。
      +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Element Detail

      + + + +
        +
      • +

        value

        +
        public abstract TimeUnit value
        +
        日時精度を返却します。
        +
        Returns:
        日時精度
        Since:
        +
        5.3
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + +
+
+

Class TimeSeries.BindType

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • com.toshiba.mwcloud.gs.TimeSeries.BindType
    • +
    +
  • +
+
+
    +
  • +
    +
    Enclosing interface:
    +
    TimeSeries<R>
    +
    +
    +
    +
    public static class TimeSeries.BindType
    +extends java.lang.Object
    +
    TimeSeriesならびにその型パラメータと結びつく Container.BindTypeを構築するための、補助クラスです。
    +
    Since:
    +
    4.3
    +
    See Also:
    Container.BindType
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      static <R> Container.BindType<java.util.Date,R,? extends TimeSeries<R>>of(java.lang.Class<R> rowClass) +
      指定のロウオブジェクト型、ならびに、TimeSeriesと結びつく Container.BindTypeを取得します。
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        of

        +
        public static <R> Container.BindType<java.util.Date,R,? extends TimeSeries<R>> of(java.lang.Class<R> rowClass)
        +                                                                       throws GSException
        +
        指定のロウオブジェクト型、ならびに、TimeSeriesと結びつく Container.BindTypeを取得します。
        +
        Type Parameters:
        R - ロウオブジェクトの型
        Parameters:
        rowClass - ロウオブジェクトの型に対応するクラスオブジェクト
        +
        Throws:
        +
        GSException - ロウキーの型と、ロウオブジェクトの型との間で不整合を検出した場合
        Since:
        +
        4.3
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + +
+
+

Interface TimeSeries<R>

+
+
+
+
    +
  • +
    +
    All Superinterfaces:
    +
    java.lang.AutoCloseable, java.io.Closeable, Container<java.util.Date,R>
    +
    +
    +
    +
    public interface TimeSeries<R>
    +extends Container<java.util.Date,R>
    +
    時刻をロウキーとする、時系列処理に特化したコンテナです。 +

    一般的に、範囲取得や集計演算といった処理は、Collectionよりも効率的な実装が選択されます。

    + +

    ロウキーは、通常精度のTIMESTAMP型カラム1つのみから構成されます。

    + +

    ロウ操作については、Collectionと異なり一部制限が設けられています。 TimeSeriesPropertiesに基づき圧縮オプションが設定されている場合、次のロウ操作を行えません。

    +
      +
    • 指定ロウの更新
    • +
    • 指定ロウの削除
    • +
    • 指定時刻より新しい時刻のロウが存在する場合の、ロウの新規作成
    • +
    + +

    Container.query(String)GridStore.multiGet(java.util.Map)などより複数のロウの内容を一度に取得する場合、特に指定がなければ、返却されるロウの順序はロウキーの時刻を基準としてQueryOrder.ASCENDING +相当の順序に整列されます。

    + +

    ロック粒度は、1つ以上のロウ集合をひとまとまりとする内部格納単位となります。したがって、特定ロウについてロックする際、そのロウが属する内部格納単位上の他のロウも同時にロックしようとします。

    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Nested Class Summary

      + + + + + + + + + + +
      Nested Classes 
      Modifier and TypeInterface and Description
      static class TimeSeries.BindType +
      TimeSeriesならびにその型パラメータと結びつく Container.BindTypeを構築するための、補助クラスです。
      +
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      AggregationResultaggregate(java.util.Date start, + java.util.Date end, + java.lang.String column, + Aggregation aggregation) +
      開始・終了時刻指定を指定して、ロウ集合またはその特定のカラムに対し集計演算を行います。
      +
      booleanappend(R row) +
      GridDB上の現在時刻をロウキーとして、ロウを新規作成または更新します。
      +
      Rget(java.util.Date key) +
      指定のオプションに従い、ロウキーに対応するロウの内容を取得します。
      +
      Rget(java.util.Date base, + TimeOperator timeOp) +
      指定の時刻を基準として、関係する1つのロウを取得します。
      +
      Rinterpolate(java.util.Date base, + java.lang.String column) +
      指定時刻に相当するロウオブジェクトについて、線形補間などを行い生成します。
      +
      booleanput(java.util.Date key, + R row) +
      必要に応じ別途ロウキーを指定して、ロウを新規作成または更新します。
      +
      Query<R>query(java.util.Date start, + java.util.Date end) +
      開始時刻・終了時刻を指定して、特定範囲のロウ集合を求めるクエリを作成します。
      +
      Query<R>query(java.util.Date start, + java.util.Date end, + QueryOrder order) +
      開始時刻・終了時刻・順序を指定して、特定範囲のロウ集合を求めるクエリを作成します。
      +
      Query<R>query(java.util.Date start, + java.util.Date end, + java.util.Set<java.lang.String> columnSet, + InterpolationMode mode, + int interval, + TimeUnit intervalUnit) +
      特定範囲のロウ集合をサンプリングするクエリを作成します。
      +
      booleanremove(java.util.Date key) +
      指定のロウキーに対応するロウを削除します。
      +
      + +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        aggregate

        +
        AggregationResult aggregate(java.util.Date start,
        +                          java.util.Date end,
        +                          java.lang.String column,
        +                          Aggregation aggregation)
        +                            throws GSException
        +
        開始・終了時刻指定を指定して、ロウ集合またはその特定のカラムに対し集計演算を行います。 +

        columnは、aggregation次第で無視されることがあります。演算対象には、開始・終了時刻と合致する境界上のロウも含まれます。終了時刻より新しい開始時刻を指定した場合、すべてのロウが対象外となります。

        +
        Parameters:
        start - 開始時刻
        end - 終了時刻
        column - 集計対象のカラム名。合計演算のように、特定のカラムを対象としない場合はnull
        aggregation - 集計方法
        +
        Returns:
        集計結果が設定された場合、対応するAggregationResult。設定されなかった場合はnull。詳細はAggregationの定義を参照のこと
        +
        Throws:
        +
        GSException - 指定の演算方法で許可されていない型のカラムを指定した場合
        +
        GSException - この処理またはトランザクションのタイムアウト、このコンテナの削除もしくはスキーマ変更、接続障害が発生した場合、クローズ後に呼び出された場合
        +
        java.lang.NullPointerException - startendaggregationnullが指定された場合
        See Also:
        Aggregation
        +
      • +
      + + + + + +
        +
      • +

        append

        +
        boolean append(R row)
        +               throws GSException
        +
        GridDB上の現在時刻をロウキーとして、ロウを新規作成または更新します。 +

        GridDB上の現在時刻に相当するTIMESTAMP値をロウキーとする点を除き、 put(Date, Object)と同様に振る舞います。指定のロウオブジェクト内のロウキーは無視されます。

        + +

        圧縮オプションが設定された状態の時系列に対しては、 GridDB上の現在時刻より新しい時刻のロウが存在しない場合のみ使用できます。最も新しい時刻を持つ既存ロウの時刻が現在時刻と一致する場合、何も変更は行わず既存ロウの内容を保持します。

        + +

        手動コミットモードの場合、対象のロウがロックされます。また、内部格納単位が同一の他のロウもロックされます。

        +
        Parameters:
        row - 新規作成または更新するロウの内容と対応するロウオブジェクト
        +
        Returns:
        GridDB上の現在時刻と一致するロウが存在したかどうか
        +
        Throws:
        +
        GSException - この時系列について圧縮オプションが設定されており、現在時刻より新しい時刻のロウが存在した場合
        +
        GSException - この処理またはトランザクションのタイムアウト、このコンテナの削除もしくはスキーマ変更、接続障害が発生した場合、クローズ後に呼び出された場合、またはサポート範囲外の値がロウオブジェクトに含まれていた場合
        +
        java.lang.ClassCastException - 指定のキーもしくはロウオブジェクトと、マッピング処理で使用される型との間で対応しないものがある場合
        +
        java.lang.NullPointerException - rownullが指定された場合。また、ロウフィールドに対応するロウオブジェクト内のオブジェクトの中に、設定されていないものが存在した場合
        See Also:
        put(Date, Object), +TimeSeriesProperties.getCompressionMethod()
        +
      • +
      + + + +
        +
      • +

        get

        +
        R get(java.util.Date key)
        +      throws GSException
        +
        指定のオプションに従い、ロウキーに対応するロウの内容を取得します。 +

        Container.get(Object)と同様です。ただし、ロウキーの型が固定であるため、ClassCastExceptionが送出されることはありません。

        +
        +
        Specified by:
        +
        get in interface Container<java.util.Date,R>
        +
        Returns:
        対応するロウが存在したかどうか
        +
        Throws:
        +
        GSException - この処理またはトランザクションのタイムアウト、このコンテナの削除もしくはスキーマ変更、接続障害が発生した場合、クローズ後に呼び出された場合、またはサポート範囲外の値がキーとして設定されていた場合
        +
        java.lang.NullPointerException - 引数にnullが指定された場合
        See Also:
        Container.get(Object)
        +
      • +
      + + + +
        +
      • +

        get

        +
        R get(java.util.Date base,
        +    TimeOperator timeOp)
        +      throws GSException
        +
        指定の時刻を基準として、関係する1つのロウを取得します。
        +
        Parameters:
        base - 基準となる時刻
        timeOp - 取得方法
        +
        Returns:
        条件に一致するロウ。存在しない場合はnull
        +
        Throws:
        +
        GSException - この処理またはトランザクションのタイムアウト、このコンテナの削除もしくはスキーマ変更、接続障害が発生した場合、クローズ後に呼び出された場合、またはサポート範囲外の値が基準時刻として指定された場合
        +
        java.lang.NullPointerException - 引数にnullが指定された場合
        +
      • +
      + + + +
        +
      • +

        interpolate

        +
        R interpolate(java.util.Date base,
        +            java.lang.String column)
        +              throws GSException
        +
        指定時刻に相当するロウオブジェクトについて、線形補間などを行い生成します。 +

        一致する時系列ロウの指定のカラムの値、もしくは、前後時刻のロウの指定カラムの値を線形補間して得られた値を基にロウオブジェクトを生成します。前後時刻のロウの少なくともいずれか、もしくは、一致するロウが存在しない場合は生成されません。

        + +

        補間対象として指定できるカラムの型は、数値型のみです。指定のカラムならびにロウキー以外のフィールドには、指定時刻と同一またはより前の時刻のロウのうち、最も新しい時刻を持つロウのフィールドの値が設定されます。

        +
        Parameters:
        base - 基準となる時刻
        column - 線形補間対象のカラム
        +
        Throws:
        +
        GSException - 対応する名前のカラムが存在しない場合。また、サポートされていない型のカラムが指定された場合
        +
        GSException - この処理またはトランザクションのタイムアウト、このコンテナの削除もしくはスキーマ変更、接続障害が発生した場合、クローズ後に呼び出された場合、またはサポート範囲外の値が基準時刻として指定された場合
        +
        java.lang.NullPointerException - 引数にnullが指定された場合
        +
      • +
      + + + + + +
        +
      • +

        put

        +
        boolean put(java.util.Date key,
        +          R row)
        +            throws GSException
        +
        必要に応じ別途ロウキーを指定して、ロウを新規作成または更新します。 +

        keyにより別途ロウキーを指定した場合はその値を、指定しない場合は指定のロウオブジェクト内のロウキーを基にロウを新規作成します。

        + +

        圧縮オプションが設定された状態の時系列に対しては、最も新しい時刻を持つ既存ロウより新しい時刻のロウのみを新規作成できます。最も新しい時刻を持つ既存ロウの時刻が指定の時刻と一致する場合、何も変更は行わず既存ロウの内容を保持します。

        + +

        手動コミットモードの場合、対象のロウがロックされます。また、内部格納単位が同一の他のロウもロックされます。

        +
        +
        Specified by:
        +
        put in interface Container<java.util.Date,R>
        +
        Parameters:
        key - 処理対象のロウキー
        row - 新規作成または更新するロウの内容と対応するロウオブジェクト
        +
        Returns:
        指定のロウキーと一致するロウが存在したかどうか
        +
        Throws:
        +
        GSException - この時系列について圧縮オプションが設定されており、指定時刻より新しい時刻のロウが存在した場合
        +
        GSException - この処理またはトランザクションのタイムアウト、このコンテナの削除もしくはスキーマ変更、接続障害が発生した場合、クローズ後に呼び出された場合、またはサポート範囲外の値がキーまたはロウオブジェクトに含まれていた場合
        +
        java.lang.ClassCastException - 指定のキーもしくはロウオブジェクトと、マッピング処理で使用される型との間で対応しないものがある場合
        +
        java.lang.NullPointerException - rownullが指定された場合。また、ロウフィールドに対応するロウオブジェクト内のオブジェクトの中に、設定されていないものが存在した場合
        See Also:
        Container.put(Object, Object), +TimeSeriesProperties.getCompressionMethod()
        +
      • +
      + + + +
        +
      • +

        query

        +
        Query<R> query(java.util.Date start,
        +             java.util.Date end)
        +               throws GSException
        +
        開始時刻・終了時刻を指定して、特定範囲のロウ集合を求めるクエリを作成します。 +

        取得対象には、開始・終了時刻と合致する境界上のロウも含まれます。終了時刻より新しい開始時刻を指定した場合、すべてのロウが対象外となります。要求するロウ集合は昇順、すなわち古い時刻から新しい時刻の順となります。

        + +

        Query.fetch(boolean)を通じてロウ集合を求める際、更新用ロックのオプションを有効にすることもできます。

        +
        Parameters:
        start - 開始時刻またはnullnullの場合、この時系列上の最も古いロウの時刻が開始時刻として指定されたものとみなす
        end - 終了時刻またはnullnullの場合、この時系列上の最も新しいロウの時刻が終了時刻として指定されたものとみなす
        +
        Throws:
        +
        GSException - 現バージョンでは送出されない
        +
      • +
      + + + +
        +
      • +

        query

        +
        Query<R> query(java.util.Date start,
        +             java.util.Date end,
        +             QueryOrder order)
        +               throws GSException
        +
        開始時刻・終了時刻・順序を指定して、特定範囲のロウ集合を求めるクエリを作成します。 +

        取得対象には、開始・終了時刻と合致する境界上のロウも含まれます。終了時刻より新しい開始時刻を指定した場合、すべてのロウが対象外となります。

        + +

        Query.fetch(boolean)を通じてロウ集合を求める際、更新用ロックのオプションを有効にすることもできます。

        + +

        nullを指定できない引数でnullを指定したことによる NullPointerExceptionは送出されません。引数に誤りがあった場合、得られたクエリをフェッチする際に例外が送出されます。

        +
        Parameters:
        start - 開始時刻またはnullnullの場合、この時系列上の最も古いロウの時刻が開始時刻として指定されたものとみなす
        end - 終了時刻またはnullnullの場合、この時系列上の最も新しいロウの時刻が終了時刻として指定されたものとみなす
        order - 取得するロウ集合の時刻順序。nullは指定できない。 QueryOrder.ASCENDINGの場合は古い時刻から新しい時刻の順、 QueryOrder.DESCENDINGの場合は新しい時刻から古い時刻の順となる
        +
        Throws:
        +
        GSException - 現バージョンでは送出されない
        +
      • +
      + + + +
        +
      • +

        query

        +
        Query<R> query(java.util.Date start,
        +             java.util.Date end,
        +             java.util.Set<java.lang.String> columnSet,
        +             InterpolationMode mode,
        +             int interval,
        +             TimeUnit intervalUnit)
        +               throws GSException
        +
        特定範囲のロウ集合をサンプリングするクエリを作成します。 +

        サンプリング対象の時刻は、開始時刻に対し非負整数倍のサンプリング間隔を加えた時刻のうち、終了時刻と同じかそれ以前のもののみです。終了時刻より新しい開始時刻を指定した場合、すべてのロウが対象外となります。

        + +

        作成したクエリを実行すると、各サンプリング位置の時刻と一致するロウが存在する場合は該当ロウの値を、存在しない場合はcolumnSetmode引数の指定に従い補間された値を使用しロウ集合を生成します。個別の補間方法については、InterpolationModeの定義を参照してください。

        + +

        補間のために参照する必要のあるロウが存在しない場合、該当するサンプリング時刻のロウは生成されず、該当箇所の数だけ結果件数が減少します。サンプリング間隔をより短く設定すると、補間方法次第では異なるサンプリング時刻であっても同一のロウの内容が使用される可能性が高まります。

        + +

        Query.fetch(boolean)を通じてロウ集合を求める際、更新用ロックのオプションを有効にすることはできません。

        + +

        現バージョンでは、GSExceptionや、nullを指定できない引数でnullを指定したことによるNullPointerExceptionは送出されません。引数に誤りがあった場合、得られたクエリをフェッチする際に例外が送出されます。

        +
        Parameters:
        start - 開始時刻。nullは指定できない
        end - 終了時刻。nullは指定できない
        columnSet - modeに基づき特定の補間処理を適用するカラムの名前の集合。空集合の場合は適用対象のカラムを何も指定しないことを示す。 nullの場合は空集合を指定した場合と同様
        mode - 補間方法。nullは指定できない
        interval - サンプリング間隔。0および負の値は指定できない
        intervalUnit - サンプリング間隔の時間単位。 TimeUnit.YEARTimeUnit.MONTHは指定できない。また、nullは指定できない
        +
        Throws:
        +
        GSException - 現バージョンでは送出されない
        +
      • +
      + + + +
        +
      • +

        remove

        +
        boolean remove(java.util.Date key)
        +               throws GSException
        +
        指定のロウキーに対応するロウを削除します。 +

        ロウキーに対応するカラムが存在する場合のみ使用できます。対応するロウが存在しない場合は何も変更しません。

        + +

        圧縮オプションが設定された状態の時系列に対しては使用できません。

        + +

        手動コミットモードの場合、対象のロウはロックされます。

        +
        +
        Specified by:
        +
        remove in interface Container<java.util.Date,R>
        +
        Returns:
        対応するロウが存在したかどうか
        +
        Throws:
        +
        GSException - ロウキーに対応するカラムが存在しない場合
        +
        GSException - この時系列について圧縮オプションが設定されていた場合
        +
        GSException - この処理またはトランザクションのタイムアウト、このコンテナの削除もしくはスキーマ変更、接続障害が発生した場合、クローズ後に呼び出された場合、またはサポート範囲外の値がキーとして指定された場合
        +
        java.lang.ClassCastException - 指定のロウキーがマッピング処理で使用されるロウキーの型と対応しない場合
        +
        java.lang.NullPointerException - 引数にnullが指定された場合
        See Also:
        Container.remove(Object), +TimeSeriesProperties.getCompressionMethod()
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + +
+
+

Class TimeSeriesProperties

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • com.toshiba.mwcloud.gs.TimeSeriesProperties
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    java.lang.Cloneable
    +
    +
    +
    +
    public class TimeSeriesProperties
    +extends java.lang.Object
    +implements java.lang.Cloneable
    +
    時系列を新規作成または変更する際に使用される、オプションの構成情報を表します。 +

    カラム名の表記、もしくは、個別に圧縮設定できるカラム数の上限などの内容の妥当性について、必ずしも検査するとは限りません。

    +
  • +
+
+
+
    +
  • + + + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      TimeSeriesPropertiesclone() +
      このオブジェクトと同一設定のTimeSeriesPropertiesを作成します。
      +
      CompressionMethodgetCompressionMethod() +
      時系列圧縮方式の種別を取得します。
      +
      java.lang.DoublegetCompressionRate(java.lang.String column) +
      指定のカラムについて、相対誤差あり間引き圧縮における、値がとりうる範囲を基準とした誤差境界値の比率を取得します。
      +
      java.lang.DoublegetCompressionSpan(java.lang.String column) +
      指定のカラムについての、相対誤差あり間引き圧縮で用いられる、値がとりうる範囲の最大値と最小値の差を取得します。
      +
      java.lang.DoublegetCompressionWidth(java.lang.String column) +
      指定のカラムについての、絶対誤差あり間引き圧縮における誤差境界の幅を取得します。
      +
      intgetCompressionWindowSize() +
      間引き圧縮において連続して間引きされるロウの最大期間を取得します。
      +
      TimeUnitgetCompressionWindowSizeUnit() +
      間引き圧縮において連続して間引きされるロウの最大期間の単位を取得します。
      +
      intgetExpirationDivisionCount() +
      期限に到達したロウデータの解放単位と対応する、有効期間に対しての分割数を取得します。
      +
      intgetRowExpirationTime() +
      ロウの有効期限の基準となる経過期間を取得します。
      +
      TimeUnitgetRowExpirationTimeUnit() +
      ロウの有効期限の基準とする経過期間の単位を取得します。
      +
      java.util.Set<java.lang.String>getSpecifiedColumns() +
      追加設定のあるカラムの名前をすべて取得します。
      +
      java.lang.BooleanisCompressionRelative(java.lang.String column) +
      指定のカラムについて、誤差あり間引き圧縮の誤差判定基準値が相対値かどうかを返します。
      +
      voidsetAbsoluteHiCompression(java.lang.String column, + double width) +
      指定のカラムについて、絶対誤差あり間引き圧縮のパラメータを設定します。
      +
      voidsetCompressionMethod(CompressionMethod compressionMethod) +
      時系列圧縮方式の種別を設定します。
      +
      voidsetCompressionWindowSize(int compressionWindowSize, + TimeUnit compressionWindowSizeUnit) +
      間引き圧縮において連続して間引きされるロウの最大期間を設定します。
      +
      voidsetExpirationDivisionCount(int count) +
      有効期間に対する分割数により、期限に到達したロウデータの解放単位を設定します。
      +
      voidsetRelativeHiCompression(java.lang.String column, + double rate, + double span) +
      指定のカラムについて、相対誤差あり間引き圧縮のパラメータを設定します。
      +
      voidsetRowExpiration(int elapsedTime, + TimeUnit timeUnit) +
      ロウの有効期限の基準となる経過期間を設定します。
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        TimeSeriesProperties

        +
        public TimeSeriesProperties()
        +
        標準設定のTimeSeriesPropertiesを作成します。
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + + + + + +
        +
      • +

        getCompressionMethod

        +
        public CompressionMethod getCompressionMethod()
        +
        時系列圧縮方式の種別を取得します。
        +
        Returns:
        圧縮方式の種別。nullは返却されない
        +
      • +
      + + + +
        +
      • +

        getCompressionRate

        +
        public java.lang.Double getCompressionRate(java.lang.String column)
        +
        指定のカラムについて、相対誤差あり間引き圧縮における、値がとりうる範囲を基準とした誤差境界値の比率を取得します。 +

        値がとりうる範囲は、getCompressionWidth(String)により取得できます。

        +
        Parameters:
        column - カラム名
        +
        Returns:
        指定のカラム名に対応する設定がある場合はその設定値、ない場合はnull
        +
        Throws:
        +
        java.lang.IllegalArgumentException - 制限に反するカラム名が指定されたことを検知できた場合
        +
        java.lang.NullPointerException - 引数にnullが指定された場合
        +
      • +
      + + + +
        +
      • +

        getCompressionSpan

        +
        public java.lang.Double getCompressionSpan(java.lang.String column)
        +
        指定のカラムについての、相対誤差あり間引き圧縮で用いられる、値がとりうる範囲の最大値と最小値の差を取得します。
        +
        Parameters:
        column - カラム名
        +
        Returns:
        指定のカラム名に対応する設定がある場合はその設定値、ない場合はnull
        +
        Throws:
        +
        java.lang.IllegalArgumentException - 制限に反するカラム名が指定されたことを検知できた場合
        +
        java.lang.NullPointerException - 引数にnullが指定された場合
        +
      • +
      + + + +
        +
      • +

        getCompressionWidth

        +
        public java.lang.Double getCompressionWidth(java.lang.String column)
        +
        指定のカラムについての、絶対誤差あり間引き圧縮における誤差境界の幅を取得します。 +

        誤差境界の幅とは、間引き判定対象の値と間引きした場合に線形補間される値との差として、許容される最大の値です。

        +
        Parameters:
        column - カラム名
        +
        Returns:
        指定のカラム名に対応する設定がある場合はその設定値、ない場合はnull
        +
        Throws:
        +
        java.lang.IllegalArgumentException - 制限に反するカラム名が指定されたことを検知できた場合
        +
        java.lang.NullPointerException - 引数にnullが指定された場合
        +
      • +
      + + + +
        +
      • +

        getCompressionWindowSize

        +
        public int getCompressionWindowSize()
        +
        間引き圧縮において連続して間引きされるロウの最大期間を取得します。
        +
        Returns:
        最大連続間引き期間。無設定の場合は-1
        +
      • +
      + + + +
        +
      • +

        getCompressionWindowSizeUnit

        +
        public TimeUnit getCompressionWindowSizeUnit()
        +
        間引き圧縮において連続して間引きされるロウの最大期間の単位を取得します。
        +
        Returns:
        最大連続間引き期間の単位。無設定の場合はnull
        +
      • +
      + + + +
        +
      • +

        getExpirationDivisionCount

        +
        public int getExpirationDivisionCount()
        +
        期限に到達したロウデータの解放単位と対応する、有効期間に対しての分割数を取得します。
        +
        Returns:
        有効期間に対する分割数。無設定の場合は-1
        Since:
        +
        2.0
        +
        See Also:
        setExpirationDivisionCount(int)
        +
      • +
      + + + +
        +
      • +

        getRowExpirationTime

        +
        public int getRowExpirationTime()
        +
        ロウの有効期限の基準となる経過期間を取得します。
        +
        Returns:
        有効期限の基準となる経過期間。無設定の場合は-1
        +
      • +
      + + + +
        +
      • +

        getRowExpirationTimeUnit

        +
        public TimeUnit getRowExpirationTimeUnit()
        +
        ロウの有効期限の基準とする経過期間の単位を取得します。
        +
        Returns:
        有効期限の基準とする経過期間の単位。無設定の場合はnull
        +
      • +
      + + + +
        +
      • +

        getSpecifiedColumns

        +
        public java.util.Set<java.lang.String> getSpecifiedColumns()
        +
        追加設定のあるカラムの名前をすべて取得します。 +

        返却されたオブジェクトの内容を呼び出し後に変更したとしても、このオブジェクトの内容は変化しません。また、このオブジェクトに対する操作により、返却されたオブジェクトの内容が変化することはありません。

        +
        Returns:
        追加設定のあるカラム名の集合
        +
      • +
      + + + +
        +
      • +

        isCompressionRelative

        +
        public java.lang.Boolean isCompressionRelative(java.lang.String column)
        +
        指定のカラムについて、誤差あり間引き圧縮の誤差判定基準値が相対値かどうかを返します。
        +
        Parameters:
        column - カラム名
        +
        Returns:
        指定のカラム名に対応する設定がある場合はその設定値、ない場合はnull
        +
        Throws:
        +
        java.lang.IllegalArgumentException - 制限に反するカラム名が指定されたことを検知できた場合
        +
        java.lang.NullPointerException - 引数にnullが指定された場合
        +
      • +
      + + + +
        +
      • +

        setAbsoluteHiCompression

        +
        public void setAbsoluteHiCompression(java.lang.String column,
        +                            double width)
        +
        指定のカラムについて、絶対誤差あり間引き圧縮のパラメータを設定します。 +

        異なる圧縮方式が設定されていた場合、間引き圧縮設定に変更されます。

        + +

        パラメータ設定できるカラムの型、ならびに、カラム数の上限は、 setRelativeHiCompression(String, double, double)と同様です。

        +
        Parameters:
        column - カラム名
        width - getCompressionWidth(String)と対応する誤差境界の幅
        +
        Throws:
        +
        java.lang.IllegalArgumentException - 制限に反するカラム名が指定されたことを検知できた場合
        +
        java.lang.NullPointerException - 引数にnullが指定された場合
        +
      • +
      + + + +
        +
      • +

        setCompressionMethod

        +
        public void setCompressionMethod(CompressionMethod compressionMethod)
        +
        時系列圧縮方式の種別を設定します。 +

        異なる圧縮方式に変更した場合、カラム別の設定はすべて解除されます。

        +
        Parameters:
        compressionMethod - 圧縮方式の種別
        +
        Throws:
        +
        java.lang.NullPointerException - 引数にnullが指定された場合
        +
      • +
      + + + +
        +
      • +

        setCompressionWindowSize

        +
        public void setCompressionWindowSize(int compressionWindowSize,
        +                            TimeUnit compressionWindowSizeUnit)
        +
        間引き圧縮において連続して間引きされるロウの最大期間を設定します。 +

        この期間が設定された時系列のロウについて、前方のロウと指定の期間以上時刻が離れていた場合、間引き圧縮として間引き可能な条件を満たしていたとしても、間引かれなくなります。

        + +

        時系列圧縮方式としてCompressionMethod.NOが設定されていた場合、この期間の設定は無視されます。

        + +

        時系列圧縮方式としてCompressionMethod.HIまたは CompressionMethod.SSが設定されており、この期間について設定されなかった場合、TIMESTAMP型の取りうる値の範囲全体が期間として設定されたとみなされます。

        + +

        前方のロウと指定の期間以上時刻が離れておらず、かつ、間引き圧縮として間引き可能な条件を満たしていたとしても、格納先の内部の配置などによっては間引かれない場合があります。

        +
        Parameters:
        compressionWindowSize - 最大連続間引き期間。0 +以下の値は指定できない
        compressionWindowSizeUnit - 最大連続間引き期間を表す単位。 TimeUnit.YEARTimeUnit.MONTHは指定できない
        +
        Throws:
        +
        java.lang.IllegalArgumentException - 範囲外のcompressionWindowSizecompressionWindowSizeUnitが指定された場合
        +
        java.lang.IllegalArgumentException - 制限に反するカラム名が指定されたことを検知できた場合
        +
        java.lang.NullPointerException - 引数にnullが指定された場合
        +
      • +
      + + + +
        +
      • +

        setExpirationDivisionCount

        +
        public void setExpirationDivisionCount(int count)
        +
        有効期間に対する分割数により、期限に到達したロウデータの解放単位を設定します。 +

        分割数を設定すると、期限に到達したロウデータの管理領域を解放するための条件を制御できます。期限に到達したロウデータが分割数に相当する期間だけ集まった時点で解放しようとします。

        + +

        分割数の上限については、GridDB機能リファレンスを参照してください。上限を超えたオプションを指定して時系列を作成することはできません。

        + +

        ロウの有効期限の基準となる経過期間の設定がない場合、この分割数の設定は無視され無設定となります。一方、ロウの有効期限の基準となる経過期間の設定がある場合にこの分割数の設定を省略すると、作成される時系列にはGridDBクラスタ上のデフォルトの分割数が設定されます。

        +
        Parameters:
        count - 有効期間に対する分割数。0以下の値は指定できない
        +
        Throws:
        +
        java.lang.IllegalArgumentException - 0以下の分割数が指定された場合
        Since:
        +
        2.0
        +
      • +
      + + + +
        +
      • +

        setRelativeHiCompression

        +
        public void setRelativeHiCompression(java.lang.String column,
        +                            double rate,
        +                            double span)
        +
        指定のカラムについて、相対誤差あり間引き圧縮のパラメータを設定します。 +

        異なる圧縮方式が設定されていた場合、間引き圧縮設定に変更されます。

        + +

        ratespanの積は、絶対誤差あり間引き圧縮にて getCompressionWidth(String)により得られる値と等価です。

        + +

        パラメータ設定できるカラムの型は、以下のいずれかに限定されます。

        + + +

        1つの時系列に対してパラメータ設定できるカラムの上限数については、 GridDB機能リファレンスを参照してください。上限を超えるオプションは作成できますが、上限を超えたオプションを指定して時系列を作成することはできません。

        +
        Parameters:
        column - カラム名
        rate - spanを基準とした相対誤差境界値。0 +以上1以下でなければならない
        span - 対象のカラムの値がとりうる範囲の最大値と最小値の差
        +
        Throws:
        +
        java.lang.IllegalArgumentException - 制限に反するカラム名が指定されたことを検知できた場合、また、rateに範囲外の値を指定した場合
        +
        java.lang.NullPointerException - 引数にnullが指定された場合
        +
      • +
      + + + +
        +
      • +

        setRowExpiration

        +
        public void setRowExpiration(int elapsedTime,
        +                    TimeUnit timeUnit)
        +
        ロウの有効期限の基準となる経過期間を設定します。 +

        ロウの有効期限の時刻は、ロウキーの時刻から指定の経過期間を加算することで求まります。有効期限の時刻がGridDB上の現在時刻よりも古いロウは、有効期限の切れたロウとみなされます。期限切れのロウは、検索や更新といったロウ操作の対象から外れ、存在しないものとみなされます。対応するGridDB上の内部データは、随時削除されます。

        + +

        有効期限超過の判定に使用される現在時刻は、GridDBの各ノードの実行環境に依存します。したがって、ネットワークの遅延や実行環境の時刻設定のずれなどにより、このVMの時刻より前に期限切れ前のロウにアクセスできなくなる場合や、このVMの時刻より後に期限切れロウにアクセスできる場合があります。意図しないロウの喪失を避けるために、最低限必要な期間よりも大きな値を設定することを推奨します。

        + +

        作成済みの時系列の設定を変更することはできません。

        +
        Parameters:
        elapsedTime - 基準とする経過期間。0以下の値は指定できない
        timeUnit - 経過期間の単位。TimeUnit.YEARTimeUnit.MONTHは指定できない
        +
        Throws:
        +
        java.lang.IllegalArgumentException - 範囲外のelapsedTimetimeUnitが指定された場合
        +
        java.lang.IllegalArgumentException - 制限に反するカラム名が指定されたことを検知できた場合
        +
        java.lang.NullPointerException - 引数にnullが指定された場合
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + +
+
+

Enum TimeUnit

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • java.lang.Enum<TimeUnit>
    • +
    • +
        +
      • com.toshiba.mwcloud.gs.TimeUnit
      • +
      +
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    java.io.Serializable, java.lang.Comparable<TimeUnit>
    +
    +
    +
    +
    public enum TimeUnit
    +extends java.lang.Enum<TimeUnit>
    +
    時系列処理で用いる時間の単位を示します。
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Enum Constant Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Enum Constants 
      Enum Constant and Description
      DAY +
      日単位であることを示します。
      +
      HOUR +
      時間単位であることを示します。
      +
      MICROSECOND +
      マイクロ秒単位であることを示します。
      +
      MILLISECOND +
      ミリ秒単位であることを示します。
      +
      MINUTE +
      分単位であることを示します。
      +
      MONTH +
      月単位であることを示します。
      +
      NANOSECOND +
      ナノ秒単位であることを示します。
      +
      SECOND +
      秒単位であることを示します。
      +
      YEAR +
      年単位であることを示します。
      +
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      static TimeUnitvalueOf(java.lang.String name) +
      Returns the enum constant of this type with the specified name.
      +
      static TimeUnit[]values() +
      Returns an array containing the constants of this enum type, in +the order they are declared.
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Enum

        +clone, compareTo, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf
      • +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +getClass, notify, notifyAll, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Enum Constant Detail

      + + + +
        +
      • +

        DAY

        +
        public static final TimeUnit DAY
        +
        日単位であることを示します。
        +
      • +
      + + + +
        +
      • +

        HOUR

        +
        public static final TimeUnit HOUR
        +
        時間単位であることを示します。
        +
      • +
      + + + +
        +
      • +

        MICROSECOND

        +
        public static final TimeUnit MICROSECOND
        +
        マイクロ秒単位であることを示します。
        +
        Since:
        +
        5.3
        +
      • +
      + + + +
        +
      • +

        MILLISECOND

        +
        public static final TimeUnit MILLISECOND
        +
        ミリ秒単位であることを示します。
        +
      • +
      + + + +
        +
      • +

        MINUTE

        +
        public static final TimeUnit MINUTE
        +
        分単位であることを示します。
        +
      • +
      + + + +
        +
      • +

        MONTH

        +
        public static final TimeUnit MONTH
        +
        月単位であることを示します。
        +
      • +
      + + + +
        +
      • +

        NANOSECOND

        +
        public static final TimeUnit NANOSECOND
        +
        ナノ秒単位であることを示します。
        +
        Since:
        +
        5.3
        +
      • +
      + + + +
        +
      • +

        SECOND

        +
        public static final TimeUnit SECOND
        +
        秒単位であることを示します。
        +
      • +
      + + + +
        +
      • +

        YEAR

        +
        public static final TimeUnit YEAR
        +
        年単位であることを示します。
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        valueOf

        +
        public static TimeUnit valueOf(java.lang.String name)
        +
        Returns the enum constant of this type with the specified name. +The string must match exactly an identifier used to declare an +enum constant in this type. (Extraneous whitespace characters are +not permitted.)
        +
        Parameters:
        name - the name of the enum constant to be returned.
        +
        Returns:
        the enum constant with the specified name
        +
        Throws:
        +
        java.lang.IllegalArgumentException - if this enum type has no constant +with the specified name
        +
        java.lang.NullPointerException - if the argument is null
        +
      • +
      + + + +
        +
      • +

        values

        +
        public static TimeUnit[] values()
        +
        Returns an array containing the constants of this enum type, in +the order they are declared. This method may be used to iterate +over the constants as follows: +
        +for (TimeUnit c : TimeUnit.values())
        +    System.out.println(c);
        +
        +
        Returns:
        an array containing the constants of this enum type, in +the order they are declared
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + +
+
+

Class TimestampUtils

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • com.toshiba.mwcloud.gs.TimestampUtils
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class TimestampUtils
    +extends java.lang.Object
    +
    時刻データを操作するためのユーティリティ機能を提供します。 +

    TQL文の構築や、TQLと同一表記のTIMESTAMP値の処理を補助するために使用できます。

    + +

    実行環境のタイムゾーン、ロケール設定には依存しません。

    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      static java.util.Dateadd(java.util.Date timestamp, + int amount, + TimeUnit timeUnit) +
      時刻に一定の値を加算します。
      +
      static java.util.Dateadd(java.util.Date timestamp, + int amount, + TimeUnit timeUnit, + java.util.TimeZone zone) +
      指定のタイムゾーン設定を用い、時刻に一定の値を加算します。
      +
      static java.util.Datecurrent() +
      現在時刻を求めます。
      +
      static java.util.CalendarcurrentCalendar() +
      現在時刻をCalendarとして求めます。
      +
      static java.lang.Stringformat(java.util.Date timestamp) +
      TQLのTIMESTAMP値表記に従い、時刻の文字列表現を求めます。
      +
      static java.lang.Stringformat(java.util.Date timestamp, + java.util.TimeZone zone) +
      指定のタイムゾーン設定を用い、TQLの通常精度のTIMESTAMP値表記に従って時刻の文字列表現を求めます。
      +
      static java.lang.StringformatPrecise(java.sql.Timestamp timestamp, + java.util.TimeZone zone) +
      指定のタイムゾーン設定を用い、高精度のTIMESTAMP値表記に従って時刻の文字列表現を求めます。
      +
      static java.text.DateFormatgetFormat() +
      TQLのTIMESTAMP値表記と対応する、日付フォーマットを取得します。
      +
      static java.text.DateFormatgetFormat(java.util.TimeZone zone) +
      指定のタイムゾーン設定が適用され、TQLのTIMESTAMP値表記と対応する、日付フォーマットを取得します。
      +
      static java.text.DateFormatgetFormat(java.util.TimeZone zone, + TimeUnit timePrecision) +
      指定のタイムゾーン設定・日時精度が適用され、TQLのTIMESTAMP値表記と対応する、日付フォーマットを取得します。
      +
      static java.util.Dateparse(java.lang.String source) +
      TQLの通常精度のTIMESTAMP値表記に従い、指定の文字列に対応する Dateを求めます。
      +
      static java.sql.TimestampparsePrecise(java.lang.String source) +
      通常精度もしくは高精度のTIMESTAMP値表記に従い、指定の文字列に対応するTimestampを求めます。
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        add

        +
        public static java.util.Date add(java.util.Date timestamp,
        +                 int amount,
        +                 TimeUnit timeUnit)
        +
        時刻に一定の値を加算します。 +

        amountに負の値を指定することで、指定の時刻より前の時刻を求めることができます。

        + +

        マイクロ・ナノ秒精度の単位は未サポートです。

        + +

        現バージョンでは、算出の際に使用されるタイムゾーンはUTCです。

        +
        Parameters:
        timestamp - 対象とする時刻
        amount - 加算する値
        timeUnit - 加算する値の単位
        +
        Returns:
        加算された値
        +
        Throws:
        +
        java.lang.NullPointerException - timestamptimeUnitnullが指定された場合
        +
        java.lang.IllegalArgumentException - 未サポートのtimeUnitが指定された場合
        +
      • +
      + + + +
        +
      • +

        add

        +
        public static java.util.Date add(java.util.Date timestamp,
        +                 int amount,
        +                 TimeUnit timeUnit,
        +                 java.util.TimeZone zone)
        +
        指定のタイムゾーン設定を用い、時刻に一定の値を加算します。 +

        マイクロ・ナノ秒精度の単位は未サポートです。

        + +

        演算に用いる時間の単位によっては、タイムゾーン設定の影響を受けない場合があります。

        +
        Parameters:
        timestamp - 対象とする時刻
        amount - 加算する値
        timeUnit - 加算する値の単位
        zone - 演算に用いるタイムゾーン設定、または、null
        +
        Returns:
        加算された値
        +
        Throws:
        +
        java.lang.NullPointerException - timestamptimeUnitnullが指定された場合
        +
        java.lang.IllegalArgumentException - 未サポートのtimeUnitが指定された場合
        Since:
        +
        4.3
        +
        See Also:
        add(Date, int, TimeUnit)
        +
      • +
      + + + +
        +
      • +

        current

        +
        public static java.util.Date current()
        +
        現在時刻を求めます。
        +
      • +
      + + + +
        +
      • +

        currentCalendar

        +
        public static java.util.Calendar currentCalendar()
        +
        現在時刻をCalendarとして求めます。 +

        現バージョンでは、タイムゾーンは常にUTCに設定されます。

        +
      • +
      + + + +
        +
      • +

        format

        +
        public static java.lang.String format(java.util.Date timestamp)
        +
        TQLのTIMESTAMP値表記に従い、時刻の文字列表現を求めます。 +

        現バージョンでは、変換の際に使用されるタイムゾーンはUTCです。

        +
        Parameters:
        timestamp - 対象とする時刻
        +
        Throws:
        +
        java.lang.NullPointerException - 引数にnullが指定された場合
        +
      • +
      + + + +
        +
      • +

        format

        +
        public static java.lang.String format(java.util.Date timestamp,
        +                      java.util.TimeZone zone)
        +
        指定のタイムゾーン設定を用い、TQLの通常精度のTIMESTAMP値表記に従って時刻の文字列表現を求めます。
        +
        Parameters:
        timestamp - 対象とする時刻
        zone - 演算に用いるタイムゾーン設定、または、null
        +
        Returns:
        対応する文字列表現
        +
        Throws:
        +
        java.lang.NullPointerException - timestamp引数にnullが指定された場合
        Since:
        +
        4.3
        +
        See Also:
        format(Date)
        +
      • +
      + + + +
        +
      • +

        formatPrecise

        +
        public static java.lang.String formatPrecise(java.sql.Timestamp timestamp,
        +                             java.util.TimeZone zone)
        +
        指定のタイムゾーン設定を用い、高精度のTIMESTAMP値表記に従って時刻の文字列表現を求めます。
        +
        Parameters:
        timestamp - 対象とする時刻
        zone - 演算に用いるタイムゾーン設定、または、null
        +
        Returns:
        対応する文字列表現
        +
        Throws:
        +
        java.lang.NullPointerException - timestamp引数にnullが指定された場合
        Since:
        +
        5.3
        +
        See Also:
        format(Date)
        +
      • +
      + + + +
        +
      • +

        getFormat

        +
        public static java.text.DateFormat getFormat()
        +
        TQLのTIMESTAMP値表記と対応する、日付フォーマットを取得します。 +

        現バージョンでは、タイムゾーンは常にUTCに設定されます。

        +
        Returns:
        日付フォーマット +

        年の値が負となる時刻は扱えません。

        +
      • +
      + + + +
        +
      • +

        getFormat

        +
        public static java.text.DateFormat getFormat(java.util.TimeZone zone)
        +
        指定のタイムゾーン設定が適用され、TQLのTIMESTAMP値表記と対応する、日付フォーマットを取得します。
        +
        Parameters:
        zone - 適用対象のタイムゾーン設定、または、null
        +
        Returns:
        日付フォーマット
        Since:
        +
        4.3
        +
      • +
      + + + +
        +
      • +

        getFormat

        +
        public static java.text.DateFormat getFormat(java.util.TimeZone zone,
        +                             TimeUnit timePrecision)
        +
        指定のタイムゾーン設定・日時精度が適用され、TQLのTIMESTAMP値表記と対応する、日付フォーマットを取得します。 +

        日時精度の指定は、次のいずれかのみをサポートします。

        +
        +
        Parameters:
        zone - 適用対象のタイムゾーン設定、または、null
        timePrecision - 適用対象の日時精度、または、null
        +
        Returns:
        日付フォーマット
        +
        Throws:
        +
        java.lang.IllegalArgumentException - 未サポートの日時精度が指定された場合
        Since:
        +
        5.3
        +
      • +
      + + + +
        +
      • +

        parse

        +
        public static java.util.Date parse(java.lang.String source)
        +                            throws java.text.ParseException
        +
        TQLの通常精度のTIMESTAMP値表記に従い、指定の文字列に対応する Dateを求めます。
        +
        Parameters:
        source - 対象とする時刻の文字列表現
        +
        Returns:
        指定の文字列に対応するDate
        +
        Throws:
        +
        java.text.ParseException - 時刻の文字列表記と一致しない文字列が指定された場合
        +
        java.lang.NullPointerException - 引数にnullが指定された場合
        +
      • +
      + + + +
        +
      • +

        parsePrecise

        +
        public static java.sql.Timestamp parsePrecise(java.lang.String source)
        +                                       throws java.text.ParseException
        +
        通常精度もしくは高精度のTIMESTAMP値表記に従い、指定の文字列に対応するTimestampを求めます。
        +
        Parameters:
        source - 対象とする時刻の文字列表現
        +
        Returns:
        指定の文字列に対応するTimestamp
        +
        Throws:
        +
        java.text.ParseException - 時刻の文字列表記と一致しない文字列が指定された場合
        +
        java.lang.NullPointerException - 引数にnullが指定された場合
        Since:
        +
        5.3
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + +
+
+

Annotation Type TransientRowField

+
+
+
+
    +
  • +
    +
    +
    @Retention(value=RUNTIME)
    +@Target(value={FIELD,METHOD})
    +public @interface TransientRowField
    +
    Containerの処理において、マッピング対象外のロウフィールドであることを宣言します。
    +
  • +
+
+
+ + + +
+
+

Enum TriggerInfo.EventType

+
+
+
    +
  • java.lang.Object
  • +
  • + +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    java.io.Serializable, java.lang.Comparable<TriggerInfo.EventType>
    +
    +
    +
    Enclosing class:
    +
    TriggerInfo
    +
    +
    +
    +
    public static enum TriggerInfo.EventType
    +extends java.lang.Enum<TriggerInfo.EventType>
    +
    トリガで監視対象とする更新操作種別を表します。
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Enum Constant Summary

      + + + + + + + + + + + +
      Enum Constants 
      Enum Constant and Description
      DELETE +
      コンテナに対するロウ削除を示します。
      +
      PUT +
      コンテナに対するロウ新規作成または更新を示します。
      +
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      static TriggerInfo.EventTypevalueOf(java.lang.String name) +
      Returns the enum constant of this type with the specified name.
      +
      static TriggerInfo.EventType[]values() +
      Returns an array containing the constants of this enum type, in +the order they are declared.
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Enum

        +clone, compareTo, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf
      • +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +getClass, notify, notifyAll, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Enum Constant Detail

      + + + +
        +
      • +

        DELETE

        +
        public static final TriggerInfo.EventType DELETE
        +
        コンテナに対するロウ削除を示します。
        +
      • +
      + + + +
        +
      • +

        PUT

        +
        public static final TriggerInfo.EventType PUT
        +
        コンテナに対するロウ新規作成または更新を示します。
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        valueOf

        +
        public static TriggerInfo.EventType valueOf(java.lang.String name)
        +
        Returns the enum constant of this type with the specified name. +The string must match exactly an identifier used to declare an +enum constant in this type. (Extraneous whitespace characters are +not permitted.)
        +
        Parameters:
        name - the name of the enum constant to be returned.
        +
        Returns:
        the enum constant with the specified name
        +
        Throws:
        +
        java.lang.IllegalArgumentException - if this enum type has no constant +with the specified name
        +
        java.lang.NullPointerException - if the argument is null
        +
      • +
      + + + +
        +
      • +

        values

        +
        public static TriggerInfo.EventType[] values()
        +
        Returns an array containing the constants of this enum type, in +the order they are declared. This method may be used to iterate +over the constants as follows: +
        +for (TriggerInfo.EventType c : TriggerInfo.EventType.values())
        +    System.out.println(c);
        +
        +
        Returns:
        an array containing the constants of this enum type, in +the order they are declared
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + +
+
+

Enum TriggerInfo.Type

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • java.lang.Enum<TriggerInfo.Type>
    • +
    • +
        +
      • com.toshiba.mwcloud.gs.TriggerInfo.Type
      • +
      +
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    java.io.Serializable, java.lang.Comparable<TriggerInfo.Type>
    +
    +
    +
    Enclosing class:
    +
    TriggerInfo
    +
    +
    +
    +
    public static enum TriggerInfo.Type
    +extends java.lang.Enum<TriggerInfo.Type>
    +
    トリガの種別を表します。
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Enum Constant Summary

      + + + + + + + + + + + +
      Enum Constants 
      Enum Constant and Description
      JMS +
      コンテナの更新時にJava Message Service(JMS)で通知するトリガ種別を示します。
      +
      REST +
      コンテナの更新時にRESTで通知するトリガ種別を示します。
      +
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      static TriggerInfo.TypevalueOf(java.lang.String name) +
      Returns the enum constant of this type with the specified name.
      +
      static TriggerInfo.Type[]values() +
      Returns an array containing the constants of this enum type, in +the order they are declared.
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Enum

        +clone, compareTo, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf
      • +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +getClass, notify, notifyAll, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Enum Constant Detail

      + + + +
        +
      • +

        JMS

        +
        public static final TriggerInfo.Type JMS
        +
        コンテナの更新時にJava Message Service(JMS)で通知するトリガ種別を示します。
        +
      • +
      + + + +
        +
      • +

        REST

        +
        public static final TriggerInfo.Type REST
        +
        コンテナの更新時にRESTで通知するトリガ種別を示します。
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        valueOf

        +
        public static TriggerInfo.Type valueOf(java.lang.String name)
        +
        Returns the enum constant of this type with the specified name. +The string must match exactly an identifier used to declare an +enum constant in this type. (Extraneous whitespace characters are +not permitted.)
        +
        Parameters:
        name - the name of the enum constant to be returned.
        +
        Returns:
        the enum constant with the specified name
        +
        Throws:
        +
        java.lang.IllegalArgumentException - if this enum type has no constant +with the specified name
        +
        java.lang.NullPointerException - if the argument is null
        +
      • +
      + + + +
        +
      • +

        values

        +
        public static TriggerInfo.Type[] values()
        +
        Returns an array containing the constants of this enum type, in +the order they are declared. This method may be used to iterate +over the constants as follows: +
        +for (TriggerInfo.Type c : TriggerInfo.Type.values())
        +    System.out.println(c);
        +
        +
        Returns:
        an array containing the constants of this enum type, in +the order they are declared
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + +
+
+

Class TriggerInfo

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • com.toshiba.mwcloud.gs.TriggerInfo
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class TriggerInfo
    +extends java.lang.Object
    +
    コンテナの更新を監視するためのトリガ情報を表します。 +

    トリガ名の表記などの内容の妥当性について、必ずしも検査するとは限りません。

    +
    Since:
    +
    1.5
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Nested Class Summary

      + + + + + + + + + + + + + + +
      Nested Classes 
      Modifier and TypeClass and Description
      static class TriggerInfo.EventType +
      トリガで監視対象とする更新操作種別を表します。
      +
      static class TriggerInfo.Type +
      トリガの種別を表します。
      +
      +
    • +
    + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      TriggerInfo() +
      トリガ情報を生成します。
      +
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      java.lang.StringgetJMSDestinationName() +
      JMS通知で使用するデスティネーション名を取得します。
      +
      java.lang.StringgetJMSDestinationType() +
      JMS通知で使用するデスティネーション種別を取得します。
      +
      java.lang.StringgetName() +
      トリガ名を取得します。
      +
      java.lang.StringgetPassword() +
      通知先サーバに接続する際のパスワードを取得します。
      +
      java.util.Set<java.lang.String>getTargetColumns() +
      トリガ発火時に通知対象とするカラム名を取得します。
      +
      java.util.Set<TriggerInfo.EventType>getTargetEvents() +
      トリガ発火対象とする更新操作種別を取得します。
      +
      TriggerInfo.TypegetType() +
      トリガ種別を取得します。
      +
      java.net.URIgetURI() +
      トリガ発火時の通知先URIを取得します。
      +
      java.lang.StringgetUser() +
      通知先サーバに接続する際のユーザ名を取得します。
      +
      voidsetJMSDestinationName(java.lang.String destinationName) +
      JMS通知で使用するデスティネーション名を設定します。
      +
      voidsetJMSDestinationType(java.lang.String destinationType) +
      JMS通知で使用するデスティネーション種別を設定します。
      +
      voidsetName(java.lang.String name) +
      トリガ名を設定します。
      +
      voidsetPassword(java.lang.String password) +
      通知先サーバに接続する際のパスワードを設定します。
      +
      voidsetTargetColumns(java.util.Set<java.lang.String> columnSet) +
      トリガ発火時に通知対象とするカラム名を設定します。
      +
      voidsetTargetEvents(java.util.Set<TriggerInfo.EventType> eventSet) +
      トリガ発火対象とする更新操作種別を設定します。
      +
      voidsetType(TriggerInfo.Type type) +
      トリガ種別を設定します。
      +
      voidsetURI(java.net.URI uri) +
      トリガ発火時の通知先URIを設定します。
      +
      voidsetUser(java.lang.String user) +
      通知先サーバに接続する際のユーザ名を設定します。
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        TriggerInfo

        +
        public TriggerInfo()
        +
        トリガ情報を生成します。
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        getJMSDestinationName

        +
        public java.lang.String getJMSDestinationName()
        +
        JMS通知で使用するデスティネーション名を取得します。
        +
      • +
      + + + +
        +
      • +

        getJMSDestinationType

        +
        public java.lang.String getJMSDestinationType()
        +
        JMS通知で使用するデスティネーション種別を取得します。
        +
      • +
      + + + +
        +
      • +

        getName

        +
        public java.lang.String getName()
        +
        トリガ名を取得します。
        +
      • +
      + + + +
        +
      • +

        getPassword

        +
        public java.lang.String getPassword()
        +
        通知先サーバに接続する際のパスワードを取得します。 +

        現バージョンでは、JMS通知でJMSサーバへ接続する場合にのみ使用されます。

        +
      • +
      + + + +
        +
      • +

        getTargetColumns

        +
        public java.util.Set<java.lang.String> getTargetColumns()
        +
        トリガ発火時に通知対象とするカラム名を取得します。 +

        返却された値に対して変更操作を行った場合、 UnsupportedOperationExceptionが発生することがあります。また、このオブジェクトに対する操作により、返却されたオブジェクトの内容が変化することはありません。

        +
      • +
      + + + +
        +
      • +

        getTargetEvents

        +
        public java.util.Set<TriggerInfo.EventType> getTargetEvents()
        +
        トリガ発火対象とする更新操作種別を取得します。 +

        返却された値に対して変更操作を行った場合、 UnsupportedOperationExceptionが発生することがあります。また、このオブジェクトに対する操作により、返却されたオブジェクトの内容が変化することはありません。

        +
      • +
      + + + +
        +
      • +

        getType

        +
        public TriggerInfo.Type getType()
        +
        トリガ種別を取得します。
        +
      • +
      + + + +
        +
      • +

        getURI

        +
        public java.net.URI getURI()
        +
        トリガ発火時の通知先URIを取得します。
        +
      • +
      + + + +
        +
      • +

        getUser

        +
        public java.lang.String getUser()
        +
        通知先サーバに接続する際のユーザ名を取得します。 +

        現バージョンでは、JMS通知でJMSサーバへ接続する場合にのみ使用されます。

        +
      • +
      + + + +
        +
      • +

        setJMSDestinationName

        +
        public void setJMSDestinationName(java.lang.String destinationName)
        +
        JMS通知で使用するデスティネーション名を設定します。 +

        nullが指定された場合、 Container.createTrigger(TriggerInfo)の実行時にエラーとなります。

        +
      • +
      + + + +
        +
      • +

        setJMSDestinationType

        +
        public void setJMSDestinationType(java.lang.String destinationType)
        +
        JMS通知で使用するデスティネーション種別を設定します。 +

        "queue"または"topic"が指定できます。 ASCIIの大文字・小文字表記の違いは区別されます。

        + +

        "queue"または"topic"以外が指定された場合、 Container.createTrigger(TriggerInfo)の実行時にエラーとなります。

        +
      • +
      + + + +
        +
      • +

        setName

        +
        public void setName(java.lang.String name)
        +
        トリガ名を設定します。 +

        空文字列・nullが設定された場合、 Container.createTrigger(TriggerInfo)の実行時にエラーとなります。

        +
      • +
      + + + +
        +
      • +

        setPassword

        +
        public void setPassword(java.lang.String password)
        +
        通知先サーバに接続する際のパスワードを設定します。 +

        現バージョンでは、JMS通知でJMSサーバへ接続する場合にのみ使用されます。

        + +

        設定がない、または空文字列・nullが設定された場合、空文字列をパスワードとして使用し接続します。

        + +

        ユーザ名・パスワードとも設定がない、または空文字列・nullが設定された場合、ユーザ名・パスワードを使用せずに接続します。

        +
      • +
      + + + +
        +
      • +

        setTargetColumns

        +
        public void setTargetColumns(java.util.Set<java.lang.String> columnSet)
        +
        トリガ発火時に通知対象とするカラム名を設定します。 +

        通知対象のカラムを特定する際、ASCIIの大文字・小文字表記の違いは区別されません。同一のカラムを指す複数のカラム名を含めても、そのカラムの値は通知には一度しか設定されません。

        + +

        カラム名の指定がない場合、通知にはいずれのカラムの値も設定されません。

        + +

        指定したオブジェクトの内容を呼び出し後に変更したとしても、このオブジェクトの内容は変化しません。

        +
        Throws:
        +
        java.lang.NullPointerException - 引数にnullが指定された場合
        +
      • +
      + + + +
        +
      • +

        setTargetEvents

        +
        public void setTargetEvents(java.util.Set<TriggerInfo.EventType> eventSet)
        +
        トリガ発火対象とする更新操作種別を設定します。 +

        複数の更新操作を設定した場合は、そのいずれかが行われた場合にトリガが発火します。

        + +

        更新操作の設定がない場合、 Container.createTrigger(TriggerInfo)の実行時にエラーとなります。

        + +

        指定したオブジェクトの内容を呼び出し後に変更したとしても、このオブジェクトの内容は変化しません。

        +
        Throws:
        +
        java.lang.NullPointerException - 引数にnullが指定された場合
        +
      • +
      + + + + + + + +
        +
      • +

        setURI

        +
        public void setURI(java.net.URI uri)
        +
        トリガ発火時の通知先URIを設定します。 +

        nullが設定された場合、 Container.createTrigger(TriggerInfo)の実行時にエラーとなります。

        +
      • +
      + + + +
        +
      • +

        setUser

        +
        public void setUser(java.lang.String user)
        +
        通知先サーバに接続する際のユーザ名を設定します。 +

        現バージョンでは、JMS通知でJMSサーバへ接続する場合にのみ使用されます。

        + +

        設定がない、または空文字列・nullが設定された場合、空文字列をユーザ名として使用し接続します。

        + +

        ユーザ名・パスワードとも設定がない、または空文字列・null +が設定された場合、ユーザ名・パスワードを使用せずに接続します。

        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+

Serialized Form

+
+
+
    +
  • +

    Package com.toshiba.mwcloud.gs

    +
      +
    • + + +

      Class com.toshiba.mwcloud.gs.GSException extends java.io.IOException implements Serializable

      +
      +
      serialVersionUID:
      +
      -7261622831192521426L
      +
      +
        +
      • + + +

        Serialized Fields

        +
          +
        • +

          errorCode

          +
          int errorCode
          +
        • +
        • +

          errorName

          +
          java.lang.String errorName
          +
        • +
        • +

          description

          +
          java.lang.String description
          +
        • +
        • +

          parameters

          +
          java.util.Map<K,V> parameters
          +
        • +
        +
      • +
      +
    • +
    • + + +

      Class com.toshiba.mwcloud.gs.GSRecoverableException extends GSException implements Serializable

      +
      +
      serialVersionUID:
      +
      1241771194878438360L
      +
      +
    • +
    • + + +

      Class com.toshiba.mwcloud.gs.GSTimeoutException extends GSException implements Serializable

      +
      +
      serialVersionUID:
      +
      -2321647495394140580L
      +
      +
    • +
    +
  • +
+
+
+ + +
+ +
+ +
+

1.2 APIサンプル

+
+ + + +
+ +
+

1.2.1 基本: コレクション操作のサンプル

+
package test;
+
+
+import java.util.Arrays;
+import java.util.Properties;
+
+import com.toshiba.mwcloud.gs.Collection;
+import com.toshiba.mwcloud.gs.GSException;
+import com.toshiba.mwcloud.gs.GridStore;
+import com.toshiba.mwcloud.gs.GridStoreFactory;
+import com.toshiba.mwcloud.gs.Query;
+import com.toshiba.mwcloud.gs.RowKey;
+import com.toshiba.mwcloud.gs.RowSet;
+
+
+// コレクションデータの操作
+public class Sample1 {
+
+	static class Person {
+		@RowKey String name;
+		boolean status;
+		long count;
+		byte[] lob;
+	}
+
+	public static void main(String[] args) throws GSException {
+
+		// GridStoreインスタンスの取得
+		Properties props = new Properties();
+		props.setProperty("notificationAddress", args[0]);
+		props.setProperty("notificationPort", args[1]);
+		props.setProperty("clusterName", args[2]);
+		props.setProperty("user", args[3]);
+		props.setProperty("password", args[4]);
+		GridStore store = GridStoreFactory.getInstance().getGridStore(props);
+
+		// コレクションの作成
+		Collection<String, Person> col = store.putCollection("col01", Person.class);
+
+		// カラムに索引を設定
+		col.createIndex("count");
+
+		// 自動コミットモードをオフ
+		col.setAutoCommit(false);
+
+		// Rowのデータを用意
+		Person person = new Person();
+		person.name = "name01";
+		person.status = false;
+		person.count = 1;
+		person.lob = new byte[] { 65, 66, 67, 68, 69, 70, 71, 72, 73, 74 };
+
+		// KV形式でRowを操作: RowKeyは"name01"
+		boolean update = true;
+		col.put(person);	// 登録
+		person = col.get(person.name, update);	// 取得(更新用にロック)
+		col.remove(person.name);	// 削除
+
+		// KV形式でRowを操作: RowKeyは"name02"
+		col.put("name02", person);	// 登録(RowKeyを指定)
+
+		// トランザクションの確定(ロック解除)
+		col.commit();
+
+		// コレクション内のRowを検索
+		Query<Person> query = col.query("select * where name = 'name02'");
+
+		// 検索したRowの取得と更新
+		RowSet<Person> rs = query.fetch(update);
+		while (rs.hasNext()) {
+			// 検索したRowの更新
+			Person person1 = rs.next();
+			person1.count += 1;
+			rs.update(person1);
+
+			System.out.println("Person:" +
+					" name=" + person1.name +
+					" status=" + person1.status +
+					" count=" + person1.count +
+					" lob=" + Arrays.toString(person1.lob));
+		}
+
+		// トランザクションの確定
+		col.commit();
+
+		// リソースの解放
+		store.close();
+	}
+
+}
+
+ + +
+ +
+ +
+

1.2.2 基本: 時系列操作のサンプル ― 登録・範囲取得

+
package test;
+
+
+import java.util.Date;
+import java.util.Properties;
+
+import com.toshiba.mwcloud.gs.GSException;
+import com.toshiba.mwcloud.gs.GridStore;
+import com.toshiba.mwcloud.gs.GridStoreFactory;
+import com.toshiba.mwcloud.gs.RowKey;
+import com.toshiba.mwcloud.gs.RowSet;
+import com.toshiba.mwcloud.gs.TimeSeries;
+import com.toshiba.mwcloud.gs.TimestampUtils;
+import com.toshiba.mwcloud.gs.TimeUnit;
+
+
+// 時系列データの登録と範囲取得
+public class Sample2 {
+
+	static class Point {
+		@RowKey Date timestamp;
+		boolean active;
+		double voltage;
+	}
+
+	public static void main(String[] args) throws GSException {
+
+		// GridStoreインスタンスの取得
+		Properties props = new Properties();
+		props.setProperty("notificationAddress", args[0]);
+		props.setProperty("notificationPort", args[1]);
+		props.setProperty("clusterName", args[2]);
+		props.setProperty("user", args[3]);
+		props.setProperty("password", args[4]);
+		GridStore store = GridStoreFactory.getInstance().getGridStore(props);
+
+		// 時系列の作成 (既存の場合は取得のみ)
+		TimeSeries<Point> ts = store.putTimeSeries("point01", Point.class);
+
+		// 時系列要素のデータを用意
+		Point point = new Point();
+		point.active = false;
+		point.voltage = 100;
+
+		// 時系列要素の登録(グリッドストア側で時刻設定)
+		ts.append(point);
+
+		// 指定区間の時系列の取得: 6時間前から直近まで
+		Date now = TimestampUtils.current();
+		Date before = TimestampUtils.add(now, -6, TimeUnit.HOUR);
+
+		RowSet<Point> rs = ts.query(before, now).fetch();
+
+		while (rs.hasNext()) {
+			point = rs.next();
+
+			System.out.println(
+					"Time=" + TimestampUtils.format(point.timestamp) +
+					" Active=" + point.active +
+					" Voltage=" + point.voltage);
+		}
+
+		// リソースの解放
+		store.close();
+	}
+
+}
+
+ + +
+ +
+ +
+

1.2.3 基本: 時系列操作のサンプル ― 検索・集計

+
package test;
+
+
+import java.util.Date;
+import java.util.Properties;
+
+import com.toshiba.mwcloud.gs.Aggregation;
+import com.toshiba.mwcloud.gs.AggregationResult;
+import com.toshiba.mwcloud.gs.GSException;
+import com.toshiba.mwcloud.gs.GridStore;
+import com.toshiba.mwcloud.gs.GridStoreFactory;
+import com.toshiba.mwcloud.gs.Query;
+import com.toshiba.mwcloud.gs.RowKey;
+import com.toshiba.mwcloud.gs.RowSet;
+import com.toshiba.mwcloud.gs.TimeOperator;
+import com.toshiba.mwcloud.gs.TimeSeries;
+import com.toshiba.mwcloud.gs.TimestampUtils;
+import com.toshiba.mwcloud.gs.TimeUnit;
+
+
+// 時系列データの検索と集計
+public class Sample3 {
+
+	static class Point {
+		@RowKey Date timestamp;
+		boolean active;
+		double voltage;
+	}
+
+	public static void main(String[] args) throws GSException {
+
+		// 読み取りのみなので、一貫性レベルを緩和(デフォルトはIMMEDIATE)
+		Properties props = new Properties();
+		props.setProperty("notificationAddress", args[0]);
+		props.setProperty("notificationPort", args[1]);
+		props.setProperty("clusterName", args[2]);
+		props.setProperty("user", args[3]);
+		props.setProperty("password", args[4]);
+		props.setProperty("consistency", "EVENTUAL");
+
+		// GridStoreインスタンスの取得
+		GridStore store = GridStoreFactory.getInstance().getGridStore(props);
+
+		// 時系列の取得
+		// ※Sample2と同じPointクラスを使用
+		TimeSeries<Point> ts = store.getTimeSeries("point01", Point.class);
+
+		// 停止中にもかかわらず電圧が基準値以上の箇所を検索
+		Query<Point> query = ts.query(
+				"select * from point01" +
+				" where not active and voltage > 50");
+		RowSet<Point> rs = query.fetch();
+
+		while (rs.hasNext()) {
+			// 各異常ポイントについて調査
+
+			Point hotPoint = rs.next();
+			Date hot = hotPoint.timestamp;
+
+			// 10分前付近のデータを取得
+			Date start = TimestampUtils.add(hot, -10, TimeUnit.MINUTE);
+			Point startPoint = ts.get(start, TimeOperator.NEXT);
+
+			// 前後10分間の平均値を計算
+			Date end = TimestampUtils.add(hot, 10, TimeUnit.MINUTE);
+			AggregationResult avg = ts.aggregate(
+					start, end, "voltage", Aggregation.AVERAGE);
+
+			System.out.println(
+					"[Alert] " + TimestampUtils.format(hot) +
+					" start=" + startPoint.voltage +
+					" hot=" + hotPoint.voltage +
+					" avg=" + avg.getDouble());
+		}
+
+		// リソースの解放
+		store.close();
+	}
+
+}
+
+ + +
+ +
+ +
+

1.2.4 応用: コレクション操作のサンプル ― コンテナ情報を用いてスキーマ定義

+
package test;
+
+
+import java.util.Arrays;
+import java.util.Properties;
+
+import com.toshiba.mwcloud.gs.ColumnInfo;
+import com.toshiba.mwcloud.gs.Container;
+import com.toshiba.mwcloud.gs.ContainerInfo;
+import com.toshiba.mwcloud.gs.ContainerType;
+import com.toshiba.mwcloud.gs.GSException;
+import com.toshiba.mwcloud.gs.GSType;
+import com.toshiba.mwcloud.gs.GridStore;
+import com.toshiba.mwcloud.gs.GridStoreFactory;
+import com.toshiba.mwcloud.gs.Query;
+import com.toshiba.mwcloud.gs.Row;
+import com.toshiba.mwcloud.gs.RowSet;
+
+
+// コンテナ情報を用いてスキーマ定義
+public class Sample4 {
+
+	public static void main(String[] args) throws GSException {
+
+		// GridStoreインスタンスの取得
+		Properties props = new Properties();
+		props.setProperty("notificationAddress", args[0]);
+		props.setProperty("notificationPort", args[1]);
+		props.setProperty("clusterName", args[2]);
+		props.setProperty("user", args[3]);
+		props.setProperty("password", args[4]);
+		GridStore store = GridStoreFactory.getInstance().getGridStore(props);
+
+		// コンテナ情報を作成
+		ContainerInfo info = new ContainerInfo();
+		info.setType(ContainerType.COLLECTION);
+		info.setName("col01");
+		info.setColumnInfoList(Arrays.asList(
+				new ColumnInfo("name", GSType.STRING),
+				new ColumnInfo("status", GSType.BOOL),
+				new ColumnInfo("count", GSType.LONG),
+				new ColumnInfo("lob", GSType.BYTE_ARRAY)));
+		info.setRowKeyAssigned(true);
+
+		// コレクションの作成
+		Container<String, Row> container = store.putContainer(null, info, false);
+
+		// カラムに索引を設定
+		container.createIndex("count");
+
+		// 自動コミットモードをオフ
+		container.setAutoCommit(false);
+
+		// Rowのデータを用意
+		Row row;
+		{
+			String name = "name01";
+			boolean status = false;
+			long count = 1;
+			byte[] lob = new byte[] { 65, 66, 67, 68, 69, 70, 71, 72, 73, 74 };
+
+			row = container.createRow();
+			row.setString(0, name);
+			row.setBool(1, status);
+			row.setLong(2, count);
+			row.setByteArray(3, lob);
+		}
+
+		// KV形式でRowを操作: RowKeyは"name01"
+		boolean update = true;
+		container.put(row);	// 登録
+		row = container.get("name01", update);	// 取得(更新用にロック)
+		container.remove("name01");	// 削除
+
+		// KV形式でRowを操作: RowKeyは"name02"
+		container.put("name02", row);	// 登録(RowKeyを指定)
+
+		// トランザクションの確定(ロック解除)
+		container.commit();
+
+		// コレクション内のRowを検索
+		Query<Row> query = container.query("select * where name = 'name02'");
+
+		// 検索したRowの取得と更新
+		RowSet<Row> rs = query.fetch(update);
+		while (rs.hasNext()) {
+			// 検索したRowの更新
+			row = rs.next();
+
+			String name = row.getString(0);
+			boolean status = row.getBool(1);
+			long count = row.getLong(2);
+			byte[] lob = row.getByteArray(3);
+			count += 1;
+			rs.update(row);
+
+			System.out.println("Person:" +
+					" name=" + name +
+					" status=" + status +
+					" count=" + count +
+					" lob=" + Arrays.toString(lob));
+		}
+
+		// トランザクションの確定
+		container.commit();
+
+		// リソースの解放
+		store.close();
+	}
+
+}
+
+ + +
+ +
+ +
+

1.2.5 応用: コレクション操作のサンプル ― 複数コンテナ一括操作

+
package test;
+
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+
+import com.toshiba.mwcloud.gs.ColumnInfo;
+import com.toshiba.mwcloud.gs.Container;
+import com.toshiba.mwcloud.gs.ContainerInfo;
+import com.toshiba.mwcloud.gs.ContainerType;
+import com.toshiba.mwcloud.gs.GSException;
+import com.toshiba.mwcloud.gs.GSType;
+import com.toshiba.mwcloud.gs.GridStore;
+import com.toshiba.mwcloud.gs.GridStoreFactory;
+import com.toshiba.mwcloud.gs.Query;
+import com.toshiba.mwcloud.gs.Row;
+import com.toshiba.mwcloud.gs.RowKeyPredicate;
+import com.toshiba.mwcloud.gs.RowSet;
+
+
+// 複数コンテナ一括操作
+public class Sample5 {
+
+	public static void main(String[] args) throws GSException {
+		final List<String> containerNameList = Arrays.asList(
+				"col01", "col02", "col03", "col04", "col05");
+		final List<String> keyList = Arrays.asList(
+				"name01", "name02");
+
+		// GridStoreインスタンスの取得
+		Properties props = new Properties();
+		props.setProperty("notificationAddress", args[0]);
+		props.setProperty("notificationPort", args[1]);
+		props.setProperty("clusterName", args[2]);
+		props.setProperty("user", args[3]);
+		props.setProperty("password", args[4]);
+		GridStore store = GridStoreFactory.getInstance().getGridStore(props);
+
+		// コンテナ情報を作成
+		ContainerInfo info = new ContainerInfo();
+		info.setType(ContainerType.COLLECTION);
+		info.setColumnInfoList(Arrays.asList(
+				new ColumnInfo("name", GSType.STRING),
+				new ColumnInfo("status", GSType.BOOL),
+				new ColumnInfo("count", GSType.LONG),
+				new ColumnInfo("lob", GSType.BYTE_ARRAY)));
+		info.setRowKeyAssigned(true);
+
+		// コレクションの作成
+		List<Container<String, Row>> containerList =
+				new ArrayList<Container<String, Row>>();
+		for (String containerName : containerNameList) {
+			Container<String, Row> container =
+					store.putContainer(containerName, info, false);
+			containerList.add(container);
+		}
+
+		// 複数コレクションのRowを一括登録
+		{
+			boolean status = false;
+			long count = 1;
+			byte[] lob = new byte[] { 65, 66, 67, 68, 69, 70, 71, 72, 73, 74 };
+
+			Map<String, List<Row>> inMap = new HashMap<String, List<Row>>();
+			for (String containerName : containerNameList) {
+				List<Row> rowList = new ArrayList<Row>();
+				for (String key : keyList) {
+					Row row = store.createRow(info);
+					row.setString(0, key);
+					row.setBool(1, status);
+					row.setLong(2, count);
+					row.setByteArray(3, lob);
+					count++;
+
+					rowList.add(row);
+				}
+				inMap.put(containerName, rowList);
+			}
+			store.multiPut(inMap);
+		}
+
+		// 複数コレクションのRowを一括取得
+		{
+			// 取得条件を構築
+			Map<String, RowKeyPredicate<String>> predMap =
+					new HashMap<String, RowKeyPredicate<String>>();
+			for (String containerName : containerNameList) {
+				RowKeyPredicate<String> predicate =
+						RowKeyPredicate.create(String.class);
+				for (String key : keyList) {
+					predicate.add(key);
+				}
+				predMap.put(containerName, predicate);
+			}
+
+			Map<String, List<Row>> outMap = store.multiGet(predMap);
+
+			// 取得結果を出力
+			for (Map.Entry<String, List<Row>> entry : outMap.entrySet()) {
+				for (Row row : entry.getValue()) {
+					String name = row.getString(0);
+					long count = row.getLong(2);
+
+					System.out.println("Person[" + entry.getKey() + "]:" +
+							" name=" + name +
+							" count=" + count);
+				}
+			}
+		}
+
+		// 複数コレクションのRowを一括検索(クエリ使用)
+		{
+			List<Query<Row>> queryList = new ArrayList<Query<Row>>();
+			for (Container<String, Row> container : containerList) {
+				String tql = "select * where count >= 0";
+				queryList.add(container.query(tql));
+			}
+
+			store.fetchAll(queryList);
+
+			for (int i = 0; i < queryList.size(); i++) {
+				Query<Row> query = queryList.get(i);
+				RowSet<Row> rs = query.getRowSet();
+				while (rs.hasNext()) {
+					Row row = rs.next();
+
+					String name = row.getString(0);
+					boolean status = row.getBool(1);
+					long count = row.getLong(2);
+					byte[] lob = row.getByteArray(3);
+
+					System.out.println("Person[" + i + "]:" +
+							" name=" + name +
+							" status=" + status +
+							" count=" + count +
+							" lob=" + Arrays.toString(lob));
+				}
+			}
+		}
+
+		// リソースの解放
+		store.close();
+	}
+
+}
+
+ + +
+
+
+ +
+ +
+

2 付録

+
+ + + +
+ +
+

2.1 値の範囲

+
+ + +

+値の上限などの値の範囲を説明します。 +システムの制限値については、GridDB機能リファレンスを参照してください。 +

+ +
+ +
+

2.1.1 基本型の取りうる値

+
+ +

以下の基本型の取りうる値は、次の通りです。 +

+ + +
+ + + ++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
取りうる値
ブール(BOOL)型真または偽
BYTE型-27から27-1
SHORT型-215から215-1
INTEGER型-231から231-1
LONG型-263から263-1
FLOAT型IEEE754準拠
DOUBLE型IEEE754準拠
時刻(TIMESTAMP)型西暦1970年1月1日のはじめから西暦9999年12月31日の終わりまで(UTC相当)。うるう秒は扱わない。ミリ秒、マイクロ秒、ナノ秒のいずれかの精度を設定可能。
+ + + + +
+ +

+空間(GEOMETRY)型でTQL演算に使用できる値はST_GeomFromText関数が返す任意の値です。このうちコンテナに格納できる値はQUADRATICSURFACE構造を除いたものです。 +

+

+APIを通じて基本型とマッピングされるオブジェクトの表現範囲は、上記の範囲と異なる場合があります。上記の範囲を超えた値を持つオブジェクトの内容をコンテナに格納することはできませんが、検索条件の構築など、その他操作の可否を規定するものではありません。たとえば、Java APIにて時刻型にマッピングされるjava.util.Dateオブジェクトでは、コンテナに格納できない西暦1970年より前の年の時刻も表現でき、その値をロウキーの条件としてRowKeyPredicateオブジェクトや時系列のサンプリングクエリに含めることができます。しかし、その条件でロウを取得しようとした時点でエラーが検出される可能性があります。マッピングされるオブジェクトの具体的な表現範囲は、個々のオブジェクトの型の定義を参照してください。 +

+
+
+
+ +
+ +
+

3 商標

+
+ + +
    +
  • +GridDBは日本国内における東芝デジタルソリューションズ株式会社の登録商標です。 +
  • +
  • +OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国における登録商標です。文中の社名、商品名等は各社の商標または登録商標である場合があります。 +
  • +
  • +その他製品名は、それぞれの所有者の商標または登録商標です。 + +

    +Copyright (c) 2023 Toshiba Digital Solutions Corporation +

  • +
+
+
+
+
+
+ + diff --git a/manuals/GridDB_JDBC_Driver_UserGuide/specifications.md b/manuals/md_reference_jdbc/md_reference_jdbc.md similarity index 78% rename from manuals/GridDB_JDBC_Driver_UserGuide/specifications.md rename to manuals/md_reference_jdbc/md_reference_jdbc.md index 5413fc0..5c34833 100644 --- a/manuals/GridDB_JDBC_Driver_UserGuide/specifications.md +++ b/manuals/md_reference_jdbc/md_reference_jdbc.md @@ -1,924 +1,1200 @@ -# 仕様 - -本章では、GridDB JDBCドライバの仕様について示します。主に、ドライバのサポート範囲ならびにJDBC標準との相違点について説明します。 特記事項がなくJDBC標準に準拠しているAPIの仕様については、JDKのAPIリファレンスを参照してください。将来のバージョンでは、特に次の点が変更される可能性があります。 - -- JDBC標準に準拠していない挙動 -- 未サポートの機能のサポート状況 -- エラーメッセージ - -  - -## 共通事項 - -### サポートされるJDBCバージョン - -JDBC4.1の一部機能に対応し、次の機能はサポートされません。 - -- トランザクション制御 -- ストアドプロシージャ -- バッチ実行 - - -### エラー処理 - -#### 未サポート機能の使用 - -- 標準機能 - - JDBC仕様に準拠したドライバがサポートすべき標準機能のうち、本ドライバにおいて現状サポートされていない機能を使用した場合、SQLFeatureNotSupportedExceptionが発生します。この挙動は、本来のSQLFeatureNotSupportedExceptionの仕様とは異なります。エラー名(後述)はJDBC_NOT_SUPPORTEDとなります。 -- オプション機能 - - JDBC仕様においてオプション機能に位置付けられており、SQLFeatureNotSupportedExceptionが発生する可能性のある機能のうち、本ドライバにおいてサポートされていない機能を使用した場合、JDBC仕様通りSQLFeatureNotSupportedExceptionが発生します。エラー名はJDBC_OPTIONAL_FEATURE_NOT_SUPPORTEDとなります。 - -#### クローズ済みのオブジェクトに対するメソッド呼び出し - -JDBC仕様の通り、Connectionオブジェクトなどclose()メソッドを持つオブジェクトに対し、isClosed()以外のメソッドを呼び出すと、SQLExceptionが発生します。 エラー名はJDBC_ALREADY_CLOSEDとなります。 - -#### 不正なnull引数 - -APIのメソッド引数として、nullが許容されないにも関わらず指定された場合、JDBC_EMPTY_PARAMETERエラーからなるSQLExceptionが発生します。JDBC仕様または本書で明示的にnullの受け入れを明記している引数以外は、nullを許容しません。 - -#### 複数のエラー原因がある場合 - -複数のエラー原因がある場合は、いずれかのエラーを検知した時点でアプリケーションに制御が戻ります。 -特に、未サポート機能を使用しようとした場合のエラーは、他のエラーよりも先に検知します。 -たとえば、クローズ済みのConnectionオブジェクトに対してストアドプロシージャを作成しようとした場合は、クローズされていることではなく、未サポートであることを示すエラーが返ります。 - -#### 例外の内容 - -ドライバよりスローされるチェック例外は、SQLExceptionもしくはSQLExceptionのサブクラスのインスタンスからなります。 例外の詳細を取得するには、次のメソッドを使用します。 - -- getErrorCode() - - サーバ・クライアントのいずれかでGridDBが検知したエラーについて、エラー番号を返却します。 -- getSQLState() - - 少なくともドライバ内で検知したエラー(エラーコード:14xxxx)では、非nullの値を返却します。それ以外は未定義です。 -- getMessage() - - エラー番号とエラーの説明を組にした、エラーメッセージを返却します。書式は次のようになります。 - - ``` example - [(エラー番号):(エラー名)] (エラーの説明) - ``` - - - エラー一覧と対応しない番号のエラーが発生した場合、エラーメッセージは次のようになります。 - - ``` example - (エラーの詳細) - ``` - -#### エラー一覧 - -ドライバ内部で検出される主なエラーの一覧は次の通りです。 - -| エラー番号 | エラーコード名 | エラー説明の書式 | -|------------|-------------------------------------|-----------------------------------------------------------------------------------------------| -| (別記) | JDBC_NOT_SUPPORTED | Currently not supported | -| (別記) | JDBC_OPTIONAL_FEATURE_NOT_SUPPORTED | Optional feature not supported | -| (別記) | JDBC_EMPTY_PARAMETER | The parameter (引数名) must not be null | -| (別記) | JDBC_ALREADY_CLOSED | Already closed | -| (別記) | JDBC_COLUMN_INDEX_OUT_OF_RANGE | Column index out of range | -| (別記) | JDBC_VALUE_TYPE_CONVERSION_FAILED | Failed to convert value type | -| (別記) | JDBC_UNWRAPPING_NOT_SUPPORTED | Unwrapping interface not supported | -| (別記) | JDBC_ILLEGAL_PARAMETER | Illegal value: (引数名) | -| (別記) | JDBC_UNSUPPORTED_PARAMETER_VALUE | Unsupported (パラメータ名) | -| (別記) | JDBC_ILLEGAL_STATE | Protocol error occurred | -| (別記) | JDBC_INVALID_CURSOR_POSITION | Invalid cursor position | -| (別記) | JDBC_STATEMENT_CATEGORY_UNMATCHED | Writable query specified for read only request Read only query specified for writable request | -| (別記) | JDBC_MESSAGE_CORRUPTED | Protocol error | - -エラーの発生源となる元のエラーがある場合などは、上記のエラー説明の末尾に追加の詳細メッセージが追加されることがあります。 - - - -## API仕様詳細 - -### Connectionインターフェース - -Connectionインターフェースの各メソッドについて説明します。 特に説明のない限り、Connectionがクローズされていない場合の説明のみを記載します。 - -#### トランザクション制御 - -トランザクション制御では、自動コミットモードのみのためコミット/ロールバックはサポートしません。 -ただし、トランザクションを使用するアプリケーションにおいても疑似的に動作するよう、コミットやロールバックを実行された場合は要求を無視します。 -SQLFeatureNotSupportedExceptionは発生しません。 - -トランザクション分離レベルは、TRANSACTION_READ_COMMITTEDのみサポートします。他のレベルは設定できません。 - -##### JDBC仕様との相違があるメソッド - -| メソッド | 内容 | JDBC仕様との相違点 | -|-----|----|----| -| void commit() | コミットします。 | 自動コミットモードのみのため、コミット要求を無視します。| -| void rollback() | ロールバックします。 | 自動コミットモードのみのため、ロールバック要求を無視します。| -| void setAutoCommit(boolean autoCommit) | コミットモードを設定します。 | 自動コミットモードのみのため、モードの設定はできません。autoCommitを無視して常にtrueを設定します。| - - -##### 一部未サポートのメソッド - -| メソッド | 内容 | 一部未サポートの点 | -|-----|----|----| -| Statement createStatement(int resultSetType, int resultSetConcurrency) | ステートメントを作成します。 | resultSetTypeはResultSet.TYPE_FORWARD_ONLYのみ、resultSetConcurrencyはResultSet.CONCUR_READ_ONLYのみサポートします。それ以外の値を設定すると、SQLFeatureNotSupportedExceptionが発生します。 | -| Statement createStatement(int resultSetType, int resultSetConcurrency, int resultSetHoldability) | ステートメントを作成します。 | resultSetTypeはResultSet.TYPE_FORWARD_ONLYのみ、resultSetConcurrencyはResultSet.CONCUR_READ_ONLYのみ、resultSetHoldabilityはResultSet.CLOSE_CURSORS_AT_COMMITのみサポートします。それ以外の値を設定すると、SQLFeatureNotSupportedExceptionが発生します。 | -| PreparedStatement prepareStatement(String sql, int resultSetType, int resultSetConcurrency) | プリペアードステートメントを作成します。 | resultSetTypeはResultSet.TYPE_FORWARD_ONLYのみ、resultSetConcurrencyはResultSet.CONCUR_READ_ONLYのみサポートします。それ以外の値を設定すると、SQLFeatureNotSupportedExceptionが発生します。| -| PreparedStatement prepareStatement(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability) | プリペアードステートメントを作成します。| resultSetTypeはResultSet.TYPE_FORWARD_ONLYのみ、resultSetConcurrencyはResultSet.CONCUR_READ_ONLYのみ、resultSetHoldabilityはResultSet.CLOSE_CURSORS_AT_COMMITのみサポートします。それ以外の値を設定すると、SQLFeatureNotSupportedExceptionが発生します。| -| void setTransactionIsolation(int level) | トランザクション分離レベルを設定します。 | levelには、Connection.TRANSACTION_READ_COMMITTEDしか指定できません。それ以外の値を設定するとSQLExceptionが発生します。| - - -##### サポートしているメソッド - -| メソッド | 内容 | -|---------|------| -| void close() | Connectionをクローズします。 | -| Statement createStatement() | ステートメントを作成します。 | -| boolean getAutoCommit() | コミットモードを取得します。 | -| DatabaseMetaData getMetaData() | DatabaseMetaDataを取得します。 | -| int getTransactionIsolation() | トランザクション分離レベルを取得します。 | -| boolean isClosed() | Connectionがクローズされているかを取得します。 | -| PreparedStatement prepareStatement(String sql) | プリペアードステートメントを作成します。 | - - - -#### 属性の設定・取得 - -トランザクション制御のメソッド以外で、属性の設定や取得を行うメソッドについて説明します。 - -##### JDBC仕様との相違があるメソッド - -| メソッド | 内容 | JDBC仕様との相違点 | -|-----|----|----| -| void setReadOnly(boolean readOnly) | Connectionオブジェクトの読み込み専用モードを設定します。 | readOnlyを無視して、常にfalseを設定します。| - - -##### 一部未サポートのメソッド - -| メソッド | 内容 | 一部未サポートの点 | -|-----|----|----| -| void setHoldability(int holdability) | ResultSetオブジェクトの保持機能を設定します。 | holdabilityにはResultSet.CLOSE_CURSORS_AT_COMMITしか指定できません。それ以外の値を設定すると、SQLFeatureNotSupportedExceptionが発生します。 | - - -##### サポートしているメソッド - -| メソッド | 内容 | -|---------|------| -| int getHoldability() | ResultSetオブジェクトの保持機能を取得します。 | -| boolean isReadOnly() | Connectionオブジェクトが読み込み専用モードかどうかを取得します。 | -| boolean isValid(int timeout) | 接続の状態を取得します。 | - - -#### 未サポートの機能 - -Connectionインターフェースの中で、未サポートのメソッド一覧を示します。実行すると、SQLFeatureNotSupportedExceptionが発生します。 - -- 標準機能 - - CallableStatement prepareCall(String sql) - -- オプション機能 - - void abort(Executor executor) - - Array createArrayOf(String typeName, Object[] elements) - - Blob createBlob() - - Clob createClob() - - NClob createNClob() - - SQLXML createSQLXML() - - Struct createStruct(String typeName, Object[] attributes) - - int getNetworkTimeout() - - String getSchema() - - Map> getTypeMap() - - CallableStatement prepareCall(String sql, int resultSetType, int resultSetConcurrency) - - CallableStatement prepareCall(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability) - - PreparedStatement prepareStatement(String sql, int autoGeneratedKeys) - - PreparedStatement prepareStatement(String sql, int[] columnIndexes) - - PreparedStatement prepareStatement(String sql, String[] columnNames) - - void releaseSavepoint(Savepoint savepoint) - - void rollback(Savepoint savepoint) - - void setNetworkTimeout(Executor executor, int milliseconds) - - void setSavepoint() - - void setSchema(String schema) - - void setTypeMap(Map> map) - -  - -### DatabaseMetaDataインターフェース - -テーブルのメタデータを取得するDatabaseMetaDataインターフェースについて説明します。 - -#### ResultSetを返す属性 - -DatabaseMetaDataインターフェースで、実行結果としてResultSetを返すメソッドの中で、サポートしているメソッドは以下の通りです。 -これら以外のResultSetを返すメソッドは未サポートです。 - -| メソッド | 内容 | -|--------|----| -| ResultSet getColumns(String catalog, String schemaPattern, String tableNamePattern, String columnNamePattern) | テーブルのカラム情報を返します | -| ResultSet getIndexInfo(String catalog, String schema, String table, boolean unique, boolean approximate) | テーブルの索引情報を返します | -| ResultSet getPrimaryKeys(String catalog, String schema, String table) | テーブルのロウキーの情報を返します | -| ResultSet getTables(String catalog, String schemaPattern, String tableNamePattern, String[] types) | テーブルの一覧を返します | -| ResultSet getTableTypes() | テーブルの型を返します | -| ResultSet getTypeInfo() | カラムのデータ型一覧を返します | - - -上記のメソッドをそれぞれ説明します。 - - -##### DatabaseMetaData.getColumns -```java -ResultSet getColumns(String catalog, String schemaPattern, String tableNamePattern, String columnNamePattern) -``` -- 指定されたテーブル名のパターンtableNamePatternに一致するテーブルのカラム情報を返します。パターンに指定されたワイルドカード「%」は0文字以上の文字、「\_」は任意の1文字に一致することを意味します。tableNamePatternにnullを指定した場合は全テーブルが対象になります。 -- 他の絞り込み条件catalog, schemaPattern, columnNamePatternは無視されます。 -- ビューのカラム情報は含まれません。 -- 実行結果のResultSetが持つカラムは以下の通りです。 - - | カラム名    | 型 | 値 | - |--------------------|--------|--------------------------------------| - | TABLE_CAT | String | null | - | TABLE_SCHEM | String | null | - | TABLE_NAME | String | テーブル名 | - | COLUMN_NAME | String | カラム名 | - | DATA_TYPE | int | カラムのデータ型の値(下記の表を参照) | - | TYPE_NAME | String | カラムのデータ型の名前(下記の表を参照) | - | COLUMN_SIZE | int | 131072 | - | BUFFER_LENGTH | int | 2000000000 | - | DECIMAL_DIGITS | int | 10 | - | NUM_PREC_RADIX | int | 10 | - | NULLABLE | int | PRIMARY KEYまたはNOT NULL制約があるカラムは 0 (定数DatabaseMetaData.columnNoNullsの値)
それ以外は 1 (定数DatabaseMetaData.columnNullableの値) | - | REMARKS | String | null | - | COLUMN_DEF | String | null | - | SQL_DATA_TYPE | int | 0 | - | SQL_DATETIME_SUB | int | 0 | - | CHAR_OCTET_LENGTH | int | 2000000000 | - | ORDINAL_POSITION | int | カラムの番号(1からの連番) | - | IS_NULLABLE | String | NOT NULL制約。PRIMARY KEYまたはNOT NULL制約があるカラムは'NO'
それ以外は'YES' | - | SCOPE_CATALOG | String | null | - | SCOPE_SCHEMA | String | null | - | SCOPE_TABLE | String | null | - | SOURCE_DATA_TYPE | short | 0 | - | IS_AUTOINCREMENT | String | 'NO' | - | IS_GENERATEDCOLUMN | String | 'NO' | - -- 該当カラムのデータ型に応じて、次のTYPE_NAMEとDATA_TYPEの値の組合せを返します。 - - | カラムのデータ型 | TYPE_NAMEの値 | DATA_TYPEの値 | - |--------------------|---------------------|----------------------| - | BOOL型 | 'BOOL' | -7 (Types.BIT) | - | STRING型  | 'STRING' | 12 (Types.VARCHAR) | - | BYTE型 | 'BYTE' | -6 (Types.TINYINT) | - | SHORT型 | 'SHORT' | 5 (Types.SMALLINT) | - | INTEGER型 | 'INTEGER' | 4 (Types.INTEGER) | - | LONG型 | 'LONG' | -5 (Types.BIGINT) | - | FLOAT型 | 'FLOAT' | 6 (Types.FLOAT) | - | DOUBLE型 | 'DOUBLE' | 8 (Types.DOUBLE) | - | TIMESTAMP型 | 'TIMESTAMP' | 93 (Types.TIMESTAMP) | - | BLOB型 | 'BLOB' | 2004 (Types.BLOB) | - | GEOMETRY型 | 'GEOMETRY' | 1111 (Types.OTHER) | - | BOOL型の配列型 | 'BOOL_ARRAY' | 1111 (Types.OTHER) | - | STRING型の配列型 | 'STRING_ARRAY' | 1111 (Types.OTHER) | - | BYTE型の配列型 | 'BYTE_ARRAY' | 1111 (Types.OTHER) | - | SHORT型の配列型 | 'SHORT_ARRAY' | 1111 (Types.OTHER) | - | INTEGER型の配列型 | 'INTEGER_ARRAY' | 1111 (Types.OTHER) | - | LONG型の配列型 | 'LONG_ARRAY' | 1111 (Types.OTHER) | - | FLOAT型の配列型 | 'FLOAT_ARRAY' | 1111 (Types.OTHER) | - | DOUBLE型の配列型 | 'DOUBLE_ARRAY' | 1111 (Types.OTHER) | - | TIMESTAMP型の配列型 | 'TIMESTAMP_ARRAY' | 1111 (Types.OTHER) | - -- GEOMETRY型と配列型については、NoSQLインターフェースで作成された、これらのデータ型を持つテーブルの情報を取得した場合に値が返ります。JDBCでは、これらのデータ型を持つテーブルは作成できません。 - -  - -##### DatabaseMetaData.getIndexInfo - -```java -ResultSet getIndexInfo(String catalog, String schema, String table, boolean unique, boolean approximate) -``` - -- 指定されたテーブル名tableに一致するテーブルの索引情報を返します。指定された名前のテーブルが存在しない場合は、実行結果のResultSetは空が返ります。 -- uniqueにはfalseを指定してください。uniqueがfalse以外の場合、実行結果のResultSetは空が返ります。 -- 他の絞り込み条件catalog、schemaと、パラメータapproximateは無視されます。 -- 実行結果のResultSetが持つカラムは以下の通りです。 - - | カラム名 | 型 | 値 | - |------------------|---------|------------------| - | TABLE_CAT | String | null | - | TABLE_SCHEM | String | null | - | TABLE_NAME | String | テーブル名 | - | NON_UNIQUE | boolean | true | - | INDEX_QUALIFIER | String | null | - | INDEX_NAME | String | 索引名 | - | TYPE | short | 2(ハッシュ索引を表す定数DatabaseMetaData.tableIndexHashedの値) または 3(ハッシュ以外の索引を表す定数DatabaseMetaData.tableIndexOtherの値) | - | ORDINAL_POSITION | short | 1から開始 | - | COLUMN_NAME | String | カラム名 | - | ASC_OR_DESC | String | null | - | CARDINALITY | long | 0 | - | PAGES | long | 0 | - | FILTER_CONDITION | String | null | - -  - -##### DatabaseMetaData.getPrimaryKeys - -```java -ResultSet getPrimaryKeys(String catalog, String schema, String table) -``` -- 指定されたテーブル名tableに一致するテーブルのロウキー情報を返します。指定された名前のテーブルが存在しない場合は、実行結果のResultSetは空が返ります。ただし、tableにnullを指定した場合は、ロウキーが設定されている全テーブルの情報が返ります。 -- 他の絞り込み条件catalog, schemaは無視されます。 -- 実行結果のResultSetが持つカラムは以下の通りです。 - - | カラム名 | 型 | 値 | - |------------------|---------|--------------| - | TABLE_CAT | String | null | - | TABLE_SCHEM | String | null | - | TABLE_NAME | String | テーブル名 | - | COLUMN_NAME | String | カラム名 | - | KEY_SEQ | short | 1 | - | PK_NAME | String | null | - -  - -##### DatabaseMetaData.getTables - -```java -ResultSet getTables(String catalog, String schemaPattern, String tableNamePattern, String[] types) -``` -- 指定されたテーブル名のパターンtableNamePatternに一致するテーブルの情報を返します。パターンに指定されたワイルドカード「%」は0文字以上の文字、「\_」は任意の1文字に一致することを意味します。tableNamePatternにnullを指定した場合は全テーブルが対象になります。 -- typesにはnullまたは文字列の配列を指定します。文字列要素は"TABLE"および"VIEW"が指定できます。typesに"TABLE"または"VIEW"と一致する要素が存在しなければ常に空の結果を返します。types内の文字列要素の大文字小文字表記の違いは無視されます。(typesは、テーブルの種別であるコレクション、時系列コンテナを表す値ではありません。) -- 他の絞り込み条件catalog, schemaPatternは無視されます。 -- 実行結果のResultSetが持つカラムは以下の通りです。 - - | カラム名 | 型 | 値 | - |----------------------------|---------|------------------| - | TABLE_CAT | String | null | - | TABLE_SCHEM | String | null | - | TABLE_NAME | String | テーブル名 | - | TABLE_TYPE | String | 'TABLE'または'VIEW' | - | REMARKS | String | null | - | TYPE_CAT | String | null | - | TYPE_SCHEM | String | null | - | TYPE_NAME | String | null | - | SELF_REFERENCING_COL_NAME | String | null | - | REF_GENERATION | String | null | - -  - -##### DatabaseMetaData.getTableTypes - -```java -ResultSet getTableTypes() -``` -- テーブルのタイプを返します。結果は、カラム「TABLE_TYPE」に値'TABLE'または'VIEW'が格納された1件のみが返ります。 -- 実行結果のResultSetが持つカラムは以下の通りです。 - - | カラム名 | 型 | 値 | - |------------------|---------|-------------| - | TABLE_TYPE | String | 'TABLE'または'VIEW' | - -  - -##### DatabaseMetaData.getTypeInfo() - -```java -ResultSet getTypeInfo() -``` -- カラムのデータ型一覧を返します。 -- すべての型で共通の情報、型別の情報は以下の通りです。 - - | カラム名 | 型 | 値 | - |--------------------|---------|-------------------------| - | TYPE_NAME | String | データ型の名前(下記の表を参照) | - | DATA_TYPE | int | データ型の値(下記の表を参照) | - | PRECISION | int | 0 | - | LITERAL_PREFIX | String | null | - | LITERAL_SUFFIX | String | null | - | CREATE_PARAMS | String | null | - | NULLABLE | short | 1 (このデータ型でNULL値が許可されることを表す定数DatabaseMetaData.typeNullableの値) | - | CASE_SENSITIVE | boolean | true | - | SEARCHABLE | short | 3 (このデータ型をWHERE節で使用できることを表す定数DatabaseMetaData.typeSearchableの値) | - | UNSIGNED_ATTRIBUTE | boolean | false | - | FIXED_PREC_SCALE | boolean | false | - | AUTO_INCREMENT | boolean | false | - | LOCAL_TYPE_NAME | String | null | - | MINIMUM_SCALE | short | 0 | - | MAXIMUM_SCALE | short | 0 | - | SQL_DATA_TYPE | int | 0 | - | SQL_DATETIME_SUB | int | 0 | - | NUM_PREC_RADIX | int | 10 | - - -- カラムTYPE_NAME、DATA_TYPEは、以下の組合せの値が全て返ります。 - - | TYPE_NAMEの値 | DATA_TYPEの値 | - |---------------------|----------------------| - | 'BOOL' | -7 (Types.BIT) | - | 'STRING' | 12 (Types.VARCHAR) | - | 'BYTE' | -6 (Types.TINYINT) | - | 'SHORT' | 5 (Types.SMALLINT) | - | 'INTEGER' | 4 (Types.INTEGER) | - | 'LONG' | -5 (Types.BIGINT) | - | 'FLOAT' | 6 (Types.FLOAT) | - | 'DOUBLE' | 8 (Types.DOUBLE) | - | 'TIMESTAMP' | 93 (Types.TIMESTAMP) | - | 'BLOB' | 2004 (Types.BLOB) | - | 'UNKNOWN' | 0 (Types.NULL) | - -  - -#### 単純値を返すメソッド - -DatabaseMetaDataインターフェースのメソッドの中で、実行結果としてint型やString型などの単純値を返すメソッドについて、実行結果の一覧を示します。 - -| メソッド | 結果 | -|---------------------------------------------------------|------------------------------------------------------------------------------------| -| allProceduresAreCallable() | false | -| allTablesAreSelectable() | true | -| autoCommitFailureClosesAllResultSets() | false | -| dataDefinitionCausesTransactionCommit() | false | -| dataDefinitionIgnoredInTransactions() | true | -| deletesAreDetected(type) | false | -| doesMaxRowSizeIncludeBlobs() | false | -| generatedKeyAlwaysReturned() | false | -| getCatalogSeparator() | "." | -| getCatalogTerm() | "catalog" | -| getDefaultTransactionIsolation() | TRANSACTION_READ_COMMITTED | -| getExtraNameCharacters() | . - / = (順不同) | -| getIdentifierQuoteString() | " | -| getMaxBinaryLiteralLength() | 0 | -| getMaxCatalogNameLength() | 0 | -| getMaxCharLiteralLength() | 0 | -| getMaxColumnNameLength() | 0 | -| getMaxColumnsInGroupBy() | 0 | -| getMaxColumnsInIndex() | 0 | -| getMaxColumnsInOrderBy() | 0 | -| getMaxColumnsInSelect() | 0 | -| getMaxColumnsInTable() | 0 | -| getMaxConnections() | 0 | -| getMaxCursorNameLength() | 0 | -| getMaxIndexLength() | 0 | -| getMaxSchemaNameLength() | 0 | -| getMaxProcedureNameLength() | 0 | -| getMaxRowSize() | 0 | -| getMaxStatementLength() | 0 | -| getMaxStatements() | 0 | -| getMaxTableNameLength() | 0 | -| getMaxTablesInSelect() | 0 | -| getMaxUserNameLength() | 0 | -| getProcedureTerm() | "procedure" | -| getResultSetHoldability() | CLOSE_CURSORS_AT_COMMIT | -| getRowIdLifetime() | true | -| getSchemaTerm() | "schema" | -| getSearchStringEscape() | "| | -| getSQLKeywords() | "" | -| getSQLStateType() | sqlStateSQL99 | -| getStringFunctions() | "" | -| getSystemFunctions() | "" | -| getURL() | null | -| getUserName() | (ユーザ名) | -| insertsAreDetected(type) | false | -| isCatalogAtStart() | true | -| isReadOnly() | false | -| locatorsUpdateCopy() | false | -| nullPlusNonNullIsNull() | true | -| nullsAreSortedAtEnd() | false | -| nullsAreSortedAtStart() | false | -| nullsAreSortedHigh() | true | -| nullsAreSortedLow() | false | -| othersDeletesAreVisible(type) | false | -| othersInsertsAreVisible(type) | false | -| othersUpdatesAreVisible(type) | false | -| ownDeletesAreVisible(type) | false | -| ownInsertsAreVisible(type) | false | -| ownUpdatesAreVisible(type) | false | -| storesLowerCaseIdentifiers() | false | -| storesLowerCaseQuotedIdentifiers() | false | -| storesMixedCaseIdentifiers() | true | -| storesMixedCaseQuotedIdentifiers() | false | -| storesUpperCaseIdentifiers() | false | -| storesUpperCaseQuotedIdentifiers() | false | -| supportsAlterTableWithAddColumn() | false | -| supportsAlterTableWithDropColumn() | false | -| supportsANSI92EntryLevelSQL() | false | -| supportsANSI92FullSQL() | false | -| supportsANSI92IntermediateSQL() | false | -| supportsBatchUpdates() | false | -| supportsCatalogsInDataManipulation() | false | -| supportsCatalogsInIndexDefinitions() | false | -| supportsCatalogsInPrivilegeDefinitions() | false | -| supportsCatalogsInProcedureCalls() | false | -| supportsCatalogsInTableDefinitions() | false | -| supportsColumnAliasing() | true | -| supportsConvert() | false | -| supportsConvert(fromType, toType) | false | -| supportsCoreSQLGrammar() | true | -| supportsCorrelatedSubqueries() | true | -| supportsDataDefinitionAndDataManipulationTransactions() | false | -| supportsDataManipulationTransactionsOnly() | false | -| supportsDifferentTableCorrelationNames() | false | -| supportsExpressionsInOrderBy() | true | -| supportsExtendedSQLGrammar() | false | -| supportsFullOuterJoins() | false | -| supportsGetGeneratedKeys() | false | -| supportsGroupBy() | true | -| supportsGroupByBeyondSelect() | true | -| supportsGroupByUnrelated() | true | -| supportsIntegrityEnhancementFacility() | false | -| supportsLikeEscapeClause() | true | -| supportsLimitedOuterJoins() | true | -| supportsMinimumSQLGrammar() | true | -| supportsMixedCaseIdentifiers() | false | -| supportsMixedCaseQuotedIdentifiers() | true | -| supportsMultipleOpenResults() | false | -| supportsMultipleResultSets() | false | -| supportsMultipleTransactions() | false | -| supportsNamedParameters() | false | -| supportsNonNullableColumns() | true | -| supportsOpenCursorsAcrossCommit() | false | -| supportsOpenCursorsAcrossRollback() | false | -| supportsOpenStatementsAcrossCommit() | false | -| supportsOpenStatementsAcrossRollback() | false | -| supportsOrderByUnrelated() | true | -| supportsOuterJoins() | true | -| supportsPositionedDelete() | false | -| supportsPositionedUpdate() | false | -| supportsResultSetConcurrency(type, concurrency) | typeがTYPE_FORWARD_ONLY、concurrencyがCONCUR_READ_ONLYの場合のみ | -| supportsResultSetHoldability(holdability) | CLOSE_CURSORS_AT_COMMITの場合のみ | -| supportsResultSetType() | TYPE_FORWARD_ONLYの場合のみ | -| supportsSavepoints() | false | -| supportsSchemasInDataManipulation() | false | -| supportsSchemasInIndexDefinitions() | false | -| supportsSchemasInPrivilegeDefinitions() | false | -| supportsSchemasInProcedureCalls() | false | -| supportsSchemasInTableDefinitions() | false | -| supportsSelectForUpdate() | false | -| supportsStatementPooling() | false | -| supportsStoredFunctionsUsingCallSyntax() | false | -| supportsStoredProcedures() | false | -| supportsSubqueriesInComparisons() | false | -| supportsSubqueriesInExists() | true | -| supportsSubqueriesInIns() | true | -| supportsSubqueriesInQuantifieds() | false | -| supportsTableCorrelationNames() | false | -| supportsTransactionIsolationLevel(level) | TRANSACTION_READ_COMMITTEDの場合のみ | -| supportsTransactions() | true | -| supportsUnion() | true | -| supportsUnionAll() | true | -| updatesAreDetected(type) | false | -| usesLocalFilePerTable() | false | -| usesLocalFiles() | false | - - -#### 未サポートのメソッド - -DatabaseMetaDataインターフェースのメソッドの中で、未サポートのメソッド一覧を示します。 -実行するとSQLFeatureNotSupportedExceptionは発生せず、以下の結果が返ります。 - -| メソッド | 結果 | -|------------------------------------|---------------| -| ResultSet getAttributes(String catalog, String schemaPattern, String typeNamePattern, String attributeNamePattern) | 空のResultSet | -| ResultSet getBestRowIdentifier(String catalog, String schema, String table, int scope, boolean nullable) | 空のResultSet | -| ResultSet getCatalogs() | 空のResultSet | -| ResultSet getClientInfoProperties() | 空のResultSet | -| ResultSet getColumnPrivileges(String catalog, String schema, String table, String columnNamePattern) | 空のResultSet | -| ResultSet getCrossReference(String parentCatalog, String parentSchema, String parentTable, String foreignCatalog, String foreignSchema, String foreignTable) | 空のResultSet | -| ResultSet getExportedKeys(String catalog, String schema, String table) | 空のResultSet | -| ResultSet getFunctionColumns(String catalog, String schemaPattern, String functionNamePattern, String columnNamePattern) | 空のResultSet | -| ResultSet getFunctions(String catalog, String schemaPattern, String functionNamePattern) | 空のResultSet | -| ResultSet getImportedKeys(String catalog, String schema, String table) | 空のResultSet | -| ResultSet getProcedureColumns(String catalog, String schemaPattern, String procedureNamePattern, String columnNamePattern) | 空のResultSet | -| ResultSet getProcedures(String catalog, String schemaPattern, String procedureNamePattern) | 空のResultSet | -| ResultSet getPseudoColumns(String catalog, String schemaPattern, String tableNamePattern, String columnNamePattern) | 空のResultSet | -| ResultSet getSchemas() | 空のResultSet | -| ResultSet getSchemas(String catalog, String schemaPattern) | 空のResultSet | -| ResultSet getSuperTables(String catalog, String schemaPattern, String tableNamePattern) | 空のResultSet | -| ResultSet getSuperTypes(String catalog, String schemaPattern, String typeNamePattern) | 空のResultSet | -| ResultSet getTablePrivileges(String catalog, String schemaPattern, String tableNamePattern) | 空のResultSet | -| ResultSet getUDTs(String catalog, String schemaPattern, String typeNamePattern, int[] types) | 空のResultSet | -| ResultSet getVersionColumns(String catalog, String schema, String table) | 空のResultSet | - -  - -### Statementインターフェース - -#### フェッチサイズの設定・取得 - -指定された値のチェックのみ行います。 - -値のチェックでは、このStatementのgetMaxRows()で得られるロウ数より超えないこともチェックします。 この値に関する制限は、JDBC4.0より前のJDBC仕様でのみ明記されていました。 ただし、以前のJDBC仕様とは異なり、getMaxRows()の結果がデフォルト値0に設定されている場合を除きます。 - -#### フェッチ方向の設定・取得 - -フェッチ方向の設定はFETCH_FORWARDのみをサポートします。FETCH_FORWARD以外が指定された場合、SQLExceptionが発生します。 - -#### 未サポートの機能 - -- バッチ処理 - - バッチ処理はサポートしません。以下の機能を使用しようとすると、未サポートの標準機能を使用した場合と同一のエラーが発生します。 - - addBatch(sql) - - clearBatch() - - executeBatch() -- 標準機能 - - 以下のメソッドの呼び出しは無視されます。JDBC仕様とは異なります。 - - setEscapeProcessing(enable) -- オプション機能 - - 以下のメソッドを呼び出すとSQLFeatureNotSupportedExceptionが発生します。 - - closeOnCompletion() - - execute(sql, autoGeneratedKeys) - - execute(sql, columnIndexes) - - execute(sql, columnNames) - - executeUpdate(sql, autoGeneratedKeys) - - executeUpdate(sql, columnIndexes) - - executeUpdate(sql, columnNames) - - getGeneratedKeys() - - getMoreResults(current) - - isCloseOnCompletion() - -  - -### PreparedStatementインターフェース - -#### パラメータの設定・取得 - -以下のメソッドをサポートします。設定されていないパラメータがある状態でexecuteQueryなどクエリ実行APIを呼び出すと、SQLExceptionが発生します。 - -- clearParameters() -- getMetaData() -- getParameterMetaData() -- setBinaryStream(int parameterIndex, InputStream x) - - setBinaryStream(オーバーロード含む)では、クライアント側で入力データの数倍のメモリが必要になる可能性があります。実行時にメモリ不足になった場合はJVM起動時のヒープメモリサイズを調整してください。 -- setBinaryStream(int parameterIndex, InputStream x, int length) -- setBinaryStream(int parameterIndex, InputStream x, long length) -- setBlob(int parameterIndex, Blob x) - - setBlob(オーバーロード含む)では、クライアント側で入力データの数倍のメモリが必要になる可能性があります。実行時にメモリ不足になった場合はJVM起動時のヒープメモリサイズを調整してください。 -- setBlob(int parameterIndex, InputStream inputStream) -- setBlob(int parameterIndex, InputStream inputStream, long length) -- setBoolean(int parameterIndex, boolean x) -- setByte(int parameterIndex, byte x) -- setDate(int parameterIndex, Date x) -- setDouble(int parameterIndex, double x) -- setFloat(int parameterIndex, float x) -- setInt(int parameterIndex, int x) -- setLong(int parameterIndex, long x) -- setObject(int parameterIndex, Object x) - - TIMESTAMP型のパラメータに設定する値としては、java.util.Dateのサブクラスのオブジェクトを受け入れます。 -- setShort(int parameterIndex, short x) -- setString(int parameterIndex, String x) -- setTime(int parameterIndex, Time x) -- setTimestamp(int parameterIndex, Timestamp x) - -#### SQLの実行 - -以下のメソッドをサポートします。 - -- execute() -- executeQuery() -- executeUpdate() - -#### 未サポートの機能 - -- 標準機能 - - 以下のメソッドを呼び出すとSQLFeatureNotSupportedExceptionが発生します。この挙動はJDBC仕様とは異なります。 - - addBatch() - - setBigDecimal(int parameterIndex, BigDecimal x) - - setDate(int parameterIndex, Date x, Calendar cal) - - setTime(int parameterIndex, Time x, Calendar cal) - - setTimestamp(int parameterIndex, Timestamp x, Calendar cal) -- オプション機能 - - 以下のメソッドを呼び出すとSQLFeatureNotSupportedExceptionが発生します。引数を省略しているものは、全てのオーバーロードが未サポートです。 - - setArray - - setAsciiStream - - setBytes - - setCharacterStream - - setClob - - setNCharacterStream - - setNClob - - setNString - - setNull - - setObject(int parameterIndex, Object x, int targetSqlType) - - setObject(int parameterIndex, Object x, int targetSqlType, int scaleOrLength) - - setRef - - setRowId - - setSQLXML - - setUnicodeStream - - setURL - -  - -### ParameterMetaDataインターフェース - -PreparedStatementのメタデータを取得するParameterMetaDataインターフェースについて説明します。 - -JDBC仕様の全てのメソッドをサポートしますが、以下のメソッドは引数paramの値によらず常に固定の値を返します。 - -| メソッド | 結果 | -|-----------------------------------------|-------------| -| int getParameterType(int param) | Types.OTHER | -| String getParameterTypeName(int param) | "UNKNOWN" | -| int getPrecision(int param) | 0 | -| int getScale(int param) | 0 | -| boolean isSigned(int param) | false | - -  - -### ResultSetインターフェース - -#### フェッチサイズの設定・取得 - -指定された値のチェックのみ行い、設定の変更は実際のフェッチ処理には影響しません。 値のチェックでは、対象のResultSetの生成元のStatementのgetMaxRows()で得られるロウ数より超えないこともチェックします。 この制限は、JDBC4.0より前のJDBC仕様でのみ明記されていました。ただし、以前のJDBC仕様とは異なり、getMaxRows()の結果がデフォルト値0に設定されている場合を除きます。実際のフェッチ処理には影響しませんが、変更した設定値を取得できます。 - -#### フェッチ方向の設定・取得 - -フェッチ方向の設定はFETCH_FORWARDのみをサポートします。FETCH_FORWARD以外が指定された場合、 SQLExceptionが発生します。この挙動はJDBC仕様とは異なります。 - -#### カーソル情報の取得 - -カーソルに関する以下のメソッドをサポートします。 -- isAfterLast() -- isBeforeFirst() -- isFirst() -- isLast() -- next() - -フェッチ方向はFETCH_FORWARDのみをサポートしているため、次のメソッドを呼び出すとFETCH_FORWARDタイプのResultSetに対する呼び出しを原因とするSQLExceptionが発生します。 -- absolute(row) -- afterLast() -- beforeFirst() -- first() -- last() -- previous() -- relative(rows) - -#### 警告の管理 - -警告は記録されないため、警告を管理するメソッドの挙動は次のようになります。 - -| メソッド | 挙動 | -|-----------------|----------------------| -| getWarnings() | nullを返却 | -| clearWarnings() | 警告はクリアされない | - -#### 固定値を返す属性 - -ResultSetがオープンされている間、常に固定の値を返すメソッドのサポート状況は次の通りです。 - -| メソッド | 結果 | -|------------------|----------------------------------| -| getCursorName() | nullを返却 | -| getType() | TYPE_FORWARD_ONLYを返却 | -| getConcurrency() | CONCUR_READ_ONLYを返却 | -| getMetaData() | (JDBC準拠) | -| getStatement() | (JDBC準拠) | - -#### 型変換 - -指定のカラムの値を取得する際、ResultSetが保持する型と求める型とが異なる場合は、次の組み合わせに限り、型変換を試みます。 - -| 変換先のJava型 | BOOL | INTEGRAL ※1 | FLOATING ※2 | TIMESTAMP | STRING | BLOB | -|----------------|------|-------------|-------------|-----------|--------|------| -| boolean | ○ | ○ ※3 | | | ○ ※4 | | -| byte | ○ | ○ | ○ | | ○ | | -| short | ○ | ○ | ○ | | ○ | | -| int | ○ | ○ | ○ | | ○ | | -| long | ○ | ○ | ○ | | ○ | | -| float | | ○ | ○ | | ○ | | -| double | | ○ | ○ | | ○ | | -| byte\[\] | ○ | ○ | ○ | | ○ | | -| java.sql.Date | | | | ○ | ○ ※5 | | -| Time | | | | ○ | ○ ※5 | | -| Timestamp | | | | ○ | ○ ※5 | | -| String | ○ | ○ | ○ | ○ ※6 | ○ | ○ ※7 | -| Blob | | | | | ○ ※7 | ○ | -| Object | ○ | ○ | ○ | ○ | ○ | ○ | - -- (※1). INTEGRAL: BYTE/SHORT/INTEGER/LONGのいずれかを表します。 -- (※2). FLOATING: FLOAT/DOUBLEのいずれかを表します。 -- (※3). 変換元数値が0ならばfalseに、0以外ならばtrueに変換します。 -- (※4). 変換元文字列が'false'ならばfalseに、'true'ならばtrueに変換します。ASCIIの大文字小文字は同一視します。それ以外は変換できずエラーとなります。 -- (※5). 以下のルールで文字列表現の時刻を変換します。 - - 表現をjava.text.SimpleDateFormatと同様のパターン文字列で表したものは以下のとおりです。ただしタイムゾーンを除きます。 - - yyyy-MM-dd'T'HH:mm:ss.SSS - - yyyy-MM-dd'T'HH:mm:ss - - yyyy-MM-dd HH:mm:ss.SSS - - yyyy-MM-dd HH:mm:ss - - yyyy-MM-dd - - HH:mm:ss.SSS - - HH:mm:ss - - タイムゾーンについては、文字列に含まれるものが最優先で利用されます。次に、ResultSet#getTimeStamp()など取得APIの引数java.util.Calendarにおいてタイムゾーン指定があった場合はその内容を参照します。最後に接続時に指定したタイムゾーンが参照され、いずれも指定がない場合はUTC扱いとなります。タイムゾーン文字列としては、java.text.SimpleDateFormatの「z」または「Z」パターンで解釈できる表現のほか、UTCであることを示す「Z」表現を受け付けます。 -- (※6). 接続時に指定したタイムゾーン情報が反映され、指定がない場合はUTCとなります。 -- (※7). 16進数バイナリ表現とみなして、文字列とBLOBを相互に変換します。ASCIIの大文字小文字は同一視します。それ以外は変換できずエラーとなります。 - -#### カラムの値取得 - -サポートされている型変換先の型と対応するメソッドより、カラムの値を取得できます。 カラムの指定方法としては、カラムラベルとカラムインデックスの両方をサポートします。 その他、次の機能を使用できます。 - -- getBinaryStream - - byte\[\]への型変換結果に相当します -- wasNull - - JDBC準拠 - -#### エラー処理 - -- 不正なカラムインデックス - - 不正なカラムインデックスを指定して値を取得しようとした場合、JDBC_COLUMN_INDEX_OUT_OF_RANGEエラーからなるSQLExceptionが発生します。 -- 型変換エラー - - 型変換に失敗した場合、JDBC_VALUE_TYPE_CONVERSION_FAILEDエラーからなるSQLExceptionが発生します。 - -#### 未サポートの機能 - -次のオプション機能は未サポートです。引数を省略しているものは、全てのオーバーロードが未サポートです。 - -- cancelRowUpdates() -- getArray -- getAsciiStream -- getBigDecimal -- getClob -- getNClob -- getNCharacterStream -- getNString -- getObject(columnIndex, map) -- getObject(columnLabel, map) -- getObject(columnIndex, type) -- getObject(columnLabel, type) -- getRef -- getRow() -- getRowId -- getSQLXML -- getUnicodeStream -- getURL -- moveToInsertRow() -- moveToCurrentRow() -- refreshRow() -- rowInserted() -- rowDeleted() -- rowUpdated() -- insertで始まる全メソッド -- updateで始まる全メソッド -- deleteで始まる全メソッド - -  - -### ResultSetMetaDataインターフェース - -検索結果ResultSetのメタデータを取得するResultSetMetaDataインターフェースについて説明します。 - -ResultSetMetaDataインターフェースのJDBC仕様の全メソッドについて、以下の分類で各メソッドの内容や実行結果などを説明します。 - -- カラムのデータ型を返すメソッド -- その他のメソッド -- 未サポートのメソッド - -#### カラムの型 - -ResultSetMetaDataインターフェースには、検索結果ResultSetのカラムのデータ型を返すメソッドがあります。 - -| メソッド | 内容 | -|----------|------| -| String getColumnClassName(int column) | 指定されたカラムのデータ型のクラス名を返します。 | -| int getColumnType(int column) | 指定されたカラムのデータ型の値を返します。 | -| String getColumnTypeName(int column) | 指定されたカラムのデータ型の名前を返します。 | - -カラムのデータ型と、それぞれのメソッドを実行した値との対応付けを以下に示します。 - -| カラムのデータ型 | getColumnClassName | getColumnType | getColumnTypeName | -|--------------------|---------------------|-----------------|-------------------| -| BOOL型 | "java.lang.Boolean" | Types.BIT | "BOOL" | -| STRING型 | "java.lang.String" | Types.VARCHAR | "STRING" | -| BYTE型 | "java.lang.Byte" | Types.TINYINT | "BYTE" | -| SHORT型 | "java.lang.Short" | Types.SMALLINT | "SHORT" | -| INTEGER型 | "java.lang.Integer" | Types.INTEGER | "INTEGER" | -| LONG型 | "java.lang.Long" | Types.BIGINT | "LONG" | -| FLOAT型 | "java.lang.Float" | Types.FLOAT | "FLOAT" | -| DOUBLE型 | "java.lang.Double" | Types.DOUBLE | "DOUBLE" | -| TIMESTAMP型 | "java.util.Date" | Types.TIMESTAMP | "TIMESTAMP" | -| BLOB型 | "java.sql.Blob" | Types.BLOB | "BLOB" | -| GEOMETRY型 | "java.lang.Object" | Types.OTHER | "UNKNOWN" | -| 配列型 | "java.lang.Object" | Types.OTHER | "UNKNOWN" | -| カラムのデータ型を特定できない場合(※1) | "java.lang.Object" | Types.OTHER | "UNKNOWN" | - - ->#### メモ ->- (※1). 例えば「SELECT NULL」を実行して得られるResultSetのような場合 ->- GEOMETRY型と配列型については、NoSQLインターフェースで作成された、これらのデータ型を持つテーブルを検索した場合に値が返ります。JDBCでは、これらのデータ型を持つテーブルは作成できません。 - - -#### 単純値を返す属性 - -ResultSetMetaDataインターフェースで、カラムのデータ型を返す以外のメソッドの実行結果を以下に示します。 - -| メソッド | 結果 | -|-------------------------------------------|------------------------------| -| String getCatalogName(int column) | "" | -| int getColumnCount() | カラムの数 | -| int getColumnDisplaySize(int column) | 131072 | -| String getColumnLabel(int column) | カラムのラベル名 | -| String getColumnName(int column) | カラムの名前 | -| int getPrecision(int column) | 0 | -| int getScale(int column) | 0 | -| String getSchemaName(int column) | "" | -| String getTableName(int column) | "" | -| boolean isAutoIncrement(int column) | false | -| boolean isCaseSensitive(int column) | true | -| boolean isCurrency(int column) | false | -| boolean isDefinitelyWritable(int column) | true | -| int isNullable(int column) | カラムにNULL値を許可する定数ResultSetMetaData.columnNullable(=1)、またはカラムにNULL値を許可しない定数columnNoNulls(=0) | -| boolean isReadOnly(int column) | false | -| boolean isSearchable(int column) | true | -| boolean isSigned(int column) | false | -| boolean isWritable(int column) | true | - - -#### 未サポートの機能 - -ResultSetMetaDataインターフェースで未サポートのメソッド(SQLFeatureNotSupportedExceptionが発生するメソッド)はありません。 + +# 概要 + +JDBCパラメータのプログラムでの指定形式や使用できるデータ型、使用上の注意点を説明します。 + +  + +## 接続方法 + +### ドライバの指定 + +JDBCドライバファイル `/usr/share/java/gridstore-jdbc.jar` をクラスパスに追加します。これによりドライバが自動的に登録されます。 さらに必要に応じて、以下のようにしてドライバクラスを読み込みます。通常は不要です。 + +``` example +Class.forName("com.toshiba.mwcloud.gs.sql.Driver"); +``` +また、SSL機能を利用してGridDBクラスタとクライアントの通信を保護する場合には、 `/usr/share/java/gridstore-advanced.jar`も追加でクラスパスに指定してください。 +  + +### 接続時のURL形式 + +URLは以下の(A)~(D)の形式となります。クラスタ構成方式がマルチキャスト方式の場合、通常は(A)の形式で接続してください。 GridDBクラスタ側で自動的に負荷分散が行われ適切なノードに接続されます。 GridDBクラスタとの間でマルチキャストでの通信ができない場合のみ、他の形式で接続してください。 + +**(A)マルチキャスト方式のGridDBクラスタの適切なノードへ自動的に接続する場合** + +``` example +jdbc:gs://(multicastAddress):(portNo)/(clusterName)/(databaseName) +``` + +- multicastAddress:GridDBクラスタとの接続に使うマルチキャストアドレス。(デフォルト: 239.0.0.1) +- portNo:GridDBクラスタとの接続に使うポート番号。(デフォルト: 41999) +- clusterName:GridDBクラスタのクラスタ名 +- databaseName:データベース名。省略した場合はデフォルトデータベース(public)に接続します。 + +**(B)マルチキャスト方式のGridDBクラスタ内のノードに直接接続する場合** + +``` example +jdbc:gs://(nodeAddress):(portNo)/(clusterName)/(databaseName) +``` + +- nodeAddress:ノードのアドレス +- portNo:ノードとの接続に使うポート番号。(デフォルト: 20001) +- clusterName:ノードが属するGridDBクラスタのクラスタ名 +- databaseName:データベース名。省略した場合はデフォルトデータベース(public)に接続します。 + +**(C)固定リスト方式のGridDBクラスタに接続する場合** + +クラスタ構成方式が固定リスト方式の場合、この形式で接続してください。 + +``` example +jdbc:gs:///(clusterName)/(databaseName)?notificationMember=(notificationMember) +``` + +- clusterName:GridDBクラスタのクラスタ名 +- databaseName:データベース名。省略した場合はデフォルトデータベース(public)に接続します。 +- notificationMember:ノードのアドレスリスト(URLエンコードが必要)。デフォルトポートは20001 + - 例:192.168.0.10:20001,192.168.0.11:20001,192.168.0.12:20001 + +※notificationMemberはgs_cluster.jsonファイルを編集することで変更可能です。 アドレスリストで使うポートは、gs_node.jsonファイルを編集することで変更可能です。 + +**(D)プロバイダ方式のGridDBクラスタに接続する場合【EE限定】** + +クラスタ構成方式がプロバイダ方式の場合、この形式で接続してください。 + +``` example +jdbc:gs:///(clusterName)/(databaseName)?notificationProvider=(notificationProvider) +``` + +- clusterName:GridDBクラスタのクラスタ名 +- databaseName:データベース名。省略した場合はデフォルトデータベースに接続します +- notificationProvider:アドレスプロバイダのURL(URLエンコードが必要) + +※notificationProviderはgs_cluster.jsonファイルを編集することで変更可能です。 + +なお、(A)~(D)いずれの場合でも、ユーザ名・パスワードをURLに含める場合は、URLの末尾に次のように追加してください。 + +``` example +?user=(ユーザ名)&password=(パスワード) +``` + +  + +### 接続タイムアウトの設定 + +以下の(A)、(B)どちらかの方法で接続タイムアウトを設定できます。両方が設定された場合、(B)の設定が優先されます。 どちらも設定されない場合、デフォルト値300秒(5分)が使用されます。 + +**(A)DriverManager\#setLoginTimeout(int seconds)で指定する** + +secondsの値によって、以下のように設定されます。設定後、DriverManager\#getConnectionまたはDriver\#connectで取得する全てのGridDBへのConnectionに接続タイムアウトが設定されます。 + +- 値が1~Integer.MAX_VALUEの設定値の場合 + - 指定した秒数で設定されます +- 値がInteger.MIN_VALUEの設定値~0の場合 + - 設定されません + +**(B)DriverManager\#getConnection(String url, Properties info)またはDriver\#connect(String url, Properties info)で指定する** + +引数infoにキー”loginTimeout”でプロパティを追加してください。キー”loginTimeout”に対応する値が数値に変換できた場合、取得したConnectionにのみ以下のように接続タイムアウトが設定されます。 + +- 変換した値が1~Integer.MAX_VALUEの場合 + - 指定した秒数で設定されます +- 変換した値が0以下 または Integer.MAX_VALUEより大きい場合 + - 設定されません + +  + +### その他情報の設定 +前述した設定のほか、接続時には次の情報も設定できます。 +- 認証方式【EE限定】 +- SSL通信の設定【EE限定】 +- 外部通信経路指定 +- マルチキャスト受信I/F指定 +- アプリケーション名 +- タイムゾーン(Z|±HH:MM|±HHMM) + +※タイムゾーン処理を行う場合、GridDBからの取得コストが増えるため、極力アプリ側で処理を行うことを推奨します。 + + +以下の(A)、(B)どちらかの方法でこれらは設定できます。両方が設定された場合は +エラーとなります。 + +**(A)URLで指定する** + +GridDBクラスタとの認証は、クラスタ側の設定に従って、内部認証(INTERNAL)、もしくはLDAP認証(LDAP)を利用します。接続時に認証方式を指定する場合には、URLに次のように追加してください。 + +``` example +?authentication=(INTERNAL|LDAP) +``` + +GridDBクラスタとの通信をSSLによって保護します。PREFERRED(クラスタ設定に従う) 、VERIFY(SSL有効、サーバ証明書検証実施) 、DISABLED(無効)が選択できます。URLに次のように追記してください。 + +``` example +?sslMode=(PREFERRED|VERIFY|DISABLED) +``` + +※LDAP認証を利用する場合、SSL通信を無効にすることは非推奨です。 + +※SSL通信設定(sslMode)をVERIFYに設定する場合、GridDBクラスタ側の設定も必要です。詳細は、『[GridDB 機能リファレンス](../md_reference_feature/md_reference_feature.md)』の「通信の暗号化」を参照してください。また、信頼する認証局の証明書がトラストストアになければ、keytoolコマンドを使ってインポートしてください。必要な場合は、java起動時の引数で、トラストストア(-Djavax.net.ssl.trustStore)、パスワード(-Djavax.net.ssl.trustStorePassword)を指定してください。信頼する認証局の証明書の有効期限切れ確認は未サポートです。 + +外部通信経路を用いた接続を行うにはURLに次のように追加してください。指定はPUBLICのみ有効となります。 + +``` example +?connectionRoute=PUBLIC +``` + +※外部通信経路を用いた接続を行うにはGridDBクラスタ側の設定も必要です。詳細は、『[GridDB 機能リファレンス](../md_reference_feature/md_reference_feature.md)』の「クライアント通信経路」を参照してください。 + + +複数のネットワークインターフェースがあるときにクラスタのネットワーク構成をマルチキャスト方式にする場合は、マルチキャストパケットを受信するインターフェースのアドレスが指定できます。URLに次のように追加して下さい。 + +``` example +?notificationNetworkInferfaceAddress=(マルチキャストパケットを受信するインターフェースのアドレス) +``` + +アプリケーション名をURLに含める場合は、URLの末尾に次のように追加してください。 + +``` example +?applicationName=(アプリケーション名) +``` + +タイムゾーンをURLに含める場合は、URLの末尾に次のように追加してください。 + +``` example +?timeZone=(タイムゾーン) +``` + + +ユーザ名・パスワードもURLに含める場合は、次のように追加してください。 + +``` example +?user=(ユーザ名)&password=(パスワード)&applicationName=(アプリケーション名)&timeZone=(タイムゾーン) +``` + +タイムゾーンの記号「:」など、URLエンコードが必要なものは適宜実施してください。 + +**(B)DriverManager#getConnection(String url, Properties info)またはDriver#connect(String url, Properties info)で指定する** + +引数infoに下記のキーでプロパティを追加してください。 +- 認証方式:authentication + - INTERNAL(内部認証) | LDAP(LDAP認証) +- SSL通信:sslMode + - PREFERRED(クラスタ設定に従う) | DISABLED(無効) +- 通信経路:connectionRoute + - PUBLIC(外部通信経路) +- マルチキャストパケットを受信するインターフェースアドレス:notificationNetworkInterfaceAddress + - IPアドレス +- アプリケーション名指定: applicationName + - アプリケーション名 +- タイムゾーン: timeZone + - タイムゾーン + + +## 注意点 + +- NoSQLインタフェース/NewSQLインタフェースの違い + - NoSQLインタフェースのクライアントで作成したコンテナは、NewSQLインタフェースのJDBCドライバで参照、更新可能です。更新には行の更新だけでなく、コンテナのスキーマや索引の変更を含みます。 + - NewSQLインタフェースのJDBCドライバで作成したテーブルは、NoSQLインタフェースのクライアントで参照、更新可能です。 + - NoSQLインタフェースの場合は「コンテナ」、NewSQLインタフェースの場合は「テーブル」と呼びます。呼び方が異なるだけでどちらも同じオブジェクトを指します。 + - NoSQLインタフェースのクライアントで作成した時系列コンテナを、JDBCドライバからSQLで検索した場合、NoSQLクライアントからTQLで検索した場合と異なり、主キーに対するORDER BY句がなければ結果は時刻順とはなりません。SQL結果の時刻順整列が必要な場合には主キーに対するORDER BYを指定してください。 +- 一貫性について、インタフェースの違いによらず、トランザクションの分離レベルとしてREAD COMMITTEDをサポートしています。 + NewSQLインタフェースによる検索・更新結果は、NoSQLインタフェースにて部分実行オプションを有効にしてTQLを実行した場合と同様、実行開始時点の単一のスナップショットに基づくとは限りません。 + 実行対象のデータ範囲に応じて分割された、個々の実行時点のスナップショットに基づく場合があります。 + この特性は、パーティショニングされていない単一のテーブルに対する、NoSQLインタフェースによるデフォルト設定での操作とは異なります。 + +  + +# 仕様 + +本章では、GridDB JDBCドライバの仕様について示します。主に、ドライバのサポート範囲ならびにJDBC標準との相違点について説明します。 特記事項がなくJDBC標準に準拠しているAPIの仕様については、JDKのAPIリファレンスを参照してください。将来のバージョンでは、特に次の点が変更される可能性があります。 + +- JDBC標準に準拠していない挙動 +- 未サポートの機能のサポート状況 +- エラーメッセージ + +  + +## 共通事項 + +### サポートされるJDBCバージョン + +JDBC4.1の一部機能に対応し、次の機能はサポートされません。 + +- トランザクション制御 +- ストアドプロシージャ +- バッチ実行(Statementインタフェース) + + +### エラー処理 + +#### 未サポート機能の使用 + +- 標準機能 + - JDBC仕様に準拠したドライバがサポートすべき標準機能のうち、本ドライバにおいて現状サポートされていない機能を使用した場合、SQLFeatureNotSupportedExceptionが発生します。この挙動は、本来のSQLFeatureNotSupportedExceptionの仕様とは異なります。エラー名(後述)はJDBC_NOT_SUPPORTEDとなります。 +- オプション機能 + - JDBC仕様においてオプション機能に位置付けられており、SQLFeatureNotSupportedExceptionが発生する可能性のある機能のうち、本ドライバにおいてサポートされていない機能を使用した場合、JDBC仕様通りSQLFeatureNotSupportedExceptionが発生します。エラー名はJDBC_OPTIONAL_FEATURE_NOT_SUPPORTEDとなります。 + +#### クローズ済みのオブジェクトに対するメソッド呼び出し + +JDBC仕様の通り、Connectionオブジェクトなどclose()メソッドを持つオブジェクトに対し、isClosed()以外のメソッドを呼び出すと、SQLExceptionが発生します。 エラー名はJDBC_ALREADY_CLOSEDとなります。 + +#### 不正なnull引数 + +APIのメソッド引数として、nullが許容されないにも関わらず指定された場合、JDBC_EMPTY_PARAMETERエラーからなるSQLExceptionが発生します。JDBC仕様または本書で明示的にnullの受け入れを明記している引数以外は、nullを許容しません。 + +#### 複数のエラー原因がある場合 + +複数のエラー原因がある場合は、いずれかのエラーを検知した時点でアプリケーションに制御が戻ります。 +特に、未サポート機能を使用しようとした場合のエラーは、他のエラーよりも先に検知します。 +たとえば、クローズ済みのConnectionオブジェクトに対してストアドプロシージャを作成しようとした場合は、クローズされていることではなく、未サポートであることを示すエラーが返ります。 + +#### 例外の内容 + +ドライバよりスローされるチェック例外は、SQLExceptionもしくはSQLExceptionのサブクラスのインスタンスからなります。 例外の詳細を取得するには、次のメソッドを使用します。 + +- getErrorCode() + - サーバ・クライアントのいずれかでGridDBが検知したエラーについて、エラー番号を返却します。 +- getSQLState() + - 少なくともドライバ内で検知したエラー(エラーコード:14xxxx)では、非nullの値を返却します。それ以外は未定義です。 +- getMessage() + - エラー番号とエラーの説明を組にした、エラーメッセージを返却します。書式は次のようになります。 + + ``` example + [(エラー番号):(エラー名)] (エラーの説明) + ``` + + - エラー一覧と対応しない番号のエラーが発生した場合、エラーメッセージは次のようになります。 + + ``` example + (エラーの詳細) + ``` + +#### エラー一覧 + +ドライバ内部で検出される主なエラーの一覧は次の通りです。 + +| エラー番号 | エラーコード名 | エラー説明の書式 | +|------------|-------------------------------------|-----------------------------------------------------------------------------------------------| +| (別記) | JDBC_NOT_SUPPORTED | Currently not supported | +| (別記) | JDBC_OPTIONAL_FEATURE_NOT_SUPPORTED | Optional feature not supported | +| (別記) | JDBC_EMPTY_PARAMETER | The parameter (引数名) must not be null | +| (別記) | JDBC_ALREADY_CLOSED | Already closed | +| (別記) | JDBC_COLUMN_INDEX_OUT_OF_RANGE | Column index out of range | +| (別記) | JDBC_VALUE_TYPE_CONVERSION_FAILED | Failed to convert value type | +| (別記) | JDBC_UNWRAPPING_NOT_SUPPORTED | Unwrapping interface not supported | +| (別記) | JDBC_ILLEGAL_PARAMETER | Illegal value: (引数名) | +| (別記) | JDBC_UNSUPPORTED_PARAMETER_VALUE | Unsupported (パラメータ名) | +| (別記) | JDBC_ILLEGAL_STATE | Protocol error occurred | +| (別記) | JDBC_INVALID_CURSOR_POSITION | Invalid cursor position | +| (別記) | JDBC_STATEMENT_CATEGORY_UNMATCHED | Writable query specified for read only request Read only query specified for writable request | +| (別記) | JDBC_MESSAGE_CORRUPTED | Protocol error | + +エラーの発生源となる元のエラーがある場合などは、上記のエラー説明の末尾に追加の詳細メッセージが追加されることがあります。 +  + + +## API仕様詳細 + +### Connectionインターフェース + +Connectionインターフェースの各メソッドについて説明します。 特に説明のない限り、Connectionがクローズされていない場合の説明のみを記載します。 + +#### トランザクション制御 + +トランザクション制御では、自動コミットモードのみのためコミット/ロールバックはサポートしません。 +ただし、トランザクションを使用するアプリケーションにおいても疑似的に動作するよう、コミットやロールバックを実行された場合は要求を無視します。 +SQLFeatureNotSupportedExceptionは発生しません。 + +トランザクション分離レベルは、TRANSACTION_READ_COMMITTEDのみサポートします。他のレベルは設定できません。 + +**JDBC仕様との相違があるメソッド** + +| メソッド | 内容 | JDBC仕様との相違点 | +|-----|----|----| +| void commit() | コミットします。 | 自動コミットモードのみのため、コミット要求を無視します。| +| void rollback() | ロールバックします。 | 自動コミットモードのみのため、ロールバック要求を無視します。| +| void setAutoCommit(boolean autoCommit) | コミットモードを設定します。 | 自動コミットモードのみのため、モードの設定はできません。autoCommitを無視して常にtrueを設定します。| + + +**一部未サポートのメソッド** + +| メソッド | 内容 | 一部未サポートの点 | +|-----|----|----| +| Statement createStatement(int resultSetType, int resultSetConcurrency) | ステートメントを作成します。 | resultSetTypeはResultSet.TYPE_FORWARD_ONLYのみ、resultSetConcurrencyはResultSet.CONCUR_READ_ONLYのみサポートします。それ以外の値を設定すると、SQLFeatureNotSupportedExceptionが発生します。 | +| Statement createStatement(int resultSetType, int resultSetConcurrency, int resultSetHoldability) | ステートメントを作成します。 | resultSetTypeはResultSet.TYPE_FORWARD_ONLYのみ、resultSetConcurrencyはResultSet.CONCUR_READ_ONLYのみ、resultSetHoldabilityはResultSet.CLOSE_CURSORS_AT_COMMITのみサポートします。それ以外の値を設定すると、SQLFeatureNotSupportedExceptionが発生します。 | +| PreparedStatement prepareStatement(String sql, int resultSetType, int resultSetConcurrency) | プリペアードステートメントを作成します。 | resultSetTypeはResultSet.TYPE_FORWARD_ONLYのみ、resultSetConcurrencyはResultSet.CONCUR_READ_ONLYのみサポートします。それ以外の値を設定すると、SQLFeatureNotSupportedExceptionが発生します。| +| PreparedStatement prepareStatement(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability) | プリペアードステートメントを作成します。| resultSetTypeはResultSet.TYPE_FORWARD_ONLYのみ、resultSetConcurrencyはResultSet.CONCUR_READ_ONLYのみ、resultSetHoldabilityはResultSet.CLOSE_CURSORS_AT_COMMITのみサポートします。それ以外の値を設定すると、SQLFeatureNotSupportedExceptionが発生します。| +| void setTransactionIsolation(int level) | トランザクション分離レベルを設定します。 | levelには、Connection.TRANSACTION_READ_COMMITTEDしか指定できません。それ以外の値を設定するとSQLExceptionが発生します。| + + +**サポートしているメソッド** + +| メソッド | 内容 | +|---------|------| +| void close() | Connectionをクローズします。 | +| Statement createStatement() | ステートメントを作成します。 | +| boolean getAutoCommit() | コミットモードを取得します。 | +| DatabaseMetaData getMetaData() | DatabaseMetaDataを取得します。 | +| int getTransactionIsolation() | トランザクション分離レベルを取得します。 | +| boolean isClosed() | Connectionがクローズされているかを取得します。 | +| PreparedStatement prepareStatement(String sql) | プリペアードステートメントを作成します。 | + + + +#### 属性の設定・取得 + +トランザクション制御のメソッド以外で、属性の設定や取得を行うメソッドについて説明します。 + +**JDBC仕様との相違があるメソッド** + +| メソッド | 内容 | JDBC仕様との相違点 | +|-----|----|----| +| void setReadOnly(boolean readOnly) | Connectionオブジェクトの読み込み専用モードを設定します。 | readOnlyを無視して、常にfalseを設定します。| + + +**一部未サポートのメソッド** + +| メソッド | 内容 | 一部未サポートの点 | +|-----|----|----| +| void setHoldability(int holdability) | ResultSetオブジェクトの保持機能を設定します。 | holdabilityにはResultSet.CLOSE_CURSORS_AT_COMMITしか指定できません。それ以外の値を設定すると、SQLFeatureNotSupportedExceptionが発生します。 | + + +**サポートしているメソッド** + +| メソッド | 内容 | +|---------|------| +| int getHoldability() | ResultSetオブジェクトの保持機能を取得します。 | +| boolean isReadOnly() | Connectionオブジェクトが読み込み専用モードかどうかを取得します。 | +| boolean isValid(int timeout) | 接続の状態を取得します。 | + + +#### 未サポートの機能 + +Connectionインターフェースの中で、未サポートのメソッド一覧を示します。実行すると、SQLFeatureNotSupportedExceptionが発生します。 + +- 標準機能 + - CallableStatement prepareCall(String sql) + +- オプション機能 + - void abort(Executor executor) + - Array createArrayOf(String typeName, Object[] elements) + - Blob createBlob() + - Clob createClob() + - NClob createNClob() + - SQLXML createSQLXML() + - Struct createStruct(String typeName, Object[] attributes) + - int getNetworkTimeout() + - String getSchema() + - Map> getTypeMap() + - CallableStatement prepareCall(String sql, int resultSetType, int resultSetConcurrency) + - CallableStatement prepareCall(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability) + - PreparedStatement prepareStatement(String sql, int autoGeneratedKeys) + - PreparedStatement prepareStatement(String sql, int[] columnIndexes) + - PreparedStatement prepareStatement(String sql, String[] columnNames) + - void releaseSavepoint(Savepoint savepoint) + - void rollback(Savepoint savepoint) + - void setNetworkTimeout(Executor executor, int milliseconds) + - void setSavepoint() + - void setSchema(String schema) + - void setTypeMap(Map> map) + +  + +### DatabaseMetaDataインターフェース + +テーブルのメタデータを取得するDatabaseMetaDataインターフェースについて説明します。 + +#### ResultSetを返す属性 + +DatabaseMetaDataインターフェースで、実行結果としてResultSetを返すメソッドの中で、サポートしているメソッドは以下の通りです。 +これら以外のResultSetを返すメソッドは未サポートです。 + +| メソッド | 内容 | +|--------|----| +| ResultSet getColumns(String catalog, String schemaPattern, String tableNamePattern, String columnNamePattern) | テーブルのカラム情報を返します | +| ResultSet getIndexInfo(String catalog, String schema, String table, boolean unique, boolean approximate) | テーブルの索引情報を返します | +| ResultSet getPrimaryKeys(String catalog, String schema, String table) | テーブルのロウキーの情報を返します | +| ResultSet getTables(String catalog, String schemaPattern, String tableNamePattern, String[] types) | テーブルの一覧を返します | +| ResultSet getTableTypes() | テーブルの型を返します | +| ResultSet getTypeInfo() | カラムのデータ型一覧を返します | + + +上記のメソッドをそれぞれ説明します。 + + +##### DatabaseMetaData.getColumns +```java +ResultSet getColumns(String catalog, String schemaPattern, String tableNamePattern, String columnNamePattern) +``` +- 指定されたテーブル名のパターンtableNamePatternに一致するテーブルのカラム情報を返します。パターンに指定されたワイルドカード「%」は0文字以上の文字、「\_」は任意の1文字に一致することを意味します。tableNamePatternにnullを指定した場合は全テーブルが対象になります。 +- 他の絞り込み条件catalog, schemaPattern, columnNamePatternは無視されます。 +- ビューのカラム情報は含まれません。 +- 実行結果のResultSetが持つカラムは以下の通りです。 + + | カラム名    | 型 | 値 | + |--------------------|--------|--------------------------------------| + | TABLE_CAT | String | null | + | TABLE_SCHEM | String | null | + | TABLE_NAME | String | テーブル名 | + | COLUMN_NAME | String | カラム名 | + | DATA_TYPE | int | カラムのデータ型の値(下記の表を参照) | + | TYPE_NAME | String | カラムのデータ型の名前(下記の表を参照) | + | COLUMN_SIZE | int | 131072 | + | BUFFER_LENGTH | int | 2000000000 | + | DECIMAL_DIGITS | int | TIMESTAMP型の場合は精度に応じた小数秒の桁数(ミリ秒精度:3, マイクロ秒精度:6, ナノ秒精度:9)、他の型の場合はnull | + | NUM_PREC_RADIX | int | 10 | + | NULLABLE | int | PRIMARY KEYまたはNOT NULL制約があるカラムは 0 (定数DatabaseMetaData.columnNoNullsの値)
それ以外は 1 (定数DatabaseMetaData.columnNullableの値) | + | REMARKS | String | null | + | COLUMN_DEF | String | null | + | SQL_DATA_TYPE | int | 0 | + | SQL_DATETIME_SUB | int | 0 | + | CHAR_OCTET_LENGTH | int | TIMESTAMP型の場合は精度に応じた最大文字列長さ(ミリ秒精度:30,マイクロ秒精度:33,ナノ秒精度:36)、他の型の場合は2000000000 | + | ORDINAL_POSITION | int | カラムの番号(1からの連番) | + | IS_NULLABLE | String | NOT NULL制約。PRIMARY KEYまたはNOT NULL制約があるカラムは'NO'
それ以外は'YES' | + | SCOPE_CATALOG | String | null | + | SCOPE_SCHEMA | String | null | + | SCOPE_TABLE | String | null | + | SOURCE_DATA_TYPE | short | 0 | + | IS_AUTOINCREMENT | String | 'NO' | + | IS_GENERATEDCOLUMN | String | 'NO' | + +- 該当カラムのデータ型に応じて、次のTYPE_NAMEとDATA_TYPEの値の組合せを返します。 + + | カラムのデータ型 | TYPE_NAMEの値 | DATA_TYPEの値 | + |--------------------|---------------------|----------------------| + | BOOL型 | 'BOOL' | -7 (Types.BIT) | + | STRING型  | 'STRING' | 12 (Types.VARCHAR) | + | BYTE型 | 'BYTE' | -6 (Types.TINYINT) | + | SHORT型 | 'SHORT' | 5 (Types.SMALLINT) | + | INTEGER型 | 'INTEGER' | 4 (Types.INTEGER) | + | LONG型 | 'LONG' | -5 (Types.BIGINT) | + | FLOAT型 | 'FLOAT' | 6 (Types.FLOAT) | + | DOUBLE型 | 'DOUBLE' | 8 (Types.DOUBLE) | + | TIMESTAMP型 | 'TIMESTAMP' | 93 (Types.TIMESTAMP) | + | BLOB型 | 'BLOB' | 2004 (Types.BLOB) | + | GEOMETRY型 | 'GEOMETRY' | 1111 (Types.OTHER) | + | BOOL型の配列型 | 'BOOL_ARRAY' | 1111 (Types.OTHER) | + | STRING型の配列型 | 'STRING_ARRAY' | 1111 (Types.OTHER) | + | BYTE型の配列型 | 'BYTE_ARRAY' | 1111 (Types.OTHER) | + | SHORT型の配列型 | 'SHORT_ARRAY' | 1111 (Types.OTHER) | + | INTEGER型の配列型 | 'INTEGER_ARRAY' | 1111 (Types.OTHER) | + | LONG型の配列型 | 'LONG_ARRAY' | 1111 (Types.OTHER) | + | FLOAT型の配列型 | 'FLOAT_ARRAY' | 1111 (Types.OTHER) | + | DOUBLE型の配列型 | 'DOUBLE_ARRAY' | 1111 (Types.OTHER) | + | TIMESTAMP型の配列型 | 'TIMESTAMP_ARRAY' | 1111 (Types.OTHER) | + +- GEOMETRY型と配列型については、NoSQLインターフェースで作成された、これらのデータ型を持つテーブルの情報を取得した場合に値が返ります。JDBCでは、これらのデータ型を持つテーブルは作成できません。 + +  + +##### DatabaseMetaData.getIndexInfo + +```java +ResultSet getIndexInfo(String catalog, String schema, String table, boolean unique, boolean approximate) +``` + +- 指定されたテーブル名tableに一致するテーブルの索引情報を返します。指定された名前のテーブルが存在しない場合は、実行結果のResultSetは空が返ります。 +- uniqueにはfalseを指定してください。uniqueがfalse以外の場合、実行結果のResultSetは空が返ります。 +- 他の絞り込み条件catalog、schemaと、パラメータapproximateは無視されます。 +- 実行結果のResultSetが持つカラムは以下の通りです。 + + | カラム名 | 型 | 値 | + |------------------|---------|------------------| + | TABLE_CAT | String | null | + | TABLE_SCHEM | String | null | + | TABLE_NAME | String | テーブル名 | + | NON_UNIQUE | boolean | true | + | INDEX_QUALIFIER | String | null | + | INDEX_NAME | String | 索引名 | + | TYPE | short | 2(ハッシュ索引を表す定数DatabaseMetaData.tableIndexHashedの値) または 3(ハッシュ以外の索引を表す定数DatabaseMetaData.tableIndexOtherの値) | + | ORDINAL_POSITION | short | 1から開始 | + | COLUMN_NAME | String | カラム名 | + | ASC_OR_DESC | String | null | + | CARDINALITY | long | 0 | + | PAGES | long | 0 | + | FILTER_CONDITION | String | null | + +  + +##### DatabaseMetaData.getPrimaryKeys + +```java +ResultSet getPrimaryKeys(String catalog, String schema, String table) +``` +- 指定されたテーブル名tableに一致するテーブルのロウキー情報を返します。指定された名前のテーブルが存在しない場合は、実行結果のResultSetは空が返ります。ただし、tableにnullを指定した場合は、ロウキーが設定されている全テーブルの情報が返ります。 +- 他の絞り込み条件catalog, schemaは無視されます。 +- 実行結果のResultSetが持つカラムは以下の通りです。 + + | カラム名 | 型 | 値 | + |------------------|---------|--------------| + | TABLE_CAT | String | null | + | TABLE_SCHEM | String | null | + | TABLE_NAME | String | テーブル名 | + | COLUMN_NAME | String | カラム名 | + | KEY_SEQ | short | 1 | + | PK_NAME | String | null | + +  + +##### DatabaseMetaData.getTables + +```java +ResultSet getTables(String catalog, String schemaPattern, String tableNamePattern, String[] types) +``` +- 指定されたテーブル名のパターンtableNamePatternに一致するテーブルの情報を返します。パターンに指定されたワイルドカード「%」は0文字以上の文字、「\_」は任意の1文字に一致することを意味します。tableNamePatternにnullを指定した場合は全テーブルが対象になります。 +- typesにはnullまたは文字列の配列を指定します。文字列要素は"TABLE"および"VIEW"が指定できます。typesに"TABLE"または"VIEW"と一致する要素が存在しなければ常に空の結果を返します。types内の文字列要素の大文字小文字表記の違いは無視されます。(typesは、テーブルの種別であるコレクション、時系列コンテナを表す値ではありません。) +- 他の絞り込み条件catalog, schemaPatternは無視されます。 +- 実行結果のResultSetが持つカラムは以下の通りです。 + + | カラム名 | 型 | 値 | + |----------------------------|---------|------------------| + | TABLE_CAT | String | null | + | TABLE_SCHEM | String | null | + | TABLE_NAME | String | テーブル名 | + | TABLE_TYPE | String | 'TABLE'または'VIEW' | + | REMARKS | String | null | + | TYPE_CAT | String | null | + | TYPE_SCHEM | String | null | + | TYPE_NAME | String | null | + | SELF_REFERENCING_COL_NAME | String | null | + | REF_GENERATION | String | null | + +  + +##### DatabaseMetaData.getTableTypes + +```java +ResultSet getTableTypes() +``` +- テーブルのタイプを返します。結果は、カラム「TABLE_TYPE」に値'TABLE'または'VIEW'が格納された1件のみが返ります。 +- 実行結果のResultSetが持つカラムは以下の通りです。 + + | カラム名 | 型 | 値 | + |------------------|---------|-------------| + | TABLE_TYPE | String | 'TABLE'または'VIEW' | + +  + +##### DatabaseMetaData.getTypeInfo() + +```java +ResultSet getTypeInfo() +``` +- カラムのデータ型一覧を返します。 +- 全ての型で共通の情報、型別の情報は以下の通りです。 + + | カラム名 | 型 | 値 | + |--------------------|---------|-------------------------| + | TYPE_NAME | String | データ型の名前(下記の表を参照) | + | DATA_TYPE | int | データ型の値(下記の表を参照) | + | PRECISION | int | TIMESTAMP型の場合は9(最大精度ナノ秒の小数部桁数)、他の型の場合は0 | + | LITERAL_PREFIX | String | null | + | LITERAL_SUFFIX | String | null | + | CREATE_PARAMS | String | null | + | NULLABLE | short | 1 (このデータ型でNULL値が許可されることを表す定数DatabaseMetaData.typeNullableの値) | + | CASE_SENSITIVE | boolean | true | + | SEARCHABLE | short | 3 (このデータ型をWHERE節で使用できることを表す定数DatabaseMetaData.typeSearchableの値) | + | UNSIGNED_ATTRIBUTE | boolean | false | + | FIXED_PREC_SCALE | boolean | false | + | AUTO_INCREMENT | boolean | false | + | LOCAL_TYPE_NAME | String | null | + | MINIMUM_SCALE | short | 0 | + | MAXIMUM_SCALE | short | 0 | + | SQL_DATA_TYPE | int | 0 | + | SQL_DATETIME_SUB | int | 0 | + | NUM_PREC_RADIX | int | 10 | + + +- カラムTYPE_NAME、DATA_TYPEは、以下の組合せの値が全て返ります。 + + | TYPE_NAMEの値 | DATA_TYPEの値 | + |---------------------|----------------------| + | 'BOOL' | -7 (Types.BIT) | + | 'STRING' | 12 (Types.VARCHAR) | + | 'BYTE' | -6 (Types.TINYINT) | + | 'SHORT' | 5 (Types.SMALLINT) | + | 'INTEGER' | 4 (Types.INTEGER) | + | 'LONG' | -5 (Types.BIGINT) | + | 'FLOAT' | 6 (Types.FLOAT) | + | 'DOUBLE' | 8 (Types.DOUBLE) | + | 'TIMESTAMP' | 93 (Types.TIMESTAMP) | + | 'BLOB' | 2004 (Types.BLOB) | + | 'UNKNOWN' | 0 (Types.NULL) | + +  + +#### 単純値を返すメソッド + +DatabaseMetaDataインターフェースのメソッドの中で、実行結果としてint型やString型などの単純値を返すメソッドについて、実行結果の一覧を示します。 + +| メソッド | 結果 | +|---------------------------------------------------------|------------------------------------------------------------------------------------| +| allProceduresAreCallable() | false | +| allTablesAreSelectable() | true | +| autoCommitFailureClosesAllResultSets() | false | +| dataDefinitionCausesTransactionCommit() | false | +| dataDefinitionIgnoredInTransactions() | true | +| deletesAreDetected(type) | false | +| doesMaxRowSizeIncludeBlobs() | false | +| generatedKeyAlwaysReturned() | false | +| getCatalogSeparator() | "." | +| getCatalogTerm() | "catalog" | +| getDefaultTransactionIsolation() | TRANSACTION_READ_COMMITTED | +| getExtraNameCharacters() | . - / = (順不同) | +| getIdentifierQuoteString() | " | +| getMaxBinaryLiteralLength() | 0 | +| getMaxCatalogNameLength() | 0 | +| getMaxCharLiteralLength() | 0 | +| getMaxColumnNameLength() | 0 | +| getMaxColumnsInGroupBy() | 0 | +| getMaxColumnsInIndex() | 0 | +| getMaxColumnsInOrderBy() | 0 | +| getMaxColumnsInSelect() | 0 | +| getMaxColumnsInTable() | 0 | +| getMaxConnections() | 0 | +| getMaxCursorNameLength() | 0 | +| getMaxIndexLength() | 0 | +| getMaxSchemaNameLength() | 0 | +| getMaxProcedureNameLength() | 0 | +| getMaxRowSize() | 0 | +| getMaxStatementLength() | 0 | +| getMaxStatements() | 0 | +| getMaxTableNameLength() | 0 | +| getMaxTablesInSelect() | 0 | +| getMaxUserNameLength() | 0 | +| getProcedureTerm() | "procedure" | +| getResultSetHoldability() | CLOSE_CURSORS_AT_COMMIT | +| getRowIdLifetime() | true | +| getSchemaTerm() | "schema" | +| getSearchStringEscape() | "| | +| getSQLKeywords() | "" | +| getSQLStateType() | sqlStateSQL99 | +| getStringFunctions() | "" | +| getSystemFunctions() | "" | +| getURL() | null | +| getUserName() | (ユーザ名) | +| insertsAreDetected(type) | false | +| isCatalogAtStart() | true | +| isReadOnly() | false | +| locatorsUpdateCopy() | false | +| nullPlusNonNullIsNull() | true | +| nullsAreSortedAtEnd() | false | +| nullsAreSortedAtStart() | false | +| nullsAreSortedHigh() | true | +| nullsAreSortedLow() | false | +| othersDeletesAreVisible(type) | false | +| othersInsertsAreVisible(type) | false | +| othersUpdatesAreVisible(type) | false | +| ownDeletesAreVisible(type) | false | +| ownInsertsAreVisible(type) | false | +| ownUpdatesAreVisible(type) | false | +| storesLowerCaseIdentifiers() | false | +| storesLowerCaseQuotedIdentifiers() | false | +| storesMixedCaseIdentifiers() | true | +| storesMixedCaseQuotedIdentifiers() | false | +| storesUpperCaseIdentifiers() | false | +| storesUpperCaseQuotedIdentifiers() | false | +| supportsAlterTableWithAddColumn() | false | +| supportsAlterTableWithDropColumn() | false | +| supportsANSI92EntryLevelSQL() | false | +| supportsANSI92FullSQL() | false | +| supportsANSI92IntermediateSQL() | false | +| supportsBatchUpdates() | false | +| supportsCatalogsInDataManipulation() | false | +| supportsCatalogsInIndexDefinitions() | false | +| supportsCatalogsInPrivilegeDefinitions() | false | +| supportsCatalogsInProcedureCalls() | false | +| supportsCatalogsInTableDefinitions() | false | +| supportsColumnAliasing() | true | +| supportsConvert() | false | +| supportsConvert(fromType, toType) | false | +| supportsCoreSQLGrammar() | true | +| supportsCorrelatedSubqueries() | true | +| supportsDataDefinitionAndDataManipulationTransactions() | false | +| supportsDataManipulationTransactionsOnly() | false | +| supportsDifferentTableCorrelationNames() | false | +| supportsExpressionsInOrderBy() | true | +| supportsExtendedSQLGrammar() | false | +| supportsFullOuterJoins() | false | +| supportsGetGeneratedKeys() | false | +| supportsGroupBy() | true | +| supportsGroupByBeyondSelect() | true | +| supportsGroupByUnrelated() | true | +| supportsIntegrityEnhancementFacility() | false | +| supportsLikeEscapeClause() | true | +| supportsLimitedOuterJoins() | true | +| supportsMinimumSQLGrammar() | true | +| supportsMixedCaseIdentifiers() | false | +| supportsMixedCaseQuotedIdentifiers() | true | +| supportsMultipleOpenResults() | false | +| supportsMultipleResultSets() | false | +| supportsMultipleTransactions() | false | +| supportsNamedParameters() | false | +| supportsNonNullableColumns() | true | +| supportsOpenCursorsAcrossCommit() | false | +| supportsOpenCursorsAcrossRollback() | false | +| supportsOpenStatementsAcrossCommit() | false | +| supportsOpenStatementsAcrossRollback() | false | +| supportsOrderByUnrelated() | true | +| supportsOuterJoins() | true | +| supportsPositionedDelete() | false | +| supportsPositionedUpdate() | false | +| supportsResultSetConcurrency(type, concurrency) | typeがTYPE_FORWARD_ONLY、concurrencyがCONCUR_READ_ONLYの場合のみ | +| supportsResultSetHoldability(holdability) | CLOSE_CURSORS_AT_COMMITの場合のみ | +| supportsResultSetType() | TYPE_FORWARD_ONLYの場合のみ | +| supportsSavepoints() | false | +| supportsSchemasInDataManipulation() | false | +| supportsSchemasInIndexDefinitions() | false | +| supportsSchemasInPrivilegeDefinitions() | false | +| supportsSchemasInProcedureCalls() | false | +| supportsSchemasInTableDefinitions() | false | +| supportsSelectForUpdate() | false | +| supportsStatementPooling() | false | +| supportsStoredFunctionsUsingCallSyntax() | false | +| supportsStoredProcedures() | false | +| supportsSubqueriesInComparisons() | false | +| supportsSubqueriesInExists() | true | +| supportsSubqueriesInIns() | true | +| supportsSubqueriesInQuantifieds() | false | +| supportsTableCorrelationNames() | false | +| supportsTransactionIsolationLevel(level) | TRANSACTION_READ_COMMITTEDの場合のみ | +| supportsTransactions() | true | +| supportsUnion() | true | +| supportsUnionAll() | true | +| updatesAreDetected(type) | false | +| usesLocalFilePerTable() | false | +| usesLocalFiles() | false | + + +#### 未サポートのメソッド + +DatabaseMetaDataインターフェースのメソッドの中で、未サポートのメソッド一覧を示します。 +実行するとSQLFeatureNotSupportedExceptionは発生せず、以下の結果が返ります。 + +| メソッド | 結果 | +|------------------------------------|---------------| +| ResultSet getAttributes(String catalog, String schemaPattern, String typeNamePattern, String attributeNamePattern) | 空のResultSet | +| ResultSet getBestRowIdentifier(String catalog, String schema, String table, int scope, boolean nullable) | 空のResultSet | +| ResultSet getCatalogs() | 空のResultSet | +| ResultSet getClientInfoProperties() | 空のResultSet | +| ResultSet getColumnPrivileges(String catalog, String schema, String table, String columnNamePattern) | 空のResultSet | +| ResultSet getCrossReference(String parentCatalog, String parentSchema, String parentTable, String foreignCatalog, String foreignSchema, String foreignTable) | 空のResultSet | +| ResultSet getExportedKeys(String catalog, String schema, String table) | 空のResultSet | +| ResultSet getFunctionColumns(String catalog, String schemaPattern, String functionNamePattern, String columnNamePattern) | 空のResultSet | +| ResultSet getFunctions(String catalog, String schemaPattern, String functionNamePattern) | 空のResultSet | +| ResultSet getImportedKeys(String catalog, String schema, String table) | 空のResultSet | +| ResultSet getProcedureColumns(String catalog, String schemaPattern, String procedureNamePattern, String columnNamePattern) | 空のResultSet | +| ResultSet getProcedures(String catalog, String schemaPattern, String procedureNamePattern) | 空のResultSet | +| ResultSet getPseudoColumns(String catalog, String schemaPattern, String tableNamePattern, String columnNamePattern) | 空のResultSet | +| ResultSet getSchemas() | 空のResultSet | +| ResultSet getSchemas(String catalog, String schemaPattern) | 空のResultSet | +| ResultSet getSuperTables(String catalog, String schemaPattern, String tableNamePattern) | 空のResultSet | +| ResultSet getSuperTypes(String catalog, String schemaPattern, String typeNamePattern) | 空のResultSet | +| ResultSet getTablePrivileges(String catalog, String schemaPattern, String tableNamePattern) | 空のResultSet | +| ResultSet getUDTs(String catalog, String schemaPattern, String typeNamePattern, int[] types) | 空のResultSet | +| ResultSet getVersionColumns(String catalog, String schema, String table) | 空のResultSet | + +  + +### Statementインターフェース + +#### フェッチサイズの設定・取得 + +指定された値のチェックのみ行います。 + +値のチェックでは、このStatementのgetMaxRows()で得られるロウ数より超えないこともチェックします。 この値に関する制限は、JDBC4.0より前のJDBC仕様でのみ明記されていました。 ただし、以前のJDBC仕様とは異なり、getMaxRows()の結果がデフォルト値0に設定されている場合を除きます。 + +#### フェッチ方向の設定・取得 + +フェッチ方向の設定はFETCH_FORWARDのみをサポートします。FETCH_FORWARD以外が指定された場合、SQLExceptionが発生します。 + +#### 未サポートの機能 + +- バッチ更新 + - Statementインタフェースに対するバッチ更新はサポートしません。以下の機能を使用しようとすると、未サポートの標準機能を使用した場合と同一のエラーが発生します。 + - addBatch() + - clearBatch() + - executeBatch() +- 標準機能 + - 以下のメソッドの呼び出しは無視されます。JDBC仕様とは異なります。 + - setEscapeProcessing(enable) +- オプション機能 + - 以下のメソッドを呼び出すとSQLFeatureNotSupportedExceptionが発生します。 + - closeOnCompletion() + - execute(sql, autoGeneratedKeys) + - execute(sql, columnIndexes) + - execute(sql, columnNames) + - executeUpdate(sql, autoGeneratedKeys) + - executeUpdate(sql, columnIndexes) + - executeUpdate(sql, columnNames) + - getGeneratedKeys() + - getMoreResults(current) + - isCloseOnCompletion() + +  + +### PreparedStatementインターフェース + +#### パラメータの設定・取得 + +以下のメソッドをサポートします。設定されていないパラメータがある状態でexecuteQueryなどクエリ実行APIを呼び出すと、SQLExceptionが発生します。 + +- addBatch() +- clearBatch() +- executeBatch() + - ResultSetを含まないSQLに対してのみバッチ更新が可能であり、含む場合はエラーを返します。この場合エラーを返すタイミングはaddBatch()/clearBatch()ではなく、executeBatch()のタイミングとなります。また、対象SQLが複文となるケースもエラーとなります。 +- clearParameters() +- getMetaData() +- getParameterMetaData() +- setBinaryStream(int parameterIndex, InputStream x) + - setBinaryStream(オーバーロード含む)では、クライアント側で入力データの数倍のメモリが必要になる可能性があります。実行時にメモリ不足になった場合はJVM起動時のヒープメモリサイズを調整してください。 +- setBinaryStream(int parameterIndex, InputStream x, int length) +- setBinaryStream(int parameterIndex, InputStream x, long length) +- setBlob(int parameterIndex, Blob x) + - setBlob(オーバーロード含む)では、クライアント側で入力データの数倍のメモリが必要になる可能性があります。実行時にメモリ不足になった場合はJVM起動時のヒープメモリサイズを調整してください。 +- setBlob(int parameterIndex, InputStream inputStream) +- setBlob(int parameterIndex, InputStream inputStream, long length) +- setBoolean(int parameterIndex, boolean x) +- setByte(int parameterIndex, byte x) +- setDate(int parameterIndex, Date x) +- setDouble(int parameterIndex, double x) +- setFloat(int parameterIndex, float x) +- setInt(int parameterIndex, int x) +- setLong(int parameterIndex, long x) +- setObject(int parameterIndex, Object x) + + TIMESTAMP型のパラメータに設定する値としては、java.sql.Timestampもしくはjava.util.Dateのサブクラスのオブジェクトを受け入れます。以下の対応関係となります。 + + java.sql.Timestampの場合:ナノ秒精度TIMESTAMP型 + + java.util.Dateの場合  :ミリ秒精度TIMESTAMP型 +- setShort(int parameterIndex, short x) +- setString(int parameterIndex, String x) +- setTime(int parameterIndex, Time x) +- setTimestamp(int parameterIndex, Timestamp x) + + TIMESTAMP型のパラメータに設定する値としては、java.sql.Timestampもしくはjava.util.Dateのサブクラスのオブジェクトを受け入れます。以下の対応関係となります。 + + java.sql.Timestampの場合:ナノ秒精度TIMESTAMP型 + + java.util.Dateの場合  :ミリ秒精度TIMESTAMP型 + +#### SQLの実行 + +以下のメソッドをサポートします。 + +- execute() +- executeQuery() +- executeUpdate() + +#### 未サポートの機能 + +- 標準機能 + - 以下のメソッドを呼び出すとSQLFeatureNotSupportedExceptionが発生します。この挙動はJDBC仕様とは異なります。 + - setBigDecimal(int parameterIndex, BigDecimal x) + - setDate(int parameterIndex, Date x, Calendar cal) + - setTime(int parameterIndex, Time x, Calendar cal) + - setTimestamp(int parameterIndex, Timestamp x, Calendar cal) +- オプション機能 + - 以下のメソッドを呼び出すとSQLFeatureNotSupportedExceptionが発生します。引数を省略しているものは、全てのオーバーロードが未サポートです。 + - setArray + - setAsciiStream + - setBytes + - setCharacterStream + - setClob + - setNCharacterStream + - setNClob + - setNString + - setNull + - setObject(int parameterIndex, Object x, int targetSqlType) + - setObject(int parameterIndex, Object x, int targetSqlType, int scaleOrLength) + - setRef + - setRowId + - setSQLXML + - setUnicodeStream + - setURL + +  + +### ParameterMetaDataインターフェース + +PreparedStatementのメタデータを取得するParameterMetaDataインターフェースについて説明します。 + +JDBC仕様の全てのメソッドをサポートしますが、以下のメソッドは引数paramの値によらず常に固定の値を返します。 + +| メソッド | 結果 | +|-----------------------------------------|-------------| +| int getParameterType(int param) | Types.OTHER | +| String getParameterTypeName(int param) | "UNKNOWN" | +| int getPrecision(int param) | 0 | +| int getScale(int param) | 0 | +| boolean isSigned(int param) | false | + +  + +### ResultSetインターフェース + +#### フェッチサイズの設定・取得 + +指定された値のチェックのみ行い、設定の変更は実際のフェッチ処理には影響しません。 値のチェックでは、対象のResultSetの生成元のStatementのgetMaxRows()で得られるロウ数より超えないこともチェックします。 この制限は、JDBC4.0より前のJDBC仕様でのみ明記されていました。ただし、以前のJDBC仕様とは異なり、getMaxRows()の結果がデフォルト値0に設定されている場合を除きます。実際のフェッチ処理には影響しませんが、変更した設定値を取得できます。 + +#### フェッチ方向の設定・取得 + +フェッチ方向の設定はFETCH_FORWARDのみをサポートします。FETCH_FORWARD以外が指定された場合、 SQLExceptionが発生します。この挙動はJDBC仕様とは異なります。 + +#### カーソル情報の取得 + +カーソルに関する以下のメソッドをサポートします。 +- isAfterLast() +- isBeforeFirst() +- isFirst() +- isLast() +- next() + +フェッチ方向はFETCH_FORWARDのみをサポートしているため、次のメソッドを呼び出すとFETCH_FORWARDタイプのResultSetに対する呼び出しを原因とするSQLExceptionが発生します。 +- absolute(row) +- afterLast() +- beforeFirst() +- first() +- last() +- previous() +- relative(rows) + +#### 警告の管理 + +警告は記録されないため、警告を管理するメソッドの挙動は次のようになります。 + +| メソッド | 挙動 | +|-----------------|----------------------| +| getWarnings() | nullを返却 | +| clearWarnings() | 警告はクリアされない | + +#### 固定値を返す属性 + +ResultSetがオープンされている間、常に固定の値を返すメソッドのサポート状況は次の通りです。 + +| メソッド | 結果 | +|------------------|----------------------------------| +| getCursorName() | nullを返却 | +| getType() | TYPE_FORWARD_ONLYを返却 | +| getConcurrency() | CONCUR_READ_ONLYを返却 | +| getMetaData() | (JDBC準拠) | +| getStatement() | (JDBC準拠) | + +#### 型変換 + +指定のカラムの値を取得する際、ResultSetが保持する型と求める型とが異なる場合は、次の組み合わせに限り、型変換を試みます。 + +| 変換先のJava型 | BOOL | INTEGRAL ※1 | FLOATING ※2 | TIMESTAMP | STRING | BLOB | +|----------------|------|-------------|-------------|-----------|--------|------| +| boolean | ○ | ○ ※3 | | | ○ ※4 | | +| byte | ○ | ○ | ○ | | ○ | | +| short | ○ | ○ | ○ | | ○ | | +| int | ○ | ○ | ○ | | ○ | | +| long | ○ | ○ | ○ | | ○ | | +| float | | ○ | ○ | | ○ | | +| double | | ○ | ○ | | ○ | | +| byte\[\] | ○ | ○ | ○ | | ○ | | +| java.sql.Date | | | | ○ | ○ ※5 | | +| Time | | | | ○ | ○ ※5 | | +| Timestamp | | | | ○ ※8 | ○ ※5 | | +| String | ○ | ○ | ○ | ○ ※6 | ○ | ○ ※7 | +| Blob | | | | | ○ ※7 | ○ | +| Object | ○ | ○ | ○ | ○ | ○ | ○ | + +- (※1). INTEGRAL: BYTE/SHORT/INTEGER/LONGのいずれかを表します。 +- (※2). FLOATING: FLOAT/DOUBLEのいずれかを表します。 +- (※3). 変換元数値が0ならばfalseに、0以外ならばtrueに変換します。 +- (※4). 変換元文字列が'false'ならばfalseに、'true'ならばtrueに変換します。ASCIIの大文字小文字は同一視します。それ以外は変換できずエラーとなります。 +- (※5). 以下のルールで文字列表現の時刻を変換します。 + - 表現をjava.text.SimpleDateFormatと同様のパターン文字列で表したものは以下のとおりです。ただしタイムゾーンを除きます。 + - yyyy-MM-dd'T'HH:mm:ss.SSS + - yyyy-MM-dd'T'HH:mm:ss + - yyyy-MM-dd HH:mm:ss.SSS + - yyyy-MM-dd HH:mm:ss + - yyyy-MM-dd + - HH:mm:ss.SSS + - HH:mm:ss + - タイムゾーンについては、文字列に含まれるものが最優先で利用されます。次に、ResultSet#getTimeStamp()など取得APIの引数java.util.Calendarにおいてタイムゾーン指定があった場合はその内容を参照します。最後に接続時に指定したタイムゾーンが参照され、いずれも指定がない場合はUTC扱いとなります。タイムゾーン文字列としては、java.text.SimpleDateFormatの「z」または「Z」パターンで解釈できる表現のほか、UTCであることを示す「Z」表現を受け付けます。 +- (※6). 接続時に指定したタイムゾーン情報が反映され、指定がない場合はUTCとなります。 +- (※7). 16進数バイナリ表現とみなして、文字列とBLOBを相互に変換します。ASCIIの大文字小文字は同一視します。それ以外は変換できずエラーとなります。 +- (※8). 精度の異なるTIMESTAMP型同士の変換は暗黙的に行われます。 + +#### カラムの値取得 + +サポートされている型変換先の型と対応するメソッドより、カラムの値を取得できます。 カラムの指定方法としては、カラムラベルとカラムインデックスの両方をサポートします。 + +カラム値の取得の際、TIMESTAMP型のカラムについては、精度に応じて以下のオブジェクトが取得されます。 +- TIMESTAMP型(マイクロ秒精度,ナノ秒精度)の場合: java.sql.Timestampのオブジェクト +- TIMESTAMP型(ミリ秒精度)の場合: java.util.Dateのオブジェクト + +その他、次の機能を使用できます。 + +- getBinaryStream + - byte\[\]への型変換結果に相当します +- wasNull + - JDBC準拠 + +#### エラー処理 + +- 不正なカラムインデックス + - 不正なカラムインデックスを指定して値を取得しようとした場合、JDBC_COLUMN_INDEX_OUT_OF_RANGEエラーからなるSQLExceptionが発生します。 +- 型変換エラー + - 型変換に失敗した場合、JDBC_VALUE_TYPE_CONVERSION_FAILEDエラーからなるSQLExceptionが発生します。 + +#### 未サポートの機能 + +次のオプション機能は未サポートです。引数を省略しているものは、全てのオーバーロードが未サポートです。 + +- cancelRowUpdates() +- getArray +- getAsciiStream +- getBigDecimal +- getClob +- getNClob +- getNCharacterStream +- getNString +- getObject(columnIndex, map) +- getObject(columnLabel, map) +- getObject(columnIndex, type) +- getObject(columnLabel, type) +- getRef +- getRow() +- getRowId +- getSQLXML +- getUnicodeStream +- getURL +- moveToInsertRow() +- moveToCurrentRow() +- refreshRow() +- rowInserted() +- rowDeleted() +- rowUpdated() +- insertで始まる全メソッド +- updateで始まる全メソッド +- deleteで始まる全メソッド + +  + +### ResultSetMetaDataインターフェース + +検索結果ResultSetのメタデータを取得するResultSetMetaDataインターフェースについて説明します。 + +ResultSetMetaDataインターフェースのJDBC仕様の全メソッドについて、以下の分類で各メソッドの内容や実行結果などを説明します。 + +- カラムのデータ型を返すメソッド +- その他のメソッド +- 未サポートのメソッド + +#### カラムの型 + +ResultSetMetaDataインターフェースには、検索結果ResultSetのカラムのデータ型を返すメソッドがあります。 + +| メソッド | 内容 | +|----------|------| +| String getColumnClassName(int column) | 指定されたカラムのデータ型のクラス名を返します。 | +| int getColumnType(int column) | 指定されたカラムのデータ型の値を返します。 | +| String getColumnTypeName(int column) | 指定されたカラムのデータ型の名前を返します。 | + +カラムのデータ型と、それぞれのメソッドを実行した値との対応付けを以下に示します。 + +| カラムのデータ型 | getColumnClassName | getColumnType | getColumnTypeName | +|--------------------|---------------------|-----------------|-------------------| +| BOOL型 | "java.lang.Boolean" | Types.BIT | "BOOL" | +| STRING型 | "java.lang.String" | Types.VARCHAR | "STRING" | +| BYTE型 | "java.lang.Byte" | Types.TINYINT | "BYTE" | +| SHORT型 | "java.lang.Short" | Types.SMALLINT | "SHORT" | +| INTEGER型 | "java.lang.Integer" | Types.INTEGER | "INTEGER" | +| LONG型 | "java.lang.Long" | Types.BIGINT | "LONG" | +| FLOAT型 | "java.lang.Float" | Types.FLOAT | "FLOAT" | +| DOUBLE型 | "java.lang.Double" | Types.DOUBLE | "DOUBLE" | +| TIMESTAMP型 | "java.util.Date" | Types.TIMESTAMP | "TIMESTAMP" | +| TIMESTAMP(3)型 | "java.util.Date" | Types.TIMESTAMP | "TIMESTAMP" | +| TIMESTAMP(6)型 | "java.sql.Timestamp" | Types.TIMESTAMP | "TIMESTAMP" | +| TIMESTAMP(9)型 | "java.sql.Timestamp" | Types.TIMESTAMP | "TIMESTAMP" | +| BLOB型 | "java.sql.Blob" | Types.BLOB | "BLOB" | +| GEOMETRY型 | "java.lang.Object" | Types.OTHER | "UNKNOWN" | +| 配列型 | "java.lang.Object" | Types.OTHER | "UNKNOWN" | +| カラムのデータ型を特定できない場合(※1) | "java.lang.Object" | Types.OTHER | "UNKNOWN" | + +[メモ] + +- (※1). 例えば「SELECT NULL」を実行して得られるResultSetのような場合 +- GEOMETRY型と配列型については、NoSQLインターフェースで作成された、これらのデータ型を持つテーブルを検索した場合に値が返ります。JDBCでは、これらのデータ型を持つテーブルは作成できません。 + + +#### 単純値を返す属性 + +ResultSetMetaDataインターフェースで、カラムのデータ型を返す以外のメソッドの実行結果を以下に示します。 + +| メソッド | 結果 | +|-------------------------------------------|------------------------------| +| String getCatalogName(int column) | "" | +| int getColumnCount() | カラムの数 | +| int getColumnDisplaySize(int column) | 131072 | +| String getColumnLabel(int column) | カラムのラベル名 | +| String getColumnName(int column) | カラムの名前 | +| int getPrecision(int column) | TIMESTAMP(3)の場合は3、TIMESTAMP(6)の場合は6、TIMESTAMP(9)の場合は9、他の型の場合は0 | +| int getScale(int column) | 0 | +| String getSchemaName(int column) | "" | +| String getTableName(int column) | "" | +| boolean isAutoIncrement(int column) | false | +| boolean isCaseSensitive(int column) | true | +| boolean isCurrency(int column) | false | +| boolean isDefinitelyWritable(int column) | true | +| int isNullable(int column) | カラムにNULL値を許可する定数ResultSetMetaData.columnNullable(=1)、またはカラムにNULL値を許可しない定数columnNoNulls(=0) | +| boolean isReadOnly(int column) | false | +| boolean isSearchable(int column) | true | +| boolean isSigned(int column) | false | +| boolean isWritable(int column) | true | + + +#### 未サポートの機能 + +ResultSetMetaDataインターフェースで未サポートのメソッド(SQLFeatureNotSupportedExceptionが発生するメソッド)はありません。 + +  + + +# サンプル + +JDBCのサンプルプログラムは以下のとおりです。 + +``` java +// sample2が実行されている必要があります。 +package test; + +import java.sql.*; + +public class SampleJDBC { + public static void main(String[] args) throws SQLException { + if (args.length != 5) { + System.err.println( + "usage: java SampleJDBC (multicastAddress) (port) (clusterName) (user) (password)"); + System.exit(1); + } + + // urlは"jdbc:gs://(multicastAddress):(portNo)/(clusterName)"形式 + String url = "jdbc:gs://" + args[0] + ":" + args[1] + "/" + args[2]; + String user = args[3]; + String password = args[4]; + + System.out.println("DB Connection Start"); + + // GridDBクラスタとの接続 + Connection con = DriverManager.getConnection(url, user, password); + try { + System.out.println("Start"); + Statement st = con.createStatement(); + ResultSet rs = st.executeQuery("SELECT * FROM point01"); + ResultSetMetaData md = rs.getMetaData(); + while (rs.next()) { + for (int i = 0; i < md.getColumnCount(); i++) { + System.out.print(rs.getString(i + 1) + "|"); + } + System.out.println(""); + } + rs.close(); + System.out.println("End"); + st.close(); + } finally { + System.out.println("DB Connection Close"); + con.close(); + } + } +} +``` diff --git a/manuals/md_reference_sql/img/hint_leading1.png b/manuals/md_reference_sql/img/hint_leading1.png new file mode 100644 index 0000000..1156665 Binary files /dev/null and b/manuals/md_reference_sql/img/hint_leading1.png differ diff --git a/manuals/md_reference_sql/img/hint_leading2-1.png b/manuals/md_reference_sql/img/hint_leading2-1.png new file mode 100644 index 0000000..b36023a Binary files /dev/null and b/manuals/md_reference_sql/img/hint_leading2-1.png differ diff --git a/manuals/md_reference_sql/img/hint_leading2-2.png b/manuals/md_reference_sql/img/hint_leading2-2.png new file mode 100644 index 0000000..2d98d18 Binary files /dev/null and b/manuals/md_reference_sql/img/hint_leading2-2.png differ diff --git a/manuals/md_reference_sql/img/hint_leading2-3.png b/manuals/md_reference_sql/img/hint_leading2-3.png new file mode 100644 index 0000000..51758f0 Binary files /dev/null and b/manuals/md_reference_sql/img/hint_leading2-3.png differ diff --git a/manuals/GridDB_SQL_Reference/sql-commands-supported.md b/manuals/md_reference_sql/md_reference_sql.md similarity index 52% rename from manuals/GridDB_SQL_Reference/sql-commands-supported.md rename to manuals/md_reference_sql/md_reference_sql.md index c2fa9a1..46473ac 100644 --- a/manuals/GridDB_SQL_Reference/sql-commands-supported.md +++ b/manuals/md_reference_sql/md_reference_sql.md @@ -1,3147 +1,4334 @@ -# サポートされるSQL文 - -GridDBでサポートされるSQL文は、次の通りです。 - - -| コマンド | 概要 | -|-------------------------------------|----------------------------------------------------| -| [CREATE DATABASE](#create-database) | データベースを作成する。 | -| [CREATE TABLE](#create-table) | テーブルを作成する。 | -| [CREATE INDEX](#create-index) | 索引を作成する。 | -| [CREATE VIEW](#create-view) | ビューを作成する。 | -| [CREATE USER](#create-user) | 一般ユーザを作成する。 | -| [DROP DATABASE](#drop-database) | データベースを削除する。 | -| [DROP TABLE](#drop-table) | テーブルを削除する。 | -| [DROP INDEX](#drop-index) | 索引を削除する。 | -| [DROP VIEW](#drop-view) | ビューを削除する。 | -| [DROP USER](#drop-user) | 一般ユーザを削除する。 | -| [ALTER TABLE](#alter-table) | テーブルの構造を変更します。 | -| [GRANT](#grant) | 一般ユーザにデータベースへのアクセス権を設定する。 | -| [REVOKE](#revoke) | 一般ユーザからデータベースへのアクセス権を削除する。 | -| [SET PASSWORD](#set-password) | 一般ユーザのパスワードを変更する。 | -| [SELECT](#select) | データを取得する。 | -| [INSERT](#insert) | テーブルに行を挿入する。 | -| [DELETE](#delete) | テーブルから行を削除する。 | -| [UPDATE](#update) | テーブルにある行を更新する。 | -| [コメント](#comment) | コメントを表記する。 | -| [ヒント](#hint) | 実行計画を制御する。 | - -本章では、SQL文の分類ごとに説明を行います。 - -## データ定義言語(DDL) - -### CREATE DATABASE - -データベースを作成します。 - -#### 構文 - -| | -|-----------------------------------| -| CREATE DATABASE *データベース名* ; | - -#### 仕様 - -- 管理ユーザのみが実行可能です。 -- 「public」、「information_schema」と同一の名前のデータベースは、GridDBの内部用に予約済みのため作成できません。 -- 既に同一の名前のデータベースが存在した場合は何も変更しません。 -- データベース名の規則は『[GridDB 機能リファレンス](../GridDB_FeaturesReference/toc.md)』を参照ください。 - -### CREATE TABLE - -#### テーブルの作成 - -テーブルを作成します。 - -#### 構文 - -- テーブル(コレクション) - - | | - |-----------------------------------| - | CREATE TABLE \[IF NOT EXISTS\] *テーブル名* ( **列定義** \[, **列定義** ...\] \[, PRIMARY KEY(列名 \[, ...\])\] )
\[WITH (プロパティキー=プロパティ値)\]; | - - -- 時系列テーブル(時系列コンテナ) - - | | - |-----------------------------------| - | CREATE TABLE \[IF NOT EXISTS\] *テーブル名* ( *列名* TIMESTAMP PRIMARY KEY \[, **列定義** ...\] )
USING TIMESERIES \[WITH (プロパティキー=プロパティ値 \[, プロパティキー=プロパティ値 ...\])\] ; | - -- **列定義** - - *列名* *型名* \[ **列制約** \] - -- **列制約** - - PRIMARY KEY (先頭の列のみ指定可) - - NULL - - NOT NULL - -#### 仕様 - -- テーブル名、列名の規則は『[GridDB 機能リファレンス](../GridDB_FeaturesReference/toc.md)』を参照ください。 -- “IF NOT EXISTS”が指定された場合、指定したテーブル名と同じ名前のテーブルが存在しないときのみ作成します。 -- **列定義** では、列名と型名の指定が必須です。指定可能な型名は[データ格納に使用する型](#data_types_used_in_data_storage)を参照ください。 -- テーブル(コレクション)では列定義の記述後、PRIMARY KEYによる複合主キーの設定が可能です。複合主キーは先頭カラムより順に設定することが必要で、上限数は16です。列制約におけるPRIMARY KEYと同時に設定することはできません。また、時系列テーブル(時系列コンテナ)では設定できません。 -- 時系列テーブル(時系列コンテナ)については『[GridDB 機能リファレンス](../GridDB_FeaturesReference/toc.md)』を参照ください。 -- データアフィニティに関するオプションを" WITH (プロパティキー=プロパティ値, ...)"の形式で指定することができます。 - - - | 機能 | 内容 | プロパティキー | プロパティ値の型 | - |---------------------|------------|--------------------------|----------------------------------------------| - | データアフィニティ | ヒント情報
(コンテナ間の類似性を示す文字列) | data_affinity | STRING型 | - -- 時系列テーブルの場合、期限解放に関するオプションを" WITH (プロパティキー=プロパティ値, ...)"の形式で指定することができます。 - - - | 機能 | 内容 | プロパティキー | プロパティ値の型 | 期限解放設定時の必須項目 | - |--------------|----------|-------------------------|----------------------------------------------|---------| - | 期限解放機能 | 種別 | expiration_type | STRING型
(指定可能な値は次の1種類。ROW: ロウ期限解放) | 必須 | - | | 経過時間 | expiration_time | INTEGER型 | 必須| - | | 経過単位 | expiration_time_unit | STRING型
(指定可能な値は次の5種類。DAY / HOUR / MINUTE / SECOND / MILLISECOND ) | 省略可(デフォルト:DAY) | - | | 分割数 | expiration_division_count | INTEGER型 | 省略可(デフォルト:8) | - -- 各項目の内容については『[GridDB 機能リファレンス](../GridDB_FeaturesReference/toc.md)』を参照ください。 - -#### 例 - -- テーブルの作成 - - ``` example - CREATE TABLE myTable ( - key INTEGER PRIMARY KEY, - value1 DOUBLE NOT NULL, - value2 DOUBLE NOT NULL - ); - ``` - -- ロウ期限解放を使用する時系列テーブルの作成 - - ``` example - CREATE TABLE myTimeseries ( - mycolumn1 TIMESTAMP PRIMARY KEY, - mycolumn2 STRING - ) USING TIMESERIES WITH ( - expiration_type='ROW', - expiration_time=10, - expiration_time_unit='DAY' - ); - ``` - -#### パーティショニングテーブルの作成 - -パーティショニングテーブルを作成します。 - -各パーティショニングの機能については、『[GridDB 機能リファレンス](../GridDB_FeaturesReference/toc.md)』を参照ください。 - -#### (1) ハッシュパーティショニングテーブルの作成 - -#### 構文 - -- テーブル(コレクション) - - | | - |-----------------------------------| - | CREATE TABLE \[IF NOT EXISTS\] *テーブル名* ( **列定義** \[, **列定義** ...\] [, PRIMARY KEY(列名 \[, ...\])\] )
\[WITH (プロパティキー=プロパティ値)\]
PARTITION BY HASH (*パーティショニングキーの列名*) PARTITIONS *分割数* ; | - -- 時系列テーブル(時系列コンテナ) - - | | - |-----------------------------------| - | CREATE TABLE \[IF NOT EXISTS\] *テーブル名* ( **列定義** \[, **列定義** ...\] )
USING TIMESERIES \[WITH (プロパティキー=プロパティ値, ...)\]\]
PARTITION BY HASH (*パーティショニングキーの列名*) PARTITIONS *分割数* ; | - -#### 仕様 - -- 指定されたパーティショニングキーの列名と分割数の値により、ハッシュパーティショニングテーブルを作成します。 -- 「分割数」は、1以上かつ1024以下の値を指定してください。 -- パーティショニングキーには主キーを設定する必要があります。主キー以外を設定する場合は、コンフィグファイルで制限を解除する必要があります。詳細は『[GridDB 機能リファレンス](../GridDB_FeaturesReference/toc.md)』のクラスタ定義ファイルの設定を参照ください。 -- パーティショニングキーに指定した列の値は、更新できません。 -- データアフィニティに関するオプションを" WITH (プロパティキー=プロパティ値, ...)"の形式で指定することができます。 - 指定可能なオプションは[通常のテーブル](#label_data_affinity_property)と同様です。 -- 時系列テーブルの場合、期限解放に関するオプションを" WITH (プロパティキー=プロパティ値, ...)"の形式で指定することができます。 - 指定可能なオプションは[通常のテーブル](#label_expiration_property)と同様です。 - - -#### 例 - -- ハッシュパーティショニングテーブルの作成 - - ``` example - CREATE TABLE myHashPartition ( - id INTEGER PRIMARY KEY, - value STRING - ) PARTITION BY HASH (id) PARTITIONS 128; - ``` - -#### (2) インターバルパーティショニングテーブルの作成 - -#### 構文 - -- テーブル(コレクション) - - | | - |-----------------------------------| - | CREATE TABLE \[IF NOT EXISTS\] *テーブル名* ( **列定義** \[, **列定義** ...\] [, PRIMARY KEY(列名 \[, ...\])\])
\[WITH (プロパティキー=プロパティ値, ...)\]
PARTITION BY RANGE(*パーティショニングキーの列名*) EVERY(*分割幅値* \[, *単位* \]) ; | - -- 時系列テーブル(時系列コンテナ) - - | | - |-----------------------------------| - | CREATE TABLE \[IF NOT EXISTS\] *テーブル名* ( **列定義** \[, **列定義** ...\] )
USING TIMESERIES \[WITH (プロパティキー=プロパティ値, ...)\]
PARTITION BY RANGE(*パーティショニングキーの列名*) EVERY(*分割幅値* \[, *単位* \]) ; | - - -#### 仕様 - -- 「パーティショニングキーの列名」には、BYTE型、SHORT型、INTEGER型、LONG型、TIMESTAMP型のいずれかの列を指定してください。 -- パーティショニングキーには主キーを設定する必要があります。主キー以外を設定する場合は、コンフィグファイルで制限を解除する必要があります。詳細は『[GridDB 機能リファレンス](../GridDB_FeaturesReference/toc.md)』のクラスタ定義ファイルの設定を参照ください。 -- パーティショニングキーに指定した列の値は、更新できません。 -- 分割幅値には次の値が指定できます。 - - | パーティショニングキーの型 | 分割幅値に指定できる値 | - |----------------------------|---------------------------| - | BYTE型 | 1~27-1 | - | SHORT型 | 1~215-1 | - | INTEGER型 | 1~231-1 | - | LONG型 | 1000~263-1 | - | TIMESTAMP型 | 1以上 | - -- TIMESTAMP型の列を指定した場合は、単位を指定する必要があります。単位に指定できる値は、DAYです。 -- TIMESTAMP型以外の列を指定した場合は、単位は指定できません。 -- データアフィニティに関するオプションを" WITH (プロパティキー=プロパティ値, ...)"の形式で指定することができます。 - 指定可能なオプションは[通常のテーブル](#label_data_affinity_property)と同様です。 -- 期限解放に関するオプションを" WITH (プロパティキー=プロパティ値, ...)"の形式で指定することができます。 - 指定可能なオプションは[通常のテーブル](#label_expiration_property)と同様ですが、expiration_typeのみ以下の仕様になります。 - - | 機能 | 内容 | プロパティキー | プロパティ値の型 | 期限解放設定時の必須項目 | - |--------------|----------|-------------------------|---------------------------------------------------|-------------------------| - | 期限解放機能 | 種別 | expiration_type | STRING型
(指定可能な値は次の2種類。指定省略時はPARTITION。
PARTITION: パーティション期限解放
ROW: ロウ期限解放) | 省略可 | - -- ロウ期限解放は時系列テーブル(時系列コンテナ)の場合に指定できます。 -- パーティション期限解放は次の場合に指定できます。 - - 時系列テーブル(時系列コンテナ) - - パーティショニングキーがTIMESTAMP型のテーブル(コレクション) -- 各項目の内容については『[GridDB 機能リファレンス](../GridDB_FeaturesReference/toc.md)』を参照ください。 - -#### 例 - -- インターバルパーティショニングテーブルの作成 - - ``` example - CREATE TABLE myIntervalPartition ( - date TIMESTAMP PRIMARY KEY, - value STRING - ) PARTITION BY RANGE (date) EVERY (30, DAY); - ``` - -- パーティション期限解放を使用するインターバルパーティショニングテーブル(時系列テーブル)の作成 - - ``` example - CREATE TABLE myIntervalPartition2 ( - date TIMESTAMP PRIMARY KEY, - value STRING - ) USING TIMESERIES WITH ( - expiration_type='PARTITION', - expiration_time=90, - expiration_time_unit='DAY' - ) PARTITION BY RANGE (date) EVERY (30, DAY); - ``` - -#### (3) インターバル-ハッシュパーティショニングテーブルの作成 - -#### 構文 - -- テーブル(コレクション) - - | | - |-----------------------------------| - | CREATE TABLE \[IF NOT EXISTS\] *テーブル名* ( **列定義** \[, **列定義** ...\] [, PRIMARY KEY(列名 \[, ...\])\] )
\[WITH (プロパティキー=プロパティ値, ...) \]
PARTITION BY RANGE(*インターバルパーティショニングキーの列名*) EVERY(*分割幅値* \[, *単位* \])
SUBPARTITION BY HASH(*ハッシュパーティショニングキーの列名*) SUBPARTITIONS *分割数* ; | - -- 時系列テーブル(時系列コンテナ) - - | | - |-----------------------------------| - | CREATE TABLE \[IF NOT EXISTS\] *テーブル名* ( **列定義** \[, **列定義** ...\] )
USING TIMESERIES \[WITH (プロパティキー=プロパティ値, ...)\]
PARTITION BY RANGE(*インターバルパーティショニングキーの列名*) EVERY(*分割幅値* \[, *単位* \])
SUBPARTITION BY HASH(*ハッシュパーティショニングキーの列名*) SUBPARTITIONS *分割数* ; | - -#### 仕様 - -- 「インターバルパーティショニングキーの列名」には、BYTE型、SHORT型、INTEGER型、LONG型、TIMESTAMP型のいずれかの列を指定してください。 -- インターバルパーティショニングの分割幅値には次の値が指定できます。 - - | パーティショニングキーの型 | 分割幅値に指定できる値 | - |----------------------------|--------------------------------------------| - | BYTE型 | 1~27-1 | - | SHORT型 | 1~215-1 | - | INTEGER型 | 1~231-1 | - | LONG型 | 1000×ハッシュの分割数~263-1 | - | TIMESTAMP型 | 1以上 | - - - TIMESTAMP型の列を指定した場合は、単位を指定する必要があります。単位に指定できる値は、DAYです。 - - TIMESTAMP型以外の列を指定した場合は、単位は指定できません。 - -- ハッシュパーティショニングの「分割数」は、1以上かつ1024以下の値を指定してください。 -- パーティショニングキーには主キーを設定する必要があります。主キー以外を設定する場合は、コンフィグファイルで制限を解除する必要があります。詳細は『[GridDB 機能リファレンス](../GridDB_FeaturesReference/toc.md)』のクラスタ定義ファイルの設定を参照ください。 -- パーティショニングキーに指定した列の値は、更新できません。 -- データアフィニティに関するオプションを" WITH (プロパティキー=プロパティ値, ...)"の形式で指定することができます。 - 指定可能なオプションは[通常のテーブル](#label_data_affinity_property)と同様です。 -- 期限解放に関するオプションを" WITH (プロパティキー=プロパティ値, ...)"の形式で指定することができます。 - 指定可能なオプションは[通常のテーブル](#label_expiration_property)と同様ですが、expiration_typeのみ以下の仕様になります。 - - | 機能 | 内容 | プロパティキー | プロパティ値の型 | 期限解放設定時の必須項目 | - |--------------|----------|-------------------------|---------------------------------------------------|-------------------------| - | 期限解放機能 | 種別 | expiration_type | STRING型
(指定可能な値は次の2種類。指定省略時はPARTITION。
PARTITION: パーティション期限解放
ROW: ロウ期限解放) | 省略可 | - - - -#### 例 - -- インターバルハッシュパーティショニングテーブルの作成 - - ``` example - CREATE TABLE myIntervalHashPartition ( - date TIMESTAMP, - value STRING, - PRIMARY KEY (date, value) - ) PARTITION BY RANGE (date) EVERY (60, DAY) - SUBPARTITION BY HASH (value) SUBPARTITIONS 64; - ``` - -- パーティション期限解放を使用するインターバルハッシュパーティショニングテーブル(時系列テーブル)の作成 - - ``` example - CREATE TABLE myIntervalHashPartition2 ( - date TIMESTAMP PRIMARY KEY, - value STRING - ) USING TIMESERIES WITH ( - expiration_type='PARTITION', - expiration_time=90, - expiration_time_unit='DAY' - ) PARTITION BY RANGE (date) EVERY (60, DAY) - SUBPARTITION BY HASH (date) SUBPARTITIONS 64; - ``` - -### CREATE INDEX - -索引を作成します。 - -#### 構文 - -| | -|-----------------------------------| -| CREATE INDEX \[IF NOT EXISTS\] *索引名* ON *テーブル名* ( *索引をつける列名* \[, ...\] ) ; | - -#### 仕様 - -- 索引名の規則は『GridDB 『[GridDB 機能リファレンス](../GridDB_FeaturesReference/toc.md)』を参照ください。 -- 同じテーブルに対して、既に存在する索引と同じ名前の索引は作成できません。 -- 処理対象のテーブルにおいて実行中のトランザクションが存在する場合、それらの終了を待機してから作成を行います。 -- BLOB型と配列型の列には索引を作成できません。 -- 索引をつけることのできる列は最大16です。 -- 時系列テーブルでは、複合索引に主キーを含むことはできません。 - -### CREATE VIEW - -ビューを作成します。 - -#### 構文 - -| | -|-----------------------------------| -| CREATE \[FORCE\] VIEW *ビュー名* AS *SELECT文* ; | - -#### 仕様 - -- ビュー名の規則は『[GridDB 機能リファレンス](../GridDB_FeaturesReference/toc.md)』を参照ください。 -- SELECT文の参照可否のチェックを行います。参照できない場合は作成できません。 -- FORCE指定時はSELECT文の参照可否のチェックを行いません。ただし、構文チェックは行われます。 -- SELECT文中に他のビュー名を含むことができます。ただし、循環参照となる場合はFORCEを指定しても作成できません。 - -### CREATE USER - -一般ユーザを作成します。 - -#### 構文 - -| | -|-----------------------------------| -| CREATE USER *ユーザ名* IDENTIFIED BY *‘パスワード文字列’* ; | - - -#### 仕様 - -- ユーザ名の規則は『[GridDB 機能リファレンス](../GridDB_FeaturesReference/toc.md)』を参照ください。 -- 管理ユーザのみが実行可能です。 -- インストール時に登録済の管理ユーザ(adminおよびsystem)と同一の名前のユーザは作成できません。 -- パスワード文字列に使用できる文字は、ASCII文字のみです。大文字と小文字は区別します。 - -### DROP DATABASE - -データベースを削除します。 - -#### 構文 - -| | -|-----------------------------------| -| DROP DATABASE *データベース名* ; | - -#### 仕様 - -- 管理ユーザのみが実行可能です。 -- 「public」、「information_schema」という名前のデータベース、および「gs\#」で始まる名前のデータベースは、GridDBの内部用に予約済みのため削除できません。 -- ユーザが作成したテーブルが存在するデータベースは削除できません。 - -### DROP TABLE - -テーブルを削除します。 - -#### 構文 - -| | -|-----------------------------------| -| DROP TABLE \[IF EXISTS\] *テーブル名* ; | - -#### 仕様 - -- “IF EXISTS”が指定された場合、指定した名前のテーブルが存在しない場合は何も変更しません。 -- 処理対象のテーブルにおいて実行中のトランザクションが存在する場合、それらの終了を待機してから削除を行います。 - -### DROP INDEX - -指定された索引を削除します。 - -#### 構文 - -| | -|-----------------------------------| -| DROP INDEX \[IF EXISTS\] *索引名* ON *テーブル名* ; | - -#### 仕様 - -- “IF EXISTS”が指定された場合、指定した名前の索引が存在しない場合は何も変更しません。 -- 処理対象のテーブルにおいて実行中のトランザクションが存在する場合、それらの終了を待機してから削除を行います。 -- NoSQLインターフェースから名前無しで付与した索引をDROP INDEXで削除することはできません。 - -### DROP VIEW - -ビューを削除します。 - -#### 構文 - -| | -|-----------------------------------| -| DROP VIEW \[IF EXISTS\] *ビュー名* ; | - -#### 仕様 - -- “IF EXISTS”が指定された場合、指定した名前のビューが存在しない場合は何も変更しません。 - -### DROP USER - -一般ユーザを削除します。 - -#### 構文 - -| | -|-----------------------------------| -| DROP USER *ユーザ名* ; | - -#### 仕様 - -- 管理ユーザのみが実行可能です。 - - -### ALTER TABLE - -テーブルの構造を変更します。 - -#### カラムを追加する - -テーブルの末尾にカラムを追加します。 - -#### 構文 - -| | -|-----------------------------------| -| ALTER TABLE *テーブル名* ADD \[COLUMN\] **列定義** \[,ADD \[COLUMN\] **列定義** ...\] ; | - -- **列定義** - - *列名* *型名* \[ **列制約** \] - -- **列制約** - - NULL - - NOT NULL - -#### shi - -- 追加するカラムは、テーブルの末尾に配置します。複数のカラムを指定した場合は指定した順序で配置します。 -- 列制約に"PRIMARY KEY"は指定できません。 -- 既に同じ名前のカラムが存在した場合はエラーになります。 - -#### 例 - -- 複数のカラムの追加 - - ``` example - ALTER TABLE myTable1 - ADD COLUMN col111 STRING NOT NULL, - ADD COLUMN col112 INTEGER; - ``` - -#### データパーティションを削除する - -テーブルパーティショニングで作成されたデータパーティションを削除します。 - -#### 構文 - -| | -|-----------------------------------| -| ALTER TABLE *テーブル名* DROP PARTITION FOR ( *削除するデータパーティションの区間(下限値から上限値)に含まれる値* ); | - -#### shi - -- インターバルとインターバル-ハッシュパーティショニングの場合のみ、データパーティションを削除できます。 -- 削除するデータパーティションの区間(下限値から上限値)に含まれる値を指定してください。 -- 一度削除したデータパーティションの区間(下限値から上限値)に該当するデータの新規登録はできません。 -- データパーティションの区間の下限値は、メタテーブルで確認できます。区間の上限値は多くの場合、下限値+分割幅値の値です。 -- インターバル-ハッシュパーティショニングの場合は、同じ下限値のデータパーティションが、ハッシュの分割数分(最大)存在します。 - データパーティションを削除する場合は、それらの同じ下限値をもつデータパーティションは同時に削除されます。削除の確認はメタテーブルで行います。 - -メタテーブルの詳細は[メタテーブル](#label_metatables)を参照ください。 - -#### 例 - -**インターバルパーティショニングテーブル** - -- インターバルパーティショニングのテーブル「myIntervalPartition1」(パーティショニングキーの型:TIMESTAMP、分割幅値30日)のデータパーティションの下限値一覧を確認する - - ``` example - SELECT PARTITION_BOUNDARY_VALUE FROM "#table_partitions" - WHERE TABLE_NAME='myIntervalPartition1' ORDER BY PARTITION_BOUNDARY_VALUE; - - PARTITION_BOUNDARY_VALUE - ----------------------------------- - 2017-01-10T13:00:00.000Z - 2017-02-09T13:00:00.000Z - 2017-03-11T13:00:00.000Z - : - ``` - -- 不要なデータパーティションを削除する - - ``` example - ALTER TABLE myIntervalPartition1 DROP PARTITION FOR ('2017-01-10T13:00:00Z'); - ``` - -**インターバル-ハッシュパーティショニングテーブル** - -- インターバル-ハッシュパーティショニングのテーブル「myIntervalHashPartition」(インターバルパーティショニングキーの型:TIMESTAMP、分割幅値90DAY、ハッシュパーティショニングキーの分割数3)のデータパーティションの下限値一覧を確認する - - ``` example - SELECT PARTITION_BOUNDARY_VALUE FROM "#table_partitions" - WHERE TABLE_NAME='myIntervalHashPartition' ORDER BY PARTITION_BOUNDARY_VALUE; - - PARTITION_BOUNDARY_VALUE - ----------------------------------- - 2016-08-01T10:00:00.000Z 同じ下限値のデータがハッシュされて3つの - 2016-08-01T10:00:00.000Z データパーティションに分割されている - 2016-08-01T10:00:00.000Z - 2016-10-30T10:00:00.000Z - 2016-10-30T10:00:00.000Z - 2016-10-30T10:00:00.000Z - 2017-01-29T10:00:00.000Z - : - ``` - -- 不要なデータパーティションを削除する - - ``` example - ALTER TABLE myIntervalHashPartition DROP PARTITION FOR ('2016-09-15T10:00:00Z'); - ``` - -- 同じ下限値のデータパーティションが削除される - - ``` example - SELECT PARTITION_BOUNDARY_VALUE FROM "#table_partitions" - WHERE TABLE_NAME='myIntervalHashPartition' ORDER BY PARTITION_BOUNDARY_VALUE; - - PARTITION_BOUNDARY_VALUE - ----------------------------------- - 2016-10-30T10:00:00.000Z '2016-09-15T10:00:00Z'を含む区間(下限値'2016-08-01T10:00:00Z')の - 2016-10-30T10:00:00.000Z 3つのデータパーティションが削除される - 2016-10-30T10:00:00.000Z - 2017-01-29T10:00:00.000Z - : - ``` - -  - -## データ制御言語(DCL) - -### GRANT - -一般ユーザにデータベースへのアクセス権を付与します。 - -#### 構文 - -| | -|-----------------------------------| -| GRANT {SELECT\|ALL} ON *データベース名* TO *ユーザ名*; | - -#### 仕様 - -- 管理ユーザのみが実行可能です。 -- SELECTは参照権限、ALLは参照権限と更新権限を表します。 - -### REVOKE - -一般ユーザからデータベースへのアクセス権を剥奪します。 - -#### 構文 - -| | -|-----------------------------------| -| REVOKE {SELECT\|ALL} ON *データベース名* FROM *ユーザ名* ; | - - -#### 仕様 - -- 管理ユーザのみが実行可能です。 -- SELECTは参照権限、ALLは参照権限と更新権限を表します。 - -### SET PASSWORD - -一般ユーザのパスワードを変更します。 - -#### 構文 - -| | -|-----------------------------------| -| SET PASSWORD \[FOR *ユーザ名* \] = *‘パスワード文字列’* ; | - -#### 仕様 - -- 管理ユーザは全ての一般ユーザのパスワードを変更可能です。 -- 一般ユーザは自身のパスワードのみ変更可能です。 - -   - -## データ操作言語(DML) - -### SELECT - -データを取得します。FROM句、WHERE句など様々な[句](#label_clauses)から構成されます。 - -#### 構文 - -| | -|-----------------------------------| -| SELECT \[{ALL\|DISTINCT}\] * \| *列名1* \[, *列名2* ...\]
\[FROM句\]
\[WHERE句\]
\[GROUP BY句 \[HAVING句\]\]
\[{UNION \[ALL\] \|INTERSECT\|EXCEPT} SELECT文\]
\[ORDER BY句\]
\[LIMIT句 \[OFFSET句\]\] ; | - - -### INSERT - -テーブルに行を登録します。INSERT句は単に行を登録し、INSERT OR REPLACE句とREPLACE句は、既に同一主キーが存在するデータを与えた場合、既存のデータを上書きします。REPLACE句はINSERT OR REPLACE句の別名で、機能の違いはありません。 - -#### 構文 - -| | -|-----------------------------------| -| {INSERT\|INSERT OR REPLACE\|REPLACE} INTO *テーブル名*
{VALUES ( { *数値1* \| *文字列1* } \[, { *数値2* \| *文字列2* } ...\] )\|SELECT文} ; | - -#### 仕様 - -- VALUESではなくSELECT文を指定した場合は、その実行結果が登録データになります。 - -``` example -INSERT INTO myTable1 VALUES(1, 100); - -REPLACE INTO myTable1 VALUES(1, 200); - -INSERT INTO myTable1 SELECT * FROM myTable2; -``` - -### DELETE - -テーブルから行を削除します。 - -#### 構文 - -|構文| -|---| -| DELETE FROM *テーブル名* \[WHERE句\] ; | - -### UPDATE - -テーブルに存在する行を更新します。 - -#### 構文 - -| | -|-----------------------------------| -| UPDATE *テーブル名* SET *列名1* = *式1* \[, *列名2* = *式2* ...\] \[WHERE句\] ; | - -#### 仕様 - -- PRIMARY KEY制約のあるカラムの値は更新できません。 -- パーティショニングを設定した場合、UPDATE句を使ってパーティショニングキーになっている項目を別の値に更新することはできません。このような場合は、DELETE文を実行後にINSERT文を実行してください。 - - 例) - ``` example - CREATE TABLE tab (a INTEGER, b STRING) PARTITION BY HASH a PARTITIONS 5; - - -- NG - UPDATE tab SET a = a * 2; - [240016:SQL_COMPILE_PARTITIONING_KEY_NOT_UPDATABLE] Partitioning column='a' is not updatable - - -- OK - UPDATE tab SET b = 'XXX'; - ``` - -- SET句で指定する列名は、テーブル名で修飾することはできません。 - - 例) - ``` example - CREATE TABLE myTable1 (key INTEGER, value INTEGER); - - -- NG - UPDATE myTable1 SET myTable1.value = 999 WHERE myTable1.key = 8; - - -- OK - UPDATE myTable1 SET value = 999 WHERE myTable1.key = 8; - ``` - -- サブクエリを更新値に利用することはできません。ただし、WHERE句などの条件文には利用可能です。 - - 例) - ``` example - CREATE TABLE myTable1 (key INTEGER, value INTEGER); - - -- NG - UPDATE myTable1 SET value = (SELECT 999) WHERE key = 8; - - -- OK - UPDATE myTable1 SET value = 999 WHERE key = (SELECT 8); - ``` - - - - -## 句 - -### FROM - -データ操作を行うテーブル名またはビュー名、サブクエリを指定します。 - -#### 構文 - -| | -|-----------------------------------| -| FROM *テーブル名1* \[, *テーブル名2* ... \] | -| FROM ( *sub_query* ) [AS] 別名 \[, ... \] | - -#### 仕様 - -- サブクエリを指定する場合は、()で括り、別名を指定する必要があります。 - -例) -``` example -SELECT a.ID, b.ID FROM mytable a, (SELECT ID FROM mytable2) b; - -ID ID ----+----- - 1 100 - 1 200 - 2 100 - 2 200 - : -``` - -### GROUP BY - -前に指定された句の結果の中で、指定された列で同じ値を持った行をグループ化します。 - -#### 構文 - -| | -|-----------------------------------| -| GROUP BY *列名1* \[, *列名2* ...\] | - -### HAVING - -GROUP BY句によりグループ化された情報に対して探索条件で絞り込みを行います。GROUP BY句は省略できません。 - -#### 構文 - -| | -|-----------------------------------| -| HAVING 探索条件 | - - -### ORDER BY - -検索結果の並べ替え(ソート)を行います。 - -| | -|-----------------------------------| -| ORDER BY *列名1* \[{ASC\|DESC}\] \[, *列名2* \[{ASC\|DESC}\] ...\] | - -### WHERE - -先行するFROM句の結果に、探索条件を適用します。 - -#### 構文 - -| | -|-----------------------------------| -| WHERE 探索条件 | - -#### 仕様 - -- 探索条件は式や関数、サブクエリなどを用いて記述できます。 - -### LIMIT/OFFSET - -指定した位置から指定した件数分のデータを取り出します。 - -#### 構文 - -| | -|-----------------------------------| -| LIMIT *値1* \[OFFSET *値2* \] | - -#### 仕様 - -- 値1は取り出すデータ件数を表し、値2は取り出すデータ位置を表します。 - -  - -### JOIN - -テーブルを結合します。 - -#### 構文 - -| 結合の種類 | 構文 | -|-------------|-----------------------| -| 内部結合 | *テーブル1* [INNER] JOIN *テーブル2* [ ON *式* \| USING(*列名* [,*列名* ...]) ] | -| 左外部結合 | *テーブル1* LEFT [OUTER] JOIN *テーブル2* [ ON *式* \| USING(*列名* [,*列名* ...]) ] | -| クロス結合 | *テーブル1* CROSS JOIN *テーブル2* [ ON *式* \| USING(*列名* [,*列名* ...]) ] | - -- 内部結合は、両方のテーブルの指定した列の値が一致する結果を返します。 -- 左外部結合は、両方のテーブルの指定した列の値が一致する結果と、*テーブル1* にしか存在しない結果を返します。 -- クロス結合は、内部結合(INNER JOIN)と等価です。 - -結合条件は、ON句またはUSING句を用いて指定します。 - -例) -```example -名前: employees - - id first_name department_id -----+------------+---------------- - 0 John 0 - 1 William 1 - 2 Richard 0 - 3 Mary 4 - 4 Lisa 3 - 5 James 1 - -名前: departments - - department_id department ----------------+------------ - 0 Sales - 1 Development - 2 Research - 3 Marketing - -○内部結合 -SELECT * FROM employees e INNER JOIN departments d ON e.department_id=d.department_id; - - id first_name department_id department_id department -------+-----------+--------------+--------------+----------- - 0 John 0 0 Sales - 1 William 1 1 Development - 2 Richard 0 0 Sales - 4 Lisa 3 3 Marketing - 5 James 1 1 Development - - -○左外部結合 -SELECT * FROM employees e LEFT JOIN departments d ON e.department_id=d.department_id; - - id first_name department_id department_id department -------+-----------+--------------+--------------+----------- - 0 John 0 0 Sales - 1 William 1 1 Development - 2 Richard 0 0 Sales - 3 Mary 4 (NULL) (NULL) - 4 Lisa 3 3 Marketing - 5 James 1 1 Development -``` - -  - -自然結合(NATURAL JOIN)を用いると、指定されたテーブルの同じ名前のカラムの値が一致するかを結合条件として結合を行います。 - -| 結合の種類 | 構文 | -|-------------|----------------------------------------------------| -| 内部結合 | *テーブル1* NATURAL [INNER] JOIN *テーブル2* | -| 左外部結合 | *テーブル1* NATURAL LEFT [OUTER] JOIN *テーブル2* | -| クロス結合 | *テーブル1* NATURAL CROSS JOIN *テーブル2* | - -``` example -SELECT * FROM employees NATURAL INNER JOIN departments; - - department_id id first_name department ----------------+-----+--------------+-------------- - 0 0 John Sales - 1 1 William Development - 0 2 Richard Sales - 3 4 Lisa Marketing - 1 5 James Development -``` - -### UNION/INTERSECT/EXCEPT - -2つの問い合わせ結果の集合に対して演算を行います。 - -#### 構文 - -| | | -|------------------------------|---------------------------------------------------| -| *問合せ1* UNION *問合せ2* | 2つの問合せのすべての結果を返します (重複は含まない) | -| *問合せ1* UNION ALL *問合せ2* | 2つの問合せのすべての結果を返します (重複を含む) | -| *問合せ1* INTERSECT *問合せ2* | 2つの問合せの共通の結果を返します | -| *問合せ1* EXCEPT *問合せ2* | 2つの問合せの差分(*問合せ1*に含まれていて*問合せ2*に含まれない結果)の結果を返します | - - - - -## 演算子 - -SQL文で使用する演算子を以下に説明します。 - -### 演算子一覧 - -演算子の一覧は次の通りです。 - -| 分類 | 演算子 | 説明 | -|------|-------|------| -| 算術 | + | 加算します | -| | - | 減算します | -| | * | 乗算します | -| | / | 除算します | -| | % | 剰余を求めます | -| 文字 | \|\| | 任意の型の値を文字列として連結します | -| 比較 | =, == | 等しいかどうかを比較します | -| | !=, \<\> | 等しくないかどうかを比較します | -| | > | より大きいかどうかを比較します | -| | >= | より大きい、または、等しいかどうかを比較します | -| | < | より小さいかどうかを比較します | -| | <= | より小さい、または、等しいかどうかを比較します | -| | IS | 等しいかどうかを比較します。
両方の式がNULLの場合はtrueを返します。
いずれかがNULLの場合はfalseを返します。 | -| | IS NOT | 等しくないかどうかを比較します。
両方の式がNULLの場合はfalseを返します。
いずれかがNULLの場合はtrueを返します。 | -| | ISNULL | 左辺の式がNULLかを判定します | -| | NOTNULL | 左辺の式がNULLでないかを判定します | -| | [LIKE](#op_like) | 文字列を検索します。 | -| | [GLOB](#op_glob) | 文字列を検索します。 | -| | [BETWEEN](#op_between) | 指定した範囲の値を取り出します。| -| | [IN](#op_in) | 値の集合の中に指定した値が含まれるかどうかを返します。 | -| ビット | & | A & B :AとBのビットのANDをとります | -| | \| | A \| B :AとBのビットのORをとります | -| | ~ | ~A :AのビットのNOTをとります | -| | \<\< | A \<\< B :Aを左へBビット分シフトします | -| | \>\> | A \>\> B :Aを右へBビット分シフトします | -| 論理 | AND | 両方の式がtrueの場合はtrueを返します。
いずれかがfalseの場合はfalseを返します。
それ以外の場合はNULLを返します。 | -| | OR | いずれかの式がtrueの場合はtrueを返します。
両方がfalseの場合はfalseを返します。
それ以外の場合はNULLを返します。 | -| | NOT | 式がtrueの場合はfalseを返します。
falseの場合はtrueを返します。
それ以外の場合はNULLを返します。 | - - -### LIKE - -文字列を検索します。 - -#### 構文 - -| | -|-----------------------------------| -| *str* \[NOT\] LIKE *pattern_str* \[ESCAPE *escape_str* \] | - -#### 仕様 - -- [LIKE関数](#like-1)を参照ください。 - - -### GLOB - -#### 構文 - -文字列を検索します。 - -| | -|-------| -| *str* GLOB *pattern_str* | - -#### 仕様 - -- [GLOB関数](#glob-1)を参照ください。 - - -### BETWEEN - -指定した範囲の値を取り出します。 - -#### 構文 - -| | -|-----------------------------------| -| *式1* \[NOT\] BETWEEN *式2* AND *式3* | - -#### 仕様 - -- 次の条件を満たす場合はtrueを返します。 - - ``` example - 式2 ≦ 式1 ≦ 式3 - ``` - -- NOTを指定すると上記の条件を満たさない場合にtrueを返します。 - - -### IN - -値の集合の中に指定した値が含まれるかどうかを返します。 - -#### 構文 - -| | -|-----------------------------------| -| *式1* \[NOT\] IN ( [*式2* \[, *式3* ...\]] ) | - -#### 仕様 - -- *式1* の値が、*式N* の結果に含まれる場合はtrueを返します。 -- INは[サブクエリ](#in_sub_query)に対しても使用できます。 - - - -## 関数 - -SQL文で使用する関数を以下に説明します。 - -### 関数一覧 - -SQL文には以下の関数が用意されています。 - -| 分類 | 関数名 | 説明 | -|------|-----------------|------| -| [集計](#aggregation) | [AVG](#avg) | 平均値を返します | -| | [COUNT](#count) | ロウ数を返します | -| | [MAX](#Aggregate_MAX) | 最大値を返します | -| | [MIN](#Aggregate_MIN) | 最小値を返します | -| | [SUM](#sumtotal) | 合計値を返します | -| | [TOTAL](#sumtotal) | 合計値を返します | -| | [GROUP_CONCAT](#group_concat) | 値を連結します | -| | [STDDEV_SAMP](#stddev_samp) | 標本標準偏差を返します | -| | [STDDEV](#stddevstddev0) | 標本標準偏差を返します | -| | [STDDEV0](#stddevstddev0) | 標本標準偏差を返します | -| | [STDDEV_POP](#stddev_pop) | 母標準偏差を返します | -| | [VAR_SAMP](#var_samp) | 標本分散を返します | -| | [VARIANCE](#variancevariance0) | 標本分散を返します | -| | [VARIANCE0](#variancevariance0) | 標本分散を返します | -| | [VAR_POP](#var_pop) | 母分散を返します | -| [算術](#算術関数) | [ABS](#abs) | 絶対値を返します | -| | [ROUND](#round) | 四捨五入します | -| | [RANDOM](#random) | 乱数を返します | -| | [MAX](#Arithmetic_MAX) | 最大値を返します | -| | [MIN](#Arithmetic_MIN) | 最小値を返します | -| | [LOG](#Arithmetic_LOG) | 対数を返します | -| | [SQRT](#Arithmetic_SQRT) | 平方根を返します | -| | [TRUNC](#Arithmetic_TRUNC) | 数値を切り捨てます | -| | [HEX_TO_DEC](#Arithmetic_HEX_TO_DEC) | 16進数の文字列を10進数の数値に変換します | -| [文字](#文字関数) | [LENGTH](#length) | 文字列の長さを返します | -| | [LOWER](#lower) | 文字列を小文字に変換します | -| | [UPPER](#upper) | 文字列を大文字に変換します | -| | [SUBSTR](#substr) | 文字列の一部を切り出します | -| | [REPLACE](#replace) | 文字列を置換します | -| | [INSTR](#instr) | 文字列の中から特定の文字列の位置を返します | -| | [LIKE](#like-1) | 文字列を検索します | -| | [GLOB](#glob-1) | 文字列を検索します | -| | [TRIM](#trim) | 文字列の両端から特定の文字を除きます | -| | [LTRIM](#ltrim) | 文字列の左端から特定の文字を除きます | -| | [RTRIM](#rtrim) | 文字列の右端から特定の文字を除きます | -| | [QUOTE](#quote) | 文字列をシングルクォートで囲みます | -| | [UNICODE](#unicode) | 文字のUnicodeコードポイントを返します | -| | [CHAR](#char) | Unicodeコードポイントを文字に変換して連結します | -| | [PRINTF](#printf) | フォーマット変換した文字列を返します | -| | [TRANSLATE](#translate) | 文字列を置換します | -| [日時](#time_function) | [NOW](#now) | 現在時刻を返します | -| | [TIMESTAMP](#timestamp) | 時刻の文字列表記をTIMESTAMP型に変換します | -| | [TIMESTAMP_ADD](#timestamp_add) | 時刻を加算します | -| | [TIMESTAMP_DIFF](#timestamp_diff) | 時刻の差分を返します | -| | [TO_TIMESTAMP_MS](#to_timestamp_ms) | 時刻'1970-01-01T00:00:00.000Z'に経過時間を加算します | -| | [TO_EPOCH_MS](#to_epoch_ms) | 時刻'1970-01-01T00:00:00.000Z'からの経過時間を返します | -| | [EXTRACT](#extract) | 時刻から特定のフィールドの値を取り出します | -| | [STRFTIME](#strftime) | 時刻をフォーマット変換した文字列を返します | -| | [MAKE_TIMESTAMP](#make_timestamp) | 時刻を生成します | -| | [TIMESTAMP_TRUNC](#timestamp_trunc) | 時刻を切り捨てます | -| [その他](#other_function) | [COALESCE](#coalesce) | NULLではない最初の引数を返します | -| | [IFNULL](#ifnull) | NULLではない最初の引数を返します | -| | [NULLIF](#nullif) | 2つの引数が同じ場合はNULL、異なる場合は最初の引数を返します | -| | [RANDOMBLOB](#randomblob) | BLOB型の値(乱数)を返します | -| | [ZEROBLOB](#zeroblob) | BLOB型の値(0x00)を返します | -| | [HEX](#hex) | BLOB型の値を16進表記に変換します | -| | [TYPEOF](#typeof) | 値のデータ型を返します | - - -関数の説明では、以下のテーブルのデータを実行例として使用します。 - -```example -テーブル: employees - - id first_name last_name age department enrollment_period -----+------------+-----------+-------+-------------+------------------- - 0 John Smith 43 Sales 15.5 - 1 William Jones 59 Development 23.2 - 2 Richard Brown (NULL) Sales 7.0 - 3 Mary Taylor 31 Research (NULL) - 4 Lisa (NULL) 29 (NULL) 4.9 - 5 James Smith 43 Development 10.3 - -テーブル: departments - - id department -----+------------ - 0 Sales - 1 Development - 2 Research -``` - - ->#### メモ ->- NULLの値は(NULL)と表記します。 - - - -### 集計関数 - -値を集計する関数です。 - -| | | -|------|-------| -| 書式 | function( [ALL] *argument*) | - -| 項目 | 意味 | -|---------|-------| -| ALL | 重複する値も含めてすべてのロウを集計します | - -指定を省略した場合は、ALLを指定した場合と同じになります。 - - ->#### メモ ->- 集計関数は、SELECT句にしか使えません。 ->- 計算の対象となる行が存在しない場合、COUNTの結果は0になります。その他の集計関数の結果はNULLになります。 - - -#### AVG - -| | | -|------|-------| -| 書式 | AVG( [ALL] *n*) | - -*n* の平均値を返します。 - -- 引数*n*には、数値型の値を指定します。 -- *n* の値がNULLのロウは、計算の対象外になります。 -- 結果の型はDOUBLE型です。 - -例) -```example -SELECT AVG(age) FROM employees; -結果:41.0 - -SELECT department, AVG(age) avg FROM employees GROUP BY department; -結果: - department avg - ------------+----- - Development 51.0 - Research 31.0 - Sales 43.0 - (NULL) 29.0 - ``` - - - -#### COUNT - -| | | -|------|-------| -| 書式 | COUNT(* \| [ALL] *x*) | - -ロウの数を返します。 - -- *x* の値がNULLのロウは、計算の対象外になります。ロウ数にはカウントされません。 -- 結果の型はLONG型です。 - -例) -```example -SELECT COUNT(*) FROM employees; -結果:6 - -// 値がNULLのロウは無視してカウントします -SELECT COUNT(department) FROM employees; -結果:5 -``` - - -#### MAX - -| | | -|------|-------| -| 書式 | MAX( [ALL] *x*) | - -最大値を返します。 - -- 引数*x*には、任意の型の値を指定します。 - - 文字列型の場合は、先頭文字から順に比較して文字コードが最大である文字列を返します。 - - TIMESTAMP型の場合は、最も新しい日時を返します。 -- *x* の値がNULLのロウは、計算の対象外になります。 -- 結果の型は、引数*x*の型と同じです。 - -例) -```example -SELECT MAX(age) FROM employees; -結果:59 - -SELECT MAX(first_name) FROM employees; -結果:William -``` - - - -#### MIN - -| | | -|------|-------| -| 書式 | MIN( [ALL] *x*) | - -最小値を返します。 - -- 引数*x*には、任意の型の値を指定します。 - - 文字列型の場合は、先頭文字から順に比較して文字コードが最小である文字列を返します。 - - TIMESTAMP型の場合は、最も古い日時を返します。 -- *x* の値がNULLのロウは、計算の対象外になります。 -- 結果の型は、引数*x*の型と同じです。 - - -例) -```example -SELECT MIN(age) FROM employees; -結果:29 - -SELECT MIN(first_name) FROM employees; -結果:James -``` - - - -#### SUM/TOTAL - -| | | -|------|-------| -| 書式 | SUM( [ALL] *n*) | -| 書式 | TOTAL( [ALL] *n*) | - -合計値を返します。 - -- 引数*n*には、数値型の値を指定します。 -- *n* の値がNULLのロウは、計算の対象外になります。 - -- SUMとTOTALの違いは以下の通りです。 - - *n* が整数型の値のみの場合、SUMは整数(LONG型)で値を返します。TOTALは浮動小数点数(DOUBLE型)で値を返します。 - - *n* に浮動小数点数型の値が含まれる場合は、両方とも浮動小数点数(DOUBLE型)で値を返します。 - - *n* の値がNULLのみの場合、SUMはNULLを返します。TOTALは0を返します。 - -例) -```example -SELECT SUM(age) FROM employees; -結果:205 - -SELECT TOTAL(age) FROM employees; -結果:205.0 - -SELECT department, SUM(age) sum FROM employees GROUP BY department; -結果: - department sum - ------------+----- - Development 102 - Research 31 - Sales 43 - (NULL) 29 -``` - - - -#### GROUP_CONCAT - -| | | -|------|-------| -| 書式 | GROUP_CONCAT( [ALL] *x* [, *separator*] ) | - -*x* の値を連結した文字列を返します。 -*separator* は、連結するセパレータを指定します。指定しない場合は","で連結します。 - -- 引数 *x* には、任意の型の値を指定します。 - - TIMESTAMP型の場合は、時刻の文字列表記'YYYY-MM-DDThh:mm:ss.SSS(Z|±hh:mm)'([TIMESTAMP関数](#timestamp)参照)に変換して連結します。 -- *x* の値がNULLのロウは、計算の対象外になります。 -- 結果の型はSTRING型です。 - -例) -```example -// 名前last_nameを'/'で連結します -SELECT GROUP_CONCAT(last_name, '/') from employees; -結果: Smith/Jones/Brown/Taylor/Smith - -// 部署departmentごとに、名前first_nameを連結します -SELECT department, GROUP_CONCAT(first_name) group_concat from employees GROUP BY(department); -結果: - department group_concat - -------------+-------------- - Development William,James - Research Mary - Sales John,Richard - (NULL) Lisa - -SELECT GROUP_CONCAT(age, ' + ') FROM employees; -結果:43 + 59 + 31 + 29 + 43 -``` - - - -#### STDDEV_SAMP - -| | | -|------|-------| -| 書式 | STDDEV_SAMP( [ALL] *x*) | - -標本標準偏差を返します。 - -- 引数*x*には、数値型の値を指定します。 - - 式に集計関数を含めることはできません。 -- *x* の値がNULLのロウは、計算の対象外になります。 -- *x* が1件の場合は、NULLを返します。 -- 結果の型はDOUBLE型です。 - -例) -```example -SELECT department, STDDEV_SAMP(enrollment_period) enrollment_period_stddev from employees GROUP BY department; -結果: - department enrollment_period_stddev - -------------+-------------------------- - Development 9.121677477306465 - Research (NULL) - Sales 6.010407640085654 - (NULL) (NULL) - -``` - - - -#### STDDEV/STDDEV0 - -| | | -|------|-------| -| 書式 | STDDEV( [ALL] *x*) | -| 書式 | STDDEV0( [ALL] *x*) | - -標本標準偏差を返します。STDDEVはSTDDEV_SAMP関数の別名です。 - -- 引数*x*には、数値型の値を指定します。 - - 式に集計関数を含めることはできません。 -- *x* の値がNULLのロウは、計算の対象外になります。 -- 結果の型はDOUBLE型です。 -- STDDEVとSTDDEV0の違いは以下の通りです。 - - STDDEVは、*x* が1件の場合に、NULLを返します。 - - STDDEV0は、*x* が1件の場合に、0を返します。 - -例) -```example -SELECT department, STDDEV(enrollment_period) enrollment_period_stddev from employees GROUP BY department; -結果: - department enrollment_period_stddev - -------------+-------------------------- - Development 9.121677477306465 - Research (NULL) - Sales 6.010407640085654 - (NULL) (NULL) - -SELECT department, STDDEV0(enrollment_period) enrollment_period_stddev from employees GROUP BY department; -結果: - department enrollment_period_stddev - -------------+-------------------------- - Development 9.121677477306465 - Research (NULL) - Sales 6.010407640085654 - (NULL) 0.0 - -SELECT STDDEV(enrollment_period) enrollment_period_stddev from employees WHERE age >= 55; -結果: - enrollment_period_stddev - -------------------------- - (NULL) - -SELECT STDDEV0(enrollment_period) enrollment_period_stddev from employees WHERE age >= 55; -結果: - enrollment_period_stddev - -------------------------- - 0.0 -``` - - - -#### STDDEV_POP - -| | | -|------|-------| -| 書式 | STDDEV_POP( [ALL] *x*) | - -母標準偏差を返します。 - -- 引数*x*には、数値型の値を指定します。 - - 式に集計関数を含めることはできません。 -- *x* の値がNULLのロウは、計算の対象外になります。 -- 結果の型はDOUBLE型です。 - -例) -```example -SELECT department, STDDEV_POP(enrollment_period) enrollment_period_stddev from employees GROUP BY department; -結果: - department enrollment_period_stddev - -------------+-------------------------- - Development 6.450000000000002 - Research (NULL) - Sales 4.25 - (NULL) 0.0 - -``` - - - -#### VAR_SAMP - -| | | -|------|-------| -| 書式 | VAR_SAMP( [ALL] *x*) | - -標本分散を返します。 - -- 引数*x*には、数値型の値を指定します。 - - 式に集計関数を含めることはできません。 -- *x* の値がNULLのロウは、計算の対象外になります。 -- *x* が1件の場合は、NULLを返します。 -- 結果の型はDOUBLE型です。 - -例) -```example -SELECT department, VAR_SAMP(enrollment_period) enrollment_period_variance from employees GROUP BY department; -結果: - department enrollment_period_variance - -------------+---------------------------- - Development 83.20500000000004 - Research (NULL) - Sales 36.125 - (NULL) (NULL) - -``` - - - -#### VARIANCE/VARIANCE0 - -| | | -|------|-------| -| 書式 | VARIANCE( [ALL] *x*) | -| 書式 | VARIANCE0( [ALL] *x*) | - -標本分散を返します。VARIANCEはVAR_SAMP関数の別名です。 - -- 引数*x*には、数値型の値を指定します。 - - 式に集計関数を含めることはできません。 -- *x* の値がNULLのロウは、計算の対象外になります。 -- 結果の型はDOUBLE型です。 -- VARIANCEとVARIANCE0の違いは以下の通りです。 - - VARIANCEは*x*が1件の場合に、NULLを返します。 - - VARIANCE0は*x*が1件の場合に、0を返します。 - -例) -```example -SELECT department, VARIANCE(enrollment_period) enrollment_period_variance from employees GROUP BY department; -結果: - department enrollment_period_variance - -------------+---------------------------- - Development 83.20500000000004 - Research (NULL) - Sales 36.125 - (NULL) (NULL) - -SELECT department, VARIANCE0(enrollment_period) enrollment_period_variance from employees GROUP BY department; -結果: - department enrollment_period_variance - -------------+---------------------------- - Development 83.20500000000004 - Research (NULL) - Sales 36.125 - (NULL) 0.0 - -SELECT VARIANCE(enrollment_period) enrollment_period_variance from employees WHERE age >= 55; -結果: - enrollment_period_variance - ---------------------------- - (NULL) - -SELECT VARIANCE0(enrollment_period) enrollment_period_variance from employees WHERE age >= 55; -結果: - enrollment_period_variance - ---------------------------- - 0.0 -``` - - -#### VAR_POP - -| | | -|------|-------| -| 書式 | VAR_POP( [ALL] *x*) | - -母分散を返します。 - -- 引数*x*には、数値型の値を指定します。 - - 式に集計関数を含めることはできません。 -- *x* の値がNULLのロウは、計算の対象外になります。 -- 結果の型はDOUBLE型です。 - -例) -```example -SELECT department, VAR_POP(enrollment_period) enrollment_period_variance from employees GROUP BY department; -結果: - department enrollment_period_variance - -------------+---------------------------- - Development 41.60250000000002 - Research (NULL) - Sales 18.0625 - (NULL) 0.0 - -``` - - - - - -### 算術関数 - -#### ABS - -| | | -|------|-------| -| 書式 | ABS(*n*) | - -*n* の絶対値を返します。正数はそのままの値、負数は-1を掛けた値を返します。 - -- 引数*n*には、数値型の値を指定します。 -- 値がNULLの場合は、NULLを返します。 -- 値が-263の整数の場合は、オーバフローエラーになります。 -- 結果の型は、*n* が整数のみの場合はLONG型、浮動小数点数の場合はDOUBLE型です。 - -例) -```example -SELECT first_name, ABS(age) abs FROM employees; -結果: - first_name abs - ------------+------- - John 43 - William 59 - Richard (NULL) - Mary 31 - Lisa 29 - James 43 -``` - - - -#### ROUND - -| | | -|------|-------| -| 書式 | ROUND(*n* [, *m*]) | - -四捨五入します。*n* の値を、小数点以下*m*桁で四捨五入した値を返します。 - -- 引数*n*には、数値型のカラムを指定します。 -- 引数*m*には、0以上の整数を指定します。省略した場合、*m* は0になります。 -- 値がNULLの場合は、NULLを返します。 -- 結果の型は、*n* が整数のみの場合はLONG型、浮動小数点数の場合はDOUBLE型です。 - -例) -```example -SELECT first_name, ROUND(enrollment_period, 0) round FROM employees; -結果: - first_name round - ------------+------- - John 16.0 - William 23.0 - Richard 7.0 - Mary (NULL) - Lisa 5.0 - James 10.0 -``` - - - -#### RANDOM - -| | | -|------|-------| -| 書式 | RANDOM() | - -乱数を返します。乱数は、-263から263-1までの範囲の整数です。 - -- 結果の型はLONG型です。 - -例) -```example -SELECT first_name, RANDOM() random FROM employees; -結果: - first_name random - ------------+---------------------- - John -3382931580741820003 - William -7362300487836647182 - Richard 8834368641333737477 - Mary -8544493602797564288 - Lisa -7727163797274657674 - James 6751560427268247384 -``` - - - - -#### MAX/MIN - -| | | -|------|-------| -| 書式 | MAX(*x1*, *x2* [,...]) | - -値*xN*の中で、最大の値を返します。 - -| | | -|------|-------| -| 書式 | MIN(*x1*, *x2* [,...]) | - -値*xN*の中で、最小の値を返します。 - - -例) -```example -SELECT first_name, age, enrollment_period, MAX(age, enrollment_period) max FROM employees; -結果: - first_name age enrollment_period max - ------------+-------+------------------+-------- - John 43 15.5 43.0 - William 59 23.2 59.0 - Richard (NULL) 7.0 (NULL) - Mary 31 (NULL) (NULL) - Lisa 29 4.9 29.0 - James 43 10.3 43.0 -``` - - -#### LOG - -| | | -| --- | ------------- | -| 書式 | LOG(*n*, *m*) | - -*n* を底とした*m*の対数を返します。 - -- 引数*n*には、0より大きく1以外の数値型の値を指定します。 -- 引数*m*には、0より大きい数値型の値を指定します。 -- 値がNULLの場合は、NULLを返します。 -- 結果の型は、DOUBLE型です。 - -例) - -```example -SELECT LOG(2, 8); -結果:3.0 - -SELECT LOG(0.5, 2.0); -結果:-1.0 -``` - - -#### SQRT - -| | | -| --- | --------- | -| 書式 | SQRT(*n*) | - -*n* の正の平方根を返します。 - -- 引数*n*には、0以上の数値型の値を指定します。 -- 値がNULLの場合は、NULLを返します。 -- 結果の型はDOUBLE型です。 - -例) - -```example -SELECT SQRT(4); -結果:2.0 - -SELECT SQRT(16.0); -結果:4.0 -``` - - -#### TRUNC - -| | | -| --- | -------------------------------------------------- | -| 書式 | TRUNC(*n* [,*m*]) | - -*m>=0* の場合、*n* の値の小数点 *m* 桁未満を切り捨てた値を返します。 - -*m<0* の場合、*n* の 値の整数-*m* 桁以下を切り捨てた値を返します。 - -- 引数*n* には、数値型の値を指定します。 -- 引数*m* には、整数を指定します。省略した場合、*m* は0になります。309以上、もしくは-308以下の値を与えることはできません。 -- 値がNULLの場合は、NULLを返します。 -- 結果の型は、引数nに整数が指定された場合はLONG型、小数が指定された場合はDOUBLE型です。 - -例) - -```example -SELECT TRUNC(123.4567); -結果:123.0 - -SELECT TRUNC(123.4567, 2); -結果:123.45 - -SELECT TRUNC(123.4567, -1); -結果:120.0 - -SELECT TRUNC(123.4567, -3); -結果:0.0 - -SELECT TRUNC(1234567, -2); -結果:1234500 -``` - - -#### HEX_TO_DEC - -| | | -| --- | ------------- | -| 書式 | HEX_TO_DEC(*str*) | - -16進数文字列*str*を10進数の数値型に変換します。 - -- 引数*str*には、16進数変換できる文字列型の値(0-9, a-f, A-F)を指定します。 -- 値がNULLの場合は、NULLを返します。 -- 結果の型はLONG型です。 - -例) -```example -SELECT HEX_TO_DEC('FF'); -結果:255 - -SELECT HEX_TO_DEC('10'); -結果:16 -``` - -### 文字関数 - - -#### LENGTH - -| | | -|------|-------| -| 書式 | LENGTH(*str*) | - -文字列*str*の長さを返します。 - -- 引数*str*には、文字列型の値を指定します。 - - 文字列型はUnicodeコードポイントを文字とします。 -- 値がNULLの場合は、NULLを返します。 -- 結果の型はLONG型です。 -- 引数にはBLOB型を指定することも可能です。 - -例) -```example -SELECT last_name, LENGTH(last_name) length FROM employees; -結果: - last_name length - ------------+---------------------- - Smith 5 - Jones 5 - Brown 5 - Taylor 6 - (NULL) (NULL) - Smith 5 -``` - - - -#### LOWER - -| | | -|------|-------| -| 書式 | LOWER(*str*) | - -文字列*str*のアルファベットをすべて小文字に変換します。 - -- 引数*str*には、文字列型の値を指定します。 -- 値がNULLの場合は、NULLを返します。 -- 結果の型は文字列型です。 -- ASCII英字相当以外のUnicode文字は変換対象外です。 - -例) -```example -SELECT last_name, LOWER(last_name) lower FROM employees; -結果: - last_name lower - ------------+---------------------- - Smith smith - Jones jones - Brown brown - Taylor taylor - (NULL) (NULL) - Smith smith -``` - - - -#### UPPER - -| | | -|------|-------| -| 書式 | UPPER(*str*) | - -文字列*str*のアルファベットをすべて大文字に変換します。 - -- 引数*str*には、文字列型の値を指定します。 -- 値がNULLの場合は、NULLを返します。 -- 結果の型は文字列型です。 -- ASCII英字相当以外のUnicode文字(キリル文字など)は変換対象外です。 - -例) -```example -SELECT last_name, UPPER(last_name) upper FROM employees; -結果: - last_name upper - ------------+---------------------- - Smith SMITH - Jones JONES - Brown BROWN - Taylor TAYLOR - (NULL) (NULL) - Smith SMITH -``` - - - -#### SUBSTR - -| | | -|------|-------| -| 書式 | SUBSTR(*str*, *index* [, *length*]) | - -文字列を部分的に切り出します。文字列*str*の開始位置*index*の文字から、長さ*length*の文字列を切り出して返します。 - -- 引数*str*には、文字列型の値を指定します。 -- 引数*index*には、1からの整数を指定します。文字列先頭の開始位置は1です。 -- 引数*length*を省略した場合は、文字列*str*の最後尾までを切り出します。 -- *str* の値がNULLの場合は、NULLを返します。 -- 結果の型は文字列型です。 -- 引数にはBLOB型を指定することも可能です。 - -例) -```example -SELECT SUBSTR('abcdefg', 3); -結果:cdefg - -SELECT SUBSTR('abcdefg', 3, 2); -結果:cd -``` - - - -#### REPLACE - -| | | -|------|-------| -| 書式 | REPLACE(*str*, *search_str*, *replacement_str*) | - -文字列を置換します。 -文字列*str*の中で、文字列*search_str*に一致する部分をすべて*replacement_str*に置き換えます。 - -- 引数*str*、*search_str*、*replacement_str* には、文字列型の値を指定します。 -- *str* の値がNULLの場合は、NULLを返します。 -- 結果の型は文字列型です。 - -例) -```example -SELECT REPLACE('abcdefabc', 'abc', '123'); -結果:123def123 -``` - - - -#### INSTR - -| | | -|------|-------| -| 書式 | INSTR(*str*, *search_str* \[, offset\] \[, occurrence\]) | - -文字列*str*の中から文字列*search_str*を探し、その開始位置を返します。見つからなかった場合は0を返します。 - -- 引数*str*、*search_str* には、文字列型もしくはBLOB型の値を指定します。*str* と *search_str* には同じデータ型を指定する必要があります。引数 *offset*、*occurrence* には、LONG型の値を指定します。 -- 文字列型の場合はUnicodeのコードポイント単位、BLOB型の場合はバイト単位で計算します。 -- *offset* は検索開始位置を表し、正の場合は前方先頭から、負の場合は後方末尾から順に計算します。0の場合は一致なしとみなし、0を返します。 -- *occurrence* は出現回数を表し、指定の回数だけ繰り返した最後のマッチ位置を計算します。0の場合は一致なしとみなし、0を返します。 -- いずれかの引数の値がNULLの場合は、NULLを返します。 -- 結果の型はLONG型です。 - - -例) -```example -SELECT INSTR('abcdef', 'cd'); -結果:3 - -SELECT INSTR('abcdef', 'gh'); -結果:0 - -SELECT INSTR('abcabcabcde', 'ab', 2, 2); -結果:7 - -SELECT INSTR('abcabcabcde', 'ab', -1, 2); -結果:4 - -``` - - - -#### LIKE - -| | | -|------|-------| -| 書式 | LIKE(*pattern_str*, *str* [, *escape_str*]) | - -文字列を検索します。 -文字列*str*が照合パターン*pattern_str*と一致する場合はtrueを返します。一致しない場合はfalseを返します。 -照合パターンには次の2つのワイルドカードが使用できます。 - -| ワイルドカード | 意味 | -|------|-----| -| _ | 任意の1文字 | -| % | 任意の0文字以上の文字列 | - -ワイルドカードの文字_または%を含む*str*に対して、文字_または%を検索する場合には、エスケープ文字*escape_str*を指定します。 -ワイルドカードの文字の前にエスケープ文字を指定すると、ワイルドカードと解釈されなくなります。 - -- 引数*str*、*pattern_str*、*escape_str* には、文字列型の値を指定します。 -- いずれかの引数の値がNULLの場合は、NULLを返します。 -- 大文字小文字は区別しません。 -- 結果の型はBOOL型です。 - -例) -```example -SELECT last_name, LIKE('%mi%', last_name) like_name FROM employees; -結果: - last_name like_name - ------------+---------------------- - Smith true - Jones false - Brown false - Taylor false - (NULL) (NULL) - Smith true - - -SELECT LIKE('%C%E%', 'ABC%DEF'); -結果:true - -SELECT LIKE('%C@%E%', 'ABC%DEF', '@'); -結果:false - -SELECT LIKE('%C@%D%', 'ABC%DEF', '@'); -結果:true -``` - - - -#### GLOB - -| | | -|------|-------| -| 書式 | GLOB(*pattern_str*, *str*) | - -文字列を検索します。 -文字列*str*が照合パターン*pattern_str*と一致する場合はtrueを返します。一致しない場合はfalseを返します。 -照合パターンにはワイルドカードが使用できます。 - -| ワイルドカード | 意味 | -|------|-----| -| ? | 任意の1文字 | -| * | 任意の0文字以上の文字列 | -| [abc] | 文字a、bまたはcのいずれかに一致 | -| [a-e] | 文字aからeまでのいずれかに一致 | - -- 引数*str*、*pattern_str* には、文字列型の値を指定します。 -- いずれかの引数の値がNULLの場合は、NULLを返します。 -- 大文字小文字は区別します。 -- 結果の型はBOOL型です。 - -例) -```example -SELECT GLOB('*[BA]AB?D', 'AABCD'); -結果:true -``` - - - -#### TRIM - -| | | -|------|-------| -| 書式 | TRIM(*str* [, *trim_str*]) | - -文字列*str*の両端から、文字列*trim_str*のすべての文字を削除します。 - -- 引数*str*, *trim_str* には、文字列型の値を指定します。 -- 引数 *trim_str* の文字列に含まれるすべての文字を削除します。省略すると、*str* の両端からスペースを削除します。 -- 結果の型は文字列型です。 - -例) -```example -SELECT TRIM(' ABC '); -結果:ABC (両端にスペース無し) - -SELECT TRIM('ABCAA', 'BA'); -結果:C -``` - - - -#### LTRIM - -| | | -|------|-------| -| 書式 | LTRIM(*str* [, *trim_str*]) | - -文字列 *str* の左端から、文字列 *trim_str* のすべての文字を削除します。 - -- 引数 *str*, *trim_str* には、文字列型の値を指定します。 -- 引数 *trim_str* の文字列に含まれるすべての文字を削除します。省略すると、*str* の左端からスペースを削除します。 -- 結果の型は文字列型です。 - -例) -```example -SELECT LTRIM(' ABC '); -結果:ABC (左端にスペース無し) - -SELECT LTRIM('ABCAA', 'A'); -結果:BCAA -``` - - - -#### RTRIM - -| | | -|------|-------| -| 書式 | RTRIM(*str* [, *trim_str*]) | - -文字列*str*の右端から、文字列*trim_str*のすべての文字を削除します。 - -- 引数 *str*, *trim_str* には、文字列型の値を指定します。 -- 引数 *trim_str* の文字列に含まれるすべての文字を削除します。省略すると、*str* の右端からスペースを削除します。 -- 結果の型は文字列型です。 - -例) -```example -SELECT RTRIM(' ABC '); -結果: ABC (右端にスペース無し) - -SELECT RTRIM('ABCAA', 'A'); -結果:ABC -``` - - - -#### QUOTE - -| | | -|------|-------| -| 書式 | QUOTE(*x*) | - -*x* の値をシングルクォートで囲んだ文字列を返します。 - -- 引数 *x* には、文字列型、数値型、TIMESTAMP型、BLOB型の値を指定します。 - - 文字列型の場合は、文字列に含まれるシングルクォートは2つのシングルクォート''にエスケープします。 - - 数値型の場合は、そのままの数値が返ります。シングルクォートでは囲まれません。 - - TIMESTAMP型の場合は、時刻の文字列表記'YYYY-MM-DDThh:mm:ss.SSS(Z|±hh:mm)'([TIMESTAMP関数](#timestamp)参照)に変換した文字列を返します。シングルクォートでは囲まれません。 - - BLOB型の場合は、X'BLOB型の値'の文字列を返します。 -- 結果の型は文字列型です。 - -例) -```example -SELECT QUOTE(last_name) last_name, QUOTE(age) age FROM employees; -結果: - last_name age - ------------+------- - 'Smith' 43 - 'Jones' 59 - 'Brown' (NULL) - 'Taylor' 31 - (NULL) 29 - 'Smith' 43 - -SELECT QUOTE(RANDOMBLOB(4)); -結果:X'A45EA28D' - -// カラムvalueの値は「Today's news」の文字列 -SELECT value, QUOTE(value) FROM testcontainer; -結果: - value QUOTE(value) - ---------------+------------------- - Today's news 'Today''s news' -``` - - - -#### UNICODE - -| | | -|------|-------| -| 書式 | UNICODE(*str*) | - -文字列*str*の最初の文字のUNICODEコードポイントを返します。 - -- 引数*str*には、文字列型の値を指定します。 -- 結果の型はLONG型です。 - -例) -```example -SELECT last_name, UNICODE(last_name) unicode FROM employees; -結果: - last_name unicode - ------------+---------------------- - Smith 83 - Jones 74 - Brown 66 - Taylor 84 - (NULL) (NULL) - Smith 83 -``` - - - -#### CHAR - -| | | -|------|-------| -| 書式 | CHAR(*x1* [, *x2*, ... , *xn*]) | - -Unicodeコードポイントの値*xn*の文字を連結した文字列を返します。 - -- 引数*xn*には、Unicodeコードポイントの値を指定します。 -- 結果の型はSTRING型です。 - -例) -```example -SELECT CHAR(83, 84, 85); -結果:STU -``` - - - -#### PRINTF - -| | | -|------|-------| -| 書式 | PRINTF(*format* [, *x1*, *x2*, ..., *xn*]) | - -指定されたフォーマット*format*に合わせて変換した文字列を返します。 -標準Cライブラリのprintf関数と同等のフォーマットが使用できます。 -それ以外のフォーマットとしては以下の2つがあります。 - -| フォーマット | 説明 | -|----|-----------------------| -| %q | 文字列中にシングルクォートがある場合、2つのシングルクォート''にエスケープします。 | -| %Q | 文字列中にシングルクォートがある場合、2つのシングルクォート''にエスケープします。
文字列の両端をシングルクォートで囲みます。 | - -例) -```example -SELECT enrollment_period, PRINTF('%.2f', enrollment_period) printf FROM employees; -結果: - enrollment_period printf - ------------------+----------- - 15.5 15.50 - 23.2 23.20 - 7.0 7.00 - (NULL) 0.00 - 4.9 4.90 - 10.3 10.30 -``` - -#### TRANSLATE -| | | -| --- | ------------------------------------------------- | -| 書式 | TRANSLATE(*str*, *search_str*, *replacement_str*) | - -文字列を置換します。文字列 *str* のうち、文字列 *search_str* と一致する文字が、*search_str* と同じ位置にある文字列 *replacement_str* の文字で置換されます。*replacement_str* が *search_str* より短く、置換後の文字がない場合、置換対象の文字は削除されます。 - -- 引数*str*、*search_str*、*replacement_str* には、文字列型の値を指定します。 -- 値がNULLの場合は、NULLを返します。 -- 結果の型は文字列型です。 - -例) - -```example -SELECT TRANSLATE('abcde', 'ace', '123'); -結果:1b2d3 - -SELECT TRANSLATE('abcdeca', 'ace', '123'); -結果:1b2d321 - -SELECT TRANSLATE('abcde', 'ac', '123'); -結果:1b2de - -SELECT TRANSLATE('abcde', 'ace', '12'); -結果:1b2d - -SELECT TRANSLATE('abcde', 'AB', '123'); -結果:abcde - -SELECT TRANSLATE('abcde', 'abc', ''); -結果:de -``` - - -### 日時関数 - -#### NOW - -| | | -|------|-------| -| 書式 | NOW() | - -現在時刻の値を返します。 - -- 接続時にタイムゾーンが指定されている場合、オフセット計算された値が返ります。 -- 結果の型はTIMESTAMP型です。 - -例) -```example -SELECT NOW(); -結果:2019-09-17T04:07:31.825Z - -SELECT NOW(); -結果:2019-09-17T13:09:20.918+09:00 -``` - -#### TIMESTAMP - -| | | -|------|-------| -| 書式 | TIMESTAMP(*timestamp_string* [, timezone]) | - -時刻の文字列表現*timestamp_string*の値を、TIMESTAMP型に変換します。 - -- 引数*timestamp_string*には、時刻の文字列表現として、次の形式の文字列を指定します。 - - YYYY-MM-DDThh:mm:ssZ - - YYYY-MM-DDThh:mm:ss.SSSZ - - YYYY-MM-DD - - hh:mm:ss - - | 表記 | 内容 | 値の範囲 | - |------|----------|------------| - | YYYY | 年(西暦) | 1970~ | - | MM | 月    | 1~12 | - | DD | 日    | 1~31 | - | hh | 時間(24時間表記)    | 0~23 | - | mm | 分    | 0~59 | - | ss | 秒    | 0~59 | - | SSS | ミリ秒  | 0~999 | - | Z | タイムゾーン | Z\|±hh:mm\|±hhmm | - -- 引数*timezone*には、タイムゾーン(Z|±hh:mm|±hhmm)を指定します。*timestamp_string* にタイムゾーン情報が含まれる場合は指定する必要はありません。指定して矛盾がある場合はエラーが返ります。 -- 接続時にタイムゾーンが指定されている場合、オフセット計算された値が返ります。 -- 結果の型はTIMESTAMP型です。 -- TIMESTAMP関数の逆変換(TIMESTAMP型から文字列型への変換)は、[CAST](#cast)を用いてください。 - - CAST(*timestamp* AS STRING) - -例) -```example -// カラムdate(TIMESTAMP型)の値が、時刻'2018-12-01T10:30:00Z'より新しいロウを検索します -SELECT * FROM timeseries WHERE date > TIMESTAMP('2018-12-01T10:30:00Z'); -``` - - - -#### TIMESTAMP_ADD - -| | | -|------|-------| -| 書式 | TIMESTAMP_ADD(*time_unit*, *timestamp*, *duration* [, timezone]) - -時刻*timestamp*に、期間*duration*(単位*time_unit*)を加算した値を返します。 - -- 引数*timestamp*には、TIMESTAMP型の値を指定します。 -- 引数*duration*には、整数を指定します。負の数を指定した場合は、時刻を減算します。 -- 引数*time_unit*には、次のいずれかの識別子を指定します。 - - YEAR | MONTH | DAY | HOUR | MINUTE | SECOND | MILLISECOND -- 引数*timezone*には、タイムゾーン(Z|±hh:mm|±hhmm)を指定します。 -- 年もしくは月の加算によって算出された月に同一日が存在しない場合、日はその月の最終日に丸められます。例えば5月31日に1月加算すると、6月31日は存在しないため6月30日に丸められます。 -- 接続時にタイムゾーンが指定されている場合、オフセット計算された値が返ります。 -- 結果の型はTIMESTAMP型です。 -- 関数の別名としてTIMESTAMPADDも利用可能です。 - -例) -```example -// 時刻'2018-12-01T11:22:33.444Z'に10日間を加算します -SELECT TIMESTAMP_ADD(DAY, TIMESTAMP('2018-12-01T11:22:33.444Z'), 10); -結果:2018-12-11T11:22:33.444Z - -SELECT TIMESTAMP_ADD(MONTH, TIMESTAMP('2019-05-31T01:23:45.678Z'), 1); -結果:2019-06-30T01:23:45.678Z - -SELECT TIMESTAMP_ADD(MONTH, TIMESTAMP('2019-05-31T01:23:45.678Z'), 1, '-02:00'); -結果:2019-07-01T01:23:45.678Z - -``` - - - -#### TIMESTAMP_DIFF - -| | | -|------|-------| -| 書式 | TIMESTAMP_DIFF(*time_unit*, *timestamp1*, *timestamp2* [, timezone]) - -時刻*timestamp1*と*timestamp2*の差分の時間(*timestamp1*-*timestamp2*)を、時間単位*time_unit*で表した値で返します。 -差分を時間単位で表す際に、小数点以下は切り捨てます。 - -- 引数*timestamp1*と*timestamp2*には、TIMESTAMP型の値を指定します。 -- 引数*time_unit*には、次のいずれかの識別子を指定します。識別子で指定の単位のみの差分を計算するのではなく、識別子未満の単位も計算に利用されます。例えばMONTH指定で2019/09/30と2019/10/02を比較する場合、0ヶ月2日が差分となるため、出力は1ではなく0となります。 - - YEAR | MONTH | DAY | HOUR | MINUTE | SECOND | MILLISECOND -- 引数*timezone*には、タイムゾーン(Z|±hh:mm|±hhmm)を指定します。 -- 接続時にタイムゾーンが指定されている場合、オフセット計算された値が差分計算に利用されます。 -- 結果の型はLONG型です。 -- 関数の別名としてTIMESTAMPDIFFも利用可能です。 - -例) -```example - -// 時間単位:月 -SELECT TIMESTAMP_DIFF(MONTH, TIMESTAMP('2018-12-11T10:30:15.555Z'), TIMESTAMP('2018-12-01T10:00:00.000Z')); -結果:0 - -// 時間単位:日 -SELECT TIMESTAMP_DIFF(DAY, TIMESTAMP('2018-12-11T10:30:15.555Z'), TIMESTAMP('2018-12-01T10:00:00.000Z')); -結果:10 -SELECT TIMESTAMP_DIFF(DAY, TIMESTAMP('2018-12-01T11:00:00.000Z'), TIMESTAMP('2018-12-11T10:30:15.555Z')); -結果:-9 - -// 時間単位:時間 -SELECT TIMESTAMP_DIFF(HOUR, TIMESTAMP('2018-12-11T10:30:15.555Z'), TIMESTAMP('2018-12-01T10:00:00.000Z')); -結果:240 - -// 時間単位:分 -SELECT TIMESTAMP_DIFF(MINUTE, TIMESTAMP('2018-12-11T10:30:15.555Z'), TIMESTAMP('2018-12-01T10:00:00.000Z')); -結果:14430 - -// タイムゾーンによって結果が変わる例を示します。 -SELECT TIMESTAMP_DIFF(MONTH, MAKE_TIMESTAMP(2019, 8, 1), MAKE_TIMESTAMP(2019, 6, 30), 'Z'); -結果:2 - -SELECT TIMESTAMP_DIFF(MONTH, MAKE_TIMESTAMP(2019, 8, 1), MAKE_TIMESTAMP(2019, 6, 30), '-01:00'); -結果:1 - -``` - - - -#### TO_TIMESTAMP_MS - -| | | -|------|-------| -| 書式 | TO_TIMESTAMP_MS(*milliseconds*) | - -時刻'1970-01-01T00:00:00.000Z'に、引数millisecondsの値をミリ秒として加算した時刻を返します。 - -この関数は、TO_EPOCH_MS関数の逆変換です。 - -- 引数*milliseconds*には、整数を指定します。 -- 接続時にタイムゾーンが指定されている場合、オフセット計算された値が返ります。 -- 結果の型はTIMESTAMP型です。 - -例) -```example -SELECT TO_TIMESTAMP_MS(1609459199999); -結果:2020-12-31T23:59:59.999Z -``` - - - -#### TO_EPOCH_MS - -| | | -|------|-------| -| 書式 | TO_EPOCH_MS(*timestamp*) | - -時刻'1970-01-01T00:00:00.000Z'から時刻*timestamp*までの経過時間(ミリ秒)を返します。 - -この関数は、TO_TIMESTAMP_MS関数の逆変換です。 - -- 引数*timestamp*には、TIMESTAMP型の値を指定します。 -- 結果の型はLONG型です。 - -例) -```example -SELECT TO_EPOCH_MS(TIMESTAMP('2020-12-31T23:59:59.999Z')); -結果:1609459199999 - -SELECT TO_EPOCH_MS(TIMESTAMP('2020-12-31T23:59:59.999+09:00')); -結果:1609426799999 -``` - - - -#### EXTRACT - -| | | -|------|-------| -| 書式 | EXTRACT(*time_field*, *timestamp* [, timezone]) | - -時刻*timestamp*から、日時フィールド*time_field*の値を取り出します。時刻はUTCの値になります。 - -- 引数*timestamp*には、TIMESTAMP型の値を指定します。 -- 引数*time_field*には、次の値のいずれかを指定します。 - - YEAR | MONTH | DAY | HOUR | MINUTE | SECOND | MILLISECOND | DAY_OF_WEEK | DAY_OF_YEAR - - DAY_OF_WEEKは日曜が始点で0、土曜が終点で6となります。 - - DAY_OF_YEARは1月1日が始点で1、12月31日が終点で365または366となります。 -- 引数*timezone*には、タイムゾーン(Z|±hh:mm|±hhmm)を指定します。 -- 接続時にタイムゾーンが指定されている場合、オフセット計算された値が返ります。引数*timezone*と両方で指定されている場合は引数で指定したものが利用されます。 -- 結果の型はLONG型です。 - -例) -```example -// 時刻'2018-12-01T10:30:02.392Z'の年、日、ミリ秒の値を求めます - -// 年の値 -SELECT EXTRACT(YEAR, TIMESTAMP('2018-12-01T10:30:02.392Z')); -結果:2018 - -SELECT EXTRACT(DAY, TIMESTAMP('2018-12-01T10:30:02.392Z')); -// 日の値 -結果:1 - -// ミリ秒の値 -SELECT EXTRACT(MILLISECOND, TIMESTAMP('2018-12-01T10:30:02.392Z')); -結果:392 - - -// タイムゾーンを考慮します。 -SELECT EXTRACT(HOUR, TIMESTAMP('2018-12-01T10:30:02.392Z'), '+09:00'); -結果:19 -``` - -#### STRFTIME - -| | | -|------|-------| -| 書式 | STRFTIME(*format*, *timestamp* \[, *modifier*,...\]) - -指定されたフォーマットに合わせて時刻を文字列に変換して返します。 - -- 引数*format*には、下記を指定して時刻情報を取り出します。 - -| フォーマット | 説明 | -|----|-----------------------| -| %Y | 年をYYYY形式で取り出します。 | -| %m | 月をMM形式で取り出します。 | -| %d | 日をDD形式で取り出します。 | -| %H | 時をhh形式で取り出します。 | -| %M | 分をmm形式で取り出します。 | -| %S | 秒をss形式で取り出します。 | -| %3f| ミリ秒をSSS形式で取り出します。 | -| %z | タイムゾーンを±hh:mm形式で取り出します。 | -| %w | 曜日をD形式(0~6)で取り出します。日曜日が起点で0、土曜日が終点で6となります。 | -| %W | その年の初めから何週目かをDD形式(00~53)で取り出します。最初の月曜日を1週目とし、それ以前の曜日は0週目とみなします。 | -| %j | 1月1日を起点とした日数をDDD形式(001~366)で取り出します。 | -| %c | 時刻をYYYY-MM-DDThh:mm:ss[.SSS]\(Z|±hh:mm|±hhmm)形式で取り出します。 | -| %% | %を文字として出力します。 | - -- 引数*timestamp*には、TIMESTAMP型の値を指定します。 -- 引数*modifier*には、タイムゾーン(Z|±hh:mm|±hhmm)を指定します。 -- 結果の型はSTRING型です。 - -例) -```example - -SELECT STRFTIME('%c', TIMESTAMP('2019-06-19T14:15:01.123Z')); -結果:2019-06-19T14:15:01.123Z - -SELECT STRFTIME('%H:%M:%S%z', TIMESTAMP('2019-06-19T14:15:01.123Z'), '+09:00'); -結果:23:15:01+09:00 - -SELECT STRFTIME('%W', TIMESTAMP('2019-01-19T14:15:01.123Z')); -結果:02 -``` - -#### MAKE_TIMESTAMP - -| | | -|------|-------| -| 書式 | MAKE_TIMESTAMP(year, month, day [, timezone])
MAKE_TIMESTAMP(year, month, day, hour, min, sec [, timezone])| - -TIMESTAMP型の値を生成して返します。 - -- 引数*hour*, *min*, *sec* を指定しない場合は、全て0を指定したものとみなします。 -- 引数*sec*には、ミリ秒単位の指定が可能です。ミリ秒未満は四捨五入した値に丸められますが、浮動小数点演算の仕組みに基づく誤差が生じる可能性があります。 -- 引数*timezone*には、タイムゾーン(Z|±hh:mm|±hhmm)を指定します。 -- 結果の型はTIMESTAMP型です。 - -例) -```example - -SELECT MAKE_TIMESTAMP(2019, 9, 19); -結果:2019-09-19T00:00:00.000Z - -SELECT MAKE_TIMESTAMP(2019, 9, 19, 10, 30, 15.123, '+09:00'); -結果:2019-09-19T01:30:15.123Z - -``` - -#### TIMESTAMP_TRUNC - -| | | -|------|-------| -| 書式 | TIMESTAMP_TRUNC(field, timestamp [, timezone])| - -時刻情報を切り捨てます。 - -- 引数*field*には、次のいずれかの識別子を指定します。 - - YEAR | MONTH | DAY | HOUR | MINUTE | SECOND | MILLISECOND -- 引数*timestamp*には、TIMESTAMP型の値を指定します。 -- 引数*timezone*には、タイムゾーン(Z|±hh:mm|±hhmm)を指定します。 - -例) -```example - -SELECT TIMESTAMP_TRUNC(HOUR, MAKE_TIMESTAMP(2019, 9, 19, 10, 30, 15.123)); -結果:2019-09-19T10:00:00.000Z - -SELECT TIMESTAMP_TRUNC(DAY, MAKE_TIMESTAMP(2019, 5, 15), '-01:00'); -結果:2019-05-14T01:00:00.000Z - -``` - - - - -### その他の関数 - -#### COALESCE - -| | | -|------|-------| -| 書式 | COALESCE(*x1*, *x2* [,..., *xn*]) | - -指定された引数*xn*の中で、NULLではない最初の引数の値を返します。 - -- 引数*xn*には、同じ型の値を指定します。ただし、異なる型でも指定できる場合があります。型の組み合わせは[CASE](#case)を参照してください。 - - -- 引数の値がすべてNULLの場合は、NULLを返します。 - - -例) -```example -SELECT last_name, COALESCE(last_name, 'XXX') coalesce FROM employees; -結果: - last_name coalesce - ------------+---------------------- - Smith Smith - Jones Jones - Brown Brown - Taylor Taylor - (NULL) XXX - Smith Smith - -SELECT age, COALESCE(age, -1) coalesce FROM employees; -結果: - age coalesce - --------+----------- - 43 43 - 59 59 - (NULL) -1 - 31 31 - 29 29 - 43 43 -``` - - - -#### IFNULL - -| | | -|------|-------| -| 書式 | IFNULL(*x*, *y*) | - -指定された引数*x*と*y*のうち、NULLではない最初の引数の値を返します。IFNULL関数は、引数を2つ指定したCOALESCE関数と同等です。 - -- 引数*x*と*y*には、同じ型の値を指定します。ただし、異なる型でも指定できる場合があります。型の組み合わせは[CASE](#case)を参照してください。 -- 引数の値がすべてNULLの場合は、NULLを返します。 - -例) -```example -SELECT last_name, IFNULL(last_name, 'XXX') ifnull FROM employees; -結果: - last_name ifnull - ------------+---------------------- - Smith Smith - Jones Jones - Brown Brown - Taylor Taylor - (NULL) XXX - Smith Smith - -SELECT age, IFNULL(age, -1) ifnull FROM employees; -結果: - age coalesce - --------+----------- - 43 43 - 59 59 - (NULL) -1 - 31 31 - 29 29 - 43 43 -``` - - - -#### NULLIF - -| | | -|------|-------| -| 書式 | NULLIF(*x*, *y*) | - -指定された2つの引数が同じ値の場合はNULL、異なる場合は最初の引数を返します。 - -- 引数*x*と*y*には、同じ型の値を指定します。ただし、異なる型でも指定できる場合があります。型の組み合わせは[CASE](#case)を参照してください。 - -例) -```example -// value1とvalue2の値で、NULLIFを実行します -SELECT value1, value2, NULLIF(value1, value2) nullif FROM container_sample; -結果: - value1 value2 nullif - --------+--------+-------- - 10 10 (NULL) - 5 0 5 - (NULL) 4 (NULL) - 3 (NULL) 3 - (NULL) (NULL) (NULL) - - -// value1/value2の計算で、ゼロ除算エラーを防ぐために0をNULLに変換します -SELECT value1, value2, value1/NULLIF(value2, 0) division FROM container_sample; -結果: - value1 value2 division - --------+--------+-------- - 10 10 1 - 5 0 (NULL) - (NULL) 4 (NULL) - 3 (NULL) (NULL) - (NULL) (NULL) (NULL) -``` - - - -#### RANDOMBLOB - -| | | -|------|-------| -| 書式 | RANDOMBLOB(*size*) | - -BLOB型の値(乱数)を返します。 - -- 引数*size*は、BLOB型の値のサイズ(バイト数)を整数で指定します。 -- 結果の型はBLOB型です。 - -例)  -```example -// 10バイトのBLOB型の値(乱数)を生成します -SELECT HEX(RANDOMBLOB(10)); -結果:7C8C893C8087F07883AF -``` - - - -#### ZEROBLOB - -| | | -|------|-------| -| 書式 | ZEROBLOB(*size*) | - -BLOB型の値(0x00)を返します。 - -- 引数*size*は、BLOB型の値のサイズ(バイト数)を整数で指定します。 -- 結果の型はBLOB型です。 - -例)  -```example -// 10バイトのBLOB型の値(0x00)を生成します -SELECT HEX(ZEROBLOB(10)); -結果:00000000000000000000 -``` - - - -#### HEX - -| | | -|------|-------| -| 書式 | HEX(*x*) | - -BLOB型の値を16進表記に変換します。 -引数*x*をBLOB型の値として解釈して、16進数に変換した文字列(大文字)を返します。 - -- 引数*x*には、BLOB型、文字列型を指定します。 - - 文字列型の場合は、すべての文字のUnicodeコードポイントを16進数に変換した文字列を返します。 -- 結果の型は文字列型です。 - -例) -```example -SELECT HEX(RANDOMBLOB(2)); -結果:E18D - -SELECT first_name, HEX(first_name) hex FROM employees; -結果: - first_name hex - ------------+---------------------- - John 4A6F686E - William 57696C6C69616D - Richard 52696368617264 - Mary 4D617279 - Lisa 4C697361 - James 4A616D6573 -``` - - - -#### TYPEOF - -| | | -|------|-------| -| 書式 | TYPEOF(*x*) | - -*x* の値のデータ型を表す文字列を返します。 - -- データ型と、TYPEOF関数が返す文字列の対応を以下に示します。 - - | データ型 | TYPEOF関数が返す文字列 | - |-------------------|-----------------------| - | BOOL型 | BOOL | - | STRING型 | STRING | - | BYTE型 | BYTE | - | SHORT型 | SHORT | - | INTEGER型 | INTEGER | - | LONG型 | LONG | - | FLOAT型 | FLOAT | - | DOUBLE型 | DOUBLE | - | TIMESTAMP型 | TIMESTAMP | - | GEOMETRY型 | NULL | - | BLOB型 | BLOB | - | 配列型 | NULL | - -- 結果の型は文字列型です。 -- NULL値を指定した場合は、'NULL'が返ります。 - -例) -```example -SELECT TYPEOF(ABS(-10)) abs, TYPEOF(RANDOMBLOB(10)) randomblob, - TYPEOF(TIMESTAMP('2018-12-01T10:30:02.392Z')) timestamp; -結果: - abs randomblob timestamp - ------+------------+----------- - LONG BLOB TIMESTAMP -``` - -## その他構文 - -### CAST - -| | | -|------|-------| -| 書式 | CAST(*x* AS *data_type*) | - -値*x*を、データ型*data_type*に変換します。 - -- 引数*data_type*には、変換後のデータ型に応じて以下の値を指定します。 - - | 変換後のデータ型 | *data_type* に指定する値 | - |-------------------|-----------------------| - | BOOL型 | BOOL | - | STRING型 | STRING | - | BYTE型 | BYTE | - | SHORT型 | SHORT | - | INTEGER型 | INTEGER | - | LONG型 | LONG | - | FLOAT型 | FLOAT | - | DOUBLE型 | DOUBLE | - | TIMESTAMP型 | TIMESTAMP | - | BLOB型 | BLOB | - -#### 文字列型への変換 - -| | | -|------|-------| -| 書式 | CAST(*x* AS STRING) | - -引数*x*を、文字列型に変換します。 - -*x* に指定できる値のデータ型と、変換後の値は以下の通りです。 - - -| *x* のデータ型 | 文字列型に変換した値 | -|-------------------|--------------------| -| BOOL型 | trueの場合'true'、falseの場合'false' | -| STRING型 | 元のままの値 | -| BYTE型
SHORT型
INTEGER型
LONG型
FLOAT型
DOUBLE型 | 数値を文字列に変換した値 | -| TIMESTAMP型 | 時刻の文字列表記'YYYY-MM-DDThh:mm:ss.SSS(Z\|±hh:mm)'
接続時のタイムゾーン設定が利用される | -| BLOB型 | [HEX関数](#hex)と同等の文字列 | - -#### 数値型への変換 - -| | | -|------|-------| -| 書式 | CAST(*x* AS BYTE\|SHORT\|INTEGER\|LONG\|FLOAT\|DOUBLE) | - -引数*x*を、数値型に変換します。 - -*x* に指定できる値のデータ型と、変換後の値は以下の通りです。 - -| *x*のデータ型 | 数値型に変換した値 | -|-------------------|--------------------| -| BOOL型 | trueの場合1、falseの場合0 | -| STRING型 | 文字列の数字を数値に変換した値 | -| BYTE型
SHORT型
INTEGER型
LONG型
FLOAT型
DOUBLE型 | 数値を変換した値 | - -- 変換後の数値が、*data_type* に指定した数値型の値の範囲を超える場合は、エラーになります。 - -```example -// BYTE型の範囲(-128~127)を超える場合はエラー -SELECT CAST(128 AS BYTE); -結果:エラー - -// INTEGER型の範囲(-2147483648 ~ 2147483647)を超える場合はエラー -SELECT CAST('2147483648' AS INTEGER); -結果:エラー -``` - -- 浮動小数点数型(FLOAT型、DOUBLE型)から整数型(BYTE型、SHORT型、INTEGER型、LONG型)への変換では、値が桁落ちする場合があります。 - -```example -SELECT CAST(10.5 AS INTEGER); -結果:10 -``` - -- 文字列型から数値型への変換では、次の文字列が指定できます(大小同一視)。これら以外の文字列が指定されている場合はエラーになります。 - - 数字と記号(".","-","+")と"E"のいずれかを含む文字列 - - "Inf" (符号付きも可) - - "Infinity" (符号付きも可) - - "NaN" - -```example -SELECT CAST('abc' AS INTEGER); -結果:エラー - -SELECT CAST('-1.09E+10' AS DOUBLE); -結果:-1.09E10 -``` - -#### 時刻型への変換 - -| | | -|------|-------| -| 書式 | CAST(*x* AS TIMESTAMP) | - -引数*x*を、時刻型に変換します。接続時にタイムゾーンを指定している場合、その値がオフセット計算に利用されます。 - -*x* に指定できる値のデータ型と、変換後の値は以下の通りです。 - -| *x*のデータ型 | 時刻型に変換した値 | -|----------------------------------------------------|-----------------------------------------------| -| STRING型(時刻の文字列表記'YYYY-MM-DDThh:mm:ss.SSS(Z\|±hh:mm)') | [TIMESTAMP関数](#timestamp)で変換した値と同等 | - -```example -SELECT CAST('2018-12-01T10:30:00Z' AS TIMESTAMP); -結果:2018-12-01T10:30:00.000Z - -SELECT CAST('2018-12-01T10:30:00+09:00' AS TIMESTAMP); -結果:2018-12-01T01:30:00.000Z -``` - -#### BOOL型への変換 - -| | | -|------|-------| -| 書式 | CAST(*x* AS BOOL) | - -引数 *x* を、BOOL型に変換します。 - -*x* に指定できる値のデータ型と、変換後の値は以下の通りです。 - -| *x* のデータ型 | 時刻型に変換した値 | -|-------------------|--------------------| -| STRING型 | 'true'の場合true、'false'の場合false (大文字小文字の区別なし) | -| BYTE型
SHORT型
INTEGER型
LONG型 | 0の場合false、それ以外の場合true | - -#### BLOB型への変換 - -| | | -|------|-------| -| 書式 | CAST(*x* AS BLOB) | - -引数*x*を、BLOB型に変換します。 - -*x* に指定できる値のデータ型と、変換後の値は以下の通りです。 - -| *x*のデータ型 | BLOB型に変換した値 | -|-------------------|--------------------| -| STRING型 | 文字列を16進表記のデータとしてBLOB型に変換した値 | - -### CASE - -| | | -|------|-------| -| 書式 | CASE
WHEN *condition1* THEN *result1*
[WHEN *condition2* THEN *result2*]
...
[ELSE *resultElse*]
END | - -条件式*conditionN*がtrueの場合は、対応する*resultN*の値を返します。 -すべての条件式がfalseまたはNULLの場合は、ELSEが指定されていれば*resultElse*の値を返します。ELSEが指定されていない場合は、NULLを返します。 - -| | | -|------|-------| -| 書式 | CASE *x*
WHEN *value1* THEN *result1*
[WHEN *value2* THEN *result2*]
...
[ELSE *resultElse*]
END | - -*x* の値が*valueN*の場合は、対応する*resultN*の値を返します。 -すべての値に当てはまらない場合は、ELSEが指定されていれば*resultElse*の値を返します。ELSEが指定されていない場合は、NULLを返します。 - -*resultN* には同じ型の値を指定します。ただし、異なる型でも指定できる場合があります。 -- 引数が異なる型同士の場合は、以下の型の組合せのみ演算できます。これ以外の組合せの場合はエラーになります。 - - | 引数の型 | 引数の型 | 2つの引数を演算する際の型 | - |-|-|-| - | SHORT | BYTE | LONG | - | INTEGER | BYTE, SHORT | LONG | - | LONG | BYTE, SHORT, INTEGER | LONG | - | FLOAT | BYTE, SHORT, INTEGER, LONG | DOUBLE | - | DOUBLE | BYTE, SHORT, INTEGER, LONG, FLOAT | DOUBLE | - - -例) -```example -// 従業員の年代(30代、40代、50代、それ以外)を表示する -SELECT id, first_name, age, - CASE - WHEN age > 50 THEN '50s' - WHEN age > 40 THEN '40s' - WHEN age > 30 THEN '30s' - ELSE 'other' - END AS period -FROM employees; - -結果: - id first_name age period - ----+------------+-------+-------- - 0 John 43 40s - 1 William 59 50s - 2 Richard (NULL) other - 3 Mary 31 30s - 4 Lisa 29 other - 5 James 43 40s - - -// 部署に応じて所在地を表示する -SELECT id, first_name, department, - CASE department - WHEN 'Sales' THEN 'Tokyo' - WHEN 'Development' THEN 'Osaka' - ELSE 'Nagoya' - END AS location -FROM employees; - -結果: - id first_name department location - ----+------------+-------------+--------- - 0 John Sales Tokyo - 1 William Development Osaka - 2 Richard Sales Tokyo - 3 Mary Research Nagoya - 4 Lisa (NULL) Nagoya - 5 James Development Osaka -``` - - -### サブクエリ - -サブクエリはFROM句やWHERE句だけでなく、SQL文の様々な部分で指定できます。 -また、サブクエリに対するいくつかの演算種別も提供しています。それらについて -説明します。 - - -#### IN - -サブクエリの実行結果の中に、指定した値が含まれるかどうかを返します。 - -#### 構文 - -|-----------------------------------| -| *式1* \[NOT\] IN ( *sub_query* ) | - -#### 仕様 - -- *式1* の値が、サブクエリの結果に含まれる場合はtrueを返します。 -- サブクエリは1列のみを返すものでなければなりません。 - -例) -```example -// departmentsテーブルのid=1の部署に所属する従業員の情報をemployeesテーブルから表示します -SELECT * FROM employees -WHERE department IN( - SELECT department FROM departments - WHERE id = 1 -); -結果: - id first_name last_name age department enrollment_period - ----+------------+-----------+-------+-------------+------------------- - 1 William Jones 59 Development 23.2 - 5 James Smith 43 Development 10.3 -``` - -#### EXISTS - -サブクエリの実行結果が存在するかどうかを返します。 - -#### 構文 - -| | -|-------| -| [NOT] EXISTS( *sub_query* ) | - - -#### 仕様 - -- サブクエリの実行結果が存在するかどうかを確認します。実行結果が1件以上の場合はtrue、0件の場合はfalseを返します。 - -- 結果の型はBOOL型です。 - -例) -```example -// departmentsテーブルのid=1の部署に所属する従業員の情報をemployeesテーブルから表示します -SELECT * FROM employees -WHERE EXISTS( - SELECT * FROM departments - WHERE employees.department=departments.department AND departments.id=1 -); -結果: - id first_name last_name age department enrollment_period - ----+------------+-----------+-------+-------------+------------------- - 1 William Jones 59 Development 23.2 - 5 James Smith 43 Development 10.3 -``` - -#### スカラサブクエリ - -ひとつの結果を返すサブクエリです。SELECT文の結果や、式などに使用できます。 - -例) -```example -SELECT id, first_name, - (SELECT department FROM departments WHERE department_id=employees.department_id) -FROM employees; - -結果: - id first_name department - ---+-----------+------------- - 0 John Sales - 1 William Development - 2 Richard Sales - 3 Mary (NULL) - 4 Lisa Marketing - 5 James Development -``` - -### プレースホルダ - -プリペアードステートメントではSQL文にプレースホルダを記述できます。 -プレースホルダはステートメント実行時に代入するパラメータの位置を示します。 -パラメータの番号は1から始まります。 - -プレースホルダは他のデータベースとの互換性のため、幾つかの形式が使用できます。 -ただし、いずれの形式で指定しても、パラメータの番号は既に割当てられている -パラメータ番号+1となります。 - -| 形式 | 説明 | 記述例 | -|--------|--------|--------| -| ? | 標準のプレースホルダの形式 | ? | -| ?NNN | NNNは数字を表す | ?56 | -| :AAAA | AAAAは文字列を表す | :name | -| @AAAA | AAAAは文字列を表す | @name | - -なお、$から始まるプレースホルダは記述できません。 - -例) -```java -String sql = "SELECT * FROM users WHERE id > ? AND id != :exclude_id;"; -PreparedStatement pstmt = con.prepareStatement(sql); -pstmt.setInt(1, 100); // 1: ? -pstmt.setInt(2, 253); // 2: :exclude_id -ResultSet rs = pstmt.executeQuery(); -``` - - -## コメント - -SQL文中にコメントを書くことができます。 書式は、--(ハイフンを2つ)の後ろに記述するか、/\* \*/で囲みます。 -コメントの後ろには改行が必要です。 - -```example -SELECT * -- comment -FROM employees; - -SELECT * -/* - comment -*/ -FROM employees; -``` - - -## ヒント機能 - -GridDBでは、実行計画を示すヒントをクエリに指定することで、SQL文を変えることなく実行計画を制御できます。 - -### エラーの扱い - -以下の場合は構文エラーとなります。 -- ヒント用のブロックコメントを複数記述した場合 -- ヒントを記述できない位置にヒントを記述した場合 -- ヒント句の記述に構文上の誤りがあった場合 -- 同じテーブルに対して同じ分類のヒント句を重複して指定した場合 - -以下の場合はテーブル指定エラーとなります。 -- ヒント句対象のテーブル指定に誤りがあった場合 - - ->#### メモ ->- テーブル指定エラーが起こった場合、対象のヒント句を無視し、それ以外のヒント句を使ってクエリを実行します。 ->- 構文エラーとテーブル指定エラーが同時に起こった場合は構文エラーとなります。 + +# SQL記述形式 + +本章では、NewSQLインターフェースで使用できるSQLの記述形式について示します。 + + + +## 使用できる操作 + +SELECT文の他、CREATE TABLE等のDDL(Data Definition Language、データ定義言語)やINSERT/DELETE文などをサポートしています。詳細は[GridDBでサポートされるSQL文](#sql_commands_supported_by_griddb)を参照して下さい。 + +  + +## データ型 + + +### データ格納に使用する型 + +NewSQLインターフェースでデータの格納に使用する型は次の通りです。この型名はテーブル作成時にカラム型として記述できます。 + +| データ型 | 内容詳細 | +|-------------|--------------------------------------------------------| +| BOOL型 | true/false | +| BYTE型 | -27から27-1 (8ビット)の整数値 | +| SHORT型 | -215から215-1 (16ビット)の整数値 | +| INTEGER型 | -231から231-1 (32ビット)の整数値 | +| LONG型 | -263から263-1 (64ビット)の整数値 | +| FLOAT型 | 単精度型(32ビット) IEEE754で定められた浮動小数点数 | +| DOUBLE型 | 倍精度型(64ビット) IEEE754で定められた浮動小数点数 | +| TIMESTAMP型 | 日付と時刻の組。ミリ秒、マイクロ秒、ナノ秒のいずれか精度を用いるか指定が可能。指定がない場合はミリ秒精度。 | +| STRING型 | Unicodeコードポイントを文字とする、任意個数の文字の列 | +| BLOB型 | 画像や音声などのバイナリデータのためのデータ型
入力したままの形式で保存されるラージオブジェクト
文字xあるいはXをつけて、X'23AB'のような16進表現もできる | + +また、テーブルにNULL値を格納することができます。NULL値に対して“IS NULL”などの演算子を使用すると、SQL仕様に沿った結果を返却します。 + +### TIMESTAMP型の精度指定の方法 + +TIMESTAMP型は、日付と時刻の組を表現する型です。 +時刻についてミリ秒、マイクロ秒、ナノ秒のいずれかの精度を指定できます。 +TIMESTAMP(p)の形式で精度を指定します。精度指定値pには3,6,9のいずれかを使用できます。 +これらの指定値付きのTIMESTAMP型を精度指定付きTIMESTAMP型と呼びます。 +具体的には、以下の型名でミリ秒、マイクロ秒、ナノ秒のいずれかの精度を定義できます。 + +| 型名 | 内容詳細 | +|-------------|--------------------------------------------------------| +| TIMESTAMP | ミリ秒精度まで表現(デフォルトの精度) | +| TIMESTAMP(3) | ミリ秒精度まで表現 | +| TIMESTAMP(6) | マイクロ秒精度まで表現 | +| TIMESTAMP(9) | ナノ秒精度まで表現 | + +【メモ】 + - 時系列コンテナのロウキーはミリ秒精度のTIMESTAMP型に固定されていて、他の精度のTIMESTAMP型には変更はできません。 + +### テーブル作成時にカラム型として記述可能な表現 + +NewSQLインターフェースでは、テーブル作成時にカラム型として記述された型名について、[データ格納に使用する型](#data_types_used_in_data_storage)で列挙した型名と一致しなくても、ルールに従って解釈しデータの格納に使用する型を決定します。 + +以下のルールを上から順にチェックし、合致したルールによってデータ格納に使用する型を決定します。 ルールのチェック時には記述した型名およびルールでチェックする文字列の大文字小文字は区別しません。 +複数のルールに合致した場合はより上にあるルールが優先されます。 +どのルールにも当てはまらない場合はエラーとなりテーブル作成に失敗します。 + +| ルールNo. | テーブル作成時にカラム型として記述した識別子 | 作成するテーブルのカラム型 | +|-----------|----------------------------------------------------|------------------------------------| +| 1 | [データ格納に使用する型](#data_types_used_in_data_storage)に列挙した型名 | テーブル作成時に指定された型に従う | +| 2 | REAL | DOUBLE型 | +| 3 | TINYINT | BYTE型 | +| 4 | SMALLINT | SHORT型 | +| 5 | BIGINT | LONG型 | +| 6 | INTを含む型名 | INTEGER型 | +| 7 | CHAR, CLOB, TEXTのいずれかを含む型名 | STRING型 | +| 8 | BLOBを含む型名 | BLOB型 | +| 9 | REAL, DOUBのいずれかを含む型名 | DOUBLE型 | +| 10 | FLOAを含む型名 | FLOAT型 | + +上記ルールによるデータ型決定の例を示します。 +- 記述した型名が"BIGINTEGER"→INTEGER型(ルール6) +- 記述した型名が"LONG"→LONG型(ルール1) +- 記述した型名が"TINYINT"→BYTE型(ルール3) +- 記述した型名が"FLOAT"→FLOAT型(ルール1) +- 記述した型名が"VARCHAR"→STRING型(ルール7) +- 記述した型名が"CHARINT"→INTEGER型(ルール6) +- 記述した型名が"BIGBLOB"→BLOB型(ルール8) +- 記述した型名が"FLOATDOUB"→DOUBLE型(ルール9) +- 記述した型名が"INTREAL"→INTEGER型(ルール6) +- 記述した型名が"FLOATINGPOINT"→INTEGER型(ルール6) +- 記述した型名が"DECIMAL"→エラー + +NoSQLインターフェースのクライアントにおけるデータ型と同等の型をNewSQLインターフェイスで使用する場合は、以下のように記述してください。ただし、一部同等の型が存在せず、使用できないものがあります。 + +| NoSQLインターフェースのデータ型 | 同等の型となるNewSQLインターフェースのカラム型記述 | +|--------------------------------------|----------------------------------------------------| +| STRING(文字列型) | STRING または STRING型となる表現 | +| BOOL(ブール型) | BOOL | +| BYTE(8ビット整数型) | BYTE または BYTE型となる表現 | +| SHORT(16ビット整数型) | SHORT または SHORT型となる表現 | +| INTEGER(32ビット整数型) | INTEGER または INTEGER型となる表現 | +| LONG(64ビット整数型) | LONG または LONG型となる表現 | +| FLOAT(32ビット単精度浮動小数点数型) | FLOAT または FLOAT型となる表現 | +| DOUBLE(64ビット倍精度浮動小数点数型) | DOUBLE または DOUBLE型となる表現 | +| TIMESTAMP(時刻型) | TIMESTAMP | +| GEOMETRY(空間型) | テーブル作成時のカラム型には指定できません | +| BLOB型 | BLOB または BLOB型となる表現 | +| 配列型 | テーブル作成時のカラム型には指定できません | + +【メモ】 + - TIMESTAMP型については、NoSQLインターフェースを用いて精度情報を参照したうえで、NewSQLの精度指定付きTIMESTAMP型の精度指定値(TIMESTAMP(p)のp)を定義する必要があります。精度情報の参照方法については『[GridDB Java APIリファレンス](../md_reference_java_api/md_reference_java_api.html)』、もしくは『[GridDB C APIリファレンス](../md_reference_c_api/md_reference_c_api.html)』を参照してください。 + +### コンテナをテーブルとしてアクセスするときのデータ型と値の扱い + +NoSQLインターフェースのクライアントで作成したコンテナを、NewSQLインターフェースでアクセスする場合のコンテナのカラム型および値の扱いを以下に示します。 + +| コンテナのカラム型 | NewSQLにマッピングされるデータ型 | 値 | +|--------------------|----------------------------------|----------------| +| STRING型 | STRING型 | 元の値と同一 | +| BOOL型 | BOOL型 | 元の値と同一 | +| BYTE型 | BYTE型 | 元の値と同一 | +| SHORT型 | SHORT型 | 元の値と同一 | +| INTEGER型 | INTEGER型 | 元の値と同一 | +| LONG型 | LONG型 | 元の値と同一 | +| FLOAT型 | FLOAT型 | 元の値と同一 | +| DOUBLE型 | DOUBLE型 | 元の値と同一 | +| TIMESTAMP型 | TIMESTAMP型 | 元の値と同一 | +| GEOMETRY型 | NULL定数と同等の型(Types.UNKNOWN) | 全ての値がNULL | +| BLOB型 | BLOB型 | 元の値と同一 | +| 配列型 | NULL定数と同等の型(Types.UNKNOWN) | 全ての値がNULL | + + +【メモ】 + - TIMESTAMP型については、SQLの精度指定付きTIMESTAMP型の精度指定値(TIMESTAMP(p)のp)を確認したうえで、NoSQLのTIMESTAMP型の精度指定情報を設定する必要があります。精度情報の設定方法については『[GridDB Java APIリファレンス](../md_reference_java_api/md_reference_java_api.html)』、もしくは『[GridDB C APIリファレンス](../md_reference_c_api/md_reference_c_api.html)』を参照してください。 + +### SQLでサポートしていないデータ型の扱い + +NoSQLインタフェースでサポートしているが、NewSQLインタフェースではサポートしていないデータ型は次の通りです。 + +- GEOMETRY型 +- 配列型 + +これらのデータ型のデータに対して、NewSQLインタフェースでアクセスした場合の扱いについて説明します。 + +- テーブル作成 CREATE TABLE + - テーブル作成時のカラムのデータ型として、これらのデータ型は指定できません。エラーになります。 + +- テーブル削除 DROP TABLE + - 削除対象テーブルがこれらのデータ型のカラムを持っていても、テーブル削除はできます。 + +- 登録/更新/削除 INSERT/UPDATE/DELETE + - これらのデータ型のカラムを持つテーブルに対しては、INSERT/UPDATE/DELETEはエラーになります。 + - これらのデータ型のカラムの値は指定せずに、サポート範囲のデータ型のカラムの値だけ指定しても、ロウを登録・更新することはできません。 + + ``` + // NoSQLインタフェースを用いて作成したテーブル +  名前 : sample1 +  カラム: id INTEGER型 + value DOUBLE型 + geometry GEOMETRY型 + + // INTEGER型とDOUBLE型のカラムのみ指定してロウの登録 →テーブルにGEOMETRY型のカラムがあるので、エラーが発生する + INSERT INTO sample1 (id, value) VALUES (1, 192.3) + ``` + +- 検索 SELECT + - これらのデータ型のカラムを持つテーブルを検索すると、そのカラムの値は常にNULLが返ります。 + + +- 索引作成/削除 CREATE INDEX/DROP INDEX + - GEOMETRY型カラムへの索引作成・削除は可能です。 + - 配列型カラムへの索引作成・削除はできません。エラーになります。(NoSQLインタフェースでも、配列型カラムへの索引作成・削除は未サポートです) + +  + +## ユーザとデータベース + +GridDBのユーザには、管理ユーザと一般ユーザの2種類があり、利用できる機能に違いがあります。 また、データベースを作成することで、利用ユーザ単位にアクセスを分離することができます。 +ユーザ、データベースの詳細は『[GridDB 機能リファレンス](../md_reference_feature/md_reference_feature.md)』を参照してください。 + + + +## ネーミングの規則 + +ネーミングの規則は次の通りです。 + +- データベース名・テーブル名・ビュー名・列名・索引名および一般ユーザ名は、1文字以上のASCII英数字ならびにアンダースコア「\_」、ハイフン「-」、ドット「.」、スラッシュ「/」、イコール「=」の列で構成されます。 +- テーブル名にはノードアフィニティ機能向けに「@」の文字も指定できます。 + +ノードアフィニティ機能、ネーミングの規則・制限についての詳細は、『[GridDB 機能リファレンス](../md_reference_feature/md_reference_feature.md)』を参照してください。 + + +[メモ] +- 名前にASCII英数字とアンダースコア以外の文字を含む、または、先頭文字が数字のテーブルやカラムなどをSQL文に記述する場合は、引用符"で囲んでください。 + + ``` + SELECT "column.a1" FROM "Table-5" + ``` + + + +# GridDBでサポートされるSQL文 + +サポートされるSQL文は、次の通りです。 + + +| コマンド | 概要 | +|-------------------------------------|----------------------------------------------------| +| [CREATE DATABASE](#create-database) | データベースを作成する。 | +| [CREATE TABLE](#create-table) | テーブルを作成する。 | +| [CREATE INDEX](#create-index) | 索引を作成する。 | +| [CREATE VIEW](#create-view) | ビューを作成する。 | +| [CREATE USER](#create-user) | 一般ユーザを作成する。 | +| [CREATE ROLE](#create-role) | ロールを作成する。 | +| [DROP DATABASE](#drop-database) | データベースを削除する。 | +| [DROP TABLE](#drop-table) | テーブルを削除する。 | +| [DROP INDEX](#drop-index) | 索引を削除する。 | +| [DROP VIEW](#drop-view) | ビューを削除する。 | +| [DROP USER](#drop-user) | 一般ユーザを削除する。 | +| [DROP ROLE](#drop-role) | ロールを削除する。 | +| [ALTER TABLE](#alter-table) | テーブルの構造を変更します。 | +| [GRANT](#grant) | 一般ユーザにデータベースへのアクセス権を設定する。 | +| [REVOKE](#revoke) | 一般ユーザからデータベースへのアクセス権を削除する。 | +| [SET PASSWORD](#set-password) | 一般ユーザのパスワードを変更する。 | +| [SELECT](#select) | データを取得する。 | +| [INSERT](#insert) | テーブルに行を挿入する。 | +| [DELETE](#delete) | テーブルから行を削除する。 | +| [UPDATE](#update) | テーブルにある行を更新する。 | +| [コメント](#comment) | コメントを表記する。 | +| [ヒント](#hint) | 実行計画を制御する。 | + +本章では、SQL文の分類ごとに説明を行います。 + + +## データ定義言語(DDL) + +### CREATE DATABASE + +データベースを作成します。 + +**構文** + +| | +|-----------------------------------| +| CREATE DATABASE *データベース名* ; | + +**仕様** + +- 管理ユーザのみが実行可能です。 +- 「public」、「information_schema」と同一の名前のデータベースは、GridDBの内部用に予約済みのため作成できません。 +- 既に同一の名前のデータベースが存在した場合は何も変更しません。 +- データベース名の規則は『[GridDB 機能リファレンス](../md_reference_feature/md_reference_feature.md)』を参照してください。 + +### CREATE TABLE + +#### テーブルの作成 + +テーブルを作成します。 + +**構文** + +- テーブル(コレクション) + + | | + |-----------------------------------| + | CREATE TABLE \[IF NOT EXISTS\] *テーブル名* ( **列定義** \[, **列定義** ...\] \[, PRIMARY KEY(列名 \[, ...\])\] )
\[WITH (プロパティキー=プロパティ値)\]; | + +- 時系列テーブル(時系列コンテナ) + + | | + |-----------------------------------| + | CREATE TABLE \[IF NOT EXISTS\] *テーブル名* ( *列名* TIMESTAMP PRIMARY KEY \[, **列定義** ...\] )
USING TIMESERIES \[WITH (プロパティキー=プロパティ値 \[, プロパティキー=プロパティ値 ...\])\] ; | + +- **列定義** + - *列名* *型名* \[ **列制約** \] + +- **列制約** + - PRIMARY KEY (先頭の列のみ指定可) + - NULL + - NOT NULL + +**仕様** + +- テーブル名、列名の規則は『[GridDB 機能リファレンス](../md_reference_feature/md_reference_feature.md)』を参照してください。 +- “IF NOT EXISTS”が指定された場合、指定したテーブル名と同じ名前のテーブルが存在しないときのみ作成します。 +- **列定義** では、列名と型名の指定が必須です。指定可能な型名は[データ格納に使用する型](#data_types_used_in_data_storage)を参照してください。 +- テーブル(コレクション)では列定義の記述後、PRIMARY KEYによる複合主キーの設定が可能です。複合主キーは先頭カラムより順に設定することが必要で、上限数は16です。列制約におけるPRIMARY KEYと同時に設定することはできません。また、時系列テーブル(時系列コンテナ)では設定できません。 +- 時系列テーブル(時系列コンテナ)については『[GridDB 機能リファレンス](../md_reference_feature/md_reference_feature.md)』を参照してください。 +- データアフィニティに関するオプションを" WITH (プロパティキー=プロパティ値, ...)"の形式で指定することができます。 + + + + + | 機能 | 内容 | プロパティキー | プロパティ値の型 | + |---------------------|------------|--------------------------|----------------------------------------------| + | データアフィニティ | ヒント情報
(コンテナ間の類似性を示す文字列) | data_affinity | STRING型 | + +- 各項目の内容については『[GridDB 機能リファレンス](../md_reference_feature/md_reference_feature.md)』を参照してください。 + +**例** + +- テーブルの作成 + + ``` example + CREATE TABLE myTable ( + key INTEGER PRIMARY KEY, + value1 DOUBLE NOT NULL, + value2 DOUBLE NOT NULL + ); + ``` + +#### パーティショニングテーブルの作成 + +パーティショニングテーブルを作成します。 + +各パーティショニングの機能については、『[GridDB 機能リファレンス](../md_reference_feature/md_reference_feature.md)』を参照してください。 + +**(1) ハッシュパーティショニングテーブルの作成** + +**構文** + +- テーブル(コレクション) + + | | + |-----------------------------------| + | CREATE TABLE \[IF NOT EXISTS\] *テーブル名* ( **列定義** \[, **列定義** ...\] [, PRIMARY KEY(列名 \[, ...\])\] )
\[WITH (プロパティキー=プロパティ値)\]
PARTITION BY HASH (*パーティショニングキーの列名*) PARTITIONS *分割数* ; | + +- 時系列テーブル(時系列コンテナ) + + | | + |-----------------------------------| + | CREATE TABLE \[IF NOT EXISTS\] *テーブル名* ( **列定義** \[, **列定義** ...\] )
USING TIMESERIES \[WITH (プロパティキー=プロパティ値, ...)\]\]
PARTITION BY HASH (*パーティショニングキーの列名*) PARTITIONS *分割数* ; | + +**仕様** + +- 指定されたパーティショニングキーの列名と分割数の値により、ハッシュパーティショニングテーブルを作成します。 +- 「分割数」は、1以上かつ1024以下の値を指定してください。 +- パーティショニングキーには主キーを設定する必要があります。主キー以外を設定する場合は、コンフィグファイルで制限を解除する必要があります。詳細は『[GridDB 機能リファレンス](../md_reference_feature/md_reference_feature.md)』のクラスタ定義ファイルの設定を参照してください。 +- パーティショニングキーに指定した列の値は、更新できません。 + +***オプション指定*** + +****データアフィニティ**** +- データアフィニティに関するオプションを" WITH (プロパティキー=プロパティ値, ...)"の形式で指定することができます。指定可能なオプションは[通常のテーブル](#label_data_affinity_property)と同様です。 + +**例** + +- ハッシュパーティショニングテーブルの作成 + + ``` example + CREATE TABLE myHashPartition ( + id INTEGER PRIMARY KEY, + value STRING + ) PARTITION BY HASH (id) PARTITIONS 128; + ``` + +**(2) インターバルパーティショニングテーブルの作成** + +**構文** + +- テーブル(コレクション) + + | | + |-----------------------------------| + | CREATE TABLE \[IF NOT EXISTS\] *テーブル名* ( **列定義** \[, **列定義** ...\] [, PRIMARY KEY(列名 \[, ...\])\])
\[WITH (プロパティキー=プロパティ値, ...)\]
PARTITION BY RANGE(*パーティショニングキーの列名*) EVERY(*分割幅値* \[, *単位* \]) ; | + +- 時系列テーブル(時系列コンテナ) + + | | + |-----------------------------------| + | CREATE TABLE \[IF NOT EXISTS\] *テーブル名* ( **列定義** \[, **列定義** ...\] )
USING TIMESERIES \[WITH (プロパティキー=プロパティ値, ...)\]
PARTITION BY RANGE(*パーティショニングキーの列名*) EVERY(*分割幅値* \[, *単位* \]) ; | + +**仕様** + +- 「パーティショニングキーの列名」には、BYTE型、SHORT型、INTEGER型、LONG型、TIMESTAMP型のいずれかの列を指定してください。 +- パーティショニングキーには主キーを設定する必要があります。主キー以外を設定する場合は、コンフィグファイルで制限を解除する必要があります。詳細は『[GridDB 機能リファレンス](../md_reference_feature/md_reference_feature.md)』のクラスタ定義ファイルの設定を参照してください。 +- パーティショニングキーに指定した列の値は、更新できません。 +- 分割幅値には次の値が指定できます。 + + | パーティショニングキーの型 | 分割幅値に指定できる値 | + |----------------------------|---------------------------| + | BYTE型 | 1~27-1 | + | SHORT型 | 1~215-1 | + | INTEGER型 | 1~231-1 | + | LONG型 | 1000~263-1 | + | TIMESTAMP型 | 1以上 | + +- TIMESTAMP型(精度指定付きTIMESTAMP型を含む)の列を指定した場合は、単位を指定する必要があります。単位に指定できる値は、DAY/HOURです。 +- 上記以外の型の列を指定した場合は、単位は指定できません。 + +【メモ】 + +- 新しい区間が生成されると、その区間に対応するデータパーティション(コンテナ)も生成されます。パーティショニング機能は、1つのデータパーティションが管理するデータサイズを適切に削減し、並列効果を高めることで性能向上を行うことがメリットとなりますが、データパーティションの数が増大すると、それらをマージするためのオーバヘッドなどにより、メモリ増大や性能低下を招くデメリットもあります。 +- GridDBはデフォルトでは、1つのテーブルで10000個のデータパーティションが生成された時点でエラーになります。データパーティションの作成個数はテーブル設計時に見積もれるケースが多いため、事前にこれらを確認しておくことを推奨します。この上限値はコンフィグファイル値を変更することが可能です。詳細は『[GridDB 機能リファレンス](../md_reference_feature/md_reference_feature.md)』を参照してください。 + +***オプション指定*** + +****データアフィニティ**** +- データアフィニティに関するオプションを" WITH (プロパティキー=プロパティ値, ...)"の形式で指定することができます。 + 指定可能なオプションは[通常のテーブル](#label_data_affinity_property)と同様です。 + +****期限開放**** +- 期限解放に関するオプションを" WITH (プロパティキー=プロパティ値, ...)"の形式で指定することができます。 + + | 機能 | 内容 | プロパティキー | プロパティ値の型 | 期限解放設定時の必須項目 | + |--------------|----------|-------------------------|---------------------------------------------------|-------------------------| + | 期限解放機能 | 種別 | expiration_type | STRING型
(指定可能な値は次の1種類。
PARTITION: パーティション期限解放) | 省略可(デフォルト:PARTITION) | + | | 経過時間 | expiration_time | INTEGER型 | 必須| + | | 経過単位 | expiration_time_unit | STRING型
(指定可能な値は次の5種類。
DAY / HOUR / MINUTE / SECOND / MILLISECOND ) | 省略可(デフォルト:DAY) | + | | 分割数 | expiration_division_count | INTEGER型 | 省略可(デフォルト:8) | + +- パーティション期限解放は次の場合に指定できます。 + - 時系列テーブル(時系列コンテナ) + - パーティショニングキーがTIMESTAMP型(精度指定付きTIMESTAMP型を含む)のテーブル(コレクション) +- 各項目の内容については『[GridDB 機能リファレンス](../md_reference_feature/md_reference_feature.md)』を参照してください。 + +【メモ】 + - 時系列コンテナの場合、ロウキーはミリ秒精度のTIMESTAMP型に固定されていて、他の精度のTIMESTAMP型には変更はできません。 + +***データパーティション配置*** +- 各日付に対応するデータパーティションの配置先を決定するオプションを" WITH (プロパティキー=プロパティ値, ...)"の形式で以下の値で指定することができます。 + + | 機能 | 内容 | プロパティキー | プロパティ値の型 | 設定時の必須項目 | + |---------------------|----------------------------------------------|---------------------|-------------------|------------| + | 区間グループ番号 | データパーティションの配置先を識別する番号。異なる区間グループ番号指定で生成されたテーブル同士は同一日時における処理スレッド競合が発生しない割付となる | interval_worker_group | INTEGER型 | 必須 | + | 区間グループノード補正値 | 区間グループ番号で決定される処理スレッドに対して、どのノードで実行するかを補正する値。ユーザが指定する以外にサーバに決定させることも可能である | interval_worker_group_position | INTEGER型 | 省略可(デフォルト:0) | + +【メモ】 + - インターバルパーティショニングでパーティショニングキーがTIMESTAMP型のケースのみ適用可能となります。 + - 本機能を適用するためにには機能面、運用面から幾つかの条件がありますが、それらは、『[GridDB 機能リファレンス](../md_reference_feature/md_reference_feature.md)』を参照してください。 + +**例** + +- インターバルパーティショニングテーブルの作成 + + ``` example + CREATE TABLE myIntervalPartition ( + date TIMESTAMP PRIMARY KEY, + value STRING + ) PARTITION BY RANGE (date) EVERY (30, DAY); + ``` + +- パーティション期限解放を使用するインターバルパーティショニングテーブル(時系列テーブル)の作成 + + ``` example + CREATE TABLE myIntervalPartition2 ( + date TIMESTAMP PRIMARY KEY, + value STRING + ) USING TIMESERIES WITH ( + expiration_type='PARTITION', + expiration_time=90, + expiration_time_unit='DAY' + ) PARTITION BY RANGE (date) EVERY (30, DAY); + ``` + +- データパーティションの配置先を指定したインターバルパーティショニングテーブルの作成 + + ``` example + CREATE TABLE myIntervalPartition2 ( + date TIMESTAMP PRIMARY KEY, + value STRING + ) WITH ( + interval_worker_group=1 + ) PARTITION BY RANGE (date) EVERY (1, DAY); + ``` + +**(3) インターバル-ハッシュパーティショニングテーブルの作成** + +**構文** + +- テーブル(コレクション) + + | | + |-----------------------------------| + | CREATE TABLE \[IF NOT EXISTS\] *テーブル名* ( **列定義** \[, **列定義** ...\] [, PRIMARY KEY(列名 \[, ...\])\] )
\[WITH (プロパティキー=プロパティ値, ...) \]
PARTITION BY RANGE(*インターバルパーティショニングキーの列名*) EVERY(*分割幅値* \[, *単位* \])
SUBPARTITION BY HASH(*ハッシュパーティショニングキーの列名*) SUBPARTITIONS *分割数* ; | + +- 時系列テーブル(時系列コンテナ) + + | | + |-----------------------------------| + | CREATE TABLE \[IF NOT EXISTS\] *テーブル名* ( **列定義** \[, **列定義** ...\] )
USING TIMESERIES \[WITH (プロパティキー=プロパティ値, ...)\]
PARTITION BY RANGE(*インターバルパーティショニングキーの列名*) EVERY(*分割幅値* \[, *単位* \])
SUBPARTITION BY HASH(*ハッシュパーティショニングキーの列名*) SUBPARTITIONS *分割数* ; | + +**仕様** + +- 「インターバルパーティショニングキーの列名」には、BYTE型、SHORT型、INTEGER型、LONG型、TIMESTAMP型のいずれかの列を指定してください。 +- インターバルパーティショニングの分割幅値には次の値が指定できます。 + + | パーティショニングキーの型 | 分割幅値に指定できる値 | + |----------------------------|--------------------------------------------| + | BYTE型 | 1~27-1 | + | SHORT型 | 1~215-1 | + | INTEGER型 | 1~231-1 | + | LONG型 | 1000×ハッシュの分割数~263-1 | + | TIMESTAMP型 | 1以上 | + + - TIMESTAMP型の列を指定した場合は、単位を指定する必要があります。単位に指定できる値は、DAY/HOURです。 + - TIMESTAMP型以外の列を指定した場合は、単位は指定できません。 + +- ハッシュパーティショニングの「分割数」は、1以上かつ1024以下の値を指定してください。 +- パーティショニングキーには主キーを設定する必要があります。主キー以外を設定する場合は、コンフィグファイルで制限を解除する必要があります。詳細は『[GridDB 機能リファレンス](../md_reference_feature/md_reference_feature.md)』のクラスタ定義ファイルの設定を参照してください。 +- パーティショニングキーに指定した列の値は、更新できません。 + +【メモ】 +- インターバルパーティションと同じく、1テーブルのデータパーティションの生成個数には上限があります。変更する場合は『[GridDB 機能リファレンス](../md_reference_feature/md_reference_feature.md)』のクラスタ定義ファイルの設定を参照してください。 +- インターバルパーティションと異なり、インターバルハッシュパーティションでは1つの区間に対してハッシュ分割数分のデータパーティションが生成される点に注意してください。 + +***オプション指定*** + +****データアフィニティ**** +- データアフィニティに関するオプションを" WITH (プロパティキー=プロパティ値, ...)"の形式で指定することができます。 + 指定可能なオプションは[通常のテーブル](#label_data_affinity_property)と同様です。 + +****期限解放**** +- 期限解放に関するオプションを" WITH (プロパティキー=プロパティ値, ...)"の形式で指定することができます。 + + + | 機能 | 内容 | プロパティキー | プロパティ値の型 | 期限解放設定時の必須項目 | + |--------------|----------|-------------------------|---------------------------------------------------|-------------------------| + | 期限解放機能 | 種別 | expiration_type | STRING型
(指定可能な値は次の1種類。
PARTITION: パーティション期限解放) | 省略可(デフォルト:PARTITION) | + | | 経過時間 | expiration_time | INTEGER型 | 必須| + | | 経過単位 | expiration_time_unit | STRING型
(指定可能な値は次の5種類。
DAY / HOUR / MINUTE / SECOND / MILLISECOND ) | 省略可(デフォルト:DAY) | + | | 分割数 | expiration_division_count | INTEGER型 | 省略可(デフォルト:8) | + + +**例** + +- インターバルハッシュパーティショニングテーブルの作成 + + ``` example + CREATE TABLE myIntervalHashPartition ( + date TIMESTAMP, + value STRING, + PRIMARY KEY (date, value) + ) PARTITION BY RANGE (date) EVERY (60, DAY) + SUBPARTITION BY HASH (value) SUBPARTITIONS 64; + ``` + +- パーティション期限解放を使用するインターバルハッシュパーティショニングテーブル(時系列テーブル)の作成 + + ``` example + CREATE TABLE myIntervalHashPartition2 ( + date TIMESTAMP PRIMARY KEY, + value STRING + ) USING TIMESERIES WITH ( + expiration_type='PARTITION', + expiration_time=90, + expiration_time_unit='DAY' + ) PARTITION BY RANGE (date) EVERY (60, DAY) + SUBPARTITION BY HASH (date) SUBPARTITIONS 64; + ``` + +### CREATE INDEX + +索引を作成します。 + +**構文** + +| | +|-----------------------------------| +| CREATE INDEX \[IF NOT EXISTS\] *索引名* ON *テーブル名* ( *索引をつける列名* \[, ...\] ) ; | + +**仕様** + +- 索引名の規則は『[GridDB 機能リファレンス](../md_reference_feature/md_reference_feature.md)』を参照してください。 +- 同じテーブルに対して、既に存在する索引と同じ名前の索引は作成できません。 +- 処理対象のテーブルにおいて実行中のトランザクションが存在する場合、それらの終了を待機してから作成を行います。 +- BLOB型と配列型の列には索引を作成できません。 +- 複数のカラムを指定した索引を作成できます。これを複合索引と呼びます。 +- 1つの複合索引に指定できるカラム数の上限は16個で、同じカラムを複数回指定することはできません。 +- 時系列テーブルでは、複合索引に主キーを含むことはできません。 + +### CREATE VIEW + +ビューを作成します。 + +**構文** + +| | +|-----------------------------------| +| CREATE \[FORCE\] VIEW *ビュー名* AS *SELECT文* ; | + +**仕様** + +- ビュー名の規則は『[GridDB 機能リファレンス](../md_reference_feature/md_reference_feature.md)』を参照してください。 +- SELECT文の参照可否のチェックを行います。参照できない場合は作成できません。 +- FORCE指定時はSELECT文の参照可否のチェックを行いません。ただし、構文チェックは行われます。 +- SELECT文中に他のビュー名を含むことができます。ただし、循環参照となる場合はFORCEを指定しても作成できません。 + +### CREATE USER + +一般ユーザを作成します。 + +**構文** + +| | +|-----------------------------------| +| CREATE USER *ユーザ名* IDENTIFIED BY *‘パスワード文字列’* ; | + +**仕様** + +- ユーザ名の規則は『[GridDB 機能リファレンス](../md_reference_feature/md_reference_feature.md)』を参照してください。 +- 管理ユーザのみが実行可能です。 +- インストール時に登録済の管理ユーザ(adminおよびsystem)と同一の名前のユーザは作成できません。 +- パスワード文字列に使用できる文字は、ASCII文字のみです。大文字と小文字は区別します。 + +### CREATE ROLE + +LDAP認証で必要なロールを作成します。 + +**構文** + +| | +|-----------------------------------| +| CREATE ROLE *ロール名* ; | + +**仕様** + +- ロール名には、LDAPユーザ名、もしくはLDAPグループ名を指定してください。詳細は『[GridDB 機能リファレンス](../md_reference_feature/md_reference_feature.md)』を参照してください。 +- 管理ユーザのみが実行可能です。 +- インストール時に登録済の管理ユーザ(adminおよびsystem)と同一の名前のユーザは作成できません。 +- パスワード文字列に使用できる文字は、ASCII文字のみです。大文字と小文字は区別します。 + + +### DROP DATABASE + +データベースを削除します。 + +**構文** + +| | +|-----------------------------------| +| DROP DATABASE *データベース名* ; | + +**仕様** + +- 管理ユーザのみが実行可能です。 +- 「public」、「information_schema」という名前のデータベース、および「gs\#」で始まる名前のデータベースは、GridDBの内部用に予約済みのため削除できません。 +- ユーザが作成したテーブルが存在するデータベースは削除できません。 + +### DROP TABLE + +テーブルを削除します。 + +**構文** + +| | +|-----------------------------------| +| DROP TABLE \[IF EXISTS\] *テーブル名* ; | + +**仕様** + +- “IF EXISTS”が指定された場合、指定した名前のテーブルが存在しない場合は何も変更しません。 +- 処理対象のテーブルにおいて実行中のトランザクションが存在する場合、それらの終了を待機してから削除を行います。 + +### DROP INDEX + +指定された索引を削除します。 + +**構文** + +| | +|-----------------------------------| +| DROP INDEX \[IF EXISTS\] *索引名* ON *テーブル名* ; | + +**仕様** + +- “IF EXISTS”が指定された場合、指定した名前の索引が存在しない場合は何も変更しません。 +- 処理対象のテーブルにおいて実行中のトランザクションが存在する場合、それらの終了を待機してから削除を行います。 +- NoSQLインターフェースから名前無しで付与した索引をDROP INDEXで削除することはできません。 + +### DROP VIEW + +ビューを削除します。 + +**構文** + +| | +|-----------------------------------| +| DROP VIEW \[IF EXISTS\] *ビュー名* ; | + +**仕様** + +- “IF EXISTS”が指定された場合、指定した名前のビューが存在しない場合は何も変更しません。 + +### DROP USER + +一般ユーザを削除します。 + +**構文** + +| | +|-----------------------------------| +| DROP USER *ユーザ名* ; | + +**仕様** + +- 管理ユーザのみが実行可能です。 + +### DROP ROLE + +LDAP認証で必要なロールを削除します。 + +**構文** + +| | +|-----------------------------------| +| DROP ROLE *ロール名* ; | + +**仕様** + +- 管理ユーザのみが実行可能です。 + + + +### ALTER TABLE + +テーブルの構造を変更します。 + +#### カラムを追加する + +テーブルの末尾にカラムを追加します。 + +**構文** + +| | +|-----------------------------------| +| ALTER TABLE *テーブル名* ADD \[COLUMN\] **列定義** \[,ADD \[COLUMN\] **列定義** ...\] ; | + +- **列定義** + - *列名* *型名* \[ **列制約** \] + +- **列制約** + - NULL + - NOT NULL + +**仕様** + +- 追加するカラムは、テーブルの末尾に配置します。複数のカラムを指定した場合は指定した順序で配置します。 +- 列制約に"PRIMARY KEY"は指定できません。 +- 既に同じ名前のカラムが存在した場合はエラーになります。 + +**例** + +- 複数のカラムの追加 + + ``` example + ALTER TABLE myTable1 + ADD COLUMN col111 STRING NOT NULL, + ADD COLUMN col112 INTEGER; + ``` + +#### データパーティションを削除する + +テーブルパーティショニングで作成されたデータパーティションを削除します。 + +**構文** + +| | +|-----------------------------------| +| ALTER TABLE *テーブル名* DROP PARTITION FOR ( *削除するデータパーティションの区間(下限値から上限値)に含まれる値* ); | + +**仕様** + +- インターバルとインターバル-ハッシュパーティショニングの場合のみ、データパーティションを削除できます。 +- 削除するデータパーティションの区間(下限値から上限値)に含まれる値を指定してください。 +- 一度削除したデータパーティションの区間(下限値から上限値)に該当するデータの新規登録はできません。 +- データパーティションの区間の下限値は、メタテーブルで確認できます。区間の上限値は多くの場合、下限値+分割幅値の値です。 +- インターバル-ハッシュパーティショニングの場合は、同じ下限値のデータパーティションが、ハッシュの分割数分(最大)存在します。 + データパーティションを削除する場合は、それらの同じ下限値をもつデータパーティションは同時に削除されます。削除の確認はメタテーブルで行います。 + +メタテーブルの詳細は[メタテーブル](#label_metatables)を参照してください。 + +**例** + +**インターバルパーティショニングテーブル** + +- インターバルパーティショニングのテーブル「myIntervalPartition1」(パーティショニングキーの型:TIMESTAMP、分割幅値30日)のデータパーティションの下限値一覧を確認する + + ``` example + SELECT PARTITION_BOUNDARY_VALUE FROM "#table_partitions" + WHERE TABLE_NAME='myIntervalPartition1' ORDER BY PARTITION_BOUNDARY_VALUE; + + PARTITION_BOUNDARY_VALUE + ----------------------------------- + 2017-01-10T13:00:00.000Z + 2017-02-09T13:00:00.000Z + 2017-03-11T13:00:00.000Z + : + ``` + +- 不要なデータパーティションを削除する + + ``` example + ALTER TABLE myIntervalPartition1 DROP PARTITION FOR ('2017-01-10T13:00:00Z'); + ``` + +**インターバル-ハッシュパーティショニングテーブル** + +- インターバル-ハッシュパーティショニングのテーブル「myIntervalHashPartition」(インターバルパーティショニングキーの型:TIMESTAMP、分割幅値90DAY、ハッシュパーティショニングキーの分割数3)のデータパーティションの下限値一覧を確認する + + ``` example + SELECT PARTITION_BOUNDARY_VALUE FROM "#table_partitions" + WHERE TABLE_NAME='myIntervalHashPartition' ORDER BY PARTITION_BOUNDARY_VALUE; + + PARTITION_BOUNDARY_VALUE + ----------------------------------- + 2016-08-01T10:00:00.000Z 同じ下限値のデータがハッシュされて3つの + 2016-08-01T10:00:00.000Z データパーティションに分割されている + 2016-08-01T10:00:00.000Z + 2016-10-30T10:00:00.000Z + 2016-10-30T10:00:00.000Z + 2016-10-30T10:00:00.000Z + 2017-01-29T10:00:00.000Z + : + ``` + +- 不要なデータパーティションを削除する + + ``` example + ALTER TABLE myIntervalHashPartition DROP PARTITION FOR ('2016-09-15T10:00:00Z'); + ``` + +- 同じ下限値のデータパーティションが削除される + + ``` example + SELECT PARTITION_BOUNDARY_VALUE FROM "#table_partitions" + WHERE TABLE_NAME='myIntervalHashPartition' ORDER BY PARTITION_BOUNDARY_VALUE; + + PARTITION_BOUNDARY_VALUE + ----------------------------------- + 2016-10-30T10:00:00.000Z '2016-09-15T10:00:00Z'を含む区間(下限値'2016-08-01T10:00:00Z')の + 2016-10-30T10:00:00.000Z 3つのデータパーティションが削除される + 2016-10-30T10:00:00.000Z + 2017-01-29T10:00:00.000Z + : + ``` + +#### カラム名を変更する + +指定した既存のカラム名を変更します。 + +**構文** + +| | +|-----------------------------------| +| ALTER TABLE *テーブル名* RENAME COLUMN *変更前カラム名* TO *変更後カラム名*;| + + +**仕様** + +- 変更前カラム名が指定したテーブルに存在しない場合は、エラーになります。 +- 変更後カラム名が指定したテーブルに既に存在する場合は、エラーになります。 + +**例** + +- カラム名の変更 + + ``` example + ALTER TABLE myTable1 RENAME COLUMN col112 TO col121; + ``` + +  + +## データ制御言語(DCL) + +### GRANT + +一般ユーザ、もしくはロールにデータベースへのアクセス権を付与します。 + +**構文** + +| | +|-----------------------------------| +| GRANT {SELECT\|ALL} ON *データベース名* TO {*ユーザ名*\|*ロール名*}; | + +**仕様** + +- 管理ユーザのみが実行可能です。 +- SELECTは参照権限、ALLは参照権限と更新権限を表します。 + +### REVOKE + +一般ユーザ、もしくはロールからデータベースへのアクセス権を剥奪します。 + +**構文** + +| | +|-----------------------------------| +| REVOKE {SELECT\|ALL} ON *データベース名* FROM {*ユーザ名*\|*ロール名*} ; | + +**仕様** + +- 管理ユーザのみが実行可能です。 +- SELECTは参照権限、ALLは参照権限と更新権限を表します。 + +### SET PASSWORD + +一般ユーザのパスワードを変更します。 + +**構文** + +| | +|-----------------------------------| +| SET PASSWORD \[FOR *ユーザ名* \] = *‘パスワード文字列’* ; | + +**仕様** + +- 管理ユーザは全ての一般ユーザのパスワードを変更可能です。 +- 一般ユーザは自身のパスワードのみ変更可能です。 + +   + +## データ操作言語(DML) + +### SELECT + +データを取得します。FROM句、WHERE句など様々な[句](#label_clauses)から構成されます。 + +**構文** + +| | +|-----------------------------------| +| SELECT \[{ALL\|DISTINCT}\] * \| *列名1* \[, *列名2* ...\]
\[FROM句\]
\[WHERE句\]
\[GROUP BY句 \[HAVING句\]\]
\[{UNION \[ALL\] \|INTERSECT\|EXCEPT} SELECT文\]
\[ORDER BY句\]
\[LIMIT句 \[OFFSET句\]\] ; | + + +### INSERT + +テーブルに行を登録します。INSERT句は単に行を登録し、INSERT OR REPLACE句とREPLACE句は、既に同一主キーが存在するデータを与えた場合、既存のデータを上書きします。REPLACE句はINSERT OR REPLACE句の別名で、機能の違いはありません。 + +**構文** + +| | +|-----------------------------------| +| {INSERT\|INSERT OR REPLACE\|REPLACE} INTO *テーブル名*
{VALUES ( { *数値1* \| *文字列1* } \[, { *数値2* \| *文字列2* } ...\] )\|SELECT文} ; | + +**仕様** + +- VALUESではなくSELECT文を指定した場合は、その実行結果が登録データになります。ただし、UNION/INTERSECT/EXCEPTを含む問い合わせ結果は登録できません。 + +``` example +INSERT INTO myTable1 VALUES(1, 100); + +REPLACE INTO myTable1 VALUES(1, 200); + +INSERT INTO myTable1 SELECT * FROM myTable2; +``` + +### DELETE + +テーブルから行を削除します。 + +**構文** + +| | +|-----------------------------------| +| DELETE FROM *テーブル名* \[WHERE句\] ; | + +### UPDATE + +テーブルに存在する行を更新します。 + +**構文** + +| | +|-----------------------------------| +| UPDATE *テーブル名* SET *列名1* = *式1* \[, *列名2* = *式2* ...\] \[WHERE句\] ; | + +**仕様** + +- PRIMARY KEY制約のあるカラムの値は更新できません。 +- パーティショニングを設定した場合、UPDATE句を使ってパーティショニングキーになっている項目を別の値に更新することはできません。このような場合は、DELETE文を実行後にINSERT文を実行してください。 + - 例) + ``` example + CREATE TABLE tab (a INTEGER, b STRING) PARTITION BY HASH a PARTITIONS 5; + + -- NG + UPDATE tab SET a = a * 2; + [240016:SQL_COMPILE_PARTITIONING_KEY_NOT_UPDATABLE] Partitioning column='a' is not updatable + + -- OK + UPDATE tab SET b = 'XXX'; + ``` + +- SET句で指定する列名は、テーブル名で修飾することはできません。 + - 例) + ``` example + CREATE TABLE myTable1 (key INTEGER, value INTEGER); + + -- NG + UPDATE myTable1 SET myTable1.value = 999 WHERE myTable1.key = 8; + + -- OK + UPDATE myTable1 SET value = 999 WHERE myTable1.key = 8; + ``` + +- サブクエリを更新値に利用することはできません。ただし、WHERE句などの条件文には利用可能です。 + - 例) + ``` example + CREATE TABLE myTable1 (key INTEGER, value INTEGER); + + -- NG + UPDATE myTable1 SET value = (SELECT 999) WHERE key = 8; + + -- OK + UPDATE myTable1 SET value = 999 WHERE key = (SELECT 8); + ``` + + + + +## 句 + +### FROM + +データ操作を行うテーブル名またはビュー名、サブクエリを指定します。 + +**構文** + +| | +|-----------------------------------| +| FROM *テーブル名1* \[, *テーブル名2* ... \] | +| FROM ( *sub_query* ) [AS] 別名 \[, ... \] | + +**仕様** + +- サブクエリを指定する場合は、()で括り、別名を指定する必要があります。 + +例) +``` example +SELECT a.ID, b.ID FROM mytable a, (SELECT ID FROM mytable2) b; + +ID ID +---+----- + 1 100 + 1 200 + 2 100 + 2 200 + : +``` + +### GROUP BY + +前に指定された句の結果の中で、指定された列で同じ値を持った行をグループ化します。 + +**構文** + +| | +|-----------------------------------| +| GROUP BY *列名1* \[, *列名2* ...\] | + +### HAVING + +GROUP BY句によりグループ化された情報に対して探索条件で絞り込みを行います。GROUP BY句は省略できません。 + +**構文** + +| | +|-----------------------------------| +| HAVING 探索条件 | + +### ORDER BY + +検索結果の並べ替え(ソート)を行います。 + +| | +|-----------------------------------| +| ORDER BY *列名1* \[{ASC\|DESC}\] \[, *列名2* \[{ASC\|DESC}\] ...\] | + +### WHERE + +先行するFROM句の結果に、探索条件を適用します。 + +**構文** + +| | +|-----------------------------------| +| WHERE 探索条件 | + +**仕様** + +- 探索条件は式や関数、サブクエリなどを用いて記述できます。 + +### LIMIT/OFFSET + +指定した位置から指定した件数分のデータを取り出します。 + +**構文** + +| | +|-----------------------------------| +| LIMIT *値1* \[OFFSET *値2* \] | + +**仕様** + +- 値1は取り出すデータ件数を表し、値2は取り出すデータ位置を表します。 + +  + +### JOIN + +テーブルを結合します。 + +**構文** + +| 結合の種類 | 構文 | +|-------------|-----------------------| +| 内部結合 | *テーブル1* [INNER] JOIN *テーブル2* [ ON *式* \| USING(*列名* [,*列名* ...]) ] | +| 左外部結合 | *テーブル1* LEFT [OUTER] JOIN *テーブル2* [ ON *式* \| USING(*列名* [,*列名* ...]) ] | +| クロス結合 | *テーブル1* CROSS JOIN *テーブル2* [ ON *式* \| USING(*列名* [,*列名* ...]) ] | + +- 内部結合は、両方のテーブルの指定した列の値が一致する結果を返します。 +- 左外部結合は、両方のテーブルの指定した列の値が一致する結果と、*テーブル1*にしか存在しない結果を返します。 +- クロス結合は、内部結合(INNER JOIN)と等価です。 + +結合条件は、ON句またはUSING句を用いて指定します。 + +例) +```example +名前: employees + + id first_name department_id +----+------------+---------------- + 0 John 0 + 1 William 1 + 2 Richard 0 + 3 Mary 4 + 4 Lisa 3 + 5 James 1 + +名前: departments + + department_id department +---------------+------------ + 0 Sales + 1 Development + 2 Research + 3 Marketing + +○内部結合 +SELECT * FROM employees e INNER JOIN departments d ON e.department_id=d.department_id; + + id first_name department_id department_id department +------+-----------+--------------+--------------+----------- + 0 John 0 0 Sales + 1 William 1 1 Development + 2 Richard 0 0 Sales + 4 Lisa 3 3 Marketing + 5 James 1 1 Development + + +○左外部結合 +SELECT * FROM employees e LEFT JOIN departments d ON e.department_id=d.department_id; + + id first_name department_id department_id department +------+-----------+--------------+--------------+----------- + 0 John 0 0 Sales + 1 William 1 1 Development + 2 Richard 0 0 Sales + 3 Mary 4 (NULL) (NULL) + 4 Lisa 3 3 Marketing + 5 James 1 1 Development +``` + +  + +自然結合(NATURAL JOIN)を用いると、指定されたテーブルの同じ名前のカラムの値が一致するかを結合条件として結合を行います。 + +| 結合の種類 | 構文 | +|-------------|----------------------------------------------------| +| 内部結合 | *テーブル1* NATURAL [INNER] JOIN *テーブル2* | +| 左外部結合 | *テーブル1* NATURAL LEFT [OUTER] JOIN *テーブル2* | +| クロス結合 | *テーブル1* NATURAL CROSS JOIN *テーブル2* | + +``` example +SELECT * FROM employees NATURAL INNER JOIN departments; + + department_id id first_name department +---------------+-----+--------------+-------------- + 0 0 John Sales + 1 1 William Development + 0 2 Richard Sales + 3 4 Lisa Marketing + 1 5 James Development +``` + +### UNION/INTERSECT/EXCEPT + +2つの問い合わせ結果の集合に対して演算を行います。 + +**構文** + +| | | +|------------------------------|---------------------------------------------------| +| *問合せ1* UNION *問合せ2* | 2つの問合せのすべての結果を返します (重複は含まない) | +| *問合せ1* UNION ALL *問合せ2* | 2つの問合せのすべての結果を返します (重複を含む) | +| *問合せ1* INTERSECT *問合せ2* | 2つの問合せの共通の結果を返します | +| *問合せ1* EXCEPT *問合せ2* | 2つの問合せの差分(*問合せ1*に含まれていて*問合せ2*に含まれない結果)の結果を返します | + + +### OVER + +問い合わせ結果の分割や、並び替えを行います。WINDOW関数と共に利用します。 + +**構文** + +| | +|-----------------------------------| +| *関数* OVER ( \[PARTITION BY *式1* \] \[ ORDER BY *式2* \] \[ FRAME句 \] ) | + +ここで、FRAME句の構文は以下の通りです。 + +| | +|-----------------------------------| +| {ROWS\|RANGE} *フレーム開始値*
\| {ROWS\|RANGE} BETWEEN *フレーム開始値* AND *フレーム終了値* | + +フレーム開始値・終了値の構文は以下の通りです。 +| | +|-----------------------------------| +| UNBOUNDED PRECEDING
\| UNBOUNDED FOLLOWING
\| CURRENT ROW
\| *フレーム境界値1* PRECEDING
\| *フレーム境界値2* FOLLOWING | + + - CURRENT ROW: 分析対象の現在位置のロウを示します + - UNBOUNDED: パーティションの先頭もしくは末端を示します + - PRECEDING/FOLLOWING: 前方もしくは後方を示します + - UNBOUNDEDは、始点・終点での前方・後方指定の組み合わせに制限があります (NG例: BETWEEN UNBOUNDED FOLLOWING AND ~、BETWEEN UNBOUNDED ~ AND PRECEDING) + +フレーム境界値の構文は以下の通りです。 + +| | +|-----------------------------------| +| *値1* \| ( *値2*, *単位* ) | + + - 以下の説明では前者を整数型境界値、後者を日時型境界値と呼びます + - 値1、値2として許されるのは、非負の整数値定数に暗黙キャスト可能な値のみです。日時型境界値ではHOUR~NANOSECONDまでのいずれかの単位を指定します + - ROWS指定の場合、非負の整数型境界値のみ指定可能です + - RANGE指定の場合、ソートキーは整数型または日時型の単一のキー限定とし、キーの型と対応する形式で境界値を指定します + +**仕様** + +- SELECT句で利用できます。 +- 対応する関数は以下です。 + - ROW_NUMBER() + - LAG() + - LEAD() + - AVG() + - COUNT() + - MAX() + - MIN() + - SUM()/TOTAL() + - STDDEV_SAMP() + - STDDEV()/STDDEV0() + - STDDEV_POP() + - VAR_SAMP() + - VARIANCE()/VARIANCE0() + - VAR_POP() +- 関数の第一引数にDISTINCTを指定することはできません。 +- PARTITION BY句で問い合わせ結果を分割します。ORDER BY句でロウの並び替えを行います。FRAME句はパーティション全体ではなくフレーム上で作動するウィンドウ関数に対して、ウィンドウフレームを構成する行の集合を指定します。 +- 同一SELECT句内でのWINDOW関数/OVER句の複数利用や、WINDOW関数/OVER句とMEDIAN関数の同時利用はできません。 +- PARTITION BY句に、以下の式は指定できません。 + - OVER句を含む式 + - 集計関数を含む式 + - 列の別名を含む式 + - サブクエリ +- ORDER BY句に、以下の式は指定できません。 + - OVER句を含む式 + - 集計関数を含む式 + - 列の別名を含む式 + - サブクエリ +- 同名の集計関数と対応づく既存の分析関数すべてで、FRAME句を指定できます。 + - AVG、COUNT、MAX、MIN、SUM、TOTAL、STDDEV*、VAR* +- 同名の集計関数と対応付かない以下の分析関数では、FRAME句を指定できません。 + - ROW_NUMBER、LAG、LEAD + + +### GROUP BY RANGE + +一定の時間幅毎に結果を分割した結果集合を作成し、各結果集合の値について集計演算を行います。また、補間演算の指定がある場合、結果に値が含まれない集合について値の補間演算を行います。 + +**構文** + +| | +|-----------------------------------| +| GROUP BY RANGE(*日時カラム名*) EVERY( *時間間隔*, *単位* \[ ,*オフセット* \] ) \[ FILL(*補間方法*) \] | + +**仕様** + +GROUP BY RANGE句を含むSELECT文は、以下の制約があります。 + +- SELECT句の*式リスト*にはカラム式や関数などを指定できますが、分析関数やサブクエリを用いることはできません。 +- WHERE句で指定する探索条件には、必ず*日時カラム名*に関する日時範囲の条件を指定する必要があります。具体的には以下のいずれかの条件が必須です。いずれも定数値との比較でなければなりません。 + + *日時カラム名*との大小比較条件による範囲条件 + + *日時カラム名*を用いたBETWEEN式による範囲条件 + +GROUP BY RANGE句の仕様は以下となります。 + +- 集約や補間を行う結果集合の始点時刻は*日時カラム名*のカラムの値として計算されます。このカラムに指定できるのはTIMESTAMP型(精度指定付きTIMESTAMP型を含む)のカラムのみです。 +- 結果集合の始点時刻は、「先頭時刻」と「時間の間隔」を基準に求められます。具体的には、「「先頭時刻」+「時間の間隔」のN倍」の日時が各結果集合の始点時刻に用いられます。 +- 「先頭時刻」と「時間の間隔」はそれぞれ以下のように設定されます。 + - 「先頭時刻」は*オフセット*で指定します。*オフセット*を明示的に指定する方法として、以下の2種類の方法があります。 + * 整数値(定数値)を指定する方法:整数値(LONG)で指定します。値の単位には*単位*を用います。 + * 文字列でタイムゾーンを指定する方法:タイムゾーン(Z|±HH:MM|±HHMM)の書式で指定します。 + - *オフセット*の指定がない場合、DB接続時に決定されたタイムゾーンのオフセットが*オフセット*値として用いられます。DB接続時のタイムゾーンの決定については、『[GridDB JDBCドライバ説明書](../md_reference_jdbc/md_reference_jdbc.md)』等を参照してください。 + - 結果集合の始点時刻を計算するときに用いる「時間の間隔」は、*時間間隔*と*単位*で指定されます。以下のように設定できます。 + + *時間間隔*は、正の整数値を指定できます。定数値のみ指定可能です。 + + *単位*には、以下のいずれかを指定できます。 + * DAY | HOUR | MINUTE | SECOND | MILLISECOND | MICROSECOND | NANOSECOND + * ナノ秒精度の場合、約292年(2^63ナノ秒)以上の時間間隔は指定できません。 +- 得られた結果集合内にひとつも値が含まれない場合、その区間の値を補間演算により求めることができます。値の求め方(補間演算の方法)は*補間方法*で指定します。 + + *補間方法*には、以下のいずれかを指定できます。 + * LINEAR :直近の前後の時刻のカラム値を用いて線形補間して出力します。 + + ただし、数値演算できない型のカラムの場合は、以下のPREVIOUS演算と同じ補間を行います。 + + ナノ秒精度での演算結果として292年を超過する場合、関数実行のエラーになります。 + * NONE  :ロウ全体を出力しません。 + * NULL  :カラム値をNULLとします。 + * PREVIOUS:直近の前の時刻のカラム値を出力します。 + +例) +```example +名前: trend_data1 + + ts value +-----------------------+------- + 2023-01-01T00:00:00 10 + 2023-01-01T00:00:10 30 + 2023-01-01T00:00:20 30 + 2023-01-01T00:00:30 50 + 2023-01-01T00:00:40 50 + 2023-01-01T00:00:50 70 + + +○集計演算 +SELECT ts,avg(value) FROM trend_data1 + WHERE ts BETWEEN TIMESTAMP('2023-01-01T00:00:00Z') AND TIMESTAMP('2023-01-01T00:01:00Z') + GROUP BY RANGE(ts) EVERY (20,SECOND) + + ts value +-----------------------+------- + 2023-01-01T00:00:00 20 + 2023-01-01T00:00:20 40 + 2023-01-01T00:00:40 60 +``` + +```example +名前: trend_data2 + + ts value +-----------------------+------- + 2023-01-01T00:00:00 5 + 2023-01-01T00:00:10 10 + 2023-01-01T00:00:20 15 +  (データ欠損時刻) + 2023-01-01T00:00:40 25 + + + ○補間演算 +SELECT * FROM trend_data2 + WHERE ts BETWEEN TIMESTAMP('2023-01-01T00:00:00Z') AND TIMESTAMP('2023-01-01T00:01:00Z') + GROUP BY RANGE(ts) EVERY (10,SECOND) FILL (LINEAR) + + ts value +-----------------------+------- + 2023-01-01T00:00:00 5 + 2023-01-01T00:00:10 10 + 2023-01-01T00:00:20 15 + 2023-01-01T00:00:30 20 + 2023-01-01T00:00:40 25 + +``` + + +## 演算子 + +SQL文で使用する演算子を以下に説明します。 + +### 演算子一覧 + +演算子の一覧は次の通りです。 + +| 分類 | 演算子 | 説明 | +|------|-------|------| +| 算術 | + | 加算します | +| | - | 減算します | +| | * | 乗算します | +| | / | 除算します | +| | % | 剰余を求めます | +| 文字 | \|\| | 任意の型の値を文字列として連結します。
いずれかの値がNULLの場合はNULLを返します。 | +| 比較 | =, == | 等しいかどうかを比較します | +| | !=, \<\> | 等しくないかどうかを比較します | +| | > | より大きいかどうかを比較します | +| | >= | より大きい、または、等しいかどうかを比較します | +| | < | より小さいかどうかを比較します | +| | <= | より小さい、または、等しいかどうかを比較します | +| | IS | 等しいかどうかを比較します。
両方の式がNULLの場合はtrueを返します。
いずれかがNULLの場合はfalseを返します。 | +| | IS NOT | 等しくないかどうかを比較します。
両方の式がNULLの場合はfalseを返します。
いずれかがNULLの場合はtrueを返します。 | +| | ISNULL | 左辺の式がNULLかを判定します | +| | NOTNULL | 左辺の式がNULLでないかを判定します | +| | [LIKE](#op_like) | 文字列を検索します。 | +| | [GLOB](#op_glob) | 文字列を検索します。 | +| | [BETWEEN](#op_between) | 指定した範囲の値を取り出します。| +| | [IN](#op_in) | 値の集合の中に指定した値が含まれるかどうかを返します。 | +| ビット | & | A & B :AとBのビットのANDをとります | +| | \| | A \| B :AとBのビットのORをとります | +| | ~ | ~A :AのビットのNOTをとります | +| | \<\< | A \<\< B :Aを左へBビット分シフトします | +| | \>\> | A \>\> B :Aを右へBビット分シフトします | +| 論理 | AND | 両方の式がtrueの場合はtrueを返します。
いずれかがfalseの場合はfalseを返します。
それ以外の場合はNULLを返します。 | +| | OR | いずれかの式がtrueの場合はtrueを返します。
両方がfalseの場合はfalseを返します。
それ以外の場合はNULLを返します。 | +| | NOT | 式がtrueの場合はfalseを返します。
falseの場合はtrueを返します。
それ以外の場合はNULLを返します。 | + + +### LIKE + +文字列を検索します。 + +**構文** + +| | +|-----------------------------------| +| *str* \[NOT\] LIKE *pattern_str* \[ESCAPE *escape_str* \] | + +**仕様** + +- [LIKE関数](#like-1)を参照してください。 + + +### GLOB + +**構文** + +文字列を検索します。 + +| | +|-------| +| *str* GLOB *pattern_str* | + +**仕様** + +- [GLOB関数](#glob-1)を参照してください。 + + +### BETWEEN + +指定した範囲の値を取り出します。 + +**構文** + +| | +|-----------------------------------| +| *式1* \[NOT\] BETWEEN *式2* AND *式3* | + +**仕様** + +- 次の条件を満たす場合はtrueを返します。 + + ``` example + 式2 ≦ 式1 ≦ 式3 + ``` + +- NOTを指定すると上記の条件を満たさない場合にtrueを返します。 + + +### IN + +値の集合の中に指定した値が含まれるかどうかを返します。 + +**構文** + +| | +|-----------------------------------| +| *式1* \[NOT\] IN ( [*式2* \[, *式3* ...\]] ) | + +**仕様** + +- *式1*の値が、*式N*の結果に含まれる場合はtrueを返します。 +- INは[サブクエリ](#in_sub_query)に対しても使用できます。 + + + +## 関数 + +SQL文で使用する関数を以下に説明します。 + +### 関数一覧 + +SQL文には以下の関数が用意されています。 + +| 分類 | 関数名 | 説明 | +|------|-----------------|------| +| [集計](#aggregation) | [AVG](#avg) | 平均値を返します | +| | [COUNT](#count) | ロウ数を返します | +| | [MAX](#Aggregate_MAX) | 最大値を返します | +| | [MIN](#Aggregate_MIN) | 最小値を返します | +| | [SUM](#sumtotal) | 合計値を返します | +| | [TOTAL](#sumtotal) | 合計値を返します | +| | [GROUP_CONCAT](#group_concat) | 値を連結します | +| | [STDDEV_SAMP](#stddev_samp) | 標本標準偏差を返します | +| | [STDDEV](#stddevstddev0) | 標本標準偏差を返します | +| | [STDDEV0](#stddevstddev0) | 標本標準偏差を返します | +| | [STDDEV_POP](#stddev_pop) | 母標準偏差を返します | +| | [VAR_SAMP](#var_samp) | 標本分散を返します | +| | [VARIANCE](#variancevariance0) | 標本分散を返します | +| | [VARIANCE0](#variancevariance0) | 標本分散を返します | +| | [VAR_POP](#var_pop) | 母分散を返します | +| | [MEDIAN](#MEDIAN) | 中央値を返します | +| | [PERCENTILE_CONT](#PERCENTILE_CONT) | パーセンタイル値を返します | +| [算術](#算術関数) | [ABS](#abs) | 絶対値を返します | +| | [ROUND](#round) | 四捨五入します | +| | [RANDOM](#random) | 乱数を返します | +| | [MAX](#Arithmetic_MAX) | 最大値を返します | +| | [MIN](#Arithmetic_MIN) | 最小値を返します | +| | [LOG](#Arithmetic_LOG) | 対数を返します | +| | [SQRT](#Arithmetic_SQRT) | 平方根を返します | +| | [TRUNC](#Arithmetic_TRUNC) | 数値を切り捨てます | +| | [HEX_TO_DEC](#Arithmetic_HEX_TO_DEC) | 16進数の文字列を10進数の数値に変換します | +| [文字](#文字関数) | [LENGTH](#length) | 文字列の長さを返します | +| | [LOWER](#lower) | 文字列を小文字に変換します | +| | [UPPER](#upper) | 文字列を大文字に変換します | +| | [SUBSTR](#substr) | 文字列の一部を切り出します | +| | [REPLACE](#replace) | 文字列を置換します | +| | [INSTR](#instr) | 文字列の中から特定の文字列の位置を返します | +| | [LIKE](#like-1) | 文字列を検索します | +| | [GLOB](#glob-1) | 文字列を検索します | +| | [TRIM](#trim) | 文字列の両端から特定の文字を除きます | +| | [LTRIM](#ltrim) | 文字列の左端から特定の文字を除きます | +| | [RTRIM](#rtrim) | 文字列の右端から特定の文字を除きます | +| | [QUOTE](#quote) | 文字列をシングルクォートで囲みます | +| | [UNICODE](#unicode) | 文字のUnicodeコードポイントを返します | +| | [CHAR](#char) | Unicodeコードポイントを文字に変換して連結します | +| | [PRINTF](#printf) | フォーマット変換した文字列を返します | +| | [TRANSLATE](#translate) | 文字列を置換します | +| [日時](#time_function) | [NOW](#now) | 現在時刻を返します | +| | [TIMESTAMP](#timestamp) | 時刻の文字列表記をミリ秒精度のTIMESTAMP型に変換します | +| | [TIMESTAMP_MS](#timestamp_ms) | 時刻の文字列表記をミリ秒精度のTIMESTAMP型(TIMESTAMP(3))に変換します | +| | [TIMESTAMP_US](#timestamp_us) | 時刻の文字列表記をマイクロ秒精度のTIMESTAMP型(TIMESTAMP(6))に変換します | +| | [TIMESTAMP_NS](#timestamp_ns) | 時刻の文字列表記をナノ秒精度のTIMESTAMP型(TIMESTAMP(9))に変換します | +| | [TIMESTAMP_ADD](#timestamp_add) | 時刻を加算します | +| | [TIMESTAMP_DIFF](#timestamp_diff) | 時刻の差分を返します | +| | [TO_TIMESTAMP_MS](#to_timestamp_ms) | 時刻'1970-01-01T00:00:00.000Z'に経過時間を加算します | +| | [TO_EPOCH_MS](#to_epoch_ms) | 時刻'1970-01-01T00:00:00.000Z'からの経過時間を返します | +| | [EXTRACT](#extract) | 時刻から特定のフィールドの値を取り出します | +| | [STRFTIME](#strftime) | 時刻をフォーマット変換した文字列を返します | +| | [MAKE_TIMESTAMP](#make_timestamp) | 時刻を生成します | +| | [MAKE_TIMESTAMP_MS](#make_timestamp_ms) | ミリ秒精度のTIMESTAMP(3)型の時刻を生成します | +| | [MAKE_TIMESTAMP_US](#make_timestamp_us) | マイクロ秒精度のTIMESTAMP(6)型の時刻を生成します | +| | [MAKE_TIMESTAMP_NS](#make_timestamp_ns) | ナノ秒精度のTIMESTAMP(9)型の時刻を生成します | +| | [TIMESTAMP_TRUNC](#timestamp_trunc) | 時刻を切り捨てます | +| [WINDOW](#window_function) | [ROW_NUMBER](#row_number) | 結果のロウに対して、一意となる連番値を割り振ります | +| [その他](#other_function) | [COALESCE](#coalesce) | NULLではない最初の引数を返します | +| | [IFNULL](#ifnull) | NULLではない最初の引数を返します | +| | [NULLIF](#nullif) | 2つの引数が同じ場合はNULL、異なる場合は最初の引数を返します | +| | [RANDOMBLOB](#randomblob) | BLOB型の値(乱数)を返します | +| | [ZEROBLOB](#zeroblob) | BLOB型の値(0x00)を返します | +| | [HEX](#hex) | BLOB型の値を16進表記に変換します | +| | [TYPEOF](#typeof) | 値のデータ型を返します | + + +関数の説明では、以下のテーブルのデータを実行例として使用します。 + +```example +テーブル: employees + + id first_name last_name age department enrollment_period +----+------------+-----------+-------+-------------+------------------- + 0 John Smith 43 Sales 15.5 + 1 William Jones 59 Development 23.2 + 2 Richard Brown (NULL) Sales 7.0 + 3 Mary Taylor 31 Research (NULL) + 4 Lisa (NULL) 29 (NULL) 4.9 + 5 James Smith 43 Development 10.3 + +テーブル: departments + + id department +----+------------ + 0 Sales + 1 Development + 2 Research + +テーブル: travelexpenses + + id date empId amount +-----+------------+-------+-------- + 101 2020/02/01 0 200 + 102 2020/02/03 2 2500 + 103 2020/02/03 3 60 + 104 2020/02/04 0 200 + 105 2020/02/05 0 150 + 106 2020/02/06 3 80 +``` + +[メモ] +- NULLの値は(NULL)と表記します。 + + + +### 集計関数 + +値を集計する関数です。 +集計関数の引数には、DISTINCTまたはALLを指定できます。 + +| | | +|------|-------| +| 書式 | function( [DISTINCT \| ALL] *argument*) | + +| 項目 | 意味 | +|---------|-------| +| DISTINCT | 重複する値のロウは除外して集計します | +| ALL | 重複する値も含めてすべてのロウを集計します | + +指定を省略した場合は、ALLを指定した場合と同じになります。 + +[メモ] +- 集計関数は、SELECT句にしか使えません。 +- 計算の対象となる行が存在しない場合、COUNTの結果は0になります。その他の集計関数の結果はNULLになります。 + + +また、集計関数は、分析関数としてOVER句と共に利用可能です。詳細はOVER句を参照ください。 + +例)集計関数SUMとOVER句を利用した例 +```example +SELECT id, date, empId, amount, SUM(amount) OVER(PARTITION BY empID ORDER BY id) as accumulated FROM travelexpenses; +結果: + id date empId amount accumulated +-----+------------+-------+--------+------------- + 101 2020/02/01 0 200 200 + 104 2020/02/04 0 200 400 + 105 2020/02/05 0 150 550 + 102 2020/02/03 2 2500 2500 + 103 2020/02/03 3 60 60 + 106 2020/02/06 3 80 140 +``` +【注意事項】 +- GROUP_CONCATとMEDIANは、OVER句と共に利用できません。 + + + +#### AVG + +| | | +|------|-------| +| 書式 | AVG( [DISTINCT \| ALL] *n*) | + +*n*の平均値を返します。 + +- 引数*n*には、数値型の値を指定します。 +- *n*の値がNULLのロウは、計算の対象外になります。 +- 結果の型はDOUBLE型です。 + +例) +```example +SELECT AVG(age) FROM employees; +結果:41.0 + +SELECT AVG(DISTINCT age) FROM employees; +結果:40.5 + +SELECT department, AVG(age) avg FROM employees GROUP BY department; +結果: + department avg + ------------+----- + Development 51.0 + Research 31.0 + Sales 43.0 + (NULL) 29.0 + ``` + + + +#### COUNT + +| | | +|------|-------| +| 書式 | COUNT(* \| [DISTINCT \| ALL] *x*) | + +ロウの数を返します。 + +- *x*の値がNULLのロウは、計算の対象外になります。ロウ数にはカウントされません。 +- 結果の型はLONG型です。 + +例) +```example +SELECT COUNT(*) FROM employees; +結果:6 + +// 値がNULLのロウは無視してカウントします +SELECT COUNT(department) FROM employees; +結果:5 + +SELECT COUNT(DISTINCT department) FROM employees; +結果:3 +``` + + +#### MAX + +| | | +|------|-------| +| 書式 | MAX( [DISTINCT \| ALL] *x*) | + +最大値を返します。 + +- 引数*x*には、任意の型の値を指定します。 + - 文字列型の場合は、先頭文字から順に比較して文字コードが最大である文字列を返します。 + - TIMESTAMP型の場合は、最も新しい日時を返します。 +- *x*の値がNULLのロウは、計算の対象外になります。 +- 結果の型は、引数*x*の型と同じです。 + +例) +```example +SELECT MAX(age) FROM employees; +結果:59 + +SELECT MAX(first_name) FROM employees; +結果:William +``` + + + +#### MIN + +| | | +|------|-------| +| 書式 | MIN( [DISTINCT \| ALL] *x*) | + +最小値を返します。 + +- 引数*x*には、任意の型の値を指定します。 + - 文字列型の場合は、先頭文字から順に比較して文字コードが最小である文字列を返します。 + - TIMESTAMP型の場合は、最も古い日時を返します。 +- *x*の値がNULLのロウは、計算の対象外になります。 +- 結果の型は、引数*x*の型と同じです。 + + +例) +```example +SELECT MIN(age) FROM employees; +結果:29 + +SELECT MIN(first_name) FROM employees; +結果:James +``` + + + +#### SUM/TOTAL + +| | | +|------|-------| +| 書式 | SUM( [DISTINCT \| ALL] *n*) | +| 書式 | TOTAL( [DISTINCT \| ALL] *n*) | + +合計値を返します。 + +- 引数*n*には、数値型の値を指定します。 +- *n*の値がNULLのロウは、計算の対象外になります。 + +- SUMとTOTALの違いは以下の通りです。 + - *n*が整数型の値のみの場合、SUMは整数(LONG型)で値を返します。TOTALは浮動小数点数(DOUBLE型)で値を返します。 + - *n*に浮動小数点数型の値が含まれる場合は、両方とも浮動小数点数(DOUBLE型)で値を返します。 + - *n*の値がNULLのみの場合、SUMはNULLを返します。TOTALは0を返します。 + +例) +```example +SELECT SUM(age) FROM employees; +結果:205 + +SELECT TOTAL(age) FROM employees; +結果:205.0 + +SELECT department, SUM(age) sum FROM employees GROUP BY department; +結果: + department sum + ------------+----- + Development 102 + Research 31 + Sales 43 + (NULL) 29 +``` + + + +#### GROUP_CONCAT + +| | | +|------|-------| +| 書式 | GROUP_CONCAT( [DISTINCT \| ALL] *x* [, *separator*] ) | + +*x*の値を連結した文字列を返します。 +*separator*は、連結するセパレータを指定します。指定しない場合は","で連結します。 + +- 引数*x*には、任意の型の値を指定します。 + - TIMESTAMP型(精度指定付きTIMESTAMP型)の場合は、'YYYY-MM-DDThh:mm:ss.SSS(Z|±hh:mm)'形式の時刻の文字列表記に変換して連結します。時刻の小数部の桁数は引数のTIMESTAMP型の精度に応じて決まります。詳細は、[TIMESTAMP_MS関数](#timestamp_ms)など、対応する精度の関数の説明を参照してください。 + - *x*の値がNULLのロウは、計算の対象外になります。 +- 結果の型はSTRING型です。 + +例) +```example +// 名前last_nameを'/'で連結します +SELECT GROUP_CONCAT(last_name, '/') from employees; +結果: Smith/Jones/Brown/Taylor/Smith + +// 部署departmentごとに、名前first_nameを連結します +SELECT department, GROUP_CONCAT(first_name) group_concat from employees GROUP BY(department); +結果: + department group_concat + -------------+-------------- + Development William,James + Research Mary + Sales John,Richard + (NULL) Lisa + +SELECT GROUP_CONCAT(age, ' + ') FROM employees; +結果:43 + 59 + 31 + 29 + 43 +``` + + + +#### STDDEV_SAMP + +| | | +|------|-------| +| 書式 | STDDEV_SAMP( [DISTINCT \| ALL] *x*) | + +標本標準偏差を返します。 + +- 引数*x*には、数値型の値を指定します。 + - 式に集計関数、WINDOW関数/OVER句を含めることはできません。 +- *x*の値がNULLのロウは、計算の対象外になります。 +- *x*が1件の場合は、NULLを返します。 +- 結果の型はDOUBLE型です。 + +例) +```example +SELECT department, STDDEV_SAMP(enrollment_period) enrollment_period_stddev from employees GROUP BY department; +結果: + department enrollment_period_stddev + -------------+-------------------------- + Development 9.121677477306465 + Research (NULL) + Sales 6.010407640085654 + (NULL) (NULL) + +``` + + + +#### STDDEV/STDDEV0 + +| | | +|------|-------| +| 書式 | STDDEV( [DISTINCT \| ALL] *x*) | +| 書式 | STDDEV0( [DISTINCT \| ALL] *x*) | + +標本標準偏差を返します。STDDEVはSTDDEV_SAMP関数の別名です。 + +- 引数*x*には、数値型の値を指定します。 + - 式に集計関数、WINDOW関数/OVER句を含めることはできません。 +- *x*の値がNULLのロウは、計算の対象外になります。 +- 結果の型はDOUBLE型です。 +- STDDEVとSTDDEV0の違いは以下の通りです。 + - STDDEVは、*x*が1件の場合に、NULLを返します。 + - STDDEV0は、*x*が1件の場合に、0を返します。 + +例) +```example +SELECT department, STDDEV(enrollment_period) enrollment_period_stddev from employees GROUP BY department; +結果: + department enrollment_period_stddev + -------------+-------------------------- + Development 9.121677477306465 + Research (NULL) + Sales 6.010407640085654 + (NULL) (NULL) + +SELECT department, STDDEV0(enrollment_period) enrollment_period_stddev from employees GROUP BY department; +結果: + department enrollment_period_stddev + -------------+-------------------------- + Development 9.121677477306465 + Research (NULL) + Sales 6.010407640085654 + (NULL) 0.0 + +SELECT STDDEV(enrollment_period) enrollment_period_stddev from employees WHERE age >= 55; +結果: + enrollment_period_stddev + -------------------------- + (NULL) + +SELECT STDDEV0(enrollment_period) enrollment_period_stddev from employees WHERE age >= 55; +結果: + enrollment_period_stddev + -------------------------- + 0.0 +``` + + + +#### STDDEV_POP + +| | | +|------|-------| +| 書式 | STDDEV_POP( [DISTINCT \| ALL] *x*) | + +母標準偏差を返します。 + +- 引数*x*には、数値型の値を指定します。 + - 式に集計関数、WINDOW関数/OVER句を含めることはできません。 +- *x*の値がNULLのロウは、計算の対象外になります。 +- 結果の型はDOUBLE型です。 + +例) +```example +SELECT department, STDDEV_POP(enrollment_period) enrollment_period_stddev from employees GROUP BY department; +結果: + department enrollment_period_stddev + -------------+-------------------------- + Development 6.450000000000002 + Research (NULL) + Sales 4.25 + (NULL) 0.0 + +``` + + + +#### VAR_SAMP + +| | | +|------|-------| +| 書式 | VAR_SAMP( [DISTINCT \| ALL] *x*) | + +標本分散を返します。 + +- 引数*x*には、数値型の値を指定します。 + - 式に集計関数、WINDOW関数/OVER句を含めることはできません。 +- *x*の値がNULLのロウは、計算の対象外になります。 +- *x*が1件の場合は、NULLを返します。 +- 結果の型はDOUBLE型です。 + +例) +```example +SELECT department, VAR_SAMP(enrollment_period) enrollment_period_variance from employees GROUP BY department; +結果: + department enrollment_period_variance + -------------+---------------------------- + Development 83.20500000000004 + Research (NULL) + Sales 36.125 + (NULL) (NULL) + +``` + + + +#### VARIANCE/VARIANCE0 + +| | | +|------|-------| +| 書式 | VARIANCE( [DISTINCT \| ALL] *x*) | +| 書式 | VARIANCE0( [DISTINCT \| ALL] *x*) | + +標本分散を返します。VARIANCEはVAR_SAMP関数の別名です。 + +- 引数*x*には、数値型の値を指定します。 + - 式に集計関数、WINDOW関数/OVER句を含めることはできません。 +- *x*の値がNULLのロウは、計算の対象外になります。 +- 結果の型はDOUBLE型です。 +- VARIANCEとVARIANCE0の違いは以下の通りです。 + - VARIANCEは*x*が1件の場合に、NULLを返します。 + - VARIANCE0は*x*が1件の場合に、0を返します。 + +例) +```example +SELECT department, VARIANCE(enrollment_period) enrollment_period_variance from employees GROUP BY department; +結果: + department enrollment_period_variance + -------------+---------------------------- + Development 83.20500000000004 + Research (NULL) + Sales 36.125 + (NULL) (NULL) + +SELECT department, VARIANCE0(enrollment_period) enrollment_period_variance from employees GROUP BY department; +結果: + department enrollment_period_variance + -------------+---------------------------- + Development 83.20500000000004 + Research (NULL) + Sales 36.125 + (NULL) 0.0 + +SELECT VARIANCE(enrollment_period) enrollment_period_variance from employees WHERE age >= 55; +結果: + enrollment_period_variance + ---------------------------- + (NULL) + +SELECT VARIANCE0(enrollment_period) enrollment_period_variance from employees WHERE age >= 55; +結果: + enrollment_period_variance + ---------------------------- + 0.0 +``` + + +#### VAR_POP + +| | | +|------|-------| +| 書式 | VAR_POP( [DISTINCT \| ALL] *x*) | + +母分散を返します。 + +- 引数*x*には、数値型の値を指定します。 + - 式に集計関数、WINDOW関数/OVER句を含めることはできません。 +- *x*の値がNULLのロウは、計算の対象外になります。 +- 結果の型はDOUBLE型です。 + +例) +```example +SELECT department, VAR_POP(enrollment_period) enrollment_period_variance from employees GROUP BY department; +結果: + department enrollment_period_variance + -------------+---------------------------- + Development 41.60250000000002 + Research (NULL) + Sales 18.0625 + (NULL) 0.0 + +``` + + + +#### MEDIAN + +| | | +|------|-------| +| 書式 | MEDIAN(*n*) | + +*n*の中央値を返します。計算対象のロウ数が偶数の場合は、中央に近い2つのロウの平均値を返します。 + +- 引数*n*には、数値型の値を指定します。 + - サブクエリは指定できません。 +- *n*の値がNULLのロウは、計算の対象外になります。 +- 結果の型は、*n*が整数のみの場合はLONG型、浮動小数点数の場合はDOUBLE型です。 +- 同一SELECT句内でのWINDOW関数/OVER句の複数利用や、WINDOW関数/OVER句とMEDIAN関数の同時利用はできません。 + +例) +```example +SELECT MEDIAN(age) FROM employees; +結果:43 + +SELECT department, MEDIAN(age) mn FROM employees GROUP BY department ORDER BY mn DESC; +結果: + department mn + ------------+----- + Development 51 + Sales 43 + Research 31 + (NULL) 29 +``` + + +#### PERCENTILE_CONT + +| | | +|------|-------| +| 書式 | PERCENTILE_CONT(*percentile*) WITHIN GROUP ( ORDER BY *sort_key* ) | + +*sort_key*で指定されたソート順序での連続分布モデルに基づく、*percentile*で指定のパーセンタイルに対応する値を求めます。 + +- *percentile*には、0以上1以下のDOUBLE定数を指定できます。 +- *sort_key*に存在するNULL値は、集計対象外となります。 +- 集計対象が1つも存在しない場合のみ、NULLが求められます。 +- 同一SELECT句内でのWINDOW関数/OVER句、MEDIAN関数、他のPERCENTILE_CONTとは同時には利用はできません。 + +例) +```example +SELECT PERCENTILE_CONT(0.25) WITHIN GROUP( ORDER BY age ) FROM employees; +結果:18 + +``` + + +### 算術関数 + +#### ABS + +| | | +|------|-------| +| 書式 | ABS(*n*) | + +*n*の絶対値を返します。正の数はそのままの値、負の数は-1を掛けた値を返します。 + +- 引数*n*には、数値型の値を指定します。 +- 値がNULLの場合は、NULLを返します。 +- 値が-263の整数の場合は、オーバフローエラーになります。 +- 結果の型は、*n*が整数のみの場合はLONG型、浮動小数点数の場合はDOUBLE型です。 + +例) +```example +SELECT first_name, ABS(age) abs FROM employees; +結果: + first_name abs + ------------+------- + John 43 + William 59 + Richard (NULL) + Mary 31 + Lisa 29 + James 43 +``` + + + +#### ROUND + +| | | +|------|-------| +| 書式 | ROUND(*n* [, *m*]) | + +四捨五入します。*n*の値を、小数点以下*m*桁で四捨五入した値を返します。 + +- 引数*n*には、数値型のカラムを指定します。 +- 引数*m*には、0以上の整数を指定します。省略した場合、*m*は0になります。 +- 値がNULLの場合は、NULLを返します。 +- 結果の型は、*n*が整数のみの場合はLONG型、浮動小数点数の場合はDOUBLE型です。 + +例) +```example +SELECT first_name, ROUND(enrollment_period, 0) round FROM employees; +結果: + first_name round + ------------+------- + John 16.0 + William 23.0 + Richard 7.0 + Mary (NULL) + Lisa 5.0 + James 10.0 +``` + + + +#### RANDOM + +| | | +|------|-------| +| 書式 | RANDOM() | + +乱数を返します。乱数は、-263から263-1までの範囲の整数です。 + +- 結果の型はLONG型です。 + +例) +```example +SELECT first_name, RANDOM() random FROM employees; +結果: + first_name random + ------------+---------------------- + John -3382931580741820003 + William -7362300487836647182 + Richard 8834368641333737477 + Mary -8544493602797564288 + Lisa -7727163797274657674 + James 6751560427268247384 +``` + + + + +#### MAX/MIN + +| | | +|------|-------| +| 書式 | MAX(*x1*, *x2* [,...]) | + +値*xN*の中で、最大の値を返します。 + +| | | +|------|-------| +| 書式 | MIN(*x1*, *x2* [,...]) | + +値*xN*の中で、最小の値を返します。 + + +例) +```example +SELECT first_name, age, enrollment_period, MAX(age, enrollment_period) max FROM employees; +結果: + first_name age enrollment_period max + ------------+-------+------------------+-------- + John 43 15.5 43.0 + William 59 23.2 59.0 + Richard (NULL) 7.0 (NULL) + Mary 31 (NULL) (NULL) + Lisa 29 4.9 29.0 + James 43 10.3 43.0 +``` + + +#### LOG + +| | | +| --- | ------------- | +| 書式 | LOG(*n*, *m*) | + +*n*を底とした*m*の対数を返します。 + +- 引数*n*には、0より大きく1以外の数値型の値を指定します。 +- 引数*m*には、0より大きい数値型の値を指定します。 +- 値がNULLの場合は、NULLを返します。 +- 結果の型は、DOUBLE型です。 + +例) + +```example +SELECT LOG(2, 8); +結果:3.0 + +SELECT LOG(0.5, 2.0); +結果:-1.0 +``` + + +#### SQRT + +| | | +| --- | --------- | +| 書式 | SQRT(*n*) | + +*n*の正の平方根を返します。 + +- 引数*n*には、0以上の数値型の値を指定します。 +- 値がNULLの場合は、NULLを返します。 +- 結果の型はDOUBLE型です。 + +例) + +```example +SELECT SQRT(4); +結果:2.0 + +SELECT SQRT(16.0); +結果:4.0 +``` + + +#### TRUNC + +| | | +| --- | -------------------------------------------------- | +| 書式 | TRUNC(*n* [,*m*]) | + +*m>=0*の場合、*n*の値の小数点*m*桁未満を切り捨てた値を返します。 + +*m<0*の場合、*n*の値の整数-*m*桁以下を切り捨てた値を返します。 + +- 引数*n*には、数値型の値を指定します。 +- 引数*m*には、整数を指定します。省略した場合、*m*は0になります。309以上、もしくは-308以下の値を与えることはできません。 +- 値がNULLの場合は、NULLを返します。 +- 結果の型は、引数nに整数が指定された場合はLONG型、小数が指定された場合はDOUBLE型です。 + +例) + +```example +SELECT TRUNC(123.4567); +結果:123.0 + +SELECT TRUNC(123.4567, 2); +結果:123.45 + +SELECT TRUNC(123.4567, -1); +結果:120.0 + +SELECT TRUNC(123.4567, -3); +結果:0.0 + +SELECT TRUNC(1234567, -2); +結果:1234500 +``` + + +#### HEX_TO_DEC + +| | | +| --- | ------------- | +| 書式 | HEX_TO_DEC(*str*) | + +16進数文字列*str*を10進数の数値型に変換します。 + +- 引数*str*には、16進数変換できる文字列型の値(0-9, a-f, A-F)を指定します。 +- 値がNULLの場合は、NULLを返します。 +- 結果の型はLONG型です。 + +例) +```example +SELECT HEX_TO_DEC('FF'); +結果:255 + +SELECT HEX_TO_DEC('10'); +結果:16 +``` + +### 文字関数 + + +#### LENGTH + +| | | +|------|-------| +| 書式 | LENGTH(*str*) | + +文字列*str*の長さを返します。 + +- 引数*str*には、文字列型の値を指定します。 + - 文字列型はUnicodeコードポイントを文字とします。 +- 値がNULLの場合は、NULLを返します。 +- 結果の型はLONG型です。 +- 引数にはBLOB型を指定することも可能です。 + +例) +```example +SELECT last_name, LENGTH(last_name) length FROM employees; +結果: + last_name length + ------------+---------------------- + Smith 5 + Jones 5 + Brown 5 + Taylor 6 + (NULL) (NULL) + Smith 5 +``` + + + +#### LOWER + +| | | +|------|-------| +| 書式 | LOWER(*str*) | + +文字列*str*のアルファベットをすべて小文字に変換します。 + +- 引数*str*には、文字列型の値を指定します。 +- 値がNULLの場合は、NULLを返します。 +- 結果の型は文字列型です。 +- ASCII英字相当以外のUnicode文字は変換対象外です。 + +例) +```example +SELECT last_name, LOWER(last_name) lower FROM employees; +結果: + last_name lower + ------------+---------------------- + Smith smith + Jones jones + Brown brown + Taylor taylor + (NULL) (NULL) + Smith smith +``` + + + +#### UPPER + +| | | +|------|-------| +| 書式 | UPPER(*str*) | + +文字列*str*のアルファベットをすべて大文字に変換します。 + +- 引数*str*には、文字列型の値を指定します。 +- 値がNULLの場合は、NULLを返します。 +- 結果の型は文字列型です。 +- ASCII英字相当以外のUnicode文字(キリル文字など)は変換対象外です。 + +例) +```example +SELECT last_name, UPPER(last_name) upper FROM employees; +結果: + last_name upper + ------------+---------------------- + Smith SMITH + Jones JONES + Brown BROWN + Taylor TAYLOR + (NULL) (NULL) + Smith SMITH +``` + + + +#### SUBSTR + +| | | +|------|-------| +| 書式 | SUBSTR(*str*, *index* [, *length*]) | + +文字列を部分的に切り出します。文字列*str*の開始位置*index*の文字から、長さ*length*の文字列を切り出して返します。 + +- 引数*str*には、文字列型の値を指定します。 +- 引数*index*には、1からの整数を指定します。文字列先頭の開始位置は1です。 +- 引数*length*を省略した場合は、文字列*str*の最後尾までを切り出します。 +- *str*の値がNULLの場合は、NULLを返します。 +- 結果の型は文字列型です。 +- 引数にはBLOB型を指定することも可能です。 + +例) +```example +SELECT SUBSTR('abcdefg', 3); +結果:cdefg + +SELECT SUBSTR('abcdefg', 3, 2); +結果:cd +``` + + + +#### REPLACE + +| | | +|------|-------| +| 書式 | REPLACE(*str*, *search_str*, *replacement_str*) | + +文字列を置換します。 +文字列*str*の中で、文字列*search_str*に一致する部分をすべて*replacement_str*に置き換えます。 + +- 引数*str*、*search_str*、*replacement_str*には、文字列型の値を指定します。 +- *str*の値がNULLの場合は、NULLを返します。 +- 結果の型は文字列型です。 + +例) +```example +SELECT REPLACE('abcdefabc', 'abc', '123'); +結果:123def123 +``` + + + +#### INSTR + +| | | +|------|-------| +| 書式 | INSTR(*str*, *search_str* \[, offset\] \[, occurrence\]) | + +文字列*str*の中から文字列*search_str*を探し、その開始位置を返します。見つからなかった場合は0を返します。 + +- 引数*str*、*search_str*には、文字列型もしくはBLOB型の値を指定します。*str*と*search_str*には同じデータ型を指定する必要があります。引数*offset*、*occurrence*には、LONG型の値を指定します。 +- 文字列型の場合はUnicodeのコードポイント単位、BLOB型の場合はバイト単位で計算します。 +- *offset*は検索開始位置を表し、正の場合は前方先頭から、負の場合は後方末尾から順に計算します。0の場合は一致なしとみなし、0を返します。 +- *occurrence*は出現回数を表し、指定の回数だけ繰り返した最後のマッチ位置を計算します。0の場合は一致なしとみなし、0を返します。 +- いずれかの引数の値がNULLの場合は、NULLを返します。 +- 結果の型はLONG型です。 + + +例) +```example +SELECT INSTR('abcdef', 'cd'); +結果:3 + +SELECT INSTR('abcdef', 'gh'); +結果:0 + +SELECT INSTR('abcabcabcde', 'ab', 2, 2); +結果:7 + +SELECT INSTR('abcabcabcde', 'ab', -1, 2); +結果:4 + +``` + + + +#### LIKE + +| | | +|------|-------| +| 書式 | LIKE(*pattern_str*, *str* [, *escape_str*]) | + +文字列を検索します。 +文字列*str*が照合パターン*pattern_str*と一致する場合はtrueを返します。一致しない場合はfalseを返します。 +照合パターンには次の2つのワイルドカードが使用できます。 + +| ワイルドカード | 意味 | +|------|-----| +| _ | 任意の1文字 | +| % | 任意の0文字以上の文字列 | + +ワイルドカードの文字_または%を含む*str*に対して、文字_または%を検索する場合には、エスケープ文字*escape_str*を指定します。 +ワイルドカードの文字の前にエスケープ文字を指定すると、ワイルドカードと解釈されなくなります。 + +- 引数*str*、*pattern_str*、*escape_str*には、文字列型の値を指定します。 +- いずれかの引数の値がNULLの場合は、NULLを返します。 +- 大文字小文字は区別しません。 +- 結果の型はBOOL型です。 + +例) +```example +SELECT last_name, LIKE('%mi%', last_name) like_name FROM employees; +結果: + last_name like_name + ------------+---------------------- + Smith true + Jones false + Brown false + Taylor false + (NULL) (NULL) + Smith true + + +SELECT LIKE('%C%E%', 'ABC%DEF'); +結果:true + +SELECT LIKE('%C@%E%', 'ABC%DEF', '@'); +結果:false + +SELECT LIKE('%C@%D%', 'ABC%DEF', '@'); +結果:true +``` + + + +#### GLOB + +| | | +|------|-------| +| 書式 | GLOB(*pattern_str*, *str*) | + +文字列を検索します。 +文字列*str*が照合パターン*pattern_str*と一致する場合はtrueを返します。一致しない場合はfalseを返します。 +照合パターンにはワイルドカードが使用できます。 + +| ワイルドカード | 意味 | +|------|-----| +| ? | 任意の1文字 | +| * | 任意の0文字以上の文字列 | +| [abc] | 文字a、bまたはcのいずれかに一致 | +| [a-e] | 文字aからeまでのいずれかに一致 | + +- 引数*str*、*pattern_str*には、文字列型の値を指定します。 +- いずれかの引数の値がNULLの場合は、NULLを返します。 +- 大文字小文字は区別します。 +- 結果の型はBOOL型です。 + +例) +```example +SELECT GLOB('*[BA]AB?D', 'AABCD'); +結果:true +``` + + + +#### TRIM + +| | | +|------|-------| +| 書式 | TRIM(*str* [, *trim_str*]) | + +文字列*str*の両端から、文字列*trim_str*のすべての文字を削除します。 + +- 引数*str*, *trim_str*には、文字列型の値を指定します。 +- 引数*trim_str*の文字列に含まれるすべての文字を削除します。省略すると、*str*の両端からスペースを削除します。 +- 結果の型は文字列型です。 + +例) +```example +SELECT TRIM(' ABC '); +結果:ABC (両端にスペース無し) + +SELECT TRIM('ABCAA', 'BA'); +結果:C +``` + + + +#### LTRIM + +| | | +|------|-------| +| 書式 | LTRIM(*str* [, *trim_str*]) | + +文字列*str*の左端から、文字列*trim_str*のすべての文字を削除します。 + +- 引数*str*, *trim_str*には、文字列型の値を指定します。 +- 引数*trim_str*の文字列に含まれるすべての文字を削除します。省略すると、*str*の左端からスペースを削除します。 +- 結果の型は文字列型です。 + +例) +```example +SELECT LTRIM(' ABC '); +結果:ABC (左端にスペース無し) + +SELECT LTRIM('ABCAA', 'A'); +結果:BCAA +``` + + + +#### RTRIM + +| | | +|------|-------| +| 書式 | RTRIM(*str* [, *trim_str*]) | + +文字列*str*の右端から、文字列*trim_str*のすべての文字を削除します。 + +- 引数*str*, *trim_str*には、文字列型の値を指定します。 +- 引数*trim_str*の文字列に含まれるすべての文字を削除します。省略すると、*str*の右端からスペースを削除します。 +- 結果の型は文字列型です。 + +例) +```example +SELECT RTRIM(' ABC '); +結果: ABC (右端にスペース無し) + +SELECT RTRIM('ABCAA', 'A'); +結果:ABC +``` + + + +#### QUOTE + +| | | +|------|-------| +| 書式 | QUOTE(*x*) | + +*x*の値をシングルクォートで囲んだ文字列を返します。 + +- 引数*x*には、文字列型、数値型、TIMESTAMP型、BLOB型の値を指定します。 + - 文字列型の場合は、文字列に含まれるシングルクォートは2つのシングルクォート''にエスケープします。 + - 数値型の場合は、そのままの数値が返ります。シングルクォートでは囲まれません。 + - TIMESTAMP型(精度指定付きTIMESTAMP型)の場合は、'YYYY-MM-DDThh:mm:ss.SSS(Z|±hh:mm)'形式の時刻の文字列表記に変換して連結します。シングルクォートでは囲まれません。時刻の小数部の桁数は引数のTIMESTAMP型の精度に応じて決まります。詳細は、[TIMESTAMP_MS関数](#timestamp_ms)など、対応する精度の関数の説明を参照してください。 + - BLOB型の場合は、X'BLOB型の値'の文字列を返します。 +- 結果の型は文字列型です。 + +例) +```example +SELECT QUOTE(last_name) last_name, QUOTE(age) age FROM employees; +結果: + last_name age + ------------+------- + 'Smith' 43 + 'Jones' 59 + 'Brown' (NULL) + 'Taylor' 31 + (NULL) 29 + 'Smith' 43 + +SELECT QUOTE(RANDOMBLOB(4)); +結果:X'A45EA28D' + +// カラムvalueの値は「Today's news」の文字列 +SELECT value, QUOTE(value) FROM testcontainer; +結果: + value QUOTE(value) + ---------------+------------------- + Today's news 'Today''s news' +``` + + + +#### UNICODE + +| | | +|------|-------| +| 書式 | UNICODE(*str*) | + +文字列*str*の最初の文字のUNICODEコードポイントを返します。 + +- 引数*str*には、文字列型の値を指定します。 +- 結果の型はLONG型です。 + +例) +```example +SELECT last_name, UNICODE(last_name) unicode FROM employees; +結果: + last_name unicode + ------------+---------------------- + Smith 83 + Jones 74 + Brown 66 + Taylor 84 + (NULL) (NULL) + Smith 83 +``` + + + +#### CHAR + +| | | +|------|-------| +| 書式 | CHAR(*x1* [, *x2*, ... , *xn*]) | + +Unicodeコードポイントの値*xn*の文字を連結した文字列を返します。 + +- 引数*xn*には、Unicodeコードポイントの値を指定します。 +- 結果の型はSTRING型です。 + +例) +```example +SELECT CHAR(83, 84, 85); +結果:STU +``` + + + +#### PRINTF + +| | | +|------|-------| +| 書式 | PRINTF(*format* [, *x1*, *x2*, ..., *xn*]) | + +指定されたフォーマット*format*に合わせて変換した文字列を返します。 +標準Cライブラリのprintf関数と同等のフォーマットが使用できます。 +それ以外のフォーマットとしては以下の2つがあります。 + +| フォーマット | 説明 | +|----|-----------------------| +| %q | 文字列中にシングルクォートがある場合、2つのシングルクォート''にエスケープします。 | +| %Q | 文字列中にシングルクォートがある場合、2つのシングルクォート''にエスケープします。
文字列の両端をシングルクォートで囲みます。 | + +例) +```example +SELECT enrollment_period, PRINTF('%.2f', enrollment_period) printf FROM employees; +結果: + enrollment_period printf + ------------------+----------- + 15.5 15.50 + 23.2 23.20 + 7.0 7.00 + (NULL) 0.00 + 4.9 4.90 + 10.3 10.30 +``` + +#### TRANSLATE +| | | +| --- | ------------------------------------------------- | +| 書式 | TRANSLATE(*str*, *search_str*, *replacement_str*) | + +文字列を置換します。文字列*str*のうち、文字列*search_str*と一致する文字が、*search_str*と同じ位置にある文字列*replacement_str*の文字で置換されます。*replacement_str*が*search_str*より短く、置換後の文字がない場合、置換対象の文字は削除されます。 + +- 引数*str*、*search_str*、*replacement_str*には、文字列型の値を指定します。 +- 値がNULLの場合は、NULLを返します。 +- 結果の型は文字列型です。 + +例) + +```example +SELECT TRANSLATE('abcde', 'ace', '123'); +結果:1b2d3 + +SELECT TRANSLATE('abcdeca', 'ace', '123'); +結果:1b2d321 + +SELECT TRANSLATE('abcde', 'ac', '123'); +結果:1b2de + +SELECT TRANSLATE('abcde', 'ace', '12'); +結果:1b2d + +SELECT TRANSLATE('abcde', 'AB', '123'); +結果:abcde + +SELECT TRANSLATE('abcde', 'abc', ''); +結果:de +``` + + +### 日時関数 + +#### NOW + +| | | +|------|-------| +| 書式 | NOW() | + +現在時刻の値を返します。 + +- 接続時にタイムゾーンが指定されている場合、オフセット計算された値が返ります。 +- 結果の型はTIMESTAMP型(ミリ秒精度)です。 + +例) +```example +SELECT NOW(); +結果:2019-09-17T04:07:31.825Z + +SELECT NOW(); +結果:2019-09-17T13:09:20.918+09:00 +``` + +#### TIMESTAMP + +| | | +|------|-------| +| 書式 | TIMESTAMP(*timestamp_string* [, timezone]) | + +時刻の文字列表現*timestamp_string*の値を、TIMESTAMP型(ミリ秒精度)に変換します。 +次のTIMESTAMP_MSと同等の関数です。詳細についてはTIMESTAMP_MSを参照してください。 + +#### TIMESTAMP_MS + +| | | +|------|-------| +| 書式 | TIMESTAMP_MS(*timestamp_string* [, timezone]) | + +時刻の文字列表現*timestamp_string*の値を、ミリ秒精度のTIMESTAMP(3)型に変換します。 + +- 引数*timestamp_string*には、時刻の文字列表現として、次の形式の文字列を指定します。 + - YYYY-MM-DDThh:mm:ssZ + - YYYY-MM-DDThh:mm:ss.SSSZ + - YYYY-MM-DD + - hh:mm:ss + + | 表記 | 内容 | 値の範囲 | + |------|----------|------------| + | YYYY | 年(西暦) | 1970~ | + | MM | 月    | 1~12 | + | DD | 日    | 1~31 | + | hh | 時間(24時間表記)    | 0~23 | + | mm | 分    | 0~59 | + | ss | 秒    | 0~59 | + | SSS | ミリ秒  | 0~999 | + | Z | タイムゾーン | Z\|±hh:mm\|±hhmm | + +- 引数*timezone*には、タイムゾーン(Z|±hh:mm|±hhmm)を指定します。*timestamp_string*にタイムゾーン情報が含まれる場合は指定する必要はありません。指定して矛盾がある場合はエラーが返ります。 +- 接続時にタイムゾーンが指定されている場合、オフセット計算された値が返ります。 +- 結果の型はミリ秒精度のTIMESTAMP(3)型です。 +- TIMESTAMP_MS関数の逆変換(ミリ秒精度のTIMESTAMP(3)型から文字列型への変換)は、[CAST](#cast)を用いてください。 + + CAST(*timestamp* AS STRING) + +例) +```example +// カラムdate(TIMESTAMP型)の値が、時刻'2018-12-01T10:30:00Z'より新しいロウを検索します +SELECT * FROM timeseries WHERE date > TIMESTAMP('2018-12-01T10:30:00Z'); +``` + + +#### TIMESTAMP_US + +| | | +|------|-------| +| 書式 | TIMESTAMP_US(*timestamp_string* [, timezone]) | + +時刻の文字列表現*timestamp_string*の値を、マイクロ秒精度のTIMESTAMP(6)型に変換します。 + +- 引数*timestamp_string*には、時刻の文字列表現として、次の形式の文字列を指定します。 + - YYYY-MM-DDThh:mm:ssZ + - YYYY-MM-DDThh:mm:ss.SSSZ + - YYYY-MM-DDThh:mm:ss.SSSSSSZ + - YYYY-MM-DD + - hh:mm:ss + + | 表記 | 内容 | 値の範囲 | + |------|----------|------------| + | YYYY | 年(西暦) | 1970~ | + | MM | 月    | 1~12 | + | DD | 日    | 1~31 | + | hh | 時間(24時間表記)    | 0~23 | + | mm | 分    | 0~59 | + | ss | 秒    | 0~59 | + | SSSSSS | マイクロ秒  | 0~999999 | + | Z | タイムゾーン | Z\|±hh:mm\|±hhmm | + +- 引数*timezone*には、タイムゾーン(Z|±hh:mm|±hhmm)を指定します。*timestamp_string*にタイムゾーン情報が含まれる場合は指定する必要はありません。指定して矛盾がある場合はエラーが返ります。 +- 接続時にタイムゾーンが指定されている場合、オフセット計算された値が返ります。 +- 結果の型はマイクロ秒精度のTIMESTAMP(6)型です。 +- TIMESTAMP_US関数の逆変換(マイクロ秒精度のTIMESTAMP(6)型から文字列型への変換)は、[CAST](#cast)を用いてください。 + + CAST(*timestamp* AS STRING) + + +#### TIMESTAMP_NS + +| | | +|------|-------| +| 書式 | TIMESTAMP_NS(*timestamp_string* [, timezone]) | + +時刻の文字列表現*timestamp_string*の値を、ナノ秒精度のTIMESTAMP(9)型に変換します。 + +- 引数*timestamp_string*には、時刻の文字列表現として、次の形式の文字列を指定します。 + - YYYY-MM-DDThh:mm:ssZ + - YYYY-MM-DDThh:mm:ss.SSSZ + - YYYY-MM-DDThh:mm:ss.SSSSSSZ + - YYYY-MM-DDThh:mm:ss.SSSSSSSSSZ + - YYYY-MM-DD + - hh:mm:ss + + + | 表記 | 内容 | 値の範囲 | + |------|----------|------------| + | YYYY | 年(西暦) | 1970~ | + | MM | 月    | 1~12 | + | DD | 日    | 1~31 | + | hh | 時間(24時間表記)    | 0~23 | + | mm | 分    | 0~59 | + | ss | 秒    | 0~59 | + | SSSSSSSSS | ナノ秒  | 0~999999999 | + | Z | タイムゾーン | Z\|±hh:mm\|±hhmm | + +- 引数*timezone*には、タイムゾーン(Z|±hh:mm|±hhmm)を指定します。*timestamp_string*にタイムゾーン情報が含まれる場合は指定する必要はありません。指定して矛盾がある場合はエラーが返ります。 +- 接続時にタイムゾーンが指定されている場合、オフセット計算された値が返ります。 +- 結果の型はナノ秒精度のTIMESTAMP(9)型です。 +- TIMESTAMP_NS関数の逆変換(ナノ秒精度のTIMESTAMP(9)型から文字列型への変換)は、[CAST](#cast)を用いてください。 + + CAST(*timestamp* AS STRING) + + +#### TIMESTAMP_ADD + +| | | +|------|-------| +| 書式 | TIMESTAMP_ADD(*time_unit*, *timestamp*, *duration* [, timezone]) + +時刻*timestamp*に、期間*duration*(単位*time_unit*)を加算した値を返します。 + +- 引数*timestamp*には、TIMESTAMP型の値を指定します。また、精度値指定付きTIMESTAMP型も指定できます。 +- 引数*duration*には、整数を指定します。負の数を指定した場合は、時刻を減算します。 + - ナノ秒精度の場合、約292年(2^63ナノ秒)以上の日時間隔は指定できません。 +- 引数*time_unit*には、次のいずれかの識別子を指定します。 + - YEAR | MONTH | DAY | HOUR | MINUTE | SECOND | MILLISECOND | MICROSECOND | NANOSECOND +- 引数*timezone*には、タイムゾーン(Z|±hh:mm|±hhmm)を指定します。 +- 年もしくは月の加算によって算出された月に同一日が存在しない場合、日はその月の最終日に丸められます。例えば5月31日に1月加算すると、6月31日は存在しないため6月30日に丸められます。 +- 接続時にタイムゾーンが指定されている場合、オフセット計算された値が返ります。 +- 結果の型はTIMESTAMP型です。 +- 関数の別名としてTIMESTAMPADDも利用可能です。 + +例) +```example +// 時刻'2018-12-01T11:22:33.444Z'に10日間を加算します +SELECT TIMESTAMP_ADD(DAY, TIMESTAMP('2018-12-01T11:22:33.444Z'), 10); +結果:2018-12-11T11:22:33.444Z + +SELECT TIMESTAMP_ADD(MONTH, TIMESTAMP('2019-05-31T01:23:45.678Z'), 1); +結果:2019-06-30T01:23:45.678Z + +SELECT TIMESTAMP_ADD(MONTH, TIMESTAMP('2019-05-31T01:23:45.678Z'), 1, '-02:00'); +結果:2019-07-01T01:23:45.678Z + +``` + + +#### TIMESTAMP_DIFF + +| | | +|------|-------| +| 書式 | TIMESTAMP_DIFF(*time_unit*, *timestamp1*, *timestamp2* [, timezone]) + +時刻*timestamp1*と*timestamp2*の差分の時間(*timestamp1*-*timestamp2*)を、時間単位*time_unit*で表した値で返します。 +差分を時間単位で表す際に、小数点以下は切り捨てます。 + +- 引数*timestamp1*と*timestamp2*には、TIMESTAMP型の値を指定します。また、精度値指定付きTIMESTAMP型も指定できます。 +- 引数*time_unit*には、次のいずれかの識別子を指定します。識別子で指定の単位のみの差分を計算するのではなく、識別子未満の単位も計算に利用されます。例えばMONTH指定で2019/09/30と2019/10/02を比較する場合、0ヶ月2日が差分となるため、出力は1ではなく0となります。 + - YEAR | MONTH | DAY | HOUR | MINUTE | SECOND | MILLISECOND | MICROSECOND | NANOSECOND + - 時間単位*time_unit*としてナノ秒単位の精度を指定した場合、計算結果が約292年(2^63ナノ秒)を超えると関数実行時にエラーが発生します。 +- 引数*timezone*には、タイムゾーン(Z|±hh:mm|±hhmm)を指定します。 +- 接続時にタイムゾーンが指定されている場合、オフセット計算された値が差分計算に利用されます。 +- 結果の型はLONG型です。 +- 関数の別名としてTIMESTAMPDIFFも利用可能です。 + +例) +```example + +// 時間単位:月 +SELECT TIMESTAMP_DIFF(MONTH, TIMESTAMP('2018-12-11T10:30:15.555Z'), TIMESTAMP('2018-12-01T10:00:00.000Z')); +結果:0 + +// 時間単位:日 +SELECT TIMESTAMP_DIFF(DAY, TIMESTAMP('2018-12-11T10:30:15.555Z'), TIMESTAMP('2018-12-01T10:00:00.000Z')); +結果:10 +SELECT TIMESTAMP_DIFF(DAY, TIMESTAMP('2018-12-01T11:00:00.000Z'), TIMESTAMP('2018-12-11T10:30:15.555Z')); +結果:-9 + +// 時間単位:時間 +SELECT TIMESTAMP_DIFF(HOUR, TIMESTAMP('2018-12-11T10:30:15.555Z'), TIMESTAMP('2018-12-01T10:00:00.000Z')); +結果:240 + +// 時間単位:分 +SELECT TIMESTAMP_DIFF(MINUTE, TIMESTAMP('2018-12-11T10:30:15.555Z'), TIMESTAMP('2018-12-01T10:00:00.000Z')); +結果:14430 + +// タイムゾーンによって結果が変わる例を示します。 +SELECT TIMESTAMP_DIFF(MONTH, MAKE_TIMESTAMP(2019, 8, 1), MAKE_TIMESTAMP(2019, 6, 30), 'Z'); +結果:2 + +SELECT TIMESTAMP_DIFF(MONTH, MAKE_TIMESTAMP(2019, 8, 1), MAKE_TIMESTAMP(2019, 6, 30), '-01:00'); +結果:1 + +``` + +#### TO_TIMESTAMP_MS + +| | | +|------|-------| +| 書式 | TO_TIMESTAMP_MS(*milliseconds*) | + +時刻'1970-01-01T00:00:00.000Z'に、引数millisecondsの値をミリ秒として加算した時刻を返します。 + +この関数は、TO_EPOCH_MS関数の逆変換です。 + +- 引数*milliseconds*には、整数を指定します。 +- 接続時にタイムゾーンが指定されている場合、オフセット計算された値が返ります。 +- 結果の型はTIMESTAMP型です。 + +例) +```example +SELECT TO_TIMESTAMP_MS(1609459199999); +結果:2020-12-31T23:59:59.999Z +``` + + + +#### TO_EPOCH_MS + +| | | +|------|-------| +| 書式 | TO_EPOCH_MS(*timestamp*) | + +時刻'1970-01-01T00:00:00.000Z'から時刻*timestamp*までの経過時間(ミリ秒)を返します。 + +この関数は、TO_TIMESTAMP_MS関数の逆変換です。 + +- 引数*timestamp*には、TIMESTAMP型の値を指定します。精度指定付きTIMESTAMP型の値も指定可能です。 +- 結果の型はLONG型です。 + +例) +```example +SELECT TO_EPOCH_MS(TIMESTAMP('2020-12-31T23:59:59.999Z')); +結果:1609459199999 + +SELECT TO_EPOCH_MS(TIMESTAMP('2020-12-31T23:59:59.999+09:00')); +結果:1609426799999 +``` + +【メモ】 +- マイクロ秒、ナノ秒精度のTIMESTAMP型の値を指定した場合も、求められる値はミリ秒精度になります。 + + +#### EXTRACT + +| | | +|------|-------| +| 書式 | EXTRACT(*time_field*, *timestamp* [, timezone]) | + +時刻*timestamp*から、日時フィールド*time_field*の値を取り出します。時刻はUTCの値になります。 + +- 引数*timestamp*には、TIMESTAMP型の値を指定します。また、精度値指定付きTIMESTAMP型も指定できます。 +- 引数*time_field*には、次の値のいずれかを指定します。 + - YEAR | MONTH | DAY | HOUR | MINUTE | SECOND | MILLISECOND | MICROSECOND | NANOSECOND | DAY_OF_WEEK | DAY_OF_YEAR + - DAY_OF_WEEKは日曜が始点で0、土曜が終点で6となります。 + - DAY_OF_YEARは1月1日が始点で1、12月31日が終点で365または366となります。 + - MILLISECOND,MICROSECOND,NANOSECONDを指定した場合、いずれも時刻の小数部全てを含む値になります。 +- 引数*timezone*には、タイムゾーン(Z|±hh:mm|±hhmm)を指定します。 +- 接続時にタイムゾーンが指定されている場合、オフセット計算された値が返ります。引数*timezone*と両方で指定されている場合は引数で指定したものが利用されます。 +- 結果の型はLONG型です。 + + +例) +```example +// 時刻'2018-12-01T10:30:02.392Z'の年、日、ミリ秒の値を求めます + +// 年の値 +SELECT EXTRACT(YEAR, TIMESTAMP('2018-12-01T10:30:02.392Z')); +結果:2018 + +SELECT EXTRACT(DAY, TIMESTAMP('2018-12-01T10:30:02.392Z')); +// 日の値 +結果:1 + +// ミリ秒の値 +SELECT EXTRACT(MILLISECOND, TIMESTAMP('2018-12-01T10:30:02.392Z')); +結果:392 + + +// タイムゾーンを考慮します。 +SELECT EXTRACT(HOUR, TIMESTAMP('2018-12-01T10:30:02.392Z'), '+09:00'); +結果:19 +``` + +#### STRFTIME + +| | | +|------|-------| +| 書式 | STRFTIME(*format*, *timestamp* \[, *modifier*,...\]) + +指定されたフォーマットに合わせて時刻を文字列に変換して返します。 + +- 引数*format*には、下記を指定して時刻情報を取り出します。 + +| フォーマット | 説明 | +|----|-----------------------| +| %Y | 年をYYYY形式で取り出します。 | +| %m | 月をMM形式で取り出します。 | +| %d | 日をDD形式で取り出します。 | +| %H | 時をhh形式で取り出します。 | +| %M | 分をmm形式で取り出します。 | +| %S | 秒をss形式で取り出します。 | +| %3f| 小数部をミリ秒精度のSSS形式で取り出します。 | +| %6f| 小数部をマイクロ秒精度のSSSSSS形式で取り出します。 | +| %9f| 小数部をナノ秒精度のSSSSSSSSS形式で取り出します。 | +| %z | タイムゾーンを±hh:mm形式で取り出します。 | +| %w | 曜日をD形式(0~6)で取り出します。日曜日が起点で0、土曜日が終点で6となります。 | +| %W | その年の初めから何週目かをDD形式(00~53)で取り出します。最初の月曜日を1週目とし、それ以前の曜日は0週目とみなします。 | +| %j | 1月1日を起点とした日数をDDD形式(001~366)で取り出します。 | +| %c | 時刻をYYYY-MM-DDThh:mm:ss[.SSS]\(Z|±hh:mm|±hhmm)形式で取り出します。 | +| %% | %を文字として出力します。 | + +- 引数*timestamp*には、TIMESTAMP型の値を指定します。また、精度値指定付きTIMESTAMP型も指定できます。 +- 引数*modifier*には、タイムゾーン(Z|±hh:mm|±hhmm)を指定します。 +- 結果の型はSTRING型です。 + +例) +```example + +SELECT STRFTIME('%c', TIMESTAMP('2019-06-19T14:15:01.123Z')); +結果:2019-06-19T14:15:01.123Z + +SELECT STRFTIME('%H:%M:%S%z', TIMESTAMP('2019-06-19T14:15:01.123Z'), '+09:00'); +結果:23:15:01+09:00 + +SELECT STRFTIME('%W', TIMESTAMP('2019-01-19T14:15:01.123Z')); +結果:02 +``` + +#### MAKE_TIMESTAMP + +| | | +|------|-------| +| 書式 | MAKE_TIMESTAMP(year, month, day [, timezone])
MAKE_TIMESTAMP(year, month, day, hour, min, sec [, timezone])| + +TIMESTAMP型の値を生成して返します。 + +- 引数*hour*, *min*, *sec*を指定しない場合は、全て0を指定したものとみなします。 +- 引数*sec*には、ミリ秒単位の指定が可能です。ミリ秒未満は四捨五入した値に丸められますが、浮動小数点演算の仕組みに基づく誤差が生じる可能性があります。 +- 引数*timezone*には、タイムゾーン(Z|±hh:mm|±hhmm)を指定します。省略時は、クライアント接続設定のタイムゾーンに従います(デフォルト:UTC)。 +- 結果の型はTIMESTAMP型(ミリ秒精度)です。 + +例) +```example + +SELECT MAKE_TIMESTAMP(2019, 9, 19); +結果:2019-09-19T00:00:00.000Z + +SELECT MAKE_TIMESTAMP(2019, 9, 19, 10, 30, 15.123, '+09:00'); +結果:2019-09-19T01:30:15.123Z + +``` + +#### MAKE_TIMESTAMP_MS + +| | | +|------|-------| +| 書式 | MAKE_TIMESTAMP_MS(year, month, day, sec, fraction [, timezone])| + +ミリ秒精度のTIMESTAMP(3)型の値を生成して返します。 + +- 引数*fraction*には、秒単位未満の小数部のフィールド値を指定します。指定可能な値の範囲は0~999です。 +- 引数*timezone*には、タイムゾーン(Z|±hh:mm|±hhmm)を指定します。省略時は、クライアント接続設定のタイムゾーンに従います(デフォルト:UTC)。 +- 結果の型はミリ秒精度のTIMESTAMP(3)型です。 + +#### MAKE_TIMESTAMP_US + +| | | +|------|-------| +| 書式 | MAKE_TIMESTAMP_US(year, month, day, sec, fraction [, timezone])| + +マイクロ秒精度のTIMESTAMP(6)型の値を生成して返します。 + +- 引数*fraction*には、秒単位未満の小数部のフィールド値を指定します。指定可能な値の範囲は0~999,999です。 +- 引数*timezone*には、タイムゾーン(Z|±hh:mm|±hhmm)を指定します。省略時は、クライアント接続設定のタイムゾーンに従います(デフォルト:UTC)。 +- 結果の型はマイクロ秒精度のTIMESTAMP(6)型です。 + +#### MAKE_TIMESTAMP_NS + +| | | +|------|-------| +| 書式 | MAKE_TIMESTAMP_NS(year, month, day, sec, fraction [, timezone])| + +ナノ秒精度のTIMESTAMP(9)型の値を生成して返します。 + +- 引数*fraction*には、秒単位未満の小数部のフィールド値を指定します。指定可能な値の範囲は0~999,999,999です。 +- 引数*timezone*には、タイムゾーン(Z|±hh:mm|±hhmm)を指定します。省略時は、クライアント接続設定のタイムゾーンに従います(デフォルト:UTC)。 +- 結果の型はナノ秒精度のTIMESTAMP(9)型です。 + +#### TIMESTAMP_TRUNC + +| | | +|------|-------| +| 書式 | TIMESTAMP_TRUNC(field, timestamp [, timezone])| + +時刻情報を切り捨てます。 + +- 引数*field*には、次のいずれかの識別子を指定します。 + - YEAR | MONTH | DAY | HOUR | MINUTE | SECOND | MILLISECOND | MICROSECOND | NANOSECOND +- 引数*timestamp*には、TIMESTAMP型の値を指定します。また、精度値指定付きTIMESTAMP型も指定できます。 +- 引数*timezone*には、タイムゾーン(Z|±hh:mm|±hhmm)を指定します。 + +例) +```example + +SELECT TIMESTAMP_TRUNC(HOUR, MAKE_TIMESTAMP(2019, 9, 19, 10, 30, 15.123)); +結果:2019-09-19T10:00:00.000Z + +SELECT TIMESTAMP_TRUNC(DAY, MAKE_TIMESTAMP(2019, 5, 15), '-01:00'); +結果:2019-05-14T01:00:00.000Z + +``` + + + +### WINDOW関数 + +- WINDOW関数はOVER句と共に利用します。詳細は[OVER句](#over)を参照ください。 + +#### ROW_NUMBER + +| | | +|------|-------| +| 書式 | ROW_NUMBER() | + +結果のロウに対して、一意となる連番値を割り振ります。 + +- OVER句と共に利用します。詳細は[OVER句](#over)を参照してください。 + +例) +```example +SELECT ROW_NUMBER() OVER(PARTITION BY department ORDER BY age) no, first_name, age, department FROM employees; +結果: + no first_name age department + ----+------------+--------+------------- + 1 James 43 Development + 2 William 59 Development + 1 Mary 31 Research + 1 John 43 Sales + 2 Richard (NULL) Sales + 1 Lisa 29 (NULL) +``` + +#### LAG + +| | | +|------|-------| +| 書式 | 書式 LAG( x [, offset [, default ] ] ) | + +現在行よりも、*offset*行数分、前方の*x*を返します。 + +- 引数*x*には、任意の型の値を指定します。 +- 引数*offset*には、LONG型の値を指定します。 + 0は現在位置、正の数は前方位置、負の数は後方位置の行を表します。 + 指定を省略した場合、*offset*は1になります。 +- 引数*default*には、任意の型の値を指定します。 + 該当行が存在しない場合に*default*が返却されます。 + 指定を省略した場合、*default*はNULLになります。 +- 結果の型は引数*x*、もしくは*default*の型と同じです。 +- 引数*x*、*default*には、同じ型の値を指定します。ただし、異なる型でも指定できる場合があります。型の組み合わせは[CASE](#case)を参照してください。 + +例) +```example +SELECT id, date, empId, amount, LAG(amount) OVER(PARTITION BY empID ORDER BY id) as lag_amount FROM travelexpenses; +結果: + id date empId amount lag_amount +-----+------------+-------+--------+------------ + 101 2020/02/01 0 200 (NULL) + 104 2020/02/04 0 200 200 + 105 2020/02/05 0 150 200 + 102 2020/02/03 2 2500 (NULL) + 103 2020/02/03 3 60 (NULL) + 106 2020/02/06 3 80 60 +``` + +#### LEAD + +| | | +|------|-------| +| 書式 | 書式 LEAD( x [, offset [, default ] ] ) | + +現在行よりも、*offset*行数分、後方の*x*を返します。 + +- 引数*x*には、任意の型の値を指定します。 +- 引数*offset*には、LONG型の値を指定します。 + 0は現在位置、正の数は後方位置、負の数は前方位置の行を表します。 + 指定を省略した場合、*offset*は1になります。 +- 引数*default*には、任意の型の値を指定します。 + 該当行が存在しない場合に*default*が返却されます。 + 指定を省略した場合、*default*はNULLになります。 +- 結果の型は引数*x*、もしくは*default*の型と同じです。 +- 引数*x*、*default*には、同じ型の値を指定します。ただし、異なる型でも指定できる場合があります。型の組み合わせは[CASE](#case)を参照してください。 + +例) +```example +SELECT id, date, empId, amount, LEAD(amount) OVER(PARTITION BY empID ORDER BY id) as lead_amount FROM travelexpenses; +結果: + id date empId amount lead_amount +-----+------------+-------+--------+------------- + 101 2020/02/01 0 200 200 + 104 2020/02/04 0 200 150 + 105 2020/02/05 0 150 (NULL) + 102 2020/02/03 2 2500 (NULL) + 103 2020/02/03 3 60 80 + 106 2020/02/06 3 80 (NULL) +``` + + + +### その他の関数 + +#### COALESCE + +| | | +|------|-------| +| 書式 | COALESCE(*x1*, *x2* [,..., *xn*]) | + +指定された引数*xn*の中で、NULLではない最初の引数の値を返します。 + +- 引数*xn*には、同じ型の値を指定します。ただし、異なる型でも指定できる場合があります。型の組み合わせは[CASE](#case)を参照してください。 + + +- 引数の値がすべてNULLの場合は、NULLを返します。 + + +例) +```example +SELECT last_name, COALESCE(last_name, 'XXX') coalesce FROM employees; +結果: + last_name coalesce + ------------+---------------------- + Smith Smith + Jones Jones + Brown Brown + Taylor Taylor + (NULL) XXX + Smith Smith + +SELECT age, COALESCE(age, -1) coalesce FROM employees; +結果: + age coalesce + --------+----------- + 43 43 + 59 59 + (NULL) -1 + 31 31 + 29 29 + 43 43 +``` + + + +#### IFNULL + +| | | +|------|-------| +| 書式 | IFNULL(*x*, *y*) | + +指定された引数*x*と*y*のうち、NULLではない最初の引数の値を返します。IFNULL関数は、引数を2つ指定したCOALESCE関数と同等です。 + +- 引数*x*と*y*には、同じ型の値を指定します。ただし、異なる型でも指定できる場合があります。型の組み合わせは[CASE](#case)を参照してください。 +- 引数の値がすべてNULLの場合は、NULLを返します。 + +例) +```example +SELECT last_name, IFNULL(last_name, 'XXX') ifnull FROM employees; +結果: + last_name ifnull + ------------+---------------------- + Smith Smith + Jones Jones + Brown Brown + Taylor Taylor + (NULL) XXX + Smith Smith + +SELECT age, IFNULL(age, -1) ifnull FROM employees; +結果: + age coalesce + --------+----------- + 43 43 + 59 59 + (NULL) -1 + 31 31 + 29 29 + 43 43 +``` + + + +#### NULLIF + +| | | +|------|-------| +| 書式 | NULLIF(*x*, *y*) | + +指定された2つの引数が同じ値の場合はNULL、異なる場合は最初の引数を返します。 + +- 引数*x*と*y*には、同じ型の値を指定します。ただし、異なる型でも指定できる場合があります。型の組み合わせは[CASE](#case)を参照してください。 + +例) +```example +// value1とvalue2の値で、NULLIFを実行します +SELECT value1, value2, NULLIF(value1, value2) nullif FROM container_sample; +結果: + value1 value2 nullif + --------+--------+-------- + 10 10 (NULL) + 5 0 5 + (NULL) 4 (NULL) + 3 (NULL) 3 + (NULL) (NULL) (NULL) + + +// value1/value2の計算で、ゼロ除算エラーを防ぐために0をNULLに変換します +SELECT value1, value2, value1/NULLIF(value2, 0) division FROM container_sample; +結果: + value1 value2 division + --------+--------+-------- + 10 10 1 + 5 0 (NULL) + (NULL) 4 (NULL) + 3 (NULL) (NULL) + (NULL) (NULL) (NULL) +``` + + + +#### RANDOMBLOB + +| | | +|------|-------| +| 書式 | RANDOMBLOB(*size*) | + +BLOB型の値(乱数)を返します。 + +- 引数*size*は、BLOB型の値のサイズ(バイト数)を整数で指定します。 +- 結果の型はBLOB型です。 + +例)  +```example +// 10バイトのBLOB型の値(乱数)を生成します +SELECT HEX(RANDOMBLOB(10)); +結果:7C8C893C8087F07883AF +``` + + + +#### ZEROBLOB + +| | | +|------|-------| +| 書式 | ZEROBLOB(*size*) | + +BLOB型の値(0x00)を返します。 + +- 引数*size*は、BLOB型の値のサイズ(バイト数)を整数で指定します。 +- 結果の型はBLOB型です。 + +例)  +```example +// 10バイトのBLOB型の値(0x00)を生成します +SELECT HEX(ZEROBLOB(10)); +結果:00000000000000000000 +``` + + + +#### HEX + +| | | +|------|-------| +| 書式 | HEX(*x*) | + +BLOB型の値を16進表記に変換します。 +引数*x*をBLOB型の値として解釈して、16進数に変換した文字列(大文字)を返します。 + +- 引数*x*には、BLOB型、文字列型を指定します。 + - 文字列型の場合は、すべての文字のUnicodeコードポイントを16進数に変換した文字列を返します。 +- 結果の型は文字列型です。 + +例) +```example +SELECT HEX(RANDOMBLOB(2)); +結果:E18D + +SELECT first_name, HEX(first_name) hex FROM employees; +結果: + first_name hex + ------------+---------------------- + John 4A6F686E + William 57696C6C69616D + Richard 52696368617264 + Mary 4D617279 + Lisa 4C697361 + James 4A616D6573 +``` + + + +#### TYPEOF + +| | | +|------|-------| +| 書式 | TYPEOF(*x*) | + +*x*の値のデータ型を表す文字列を返します。 + +- データ型と、TYPEOF関数が返す文字列の対応を以下に示します。 + + | データ型 | TYPEOF関数が返す文字列 | + |-------------------|-----------------------| + | BOOL型 | BOOL | + | STRING型 | STRING | + | BYTE型 | BYTE | + | SHORT型 | SHORT | + | INTEGER型 | INTEGER | + | LONG型 | LONG | + | FLOAT型 | FLOAT | + | DOUBLE型 | DOUBLE | + | TIMESTAMP(3)型 | TIMESTAMP | + | TIMESTAMP(6)型 | TIMESTAMP(6) | + | TIMESTAMP(9)型 | TIMESTAMP(9) | + | GEOMETRY型 | NULL | + | BLOB型 | BLOB | + | 配列型 | NULL | + +- 結果の型は文字列型です。 +- NULL値を指定した場合は、'NULL'が返ります。 + +例) +```example +SELECT TYPEOF(ABS(-10)) abs, TYPEOF(RANDOMBLOB(10)) randomblob, + TYPEOF(TIMESTAMP('2018-12-01T10:30:02.392Z')) timestamp; +結果: + abs randomblob timestamp + ------+------------+----------- + LONG BLOB TIMESTAMP +``` + +  + +## その他構文 + +### CAST + +| | | +|------|-------| +| 書式 | CAST(*x* AS *data_type*) | + +値*x*を、データ型*data_type*に変換します。 + +- 引数*data_type*には、変換後のデータ型に応じて以下の値を指定します。 + + | 変換後のデータ型 | *data_type*に指定する値 | + |-------------------|-----------------------| + | BOOL型 | BOOL | + | STRING型 | STRING | + | BYTE型 | BYTE | + | SHORT型 | SHORT | + | INTEGER型 | INTEGER | + | LONG型 | LONG | + | FLOAT型 | FLOAT | + | DOUBLE型 | DOUBLE | + | TIMESTAMP(3)型 | TIMESTAMPまたはTIMESTAMP(3) | + | TIMESTAMP(6)型 | TIMESTAMP(6) | + | TIMESTAMP(9)型 | TIMESTAMP(9) | + | BLOB型 | BLOB | + + +#### 文字列型への変換 + +| | | +|------|-------| +| 書式 | CAST(*x* AS STRING) | + +引数*x*を、文字列型に変換します。 + +*x*に指定できる値のデータ型と、変換後の値は以下の通りです。 + +| *x*のデータ型 | 文字列型に変換した値 | +|-------------------|--------------------| +| BOOL型 | trueの場合'true'、falseの場合'false' | +| STRING型 | 元のままの値 | +| BYTE型
SHORT型
INTEGER型
LONG型
FLOAT型
DOUBLE型 | 数値を文字列に変換した値 | +| TIMESTAMP(3)型 | ミリ秒精度時刻の文字列表記'YYYY-MM-DDThh:mm:ss.SSS(Z\|±hh:mm)'
接続時のタイムゾーン設定が利用される | +| TIMESTAMP(6)型 | マイクロ秒精度時刻の文字列表記'YYYY-MM-DDThh:mm:ss.SSSSSS(Z\|±hh:mm)'
接続時のタイムゾーン設定が利用される | +| TIMESTAMP(9)型 | ナノ秒精度時刻の文字列表記'YYYY-MM-DDThh:mm:ss.SSSSSSSSS(Z\|±hh:mm)'
接続時のタイムゾーン設定が利用される | +| BLOB型 | [HEX関数](#hex)と同等の文字列 | + + +#### 数値型への変換 + +| | | +|------|-------| +| 書式 | CAST(*x* AS BYTE\|SHORT\|INTEGER\|LONG\|FLOAT\|DOUBLE) | + +引数*x*を、数値型に変換します。 + +*x*に指定できる値のデータ型と、変換後の値は以下の通りです。 + +| *x*のデータ型 | 数値型に変換した値 | +|-------------------|--------------------| +| BOOL型 | trueの場合1、falseの場合0 | +| STRING型 | 文字列の数字を数値に変換した値 | +| BYTE型
SHORT型
INTEGER型
LONG型
FLOAT型
DOUBLE型 | 数値を変換した値 | + +- 変換後の数値が、*data_type*に指定した数値型の値の範囲を超える場合は、エラーになります。 + +```example +// BYTE型の範囲(-128~127)を超える場合はエラー +SELECT CAST(128 AS BYTE); +結果:エラー + +// INTEGER型の範囲(-2147483648 ~ 2147483647)を超える場合はエラー +SELECT CAST('2147483648' AS INTEGER); +結果:エラー +``` + +- 浮動小数点数型(FLOAT型、DOUBLE型)から整数型(BYTE型、SHORT型、INTEGER型、LONG型)への変換では、値が桁落ちする場合があります。 + +```example +SELECT CAST(10.5 AS INTEGER); +結果:10 +``` + +- 文字列型から数値型への変換では、次の文字列が指定できます(大小同一視)。これら以外の文字列が指定されている場合はエラーになります。 + - 数字と記号(".","-","+")と"E"のいずれかを含む文字列 + - "Inf" (符号付きも可) + - "Infinity" (符号付きも可) + - "NaN" + +```example +SELECT CAST('abc' AS INTEGER); +結果:エラー + +SELECT CAST('-1.09E+10' AS DOUBLE); +結果:-1.09E10 +``` + + +#### 時刻型への変換 + +| | | +|------|-------| +| 書式 | CAST(*x* AS TIMESTAMP) | + +引数*x*を、時刻型に変換します。接続時にタイムゾーンを指定している場合、その値がオフセット計算に利用されます。 +精度指定付きTIMESTAMP型も指定可能です。 + +*x*に指定できる値のデータ型と、変換後の値は以下の通りです。 + +| *x*のデータ型 | 時刻型に変換した値 | +|----------------------------------------------------|-----------------------------------------------| +| STRING型(ミリ秒精度時刻の文字列表記'YYYY-MM-DDThh:mm:ss.SSS(Z\|±hh:mm)') | [TIMESTAMP_MS関数](#timestamp_ms)で変換した値と同等(精度指定によらず変換可能) | +| STRING型(マイクロ秒精度時刻の文字列表記'YYYY-MM-DDThh:mm:ss.SSSSSS(Z\|±hh:mm)') | [TIMESTAMP_US関数](#timestamp_us)で変換した値と同等(マイクロまたはナノ秒精度指定時のみ変換可能) | +| STRING型(ナノ秒精度時刻の文字列表記'YYYY-MM-DDThh:mm:ss.SSSSSSSSS(Z\|±hh:mm)') | [TIMESTAMP_NS関数](#timestamp_ns)で変換した値と同等(ナノ秒精度指定時のみ変換可能) | + +```example +SELECT CAST('2018-12-01T10:30:00Z' AS TIMESTAMP); +結果:2018-12-01T10:30:00.000Z + +SELECT CAST('2018-12-01T10:30:00+09:00' AS TIMESTAMP); +結果:2018-12-01T01:30:00.000Z +``` + + +#### BOOL型への変換 + +| | | +|------|-------| +| 書式 | CAST(*x* AS BOOL) | + +引数*x*を、BOOL型に変換します。 + +*x*に指定できる値のデータ型と、変換後の値は以下の通りです。 + +| *x*のデータ型 | 時刻型に変換した値 | +|-------------------|--------------------| +| STRING型 | 'true'の場合true、'false'の場合false (大文字小文字の区別なし) | +| BYTE型
SHORT型
INTEGER型
LONG型 | 0の場合false、それ以外の場合true | + + +#### BLOB型への変換 + +| | | +|------|-------| +| 書式 | CAST(*x* AS BLOB) | + +引数*x*を、BLOB型に変換します。 + +*x*に指定できる値のデータ型と、変換後の値は以下の通りです。 + +| *x*のデータ型 | BLOB型に変換した値 | +|-------------------|--------------------| +| STRING型 | 文字列を16進表記のデータとしてBLOB型に変換した値 | + +  + +### CASE + +| | | +|------|-------| +| 書式 | CASE
WHEN *condition1* THEN *result1*
[WHEN *condition2* THEN *result2*]
...
[ELSE *resultElse*]
END | + +条件式*conditionN*がtrueの場合は、対応する*resultN*の値を返します。 +すべての条件式がfalseまたはNULLの場合は、ELSEが指定されていれば*resultElse*の値を返します。ELSEが指定されていない場合は、NULLを返します。 + +  + +| | | +|------|-------| +| 書式 | CASE *x*
WHEN *value1* THEN *result1*
[WHEN *value2* THEN *result2*]
...
[ELSE *resultElse*]
END | + +*x*の値が*valueN*の場合は、対応する*resultN*の値を返します。 +すべての値に当てはまらない場合は、ELSEが指定されていれば*resultElse*の値を返します。ELSEが指定されていない場合は、NULLを返します。 + +  + +*resultN*には同じ型の値を指定します。ただし、異なる型でも指定できる場合があります。 +- 引数が異なる型同士の場合は、以下の型の組合せのみ演算できます。これ以外の組合せの場合はエラーになります。 + + | 引数の型 | 引数の型 | 2つの引数を演算する際の型 | + |-|-|-| + | SHORT | BYTE | LONG | + | INTEGER | BYTE, SHORT | LONG | + | LONG | BYTE, SHORT, INTEGER | LONG | + | FLOAT | BYTE, SHORT, INTEGER, LONG | DOUBLE | + | DOUBLE | BYTE, SHORT, INTEGER, LONG, FLOAT | DOUBLE | + + +例) +```example +// 従業員の年代(30代、40代、50代、それ以外)を表示する +SELECT id, first_name, age, + CASE + WHEN age > 50 THEN '50s' + WHEN age > 40 THEN '40s' + WHEN age > 30 THEN '30s' + ELSE 'other' + END AS period +FROM employees; + +結果: + id first_name age period + ----+------------+-------+-------- + 0 John 43 40s + 1 William 59 50s + 2 Richard (NULL) other + 3 Mary 31 30s + 4 Lisa 29 other + 5 James 43 40s + + +// 部署に応じて所在地を表示する +SELECT id, first_name, department, + CASE department + WHEN 'Sales' THEN 'Tokyo' + WHEN 'Development' THEN 'Osaka' + ELSE 'Nagoya' + END AS location +FROM employees; + +結果: + id first_name department location + ----+------------+-------------+--------- + 0 John Sales Tokyo + 1 William Development Osaka + 2 Richard Sales Tokyo + 3 Mary Research Nagoya + 4 Lisa (NULL) Nagoya + 5 James Development Osaka +``` + + +### サブクエリ + +サブクエリはFROM句やWHERE句だけでなく、SQL文の様々な部分で指定できます。 +また、サブクエリに対するいくつかの演算種別も提供しています。それらについて +説明します。 + + +#### IN + +サブクエリの実行結果の中に、指定した値が含まれるかどうかを返します。 + +**構文** + +| | +|-----------------------------------| +| *式1* \[NOT\] IN ( *sub_query* ) | + +**仕様** + +- *式1*の値が、サブクエリの結果に含まれる場合はtrueを返します。 +- サブクエリは1列のみを返すものでなければなりません。 + +例) +```example +// departmentsテーブルのid=1の部署に所属する従業員の情報をemployeesテーブルから表示します +SELECT * FROM employees +WHERE department IN( + SELECT department FROM departments + WHERE id = 1 +); +結果: + id first_name last_name age department enrollment_period + ----+------------+-----------+-------+-------------+------------------- + 1 William Jones 59 Development 23.2 + 5 James Smith 43 Development 10.3 +``` + +#### EXISTS + +サブクエリの実行結果が存在するかどうかを返します。 + +**構文** + +| | +|-------| +| [NOT] EXISTS( *sub_query* ) | + + +**仕様** + +- サブクエリの実行結果が存在するかどうかを確認します。実行結果が1件以上の場合はtrue、0件の場合はfalseを返します。 + +- 結果の型はBOOL型です。 + +例) +```example +// departmentsテーブルのid=1の部署に所属する従業員の情報をemployeesテーブルから表示します +SELECT * FROM employees +WHERE EXISTS( + SELECT * FROM departments + WHERE employees.department=departments.department AND departments.id=1 +); +結果: + id first_name last_name age department enrollment_period + ----+------------+-----------+-------+-------------+------------------- + 1 William Jones 59 Development 23.2 + 5 James Smith 43 Development 10.3 +``` + +#### スカラサブクエリ + +ひとつの結果を返すサブクエリです。SELECT文の結果や、式などに使用できます。 + +例) +```example +SELECT id, first_name, + (SELECT department FROM departments WHERE department_id=employees.department_id) +FROM employees; + +結果: + id first_name department + ---+-----------+------------- + 0 John Sales + 1 William Development + 2 Richard Sales + 3 Mary (NULL) + 4 Lisa Marketing + 5 James Development +``` + +### プレースホルダ + +プリペアードステートメントではSQL文にプレースホルダを記述できます。 +プレースホルダはステートメント実行時に代入するパラメータの位置を示します。 +パラメータの番号は1から始まります。 + +プレースホルダは他のデータベースとの互換性のため、幾つかの形式が使用できます。 +ただし、いずれの形式で指定しても、パラメータの番号は既に割当てられている +パラメータ番号+1となります。 + +| 形式 | 説明 | 記述例 | +|--------|--------|--------| +| ? | 標準のプレースホルダの形式 | ? | +| ?NNN | NNNは数字を表す | ?56 | +| :AAAA | AAAAは文字列を表す | :name | +| @AAAA | AAAAは文字列を表す | @name | + +なお、$から始まるプレースホルダは記述できません。 + +例) +```java +String sql = "SELECT * FROM users WHERE id > ? AND id != :exclude_id;"; +PreparedStatement pstmt = con.prepareStatement(sql); +pstmt.setInt(1, 100); // 1: ? +pstmt.setInt(2, 253); // 2: :exclude_id +ResultSet rs = pstmt.executeQuery(); +``` + + +## コメント + +SQL文中にコメントを書くことができます。 書式は、--(ハイフンを2つ)の後ろに記述するか、/\* \*/で囲みます。 +コメントの後ろには改行が必要です。 + +```example +SELECT * -- comment +FROM employees; + +SELECT * +/* + comment +*/ +FROM employees; +``` + + + + +## ヒント機能 + +GridDBでは、実行計画を示すヒントをクエリに指定することで、SQL文を変えることなく実行計画を制御できます。 + +『[GridDB SQLチューニングガイド](../md_sql_tuning_guide/md_sql_tuning_guide.md)』を参照して、ヒント句を用いたチューニングを行ってください。 + + + +### エラーの扱い + +以下の場合は構文エラーとなります。 +- ヒント用のブロックコメントを複数記述した場合 +- ヒントを記述できない位置にヒントを記述した場合 +- ヒント句の記述に構文上の誤りがあった場合 +- 同じテーブルに対して同じ分類のヒント句を重複して指定した場合 + +以下の場合はテーブル指定エラーとなります。 +- ヒント句対象のテーブル指定に誤りがあった場合 + +【メモ】 +- テーブル指定エラーが起こった場合、対象のヒント句を無視し、それ以外のヒント句を使ってクエリを実行します。 +- 構文エラーとテーブル指定エラーが同時に起こった場合は構文エラーとなります。 + + + +# メタテーブル + + +## メタテーブルとは + +GridDBの管理用のメタデータを参照することができるテーブル群です。 + +【メモ】 +- メタテーブルは、参照のみ可能です。データの登録や削除はできません。 +- [SELECT](#select)で参照する際、メタテーブル名は引用符"で囲んでください。 +- 一般的なメタテーブルは接続ユーザの権限を問わず該当ユーザが接続しているデータベースの情報のみ取得できます。 +- 但し、一部のメタテーブル(統計メタテーブル)はデータベース管理者権限を持つユーザは、接続以外の全てのデータベースの情報を取得可能とします。 + +【注意事項】 +- メタテーブルのスキーマは将来のバージョンで変更される可能性があります。 + + +## テーブル情報 + +テーブルに関する情報を取得できます。 + +**テーブル名** + +\#tables + +**スキーマ** + +| 列名 | 内容 | 型 | +|----------------------------|-----------------------------------------------------|---------| +| DATABASE_NAME | データベース名 | STRING | +| TABLE_NAME | テーブル名 | STRING | +| TABLE_OPTIONAL_TYPE | テーブル種別
COLLECTION / TIMESERIES | STRING | +| DATA_AFFINITY | データアフィニティ | STRING | +| EXPIRATION_TIME | 期限解放経過時間 | INTEGER | +| EXPIRATION_TIME_UNIT | 期限解放経過単位 | STRING | +| EXPIRATION_DIVISION_COUNT | 期限解放分割数 | INTEGER | +| PARTITION_TYPE | パーティショニング種別 | STRING | +| PARTITION_COLUMN | パーティショニングキー | STRING | +| PARTITION_INTERVAL_VALUE | 分割値(インターバル/インターバルハッシュの場合) | STRING | +| PARTITION_INTERVAL_UNIT | 分割単位(インターバル/インターバルハッシュの場合) | STRING | +| PARTITION_DIVISION_COUNT | 分割数(ハッシュの場合) | INTEGER | +| SUBPARTITION_TYPE | パーティショニング種別
(インターバルハッシュの場合にHASH)| STRING | +| SUBPARTITION_COLUMN | パーティショニングキー
(インターバルハッシュの場合)| STRING | +| SUBPARTITION_INTERVAL_VALUE | 分割値 | STRING | +| SUBPARTITION_INTERVAL_UNIT | 分割単位 | STRING | +| SUBPARTITION_DIVISION_COUNT | 分割数
(インターバルハッシュの場合) | INTEGER | +| EXPIRATION_TYPE | 期限解放種別
PARTITION | STRING | + + +## 索引情報 + +索引に関する情報を取得できます。 + +**テーブル名** + +\#index_info + +**スキーマ** + +| 列名 | 内容 | 型 | +|------------------|------------------------------|--------| +| DATABASE_NAME | データベース名 | STRING | +| TABLE_NAME | テーブル名 | STRING | +| INDEX_NAME | 索引名 | STRING | +| INDEX_TYPE | 索引種別
TREE / SPATIAL | STRING | +| ORDINAL_POSITION | 索引内のカラム列順序(1からの連番) | SHORT | +| COLUMN_NAME | 列名 | STRING | + + +## パーティショニング情報 + +パーティショニングされたテーブルの内部コンテナ(データパーティション)に関する情報を取得することができます。 + +**テーブル名** + +\#table_partitions + +**スキーマ** + +| 列名 | 内容 | 型 | +|-------------------------|---------------------------------------|--------| +| DATABASE_NAME | データベース名 | STRING | +| TABLE_NAME | パーティショニングされたテーブルの名前 | STRING | +| PARTITION_BOUNDARY_VALUE | データパーティションの下限値 | STRING | +| CLUSTER_PARTITION_INDEX | クラスタパーティション番号 | INTEGER | +| CLUSTER_NODE_ADDRESS | ノードアドレス:ポート番号 | STRING | +| WORKER_INDEX | 処理スレッド番号 | INTEGER | + +**仕様** + +- ロウ1件がひとつのデータパーティションの情報を表します。 + - 例えば、分割数128のハッシュパーティショニングテーブルの場合、TABLE_NAMEにテーブル名を指定して検索するとロウが128個表示されます。 +- 上記の列以外にも複数の列が表示されます。 +- 下限値でソートする場合、対象のパーティショニングキーの型に合わせてキャストする必要があります。 +- 各区間の配置先は、「CLUSTER_PARTITION_INDEX」、「CLUSTER_NODE_ADDRESS」、「WORKER_INDEX」によって把握することが可能です。 + +**例** + +- データパーティションの数を確認する + + ``` example + SELECT COUNT(*) FROM "#table_partitions" WHERE TABLE_NAME='myIntervalPartition'; + + COUNT(*) + ----------------------------------- + 8703 + ``` + +- データパーティションの下限値を確認する + + ``` example + SELECT PARTITION_BOUNDARY_VALUE FROM "#table_partitions" WHERE TABLE_NAME='myIntervalPartition' + ORDER BY PARTITION_BOUNDARY_VALUE; + + PARTITION_BOUNDARY_VALUE + ----------------------------------- + 2016-10-30T10:00:00Z + 2017-01-29T10:00:00Z + : + ``` + +- インターバルパーティショニングのテーブル「myIntervalPartition2」(パーティショニングキーの型:INTEGER、分割基準値 20000)のデータパーティションの下限値一覧を確認する + + ``` example + SELECT CAST(PARTITION_BOUNDARY_VALUE AS INTEGER) V FROM "#table_partitions" + WHERE TABLE_NAME='myIntervalPartition2' ORDER BY V; + + PARTITION_BOUNDARY_VALUE + ----------------------------------- + -5000 + 15000 + 35000 + 55000 + : + ``` + +## ビュー情報 + +ビューに関する情報を取得できます。 + +**テーブル名** + +\#views + +**スキーマ** + +| 列名 | 内容 | 型 | +|----------------------------|-----------------------------------------------------|---------| +| DATABASE_NAME | データベース名 | STRING | +| VIEW_NAME | ビュー名 | STRING | +| VIEW_DEFINITION | ビュー定義文字列 | STRING | + + +## 実行中SQL情報 + +実行中のSQL(クエリまたはジョブ)に関する統計情報を取得できます。 + +**テーブル名** + +\#sqls + +**スキーマ** + +| 列名 | 内容 | 型 | +|----------------------------|-----------------------------------------------------|----------| +| DATABASE_NAME | データベース名 | STRING | +| NODE_ADDRESS | 処理実行中のノードのアドレス(system) | STRING | +| NODE_PORT | 処理実行中のノードのポート(system) | INTEGER | +| START_TIME | 処理開始時刻 | TIMESTAMP| +| APPLICATION_NAME | アプリケーション名 | STRING | +| SQL | クエリ文字列 | STRING | +| QUERY_ID | クエリID | STRING | +| JOB_ID | ジョブID | STRING | +| USER_NAME | ユーザ名 | STRING | + +【メモ】 + - データベース管理者は全てのデータベースを横断した情報を取得できます。 + +## 実行中イベント情報 + +実行中のイベントに関する統計情報を取得できます。 + +**テーブル名** + +\#events + +**スキーマ** + +| 列名 | 内容 | 型 | +|----------------------------|-----------------------------------------------------|----------| +| NODE_ADDRESS | 処理実行中のノードのアドレス(system) | STRING | +| NODE_PORT | 処理実行中のノードのポート(system) | INTEGER | +| START_TIME | 処理開始時刻 | TIMESTAMP| +| APPLICATION_NAME | アプリケーション名 | STRING | +| SERVICE_TYPE | サービス種別(SQL/TRANSACTION/CHECKPOINT/SYNC) | STRING | +| EVENT_TYPE | イベント種別(PUT/CP_START/SYNC_START など) | STRING | +| WORKER_INDEX | 処理スレッド番号 | INTEGER | +| CLUSTER_PARTITION_INDEX | クラスタパーティション番号 | INTEGER | +| DATABASE_ID | データベースID | LONG | + + +## コネクション情報 + +接続中のコネクションに関する統計情報を取得できます。 + +**テーブル名** + +\#sockets + +**スキーマ** + +| 列名 | 内容 | 型 | +|----------------------------|-----------------------------------------------------|----------| +| SERVICE_TYPE | サービス種別(SQL/TRANSACTION) | STRING | +| SOCKET_TYPE | ソケット種別 | STRING | +| NODE_ADDRESS | 接続元ノードのアドレス(ノード視点) | STRING | +| NODE_PORT | 接続元ノードのポート(ノード視点) | INTEGER | +| REMOTE_ADDRESS | 接続先ノードのアドレス(ノード視点) | STRING | +| REMOTE_PORT | 接続先ノードのポート(ノード視点) | INTEGER | +| APPLICATION_NAME | アプリケーション名 | STRING | +| CREATION_TIME | 接続時刻 | TIMESTAMP| +| DISPATCHING_EVENT_COUNT | イベントハンドリングの要求を開始した総回数 | LONG | +| SENDING_EVENT_COUNT | イベント送信を開始した総回数 | LONG | +| DATABASE_NAME | データベース名 | LONG | + +SOCKET_TYPE(ソケット種別)は次の通り。 + +|値 |説明| +|-|-| +|SERVER |サーバ間同士のTCP接続 | +|CLIENT |クライアントとのTCP接続 | +|MULTICAST |マルチキャストソケット | +|NULL |接続中など現時点で不明の場合| + +CREATION_TIME(接続時刻)は次の通り。 +- SERVICE_TYPEがSQLの場合、CREATION_TIMEはJDBC接続を開始した時刻です。 +- SERVICE_TYPEがTRANSACTIONの場合、CREATION_TIMEはNoSQL接続を開始した時刻です。 + + +**例** + +クライアントとのTCP接続(ソケット種別:CLIENT)の場合に限り、そのコネクションが +実行待ちかどうかを判別することができます。 + +具体的には、DISPATCHING_EVENT_COUNTの方がSENDING_EVENT_COUNTより大きい場合、 +実行待ち状態のタイミングが存在した可能性が比較的高いと判定できます。 + +``` example +SELECT CREATION_TIME, NODE_ADDRESS, NODE_PORT, APPLICATION_NAME FROM "#sockets" +WHERE SOCKET_TYPE='CLIENT' AND DISPATCHING_EVENT_COUNT > SENDING_EVENT_COUNT; + +CREATION_TIME NODE_ADDRESS NODE_PORT APPLICATION_NAME +-------------------------------------------------------------------- +2019-03-27T11:30:57.147Z 192.168.56.71 20001 myapp +2019-03-27T11:36:37.352Z 192.168.56.71 20001 myapp + : +``` + +## データベース一覧 + +データベース名一覧と、それに対応したデータベースIDを取得できます。 + +**テーブル名** + +\#databases + +**スキーマ** + +| 列名 | 内容 | 型 | +|----------------------------|-----------------------------------------------------|---------| +| DATABASE_NAME | データベース名 | STRING | +| DATABASE_ID | データベースID | INTEGER | + + ## データベース統計情報 + +データベース単位で集計した統計情報を取得できます。 + +**テーブル名** + +\#database_stats + +**スキーマ** + +| 列名 | 内容 | 型 | +|------|-----------------------------------------------------|---------| +| DATABASE_ID | データベースID | LONG | +| NODE_ADDRESS | ノードアドレス | STRING | +| NODE_PORT | ノードポート番号 | INTEGER | +| TRANSACTION_CONNECTION_COUNT | トランザクション接続数 | LONG | +| TRANSACTION_REQUEST_COUNT | トランザクションリクエスト数 | LONG | +| SQL_CONNECTION_COUNT | SQL接続数 | LONG | +| SQL_REQUEST_COUNT | SQLリクエスト数 | LONG | +| STORE_BLOCK_SIZE | ストア利用ブロックサイズ(※) | LONG | +| STORE_MEMORY_SIZE | ストア利用バッファサイズ(※) | LONG | +| STORE_SWAP_READ_SIZE | ストアスワップリードサイズ(※) | LONG | +| STORE_SWAP_WRITE_SIZE | ストアスワップライトサイズ(※) | LONG | +| SQL_WORK_MEMORY_SIZE | SQLワークメモリサイズ | LONG | +| SQL_STORE_USE_SIZE | SQLストア利用サイズ | LONG | +| SQL_STORE_SWAP_READ_SIZE | SQLストアスワップリードサイズ | LONG | +| SQL_STORE_SWAP_WRITE_SIZE | SQLストアスワップライトサイズ | LONG | +| SQL_TASK_COUNT | 実行中SQLタスク総数 | LONG | +| SQL_PENDING_JOB_COUNT | 送信抑制により停止中のSQLジョブ数 | LONG | +| SQL_SEND_MESSAGE_SIZE | SQL送信メッセージサイズ | LONG | +| SQL_TOTAL_REQUEST_COUNT | SQL累計リクエスト数 | LONG | +| TRANSACTION_TOTAL_REQUEST_COUNT | トランザクション累計リクエスト数 | LONG | + +【メモ】 + - データベース管理者は全てのデータベースを横断した情報を取得できます。 + - 項目自体はサーバ全体で集計したものと同じになります。 + - ※の項目の正確な値を表示させるためには起動ファイルでの設定が必要となります。 + - 各統計値の項目の詳細および設定方法については『[GridDB 機能リファレンス](../md_reference_feature/md_reference_feature.md)』を参照してください。 + + +## 実行中のステートメント(SQL)のリソース統計 + +実行中の処理のリソース消費統計値について、各ノードのステートメント(本バージョンではSQL限定)ごとに1つの行で示すメタテーブルとして取得できます。 + +**テーブル名** + +\#statement_resources + +**スキーマ** + +| 列名 | 内容 | 型 | +|------|-----------------------------------------------------|---------| +|REQUEST_ID|リクエストID(クエリID)|STRING| +|NODE_ADDRESS|処理実行中のノードのアドレス(system)|STRING| +|NODE_PORT|処理実行中のノードのポート(system)|INTEGER| +|CONNECTION_ADDRESS|クライアントのアドレス ※本バージョンでは常にNULL|STRING| +|CONNECTION_PORT|クライアントのポート ※本バージョンでは常にNULL|INTEGER| +|USER_NAME|ユーザ名|STRING| +|APPLICATION_NAME|アプリケーション名|STRING| +|STATEMENT_TYPE|ステートメント種別 ※本バージョンでは常に'SQL_EXECUTE'|STRING| +|START_TIME|処理開始時刻|TIMESTAMP| +|ACTUAL_TIME|実処理時間(単位:ミリ秒) ※本バージョンでは処理開始時刻から経過時刻と等価|LONG| +|MEMORY_USE|メモリ使用量(単位:バイト)|LONG| +|DATA_STORE_ACCESS|データストアのアクセス量(単位:バイト)|LONG| +|SQL_STORE_USE|SQL中間ストアの使用量(単位:バイト)|LONG| +|NETWORK_TRANSFER_SIZE|ネットワーク転送量(単位:バイト) ※本バージョンでは常に0|LONG| +|NETWORK_TIME|ネットワーク転送時間(単位:ミリ秒) ※本バージョンでは常に0|LONG| +|AVAILABLE_CONCURRENCY|処理に利用可能な並列スレッド数 ※本バージョンでは常に0|LONG| +|RESOURCE_RESTRICTIONS|リソース制限事項一覧 ※本バージョンでは常に空文字列|STRING| +|STATEMENT|ステートメント内容(例:SQL文) ※本バージョンでは常にNULL|STRING| + +## 実行中の分散タスクのリソース統計 + +実行中の処理のリソース消費統計値について、各ノードのステートメント(本バージョンではSQL限定)内の分散タスクごとに1つの行で示すメタテーブルとして取得できます。 + +**テーブル名** + +\#task_resources + +**スキーマ** + +| 列名 | 内容 | 型 | +|------|-----------------------------------------------------|---------| +|REQUEST_ID|リクエストID(クエリID)|STRING| +|JOB_ORDINAL|一つの要求IDに対応する、実行ジョブの順序番号|LONG| +|TASK_ORDINAL|一つの実行ジョブに対応する、分散タスクの順序番号|INTEGER| +|NODE_ADDRESS|処理実行中のノードのアドレス(system)|STRING| +|NODE_PORT|処理実行中のノードのポート(system)|INTEGER| +|TASK_TYPE|タスク種別(例:SCAN、JOINなど)|STRING| +|LEAD_TIME|実行開始後の経過時間(単位:ミリ秒)|LONG| +|ACTUAL_TIME|実処理時間(単位:ミリ秒)|LONG| +|MEMORY_USE|メモリ使用量(単位:バイト)|LONG| +|DATA_STORE_ACCESS|データストアのアクセス量(単位:バイト)|LONG| +|SQL_STORE_USE|SQL中間ストアの使用量(単位:バイト)|LONG| +|NETWORK_TRANSFER_SIZE|ネットワーク転送量(単位:バイト) ※本バージョンでは常に0|LONG| +|NETWORK_TIME|ネットワーク転送時間(単位:ミリ秒) ※本バージョンでは常に0|LONG| +|PLAN|プラン内容を示すJSON文字列 ※本バージョンでは常にNULL|STRING| + + +## サイト間レプリケーション状態 + +サイト間レプリケーション状態をメタテーブルとして取得できます。 + +**テーブル名** + +\#replication_stats + +**スキーマ** + +| 列名 | 内容 | 型 | +|------|-----------------------------------------------------|---------| +|CLUSTER_PARTITION_INDEX|クラスタパーティション番号|INTEGER| +|CLUSTER_REPLICATION_ROLE|サイト間レプリケーションのロール|STRING| +|PRIMARY_ADDRESS|プライマリのオーナーアドレス|STRING| +|PRIMARY_PORT|プライマリのオーナーポート|INTEGER| +|STANDBY_ADDRESS|スタンバイのオーナーアドレス|STRING| +|STANDBY_PORT|スタンバイのオーナーポート|INTEGER| +|PRIMARY_LSN|プライマリのLSN|LONG| +|STANDBY_LSN|スタンバイのLSN(ログシーケンス番号)|LONG| +|PRIMARY_LAST_UPDATED_TIME|プライマリの最終更新時刻|TIMESTAMP| +|STANDBY_LAST_UPDATED_TIME|スタンバイの最終更新時刻|TIMESTAMP| +|REPLICATION_STATUS|レプリケーション状態|STRING| +|LAST_ERROR_CODE|最後に発生したエラーコード|LONG| +|LAST_ERROR_TIME|最後に発生したエラー時刻|TIMESTAMP| + +# 予約語 + +GridDBのSQLでは、以下の単語が予約語として定義されています。 + +ABORT ACTION AFTER ALL ANALYZE AND AS ASC BEGIN BETWEEN BY CASE CAST COLLATE COLUMN COMMIT CONFLICT CREATE CROSS DATABASE DAY DELETE DESC DISTINCT DROP ELSE END ESCAPE EXCEPT EXCLUSIVE EXISTS EXPLAIN EXTRACT FALSE FOR FROM GLOB GRANT GROUP HASH HAVING HOUR IDENTIFIED IF IN INDEX INITIALLY INNER INSERT INSTEAD INTERSECT INTO IS ISNULL JOIN KEY LEFT LIKE LIMIT MATCH MILLISECOND MINUTE MONTH NATURAL NO NOT NOTNULL NULL OF OFFSET ON OR ORDER OUTER PARTITION PARTITIONS PASSWORD PLAN PRAGMA PRIMARY QUERY RAISE REGEXP RELEASE REPLACE RESTRICT REVOKE RIGHT ROLLBACK ROW SECOND SELECT SET TABLE THEN TIMESTAMPADD TIMESTAMPDIFF TO TRANSACTION TRUE UNION UPDATE USER USING VALUES VIEW VIRTUAL WHEN WHERE WITHOUT XOR YEAR diff --git a/manuals/GridDB_TQL_Reference/tql-syntax-and-calculation-functions.md b/manuals/md_reference_tql/md_reference_tql.md similarity index 80% rename from manuals/GridDB_TQL_Reference/tql-syntax-and-calculation-functions.md rename to manuals/md_reference_tql/md_reference_tql.md index cd9b231..22a95de 100644 --- a/manuals/GridDB_TQL_Reference/tql-syntax-and-calculation-functions.md +++ b/manuals/md_reference_tql/md_reference_tql.md @@ -1,5 +1,71 @@ + +# データ型 + +フィールドならびにクエリ演算で用いる値の制約を示す、型について定義します。 + +## 基本型 + +他の型の組み合わせで表現できない、基本的な型を定義します。 + +### ブール(BOOL)型 + +真または偽のいずれかの値を表します。 + +### 文字列(STRING)型 + +Unicodeコードポイントを文字とする、任意個数の文字の列より構成されます。ただし、NULL文字(U+0000)は扱いません。 +上限サイズについては『[GridDB 機能リファレンス](../md_reference_feature/md_reference_feature.md)』を参照してください。 + +### 整数型 + +それぞれ次の範囲の整数値を表します。 +- BYTE型: -27から27-1 (8ビット) +- SHORT型: -215から215-1 (16ビット) +- INTEGER型: -231から231-1 (32ビット) +- LONG型: -263から263-1 (64ビット) + +### 浮動小数点数型 + +IEEE754で定められた浮動小数点数を表します。精度に応じた次の型があります。 +- FLOAT型: 単精度型(32ビット) +- DOUBLE型: 倍精度型(64ビット) + +※演算精度は原則IEEE754準拠ですが、実行環境により異なる場合があります。 + +### 時刻(TIMESTAMP)型 + +年月日ならびに時分秒からなる時刻を表します。表現範囲については付録の[値の範囲](#label_range_of_values)を参照してください。 + +【メモ】 + +時刻型には精度を設定できます。設定可能な精度は、ミリ秒、マイクロ秒、ナノ秒のいずれかです。 +これら具体的な設定方法と型については、各APIリファレンスを参照してください。 + +### 空間(GEOMETRY)型 + +空間構造を表します。上限サイズについては『[GridDB 機能リファレンス](../md_reference_feature/md_reference_feature.md)』を参照してください。 +各構造の表す座標の数値として非数(NAN)や正負の無限大(INF、-INF)は扱いません。 また、SRID (Spatial Reference System Identifier)を整数型の値として格納できますが、SRIDの表す座標系による座標の範囲制限や、SRIDの変換による座標変換については対応していません。 + +### BLOB型 + +画像や音声などのバイナリデータを表します。上限サイズについては『[GridDB 機能リファレンス](../md_reference_feature/md_reference_feature.md)』を参照してください。 + +## 複合型 + +基本型の組み合わせで構成される型を定義します。 + +### 配列型 + +値の列を表します。以下の型について配列型を提供します。長さとは、構成される配列要素の数であり、最小値は0となります。 +長さの上限については『[GridDB 機能リファレンス](../md_reference_feature/md_reference_feature.md)』を参照してください。配列の要素にNULLは設定できません。 +- ブール型 +- 文字列型 +- 整数型 +- 浮動小数点数型 +- 時刻型 + + # TQL構文・演算機能 - TQLでは、データの取り出し・削除・更新対象の選択のために必要となる、SQLのselect文相当のクエリをサポートします。選択したデータの操作、データ構造管理やトランザクション処理といった、選択操作以外の構文は扱いません。 @@ -98,7 +164,7 @@ TRUEならばFALSEを、FALSEならTRUEを、NULLならばNULLを返します。 両辺がFALSEまたは両辺がTRUEならばFALSEを、いずれかがNULLならNULLを、それ以外はTRUEを返します。 -また、AND, ORの演算では短絡評価(または最小評価)を行います。すなわち、先に記述されている式で評価を確定できる場合、後に記述されている式の評価を行いません。 たとえば、 +また、AND, ORの演算では短絡評価(または最小評価)を行います。すなわち、先に記述されている式で評価を確定できる場合、後に記述されている式の評価を行いません。 例えば、 ``` example WHERE A=1 AND B=1 @@ -124,7 +190,7 @@ WHERE A=1 AND B=1 - *%*: 0文字以上の任意の文字列と一致 - *\_*: 1文字の任意の文字と一致 -たとえば、次の式は「山田」「田中」「山田太郎」に対して真を返しますが、「小山田」に対しては偽を返します。 +例えば、次の式は「山田」「田中」「山田太郎」に対して真を返しますが、「小山田」に対しては偽を返します。 ``` example column LIKE '_田%' @@ -132,7 +198,7 @@ column LIKE '_田%' ワイルドカード文字は、パターン内の任意の位置に任意の回数だけ使用できます。 空文字列のパターンを指定した場合、常に偽を返します。 -ワイルドカード文字そのものを検索する場合には、ESCAPE節を使ってエスケープ文字を指定します。 たとえば、以下の式は「10%」に対しては真を返しますが、「10$%」に対しては偽を返します。 +ワイルドカード文字そのものを検索する場合には、ESCAPE節を使ってエスケープ文字を指定します。 例えば、以下の式は「10%」に対しては真を返しますが、「10$%」に対しては偽を返します。 ``` example column LIKE '10$%' ESCAPE '$' @@ -213,13 +279,69 @@ YYYY-MM-DDThh:mm:ss.SSSZ 表現範囲については付録の*値の範囲*を参照してください。 +#### TIMESTAMP_MS(str) + +時刻の文字列表現をミリ秒精度のTIMESTAMP(3)型に変換します。 + +時刻の文字列表現としては、西暦での次の形式のみをサポートします。タイムゾーン文字列(Z|±hh:mm|±hhmm)の指定が必須です。 + +``` example +YYYY-MM-DDThh:mm:ssZ +YYYY-MM-DDThh:mm:ss.SSSZ +``` + +上の形式のうち、英字の部分は10進数表現の整数値です。「SSS」以外はTIMESTAMP(str)を参照してください。 +- SSS: ミリ秒に相当する。常に3桁であり、0から999の範囲で指定する + +表現範囲については付録の*値の範囲*を参照してください。 + + +#### TIMESTAMP_US(str) + +時刻の文字列表現をマイクロ秒精度のTIMESTAMP(6)型に変換します。 + +時刻の文字列表現としては、西暦での次の形式のみをサポートします。タイムゾーン文字列(Z|±hh:mm|±hhmm)の指定が必須です。 + +``` example +YYYY-MM-DDThh:mm:ssZ +YYYY-MM-DDThh:mm:ss.SSSZ +YYYY-MM-DDThh:mm:ss.SSSSSSZ +``` + +上の形式のうち、英字の部分は10進数表現の整数値です。「SSS」「SSSSSS」以外はTIMESTAMP(str)を参照してください。 +- SSS: ミリ秒に相当する。常に3桁であり、0から999の範囲で指定する +- SSSSSS: マイクロ秒に相当する。常に6桁であり、0から999999の範囲で指定する + +表現範囲については付録の*値の範囲*を参照してください。 + +#### TIMESTAMP_NS(str) + +時刻の文字列表現をナノ秒精度のTIMESTAMP(9)型に変換します。 + +時刻の文字列表現としては、西暦での次の形式のみをサポートします。タイムゾーン文字列(Z|±hh:mm|±hhmm)の指定が必須です。 + +``` example +YYYY-MM-DDThh:mm:ssZ +YYYY-MM-DDThh:mm:ss.SSSZ +YYYY-MM-DDThh:mm:ss.SSSSSSZ +YYYY-MM-DDThh:mm:ss.SSSSSSSSSZ +``` + +上の形式のうち、英字の部分は10進数表現の整数値です。「SSS」、「SSSSSS」、「SSSSSSSSS」以外はTIMESTAMP(str)を参照してください。 +- SSS: ミリ秒に相当する。常に3桁であり、0から999の範囲で指定する +- SSSSSS: マイクロ秒に相当する。常に6桁であり、0から999,999の範囲で指定する +- SSSSSSSSS: ナノ秒に相当する。常に9桁であり、0から999,999,999の範囲で指定する + +表現範囲については付録の*値の範囲*を参照してください。 + +#### TIMESTAMP_ADD(time_unit, timestamp, duration) #### TIMESTAMPADD(time_unit, timestamp, duration) -指定の時刻に対し、指定した単位の特定の期間を加算します。期間には数値型の値を指定します。負の値の期間を指定した場合は、元の時刻より過去の時刻が求まります。現バージョンでは、算出の際に使用されるタイムゾーンはUTCです。 +指定の時刻に対し、指定した単位の特定の期間を加算します。期間には数値型の値を指定します。負の値の期間を指定した場合は、元の時刻より過去の時刻が求まります。現バージョンでは、算出の際に使用されるタイムゾーンはクライアント接続設定に従います(デフォルト:UTC)。関数ごとの個別指定はできません。 第一引数time_unitには、次のいずれかの識別子を指定します。 -- YEAR | MONTH | DAY | HOUR | MINUTE | SECOND | MILLISECOND - +- YEAR | MONTH | DAY | HOUR | MINUTE | SECOND | MILLISECOND | MICROSECOND | NANOSECOND + - NANOSECONDを指定した場合、期間には約292年(2^63ナノ秒)以上の値は指定できません 例) 時刻型のカラムdateの値が、現在時刻から1時間前の時刻よりも前のデータを検索する @@ -228,12 +350,14 @@ SELECT * WHERE date < TIMESTAMPADD(HOUR, NOW(), -1) ``` +#### TIMESTAMP_DIFF(time_unit, timestamp1, timestamp2) #### TIMESTAMPDIFF(time_unit, timestamp1, timestamp2) -2つの時刻の差について、指定した単位で結果を求めます。結果は数値型の値となります。現バージョンでは、算出の際に使用されるタイムゾーンはUTCです。 +2つの時刻の差について、指定した単位で結果を求めます。結果は数値型の値となります。現バージョンでは、算出の際に使用されるタイムゾーンはクライアント接続設定に従います(デフォルト:UTC)。関数ごとの個別指定はできません。 第一引数time_unitには、次のいずれかの識別子を指定します。 -- YEAR | MONTH | DAY | HOUR | MINUTE | SECOND | MILLISECOND +- YEAR | MONTH | DAY | HOUR | MINUTE | SECOND | MILLISECOND | MICROSECOND | NANOSECOND + - NANOSECONDを指定した場合、計算結果が約292年(2^63ナノ秒)を超えると関数実行時にエラーが発生します。 例) 時刻型のカラムexpiredとissuedの差(=expired-issued)が3日以上のデータを検索する @@ -373,7 +497,7 @@ POLYGON((0 0,10 0,10 10,0 10,0 0);4326) g1、g2のいずれについても、2次曲面(QUADRATICSURFACE)は指定できません。 また、POLYHEDRALSURFACEについて、直方体以外の形状、互いに辺を共有しないPOLYGONの組み合わせ、もしくは空間構造として閉じていない形状を指定した場合、結果は未定義となります。 -一方がx、y座標からなる2次元空間構造、他方がx、y、z座標からなる3次元空間構造の場合、z座標を除いたx、y座標のみを判定対象とします。 たとえば、POINT(x0 y0)とLINESTRING(x1 y1 z1, x2 y2 z2)についての交差判定の結果は、x1 <= x0 <= x2かつy1 <= y0 <= y2が成立する場合のみ真となります。 +一方がx、y座標からなる2次元空間構造、他方がx、y、z座標からなる3次元空間構造の場合、z座標を除いたx、y座標のみを判定対象とします。 例えば、POINT(x0 y0)とLINESTRING(x1 y1 z1, x2 y2 z2)についての交差判定の結果は、x1 <= x0 <= x2かつy1 <= y0 <= y2が成立する場合のみ真となります。 一方または双方が空ジオメトリの場合、偽を返します。 @@ -622,3 +746,33 @@ SELECT文の前にEXPLAINまたはEXPLAIN ANALYZEを付けることで、実行 ### EXPLAIN ANALYZE 後続のSELECT文に関する実行プラン情報を取得するとともに、SELECT文を実行し、実行時間などの解析情報を求めます。 + +  + +# 付録 + + +## 値の範囲 + +値の上限などの値の範囲を説明します。 +システムの制限値については、『[GridDB 機能リファレンス](../md_reference_feature/md_reference_feature.md)』を参照してください。 + +### 基本型の取りうる値 +以下の基本型の取りうる値は、次の通りです。 + +| 型 | 取りうる値 | +|----|-----------| +| ブール(BOOL)型 | 真または偽 | +| BYTE型 | -27から27-1 | +| SHORT型 | -215から215-1 | +| INTEGER型 | -231から231-1 | +| LONG型 | -263から263-1 | +| FLOAT型 | IEEE754準拠 | +| DOUBLE型 | IEEE754準拠 | +| 時刻(TIMESTAMP)型 | 西暦1970年1月1日のはじめから西暦9999年12月31日の終わりまで(UTC相当)。うるう秒は扱わない。ミリ秒、マイクロ秒、ナノ秒のいずれかの精度を設定可能。 | + + + +空間(GEOMETRY)型でTQL演算に使用できる値はST_GeomFromText関数が返す任意の値です。このうちコンテナに格納できる値はQUADRATICSURFACE構造を除いたものです。 + +APIを通じて基本型とマッピングされるオブジェクトの表現範囲は、上記の範囲と異なる場合があります。上記の範囲を超えた値を持つオブジェクトの内容をコンテナに格納することはできませんが、検索条件の構築など、その他操作の可否を規定するものではありません。例えば、Java APIにて時刻型にマッピングされるjava.util.Dateオブジェクトでは、コンテナに格納できない西暦1970年より前の年の時刻も表現でき、その値をロウキーの条件としてRowKeyPredicateオブジェクトや時系列のサンプリングクエリに含めることができます。しかし、その条件でロウを取得しようとした時点でエラーが検出される可能性があります。マッピングされるオブジェクトの具体的な表現範囲は、個々のオブジェクトの型の定義を参照してください。 diff --git a/manuals/md_sql_tuning_guide/img/cost_based_join_order_selection1.png b/manuals/md_sql_tuning_guide/img/cost_based_join_order_selection1.png new file mode 100644 index 0000000..ee178e6 Binary files /dev/null and b/manuals/md_sql_tuning_guide/img/cost_based_join_order_selection1.png differ diff --git a/manuals/md_sql_tuning_guide/img/cost_based_join_order_selection2.png b/manuals/md_sql_tuning_guide/img/cost_based_join_order_selection2.png new file mode 100644 index 0000000..9740078 Binary files /dev/null and b/manuals/md_sql_tuning_guide/img/cost_based_join_order_selection2.png differ diff --git a/manuals/md_sql_tuning_guide/img/hint_leading1.png b/manuals/md_sql_tuning_guide/img/hint_leading1.png new file mode 100644 index 0000000..1156665 Binary files /dev/null and b/manuals/md_sql_tuning_guide/img/hint_leading1.png differ diff --git a/manuals/md_sql_tuning_guide/img/hint_leading2-1.png b/manuals/md_sql_tuning_guide/img/hint_leading2-1.png new file mode 100644 index 0000000..b36023a Binary files /dev/null and b/manuals/md_sql_tuning_guide/img/hint_leading2-1.png differ diff --git a/manuals/md_sql_tuning_guide/img/hint_leading2-2.png b/manuals/md_sql_tuning_guide/img/hint_leading2-2.png new file mode 100644 index 0000000..2d98d18 Binary files /dev/null and b/manuals/md_sql_tuning_guide/img/hint_leading2-2.png differ diff --git a/manuals/md_sql_tuning_guide/img/hint_leading2-3.png b/manuals/md_sql_tuning_guide/img/hint_leading2-3.png new file mode 100644 index 0000000..51758f0 Binary files /dev/null and b/manuals/md_sql_tuning_guide/img/hint_leading2-3.png differ diff --git a/manuals/md_sql_tuning_guide/img/plan_process.png b/manuals/md_sql_tuning_guide/img/plan_process.png new file mode 100644 index 0000000..a9b84c0 Binary files /dev/null and b/manuals/md_sql_tuning_guide/img/plan_process.png differ diff --git a/manuals/md_sql_tuning_guide/md_sql_tuning_guide.md b/manuals/md_sql_tuning_guide/md_sql_tuning_guide.md new file mode 100644 index 0000000..55cb1b5 --- /dev/null +++ b/manuals/md_sql_tuning_guide/md_sql_tuning_guide.md @@ -0,0 +1,1089 @@ + +# はじめに + +## 本書の目的と構成 + +**本書では、GridDBのSQLのチューニングについて説明します。** + +本書は、GridDBでSQLを用いたシステム開発を行う開発者の方を対象としています。 + +本書は、以下のような構成となっています。 + +- チューニングのステップ + - SQLのチューニングのステップを説明します。 + +- SQLの最適化 + - SQLのスキャンやジョイン処理における最適化のルールを説明します。 + +- SQLのプラン(実行計画) + - SQL最適化の結果であるプランについて説明します。 + + +最適化のルールやチューニングなどについては、GridDBに特化した特徴的な点を主に説明します。 + +    + +# チューニングのステップ + +SQLのチューニングは、一般的なデータベースシステムと同様に以下のような手順で行います。 + +- STEP1 遅いクエリの確認 + + - システムにおいてSQLのパフォーマンスに問題がある場合、実行しているクエリの中で、時間がかかる遅いクエリを特定します。 + + +- STEP2 プランの取得 + + - 遅いクエリのプランを取得します。 + + +- STEP3 クエリのチューニング + + - プランを分析して、意図した通りに動作しているかやクエリのどの部分に時間がかかっているかなどを確認します。 + - 問題点に応じてクエリの書き換えや索引作成によって、クエリのチューニングを行います。 + + +- STEP4 クエリの再実行 + + - チューニングしたクエリを実行して性能を確認します。問題が解決していない場合は、再度STEP2から実施します。 + +  + +STEP1からSTEP3について詳細を説明します。 + +  + +## 遅いクエリの確認 + +システムで実行しているクエリの中で、時間がかかっている遅いクエリを特定します。 + +実行時間がかかった遅いクエリは、そのクエリと実行時間などの情報をイベントログに出力することができます。 +これにより、アプリケーションから実行された複数のクエリの中から、ボトルネックとなっているクエリを特定することができます。 + +遅いクエリの確認の手順は以下の通りです。 + +1. スロークエリの出力設定を行う + + - GridDBノードに、スロークエリの実行時間の閾値とイベントログに出力するクエリ文字列のサイズ上限のパラメータがあります。 + + | パラメータ | 意味 | デフォルト値 | + |------------------------------|-------------------------------------------------------|------| + | /sql/traceLimitExecutionTime | スロークエリをイベントログに残す実行時間の下限値(単位:秒) | 300s | + | /sql/traceLimitQuerySize | スロークエリに残るクエリ文字列のサイズ上限(単位:バイト) | 1000 | + + - デフォルト値から変更する場合は、次の2つの方法のいずれかで設定します。 + - ノードを停止して、ノード定義ファイル(gs_node.json)にパラメータを設定する + - 運用コマンドgs_paramconfを用いてオンラインで設定変更する (ただし、オンラインの設定変更はノード再起動によりリセットされます。設定変更を永続化するためには、オンラインで設定後、ノード定義ファイル(gs_node.json)にも設定してください。) + + [メモ] + - SQLはクラスタ構成のいずれかのノードで実行されるため、スロークエリの出力設定は必ず全ノードに対して行ってください。 + +  + +2. クエリを実行する + + - クエリを実行します。1で設定した実行時間を超えるクエリがイベントログに出力されます。 + +  + +3. 遅いクエリを確認する + + - スロークエリのログを確認します。確認方法は次の2つがあります。いずれかの方法でスロークエリを特定してください。 + + | 確認方法 | 内容 | + |-------------|----------| + | オンラインで最新の情報を確認する | 運用ツールgs_logsのオプション--slowlogsを実行すると、スローログの情報を表示します。

・表示は、最新のイベントログファイルの情報のみです。
・イベントログファイルは、ファイルサイズが閾値を超えた場合、または日にちが変わった場合に切り替わります。切り替わると、gs_logsでは古いイベントログファイルの内容は表示されません。| + | イベントログファイルを直接確認する | ノードのイベントログファイルを直接確認します。
スロークエリのログは「SQL_LONG_QUERY」をキーワードにしてファイルから抽出してください。 | + + [メモ] + - SQLはクラスタ構成のいずれかのノードで実行されるため、必ず全ノードのスロークエリのログを確認してください。 +   +  + +## プランの取得 + +STEP1で特定したスロークエリを実行して、クエリのプラン(グローバルプラン)を取得します。 + +プランの取得には運用ツールgs_shを用います。EXPLAIN ANALYZE構文でクエリを実行し、サブコマンドgetplantxtでプランを取得します。 + +  + +(1) クエリを「EXPLAIN ANALYZE」構文で実行する + +``` +gs[public]> sql EXPLAIN ANALYZE select * from table1, table2 where table1.value=1 and table1.id=table2.id ; +検索を実行しました。 (19 ms) +``` + +(2) プランを取得する + +``` +gs[public]> getplantxt +Id Type Input Rows Lead time Actual time Node And more.. +-------------------------------------------------------------------------------------------------------------------- + 0 SCAN - - 30 30 192.168.15.161:10001 table: {table1} + 1 SCAN 0 3000 21 21 192.168.15.161:10001 table: {table1, table2} INDEX SCAN JOIN_EQ_HASH + 2 RESULT 1 14 0 0 192.168.15.161:20001 +``` + +  + +GridDBでは、SQLに対して以下のように処理を行います。 +ノードはクエリを構文解析しプランを生成します。プランは実行単位であるタスクごとのプランから構成されており、各ノードは割り当てられたタスクを実行します。 + +
+ SQLのプランと処理の流れ +
SQLのプランと処理の流れ
+
+ +プラン表示のサブコマンドgetplantxtでは、このタスク単位のプランが1行ずつ表示されます。タスクの出力が次のタスクの入力になります。 + +「(2) プランを取得する」の実行例で、具体的にプランの表示を説明します。 + +- プランID1の「Input」は「0」なので、プランID0の結果を入力とします。 +- プランID1の「Rows」は「3000」なので、プランID0から入力のロウ数は3000です。 +- プランID1の「Node」は「192.168.15.161:10001」なので、このタスクはノード「192.168.15.161」で実行されました。 + + +  + +## クエリのチューニング + +WHERE句の絞り込み条件のスキャン処理や、テーブルのジョインのためのスキャン処理では、索引の利用有無によって大きく性能が変わる場合があります。 +また、テーブルのジョインの場合は、結合順序などによっても大きく性能が変わります。 +よって、これらをポイントにクエリのチューニングを行ってください。 + + +(1) プランの分析 + +プランを分析して、索引の利用有無や意図したとおりに動作しているかを確認します。 +プランの詳細は[SQLのプラン](#label_plan)をご参照ください。 + +- 索引の利用有無の確認方法 + + - WHERE句の絞り込み条件のスキャン処理や、テーブルのジョインのためのスキャン処理では、索引の利用有無によって大きく性能が変わる場合があります。 + - 遅いタスクの「Type」が「SCAN」の場合は、そのスキャン処理で索引を利用しているかどうかを確認します。 + - 索引を利用している場合は、「And mode..」に「INDEX SCAN」と表示されます。表示されない場合は、索引を使用していません。 + + +(2) チューニング + +プランの分析による問題点に応じて、次のような方法でチューニングを行います。 + +- 索引作成 + - 索引が必要なカラムに索引がついていなかった場合は、索引を作成します。 + - ただし、次のようなケースでは索引の効果が低いため、索引は作成しないことを推奨します。 + - カラムのカーディナリティが低い(カラムの値の種類がロウ数に比べて少ない)など、クエリ実行で索引を使用してもほとんど値を絞り込むことができない場合 + +- クエリの書き換え + - [SQLの最適化](#label_sql_optimization)に基づき、WHERE句の絞り込み条件やジョインの結合順序などの記述を書き換えます + - ヒント句を使用します。例えば、索引が付いているのに利用していない、またはクエリによっては索引を利用しない方がいい場合などは、ヒント句によってプランを変更します。 + +  + +例) +テーブルのジョインを行うクエリで、チューニングの例を説明します。 + +table1とtable2をカラムvalueの値で結合するクエリについて、プランを取得します。 + +``` +gs[public]> EXPLAIN ANALYZE select * from table1, table2 where table1.value=0 and table1.value=table2.value; +検索を実行しました。 (13 ms) +gs[public]> getplantxt +Id Type Input Rows Lead time Actual time Node And more.. +------------------------------------------------------------------------------------- + 0 SCAN - - 20 20 192.168.15.161:10001 table: {table1} + 1 SCAN - - 9 9 192.168.15.161:10001 table: {table2} + 2 JOIN 0,1 10000,3000 891 891 192.168.15.161:20001 JOIN_EQ_HASH + 3 RESULT 2 32 2 2 192.168.15.161:20001 +``` + +このプランでは、table1とtable2をそれぞれスキャンして、索引を使わずにジョインの処理を行っています。 + +テーブルの索引情報を確認すると、カラムvalueに索引が付いていなかったため、索引を作成します。 + +同じクエリを実行してプランを取得します。 + +``` +gs[public]> EXPLAIN ANALYZE select * from table1, table2 where table1.value=0 and table1.value=table2.value; +検索を実行しました。 (7 ms) +gs[public]> getplantxt +Id Type Input Rows Lead time Actual time Node And more.. +-------------------------------------------------------------------------------------------------------------------- + 0 SCAN - - 20 20 192.168.15.161:10001 table: {table1} + 1 SCAN 0 10000 80 80 192.168.15.161:10001 table: {table1, table2} INDEX SCAN JOIN_EQ_HASH + 2 RESULT 1 32 3 3 192.168.15.161:20001 +``` + +プランID2で「INDEX SCAN」と表示されており、索引を使用したジョイン処理にプランが変わっています。 + + +  + + + +# SQLの最適化 + + +## 索引を利用したスキャン + +テーブル全体から一部のデータを探すスキャン処理では、テーブルの全ロウにアクセスする「フルスキャン」よりも、テーブルの索引を用いてアクセスする「索引スキャン」の方が、多くの場合に高速になります。以下の処理を行う場合に利用できます。 +- WHERE句の絞り込み条件に一致するデータを求める処理 +- 集計関数を用いて最大値・最小値を求める処理 + +特に前者の場合は、WHERE句の絞り込み条件がテーブルのロウ数に対してヒット率が小さくなるような、データをより絞り込める条件ほど索引スキャンの効果が高くなります。 + +  + + +### 索引の選択ルール(絞り込み条件の処理) + +WHERE句の絞り込み条件を処理する際の索引選択ルールについて説明します。 + +指定された演算子や式によって、ルールが異なります。 +  + +**AND** + +基本的に、絞込み条件のカラムに索引が設定されている場合は先頭の索引を使用します。 + +例) +``` +a>1 AND b=2 (aとbに索引あり) +``` + - aの索引を使用します。 +  +  + +ただし、例外的に先頭の索引を使用しない場合もあります。例を以下に示します。 + +- 定数falseのOR条件"OR false"を付けると、索引を使用しません。 + + スキャンで索引を使用したくない場合は、この構文を指定してください。 + + 例) 「a>1 AND b=2」で、aの索引を使用したくない場合 + ``` + (a>1 OR false) AND b=2 (aとbに索引あり) + ``` + - aの索引は使用しません。bの索引を使用します。 + + 例) 「a>1 AND b=2」で、aとbの索引を使用したくない場合 + ``` + (a>1 AND b=2) OR false (aとbに索引あり) + a>1 AND b=2 OR false (aとbに索引あり) + ``` + - aとbの索引は使用しません。 + + +- AND条件内にORやINが含まれている場合は、索引利用可能な先頭の式(最も左側の式)でのみ索引を使用します。 + + 例) + ``` + (a=1 OR a=3) AND b=2 (aとbに索引あり) + a IN (1,3) AND b=2 (aとbに索引あり) + ``` + - aの索引を使用します。bの索引は使用しません。 + + 例) + ``` + (a=1 OR a=3 OR false) AND b=2 (aとbに索引あり) + (a IN (1,3) OR false) AND b=2 (aとbに索引あり) + ``` + - ANDの左辺の式は、定数falseのOR条件が付いていて索引利用できないので、索引利用可能な右辺のbの索引を使用します。 +  + +なお、同一カラムに対する条件が重複する場合は、条件をマージして索引を使用します。 + +例) +``` +a>1 AND a<=4 AND a<=3 (aに索引あり) +``` + - 条件"11 OR b=2 (aとbに索引あり) +``` + - aとbの索引を使用します。 + +例) +``` +a>1 OR b=2 (bに索引あり) +``` + - aに索引が設定されていないので、aとbの両方とも索引を使用しません。 + +  + +**比較演算子の式** + +比較演算子の値にカラム単独の式と定数式を用いる場合のみ、索引を使用します。 + +例) +``` +a>10*1000-1 (aに索引あり) +``` + - aの索引を使用します。 + +例) +``` +a+1>10*1000-1 (aに索引あり) +``` + - aの索引は使用しません。 + +例) +``` +a>b (aとbに索引あり) +``` + - aとbの索引は使用しません。 + +  + +**IN、BETWEEN** + +INとBETWEENは、ANDとORと比較演算子を組合せた式とみなしたうえで、上記のルールを適用します。 + +例) +``` +a IN (1,2) → a=1 OR a=2 (aに索引あり) +a BETWEEN 1 AND 2 → a>=1 AND a<=2 (aに索引あり) +``` + - aの索引を使用します。 + +  + +[メモ] +- 索引スキャンで使用する索引は、NoSQLまたはNewSQLインタフェースで作成したTREE索引、または、主キーに自動的に設定されるTREE索引のみです。 + NoSQLインタフェースで作成したHASH索引や空間索引は使用しません。 + +- SQL構文のヒント「NoIndexScan」を用いると、索引を使用しないスキャンが指定できます。ヒントの詳細は「[ヒント句](#label_hint)」をご参照ください。 + +### 索引の選択ルール(最大値・最小値を求める処理) + +集計関数で最大値・最小値を求める際の索引選択ルールについて説明します。 + +SELECT句のカラム式リストにおいて、索引が設定されたカラムを集計対象とするMIN関数とMAX関数を演算する場合には、原則として索引を使用します。また、これらの集計関数と定数式を組み合わせた式のみを含む場合にも索引を使用します。 + +[メモ] +- WHERE句を含むSQLの場合、この最適化が行われるのは絞込み条件が以下の組み合わせとなる場合に限ります。その他の条件が含まれる場合には索引を利用しません。 + - 集計対象のカラムに関する大小比較式 + - 常に真と評価される式 +- 対象のテーブルがパーティショニングテーブルの場合は、索引選択ルールはデータパーティションごとに適用されます。 +- 対象のテーブルがインターバルパーティショニングテーブルかインターバルハッシュパーティショニングテーブルの場合、個々のデータパーティション全体が含まれるような絞り込み条件式は、「常に真と評価される式」とみなされます。 + +例) + +``` +SELECT MIN(a) FROM table1 (aに索引あり) +SELECT MAX(a) FROM table1 WHERE a<10 (aに索引あり) +SELECT MAX(a)-MIN(a) FROM table1 (aに索引あり) +``` + - 集計関数に基づく索引として、aの索引を使用します。 + +例) +``` +SELECT MIN(a), MAX(b) FROM table1 (a、bに索引あり) +``` + - 集計関数に基づく索引として、a、bの索引をそれぞれ使用します。 + +例) +``` +SELECT MAX(a) FROM table1 WHERE a=10 (aに索引あり) +SELECT MAX(a) FROM table1 WHERE b<10 (aに索引あり、パーティショニング設定なし) +SELECT MIN(a), SUM(a) FROM table1 (aに索引あり) +SELECT MIN(a), MAX(b) FROM table1 WHERE a<10 (a、bに索引あり) +``` + - 集計関数に基づく索引としては、aの索引を使用しません。 + +例) +``` +SELECT MAX(a) FROM table1 WHERE b>=TIMESTAMP('2024-01-01T00:00:00Z') + (aに索引あり、bは1日インターバルのパーティショニングキー) +``` + - 集計関数に基づく索引として、aの索引を使用します(各データパーティションのスキャン処理について)。 + +### 複合索引の選択ルール + +GridDBのSQL最適化において、スキャン処理で使用する複合索引の選択ルールを説明します。 + +絞り込み条件に指定されたカラムや演算子によって、索引を使用する範囲が異なります。 +複合索引を構成するカラムの先頭よりAND条件で連続して存在するカラムの条件までを複合索引として使用します。 + +[メモ] +- OR条件が入ると、それ以降の条件は複合索引として使用しません。 +- SQLのカラム記述順は複合索引利用有無に影響しません。 +- カラム値を関数で処理した値を条件比較する場合、索引は利用されません。 + +例) +``` +where col1 = 1 and col2 = 1 and col3 = 2 (col1,col2,col3の複合索引あり) +``` + - col1,col2,col3の条件で複合索引を使用します。 +``` +where col1 = 1 and col2 > 1 and col3 < 2 (col1,col2,col3の複合索引あり) +``` + - col1,col2,col3の条件で複合索引を使用します。 +``` +where col1 = 1 and col2 = 1 (col1,col2,col3の複合索引あり) +``` + - col1,col2の条件まで複合索引を使用します。 +``` +where col1 = 1 and col3 = 2 (col1,col2,col3の複合索引あり) +``` + - col1の条件まで複合索引を使用します。(第二カラムcol2の指定がないため) +``` +where col2 = 1 (col1,col2,col3の複合索引あり) +``` + - 複合索引を使用しません。(第一カラムcol1の指定がないため) +``` +where col1 = 1 and (col3 >= 0 and col3 < 10) and col2 = 1 (col1,col2,col3の複合索引あり) +``` + - col1,col2,col3の条件で複合索引を使用します。 +``` +where col1 = 1 and (col3 = 0 or col3 = 1) and col2 = 1 (col1,col2,col3の複合索引あり) +``` + - col1,col2の条件まで複合索引を使用します。 +``` +where (col1 = 0 or col1 = 1) and col2 = 1 (col1,col2,col3の複合索引あり) +``` + - col1の条件まで複合索引を使用します。 +``` +where col1 = 1 and (col3 >= 0 and col3 < 10) (col1,col2,col3の複合索引あり) +``` + - col1の条件まで複合索引を使用します。  +``` +where col1 = 1 and (col3 >= 0 and col3 < 10) and ABS(col2) = 1 (col1,col2,col3の複合索引あり) +``` + - col1の条件まで複合索引を使用します。 + + +## ジョイン + +GridDBのSQL最適化において、複数テーブルのジョイン演算の実行の仕方を決定する方法について説明します。 + +- [ジョイン順序の決定方法](#join_order_selection_approach) + - 複数テーブルをジョインする順序を決定します。 + - 順序の決め方にはコストベースによる方法とルールベースによる方法の2通りの方法があります。 + +- [索引適用の決定方法](#join_index_adaption_rule) + - ジョインの処理に索引を利用するかどうかをルールにより決定します。 + +- [索引選択の決定方法](#join_index_selection_rule) + - 索引適用ルールで索引を利用することが決まった場合に、どの索引を選択するかをルールにより決定します。 + +- [ジョイン演算方法の決定方法](#join_calculation_method_selection_rule) + - ジョイン処理の演算方法をルールにより決定します。 + +索引を使用しないジョイン処理においては、ジョイン順序やジョイン演算方法の違いが性能に大きく影響します。 + + +### ジョイン順序の決定方法 + +SQL実行時、3つ以上のテーブルの結合がある場合、どのテーブルをどの順番でジョインするか順序を決める必要があります。順序の決め方には、コストベースによる方法とルールベースによる方法の2種類あります。いずれを用いるかは設定により選択できます。 + + +#### 順序決定方法の設定 + +コストベースによる方法とルールベースによる方法のいずれを用いるかは切り替え可能で、以下のようにして設定できます。 + +- サーバのクラスタ設定(gs_cluster.json)にいずれの方法を用いるか設定できます。全てのSQLについて同じ決定方法になります。具体的な設定方法は『[GridDB 機能リファレンス](../md_reference_feature/md_reference_feature.md)』を参照してください。 +- ヒントを記述することでいずれの方法を用いるかを指定できます。ヒントを記述したSQL毎に決定方法を指定できます。具体的な記述方法は[ヒント句](#label_hint)を参照してください。 + +【メモ】 +- ジョイン順序の決定方法のデフォルトは、コストベースによる方法です。 + + +#### コストベースによる方法 + +コストベースによるジョイン順序の決定方法は、ジョイン演算を実行するコストが最も低いと推定される順序を決定する方法です。 +ここで用いるコストは、ジョインするテーブルやジョイン結果(中間結果)のロウ件数を推定で概算したものです。 +複数テーブルのジョインを行う場合、どのテーブルとどのテーブルを選んでジョインするか、どの順序でジョインするかなど、多くのジョイン演算の候補が考えられます。 +このジョイン演算の候補それぞれについて、入出力となるロウ件数を推定で概算し、SQL実行時にジョイン演算されるロウ件数が最も小さくなると推定したものを選んでいきます。 +演算するロウ件数が少ない方が高速に演算できるため、最終的に選ばれたものが最適なジョイン順序になります。 + +ジョイン出力のロウ件数概算値は、GridDBが以下の絞り込み度合いの強さの観点の各基準に従い評価することで、求められます。 + +- ジョイン演算自体の絞込み度合いの観点 +- ジョイン結果の絞込み度合いの観点 + +絞込み度合いの判断には以下の評価基準が用いられます。 + +- 比較条件の種別に関する基準。以下の順番で絞込み度合いが強いと評価されます。 + - 等値比較(=,IN) + - 大小比較(<,<=,>,>=,BETWEEN) +- 条件の論理積・和の構造に関する基準。以下の順番で絞込み度合いが強いと評価されます。 + - 論理積(AND)結合の数(より多いほうが強い) + - 論理和(OR)結合の数(より多いほうが弱い) + +[メモ] + +- もし絞込み度合いが同じジョイン演算の候補が複数あった場合、コスト(ロウ件数概算値)による順序決定ができないので、以下の優先度に従いジョインを先に実行する順序にします。 + + - ジョイン(部分木)に含まれるノードのロウ件数概算値の最大値が小さいほう + - ジョイン(部分木)に含まれるノード数が少ないほう + - SQLにより前に記述されたほう + +コストベースによる方法とルールベースによる方法とでは、順序決定の判断基準が異なるため、ジョイン順序が異なることがあります。(ルールベースの詳細については[ルールベースによる方法]("#rule_based_join_order_selection_approach")を参照してください。) + +以下の3つのテーブル(A,B,C)の単純なジョインの例で違いを説明します。 + + 例) + ``` + SELECT * FROM A,B,C + WHERE A.x = B.x AND B.y = C.y + ``` + +コストべースによる方法の場合、与えられたSQLと各テーブルのロウ件数概算値を参照、解析します。この例では、テーブルAのロウ件数概算値がほかのテーブルと比較して桁違いに大きい状態です。この場合、テーブルAのジョイン演算はコストが大きいと判断されます。その結果、テーブルBとテーブルCのジョイン演算を先に実行し、最後にテーブルAに関するジョイン演算を行う、下図のようなジョイン順序のプランを生成します。 +
+結合順序(コストベースによる方法の場合) +
ジョイン順序(コストベースによる方法の場合)
+
+ +ルールベースによる方法の場合、与えられたSQLのみを解析してプランを生成します。例のSQLの場合、記述された順に従い、下図のようなジョイン順序のプランを生成します。ロウ件数が多いテーブルAのジョイン演算の出力は件数が多い可能性が高いですが、SQL文の記述に従い、その演算結果とテーブルCとのジョインを行うプランを生成します。 +
+結合順序(ルールベースによる方法の場合) +
ジョイン順序(ルールベースによる方法の場合)
+
+ +[メモ] + - コストベースによる方法の判断基準となるコストはあくまで推定値のため、コストベースによる方法で生成したプランがルールベースによる方法で生成したものより高速にならない場合があります。SQLを評価して、必要に応じて[ヒント句](#label_hint)などによりチューニングすることを推奨します。 + + + +#### ルールベースによる方法 + +ルールベースによるジョイン順序の決定方法は、記述したSQLの結合や絞込み度合いの強さによって順序を決める方法です。 + +- 結合度合いの強いテーブルは、連続してジョインするような順番になります。 + + 例) + ``` + FROM A, B, C + ``` + - 何も指定が無い場合は、記述した順番になります。(AとBでジョイン、その結果とCでジョイン) + + 例) + ``` + FROM A, B, C WHERE A.x=C.z AND C.z=B.y + ``` + - AとC間の結合度合いが高いため、A・C・Bの順番になります。(AとCでジョイン、その結果とBでジョイン) + + 例) + ``` + FROM A, B, C WHERE A.x>=C.z AND C.z>=B.y AND B.y=A.x + ``` + - AとB間の結合度合いが高いため、A・B・Cの順番になります。(AとBでジョイン、その結果とCでジョイン) + + +- 絞込み度合いの強いテーブル(該当データ数が少ないと推定されるもの)ほど、ジョインの順番が先になります。 + + 例) + ``` + FROM A, B, C WHERE A.x=C.z AND C.z=B.y AND B.x=1 + ``` + - Bの方が絞り込み度合いが強いため、B・C・Aの順番になります。 + + 例) + ``` + FROM A, B, C WHERE A.x=C.z AND C.z=B.y AND A.x IN (1, 2) AND B.x IN (1, 2, 3) + ``` + - Aの方が絞り込み度合いが強いため、A・C・Bの順番になります。 + + +[メモ] +- SQL構文のヒント「Leading」を用いると、ジョインの順序を入れ替えることができます。ヒントの詳細は[ヒント句](#label_hint)をご参照ください。 + + + +### 駆動表の選択 + +結合処理において、最初にアクセスするテーブルを駆動表、次にアクセスして結合するテーブルを内部表といいます。駆動表の決め方には、コストベースによる方法とルールベースによる方法の2種類あります。いずれを用いるかは設定により選択できます。 + + +#### 駆動表の選択方法の設定 + +コストベースによる方法とルールベースによる方法のいずれを用いるかは切り替え可能で、以下のようにして設定できます。 + +- サーバのクラスタ設定(gs_cluster.json)にいずれの方法を用いるか設定できます。全てのSQLについて同じ決定方法になります。具体的な設定方法は『[GridDB 機能リファレンス](../md_reference_feature/md_reference_feature.md)』を参照してください。 +- ヒントを記述することでいずれの方法を用いるかを指定できます。ヒントを記述したSQL毎に決定方法を指定できます。具体的な記述方法は[ヒント句](#label_hint)を参照してください。 + +【メモ】 +- 駆動表の選択方法のデフォルトは、コストベースによる方法です。 + + +#### コストベースによる方法 + +コストベースによる駆動表の決定方法は、ジョイン演算を実行するコストが最も低いと推定される順序を決定する方法です。 +ここで用いるコストには、次の2種類があります。 + +- 中間出力コスト +ジョイン演算の入力となりうる各プランノードにおける、中間結果の出力ロウ件数の推定規模です。推定される下限値・上限値と、それらの推定値の確度(確定or概算)により示されます。 + +- スキャンコスト +ジョイン演算の内部表となりうる各スキャンプランのノードにおける、データ読み出し量の推定規模です。 + +※プランノード: SQL実行プランの構成要素です。このプランノードは、SQL実行の際に、分散処理の基本単位(タスク)と一対一で対応します。プランノードの演算の種別としてはスキャンやジョインなどがあり、それぞれの種別や演算内容に応じた負荷見積もりは、ジョイン方向を定めるための基本的な判断材料として用いられます。 + +対象のジョイン演算に関わる中間出力コスト・スキャンコストを合わせた総コストについて、(ジョイン方向を定めない場合対比で)その削減効果が一定程度見込まれる場合にのみジョイン方向を定めることとし、かつ、総コストがより低くなる方を駆動表側とするよう判定します。 + +【メモ】 +- この基準を用いることで、ジョイン演算や関係するスキャン演算の実コスト(処理時間・リソース量)を近似的に推定するものとします。絞り込み条件式や対応する索引、データ分布によって、推定コストと実コストの差異が変動することがあります。 +- ルールベースによる方法の場合に存在する制約条件(例:内部表側テーブルに対する索引有無)には依存しません。 + + + +#### ルールベースによる方法 + +ジョインの順序(駆動表と内部表)は次のルールで決まります。 + +2つのテーブルの結合の場合、定数の等価絞込み条件があるテーブルが駆動表になります。両テーブル共に満たす場合は、先に記述された方を駆動表として判定します。 + +例) +``` +t1.a=t2.x AND t2.y=1 +``` + - 定数1との絞込み条件があるt2が駆動表、t1が内部表になります。 + + +### 索引適用の決定方法 + +ジョイン処理で索引を使用するかどうかのルールを説明します。 + +次の5つのすべてを満たす場合に索引を使用します。 + +- 駆動表側に等価絞込み条件がある + + 例) + ``` + t1.a=t2.x AND t2.y=1 (aに索引あり、駆動表はt2、内部表はt1) + ``` + - 駆動表の絞込みが等価条件(t2.y=1)なので、ジョイン処理に索引を適用します。 + + 例) + ``` + t1.a=t2.x AND t2.y>1 (aに索引あり、駆動表はt2、内部表はt1) + ``` + - 駆動表の絞込みが等価条件ではない(t2.y>1)ので、ジョイン処理に索引を適用しません。 +   + + +- 第一結合条件が等価結合条件である + + 例) + ``` + t1.a>t2.x AND t1.b=t2.y AND t2.z=1 (aに索引あり、駆動表はt2、内部表はt1) + ``` + - 第一結合条件が等価結合条件ではない(t1.a>t2.x)ので、ジョイン処理に索引を適用しません。 +   + +- 第一結合条件の内部表側の等価結合条件カラムに索引が設定されている + + 例) + ``` + t1.a=t2.x AND t2.y=1 (aに索引なし、駆動表はt2、内部表はt1) + ``` + - 第一結合条件の内部表側の等価結合条件カラムt1.aに索引が設定されていないので、ジョイン処理に索引を適用しません。 +   + +- INNER JOINである + +- NoIndexJoinヒントで無効化されていない + + +[メモ] +- ジョインの駆動表と内部表の選択は、Leadingヒントを用いて指定することができます。ヒントの詳細は[ヒント句](#label_hint)をご参照ください。 +- ジョインでの索引の適用有無は、IndexJoinヒント/NoIndexJoinヒントを用いて指定することもできます。ヒントの詳細は[ヒント句](#label_hint)をご参照ください。 + + + +### 索引選択の決定方法 + +ジョインの構文が[索引適用の決定方法](#join_index_adaption_rule)に当てはまる場合、索引を使用してジョインを行います。 +ジョインで使用する索引を選択するルールを説明します。 + +基本的に、スキャンの[索引の選択ルール](#scan_index_selection_rule)と同様です。 +カラムに設定されている索引はすべて記述順に使用します。 + +すべての索引を使用しない場合もあります。例を以下に示します。 + +絞込み条件のカラムに索引が設定されている場合は先頭の索引を使用します。 + + 例) + ``` + t1.a=t2.x AND t1.b>t2.y AND t2.z=1 (aとbに索引あり、駆動表はt2、内部表はt1) + ``` + - aの索引のみを使用します。 + +  + +OR条件(A OR B)において、Bがfalse定数の場合、Aの索引は使用しません。 + + 例) + ``` + t1.a=t2.x AND (t1.b=t2.y OR false) AND t2.z=1 (aとbに索引あり、駆動表はt2、内部表はt1) + ``` + - bの索引は使用しません。aの索引を使用します。 + +  + + +### ジョイン演算方法の決定方法 + +ジョインの演算方法には次の3つの種類があります。 + +| ジョインの演算方法 | 説明 | +|------------------------|------| +| ハッシュジョイン | 駆動表の結合キーをハッシュ関数にかけてメモリ上に一時的なテーブルを作り、内部表のハッシュ値と一致するか比較して結合する方法です。 | +| ソートマージジョイン | 結合する2つのテーブルを結合キーでソートして、それらを順に比較して結合する方法です。 | +| ネステッドループジョイン | 駆動表の結合キーの値を元に、結合条件に合致する内部表のデータを探して結合する方法です。 | + +速度が速いのは、ハッシュ、ソートマージ、ネステッドループの順です。 + +  + +ジョインの第一結合条件の種類によって、これらの演算方法を選択します。 + +| 第一条件 | 選択する演算方法 | +|---------|----------------------------------| +| 等価条件 | ハッシュまたはソートマージジョイン
(ハッシュが選択されていても、メモリリソースの制限により、部分的にソートマージに切り替わることがあります。) | +| 大小条件 | ソートマージジョイン | +| なし | ネステッドループジョイン | + +  + +ジョインの第一結合条件は、次の優先順で選択します。 + +- 単純カラム式を優先して第一結合条件とします。 + + 例) + ``` + t1.a=abs(t2.x)+10 AND t1.b=t2.y + ``` + - 単純カラム式なので、t1.b=t2.yを第一条件とします。第一条件が等価条件なので、ハッシュまたはソートマージジョインを使用します。 + + +- 単純カラム式が複数ある場合は、先に記述されている式を第一結合条件とします。 + + 例) + ``` + t1.a>t2.x AND t1.b=t2.y + ``` + - "t1.a>t2.x"と"t1.b=t2.y"は両方とも単純カラム式なので、記述順で"t1.a>t2.x"を第一条件とします。第一条件が大小条件なので、ソートマージジョインを使用します。 + +  + +## ヒント句 +  +実行計画を示すヒントをクエリに指定することで、SQL文を変えることなく実行計画を制御できます。 + +【注意事項】 +- 本機能は将来のバージョンで変更される可能性があります。 + +### 用語 + +ヒント機能で用いる用語は次のとおりです。 + +| 用語 | 説明 | +|----------|--------------------------------------------------------------| +| ヒント句 | 実行計画を制御するための情報 | +| ヒント | ヒント句を列挙したもの。実行計画を制御するクエリに指定する。 | + +### ヒントの指定方法 + +実行計画を制御するクエリのブロックコメントの中にヒントを記述します。ヒント用のブロックコメントは、 SQL文中の先頭のSELECT(INSERT/UPDATE/DELETE)句の直前または直後のみ記述できます。通常のコメントと区別するため、 ヒント用のブロックコメントは「/\*+」で始めます。 + +ヒントの対象は、ヒント句の括弧内にオブジェクト名または別名で指定します。複数のオブジェクト名を指定する場合、 スペース、タブ、改行のいずれかで区切って指定します。 + +以下の例では、Leadingヒント句により、テーブル結合順序を指定しています。 + +``` example +/*+ +Leading(t3 t2 t1) + */ +SELECT * + FROM t1, t2, t3 + ON t1.x = t2.y and t2.y = t3.z + ORDER BY t1.x + LIMIT 10; +``` + +【メモ】 +- クエリ中に同一名称のテーブルが複数回現れる場合、それぞれのテーブルに別名をつけて区別してください。 + +### ヒント句一覧 + +指定できるヒント句の一覧を次に示します。 + +| 分類 | 命令 | 説明 | +|------------------|------------------------------------------------|-----------------------------------------------| +| 並列化 | MaxDegreeOfTaskInput(上限数) | 1タスクへの入力の上限 | +| | MaxDegreeOfExpansion(上限数) | プランノードの展開数の上限 | +| スキャン方式 | IndexScan(テーブル) | 可能な場合はインデックススキャンを選択する | +| | NoIndexScan(テーブル) | インデックススキャンを選択しない | +| ジョイン順序 | CostBasedJoin() | コストベースによるジョイン順序決定を行う | +| | NoCostBasedJoin() | コストベースによるジョイン順序決定を行わない(ルールベースによるジョイン順序決定を行う) | +| | TableRowCount(テーブル ロウ件数) | コストベースによるジョイン順序決定のためのロウ件数概算値を与える(コストベースによるジョイン順決定を行う場合にのみ有効) | +| 結合方式 | IndexJoin(テーブル テーブル) | 可能な場合はインデックスジョインを選択する | +| | NoIndexJoin(テーブル テーブル) | インデックスジョインを選択しない | +| 結合順序 | Leading(テーブル テーブル\[ テーブル ...\]) | 指定したテーブルを指定した順序で結合する | +| | Leading(( **テーブル集合** **テーブル集合** )) | 1つ目に指定したテーブル集合を外部表、
2つ目に指定したテーブル集合を内部表として結合する | +| 中間ロウ生成数 | MaxGeneratedRows(上限数)           | GROUP BY RANGE句を用いた補間演算タスクで生成されるロウ数の上限 | + + +**テーブル集合** = { テーブル or ( **テーブル集合** **テーブル集合** ) } + +### ヒント句詳細 + +ヒント句の分類ごとに詳細を説明します。 + +#### 並列化 + +並列化処理の制御を行います。 + +- MaxDegreeOfTaskInput(上限数) + - 1タスクへの入力の上限数を指定します。以下の処理に適用されます。 + - テーブルパーティショニングの設定されたテーブルをスキャンした場合のUNION ALL処理 +- MaxDegreeOfExpansion(上限数) + - プランノードの展開数の上限を指定します。以下の処理に適用されます。 + - プッシュダウンジョイン最適化処理 + +#### スキャン方式 + +テーブルのスキャン方式を指定します。 + +- IndexScan(テーブル) + - 可能な場合はインデックススキャンを選択します。元々インデックススキャンが不可能な場合は何もしません。 +- NoIndexScan(テーブル) + - インデックススキャンを選択しません。 + + +#### ジョイン順序 + +3つ以上のテーブルが与えられた場合のジョイン順序の決定方法を指定します。 + +- CostBasedJoin() + - コストベースによる方法でジョイン順序を決定します。 +- NoCostBasedJoin() + - コストベースによる方法を用いないで、ルールベースによる方法でジョイン順序を決定します。 +- TableRowCount(テーブル ロウ件数) + - コストベースによるジョイン順序決定のためのコスト計算に用いるロウ件数の概算値を与えます。(ただし、コストベースによるジョイン順決定を行う場合にのみ有効です) + +#### ジョイン駆動表 + +ジョイン駆動表の決定方法を指定します。 + +- CostBasedJoinDriving() + - コストベースによる方法で駆動表を決定します。 +- NoCostBasedJoinDriving() + - コストベースによる方法を用いないで、ルールベースによる方法で駆動表を決定します。 + +【メモ】 +- 同一のSQL文内で、コストベースのジョイン駆動表最適化の有効化・無効化ヒント両方の指定、この種別のヒントの複数回の指定はできません。 +- コストベースのジョイン最適化全般に対するヒント指定(CostBasedJoin / NoCostBasedJoin)や関連するクラスタ設定が同時に設定された場合、コストベースのジョイン駆動表最適化の有効化・無効化ヒントの指定が優先されます。 +- ジョイン方向に関するヒント指定(方向指定のLeadingヒント)が同時に指定された場合、該当するジョイン演算についてのみ、その指定に従うルールベースの最適化が適用されます。 + + +#### 結合方式 + +結合方式を指定します。 + +- IndexJoin(テーブル テーブル) + - 可能な場合はインデックスジョインを選択します。 元々インデックスジョインが不可能な場合は何もしません。 +- NoIndexJoin(テーブル テーブル) + - インデックスジョインを選択しません。 + +#### 結合順序 + +テーブルのジョイン処理でどのような順番で結合するかを指定します。 + +**(1) 結合順序のみ指定: Leading(テーブル テーブル\[ テーブル ...\])** + +先に結合するテーブルから順にテーブル名または別名を指定します。この指定方式の場合、常にLeft-deep joinで結合されます。 + +(例1) + +``` example +/*+ Leading(S R Q P) */ +SELECT * FROM P,Q,R,S WHERE P.x = Q.x AND ... +``` + +
+結合順序(例1) +
結合順序(例1)
+
+ + +**(2) 結合方向を含めた指定: Leading((テーブル集合 テーブル集合))** + +テーブル集合 = { テーブル or (テーブル集合 テーブル集合) } + +(1)のように結合順序のみを指定した場合、結合方向(外部表/内部表の別)が期待と異なる場合があります。 結合方向を固定したい場合は以下の書式を使います。 + +``` example +/*+ Leading((t1 (t2 t3))) */ +SELECT ... +``` + +この書式では、括弧をネストして記述できます。括弧内の1つ目に指定したテーブル集合を外部表、 2つ目に指定したテーブル集合を内部表として結合されます。 + +(例2-1) + +``` example +/*+ Leading(((P Q) R)) */ +SELECT * FROM P,Q,R WHERE P.x = Q.x AND ... +``` + +
+結合順序(例2-1) +
結合順序(例2-1)
+
+ + +(例2-2) + +``` example +/*+ Leading((R (Q P))) */ +SELECT * FROM P,Q,R WHERE P.x = Q.x AND ... +``` + +
+結合順序(例2-2) +
結合順序(例2-2)
+
+ + +(例2-3) + +``` example +/*+ Leading(((P Q) (R S))) */ +SELECT * FROM P,Q,R,S WHERE P.x = Q.x AND ... +``` + +
+結合順序(例2-3) +
結合順序(例2-3)
+
+ + +【メモ】 +- 3つ以上のテーブルの結合で、テーブル間の結合条件が1つもない場合は、ヒントによる順序指定はできません。 + +#### 中間ロウ生成数 + +1タスクが中間生成するロウ数の上限を設定します。GROUP BY RANGE句を用いた補間演算タスクに適用されます。 + +- MaxGeneratedRows(上限数) + - 上限数は、1タスクが生成する中間結果のロウ数に対する設定値です。 + 以下の処理に適用されます。 + - GROUP BY RANGE句を用いた補間演算を行うタスク + - SQL実行の結果、最終的に得られるロウ数は複数タスクの合計となるため、この設定値より大きくなることがあります。 + +### エラーの扱い + +以下の場合は構文エラーとなります。 +- ヒント用のブロックコメントを複数記述した場合 +- ヒントを記述できない位置にヒントを記述した場合 +- ヒント句の記述に構文上の誤りがあった場合 +- 同じテーブルに対して同じ分類のヒント句を重複して指定した場合 + +以下の場合はテーブル指定エラーとなります。 +- ヒント句対象のテーブル指定に誤りがあった場合 + +【メモ】 +- テーブル指定エラーが起こった場合、対象のヒント句を無視し、それ以外のヒント句を使ってクエリを実行します。 +- 構文エラーとテーブル指定エラーが同時に起こった場合は構文エラーとなります。 + + + + +  + +# SQLのプラン(実行計画) + +SQL最適化によってどのような演算や索引が選択されたかは、SQLのEXPLAIN ANALYZE文で確認することができます。 + +SQLの処理では、SQL構文を解析して最適化し、ジョインやソート・スキャンなどの複数の「タスク」という処理単位に分解してプラン(実行計画)を生成します。 + +タスクは、クラスタを構成するノードのいずれかひとつで実行され、タスク間でデータのやり取りをしながら並列実行します。 + +[メモ] +- SQL最適化によるプランが適さない場合は、ヒントを用いてプランを変更することができます。詳細は[ヒント句](#label_hint)をご参照ください。 + +  + +EXPLAIN ANALYZE文を実行すると、タスクのプランや実行時間などの情報を、タスク単位で1行ごとにJSON形式で出力します。 + +出力する主な項目は以下の通りです。 + +| 項目 | 説明 | +|------|------| +| id | プランID | +| type | 処理の種類 | +| inputList | 入力値となるプランのプランIDの列 | +| profile/plan | (コストベースによるジョイン順決定を行った場合)プラン生成時に推定したコスト情報 | +| profile/leadtime | 処理時間 | +| profile/rows | 入力件数 | +| profile/address | 処理を実行したノードのアドレスとポート番号 | + +[メモ] +- 入力件数はタスク間の制御情報の伝搬タイミングなどに応じて変動する可能性があります。 + +処理の種類は以下の通りです。 + +| typeの値 | 説明 | +|----------|-----| +| GROUP | グルーピング演算 | +| JOIN | ジョイン演算 | +| LIMIT | 行単位件数フィルタ演算 | +| SCAN | テーブルスキャン演算 | +| SELECT | 選択演算(条件フィルタ・プロジェクション) | +| SORT | ソート演算 | +| UNION | 連結・集合演算 | +| INSERT、UPDATE、DELETE | 各種コンテナ変更操作 | +| DDL | DDL・DCL文相当 | +| RESULT | 結果の保持 | + +  + +プランは、運用ツールgs_shで取得することができます。 +  + +例) クエリ「select * from table1, table2 where table1.value=0 and table1.id=table2.id」のプラン取得 + +``` +gs[public]> EXPLAIN ANALYZE select * from table1, table2 where table1.value=0 and table1.id=table2.id; +検索を実行しました。 (11 ms) +gs[public]> getplantxt +Id Type Input Rows Lead time Actual time Node And more.. +-------------------------------------------------------------------------------------------------------------------- + 0 SCAN - - 0 0 192.168.15.161:10001 table: {table1} INDEX SCAN + 1 SCAN 0 0 2 2 192.168.15.161:10001 table: {table1, table2} INDEX SCAN JOIN_EQ_HASH + 2 RESULT 1 0 0 0 192.168.15.161:20001 +``` + +gs_shでサブコマンドgetplanjsonを実行すると、プランをJSON形式で出力することもできます。 + +[注意] + +- プランのJSON形式は、今後のバージョンでデータ構造が変わる可能性があります。 + +例) プランのJSON形式の例 +``` +{ + "nodeList" : [ { + "cmdOptionFlag" : 65, + "id" : 0, + "indexInfoList" : [ 3, 3 ], + "inputList" : [ ], + "outputList" : [ { + "columnId" : 0, + "columnType" : "INTEGER", + : + : +} +```