# はじめに

# 本書の目的と構成

本書は、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つのテーブルに対して、データパーティションは複数作成されます。データパーティションは、通常のコンテナと同様に各ノードに分散配置されます。データパーティションの数や格納するデータの範囲は、テーブルパーティショニングの種類(ハッシュ、インターバル、インターバル-ハッシュ)によって異なります。
データアフィニティ 関連の強いコンテナのデータを同じブロックに配置し、データアクセスの局所化を図ることでメモリヒット率を高めるための機能です。
ノードアフィニティ 関連の強いコンテナを同じノードに配置し、データアクセス時のネットワーク負荷を減少させるための機能です。