データ・モデル
zookeeperでは、zookeeperに格納されるすべてのデータはznodeで構成され、ノードはznodeとも呼ばれ、key/valueの形式でデータを格納します。
全体的な構造はLinuxファイルシステムの構造と似ており、ツリー構造で保存されます。 ルートパスは/で始まります。
zookeeperによってインストールされたbinディレクトリに入り、sh zkCli.shからコマンドラインターミナルを開き、”ls /”コマンドを実行します。
$ ls /
$ ls /zookeeper
$ ls /zookeeper/quota
この時点で格納されているデータには、ルートディレクトリにceodataとzookeeperの2つのノードがあり、zookeeperノードにはquotaという名前のノードがあることが直感的に分かります。
ceodataノードは前の記事で作成され、Javaクライアントによって値を0に設定しました。次に、コマンドラインターミナルでget /ceodata を実行して、このノードのプロパティを表示します。
$ get /ceodata
1行目に示されている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 | ノードには子ノードの数があります。(直接の子ノードの数のみをカウントします) |
上記の状態属性値に対して、一応 /ceodata ノードを変更し、コマンドset /ceodata 1を実行します。次には例を挙げます。
$ set /ceodata 1
上記の結果を比較すると、mZxid、mtime、およびdataVersionがすべて変更されています。
/ceodata ノードに、別の子ノードを追加して実行します。
$ create -e /ceodata/child 0
$ get /ceodata
ヒント:その他のコマンドについては、次の記事で詳しく説明します。
ターミナルコマンドラインを実行した後、次の内容が表示されます:
/ceodataノードのpZxid、cversion、およびnumChildrenがすべてそれに応じて変更されています。
コメントを残す