データモデル
zookeeper では、zookeeper に保存されているすべてのデータは znode で構成されていると言えます。ノードは znode とも呼ばれ、データは key/value 形式で保存されます。
全体構造は Linux ファイルシステムの方式に似ており、ツリー構造で保存されます。その中でルートパスは/で始まります。
zookeeper のインストール先の bin ディレクトリに入り、sh zkCli.sh でコマンドライン端末を開き、"ls /" コマンドを実行すると表示されます:$ ls / $ ls /zookeeper $ ls /zookeeper/quota

このとき保存されているデータは、ルートディレクトリに サンプル と zookeeper の2つのノードがあり、zookeeper ノードの下に quota というノードがあることが直感的にわかります。

サンプル ノードは前の章で作成し、Java クライアントを介して値を 0 に設定しました。ここでコマンドライン端末で実行しますget /サンプルこのノードの属性を表示します。
$ get /サンプル

そのうち、最初の行に表示されている 0 はこのノードの value 値です。
Znode の状態属性
| cZxid | ノード作成時のトランザクションID |
|---|---|
| ctime | ノード作成時の時刻 |
| mZxid | ノードを最後に変更したときのトランザクションID |
| mtime | ノードを最後に変更したときの時刻 |
| pZxid | このノードの子ノードリストが最後に変更されたときのトランザクションIDを表します。子ノードの追加または削除は子ノードリストに影響しますが、子ノードのデータ内容を変更してもこのIDには影響しません。(注意:子ノードリストが変更された場合のみ pzxid が変更されます。子ノードの内容変更は pzxid に影響しません) |
| cversion | 子ノードのバージョン番号。子ノードが変更されるたびにバージョン番号が1増加します。 |
| dataversion | データのバージョン番号。データが変更されるたびにこのバージョン番号が1増加します。 |
| aclversion | 権限のバージョン番号。権限が変更されるたびにこのバージョン番号が1増加します。 |
| ephemeralOwner | この一時ノードを作成したセッションの sessionID。(**このノードが永続ノードの場合、この属性値は0になります)** |
| dataLength | このノードのデータ長 |
| numChildren | このノードが持つ子ノードの数(直接の子ノードのみカウントします) |
上記の状態属性値を理解したところで、私たちは/サンプルノードに一度変更を加え、コマンドを実行しますset /サンプル 1、下図に示すように:
$ set /サンプル 1

上記の結果と比較すると、mZxid、mtime、dataVersion がすべて変更されたことがわかります。
に/サンプルノードの下に、さらに子ノードを1つ追加し、次を実行します:
$ create -e /サンプル/child 0 $ get /サンプル
ヒント:その他のコマンドの使い方は、後の章で詳しく説明します。
ターミナルのコマンドラインを実行すると、以下のように表示されます:

見てわかるように、/サンプルノードの pZxid、cversion、numChildren はすべて相応に変更されました。