Avroスキーマの管理

スキーマの追加
スキーマの変更
スキーマの無効化および有効化
スキーマの表示

Avroは、ストアのレコードの値で使用できるデータ形式です。レコードの値でAvroデータ形式を使用するかどうかは、開発チームによって決められます。ただし、ストアでAvroを使用する利点は多いため、Avroデータ形式の使用を強くお薦めします。

ストア・レコードがAvroデータ形式を使用する場合、開発チームはその形式を使用するためのスキーマを定義する必要があります。このスキーマはJSON形式のフラットテキスト・ファイルで提供され、その後CLIを使用してストアに追加する必要があります。スキーマは有効化および無効化することもできます。複数のバージョンのスキーマが同時に存在することもできます。スキーマを変更(または展開)する機能をサポートするためには、複数のバージョンのスキーマをサポートする機能が必要です。

スキーマの追加

Avroスキーマは、フラット・テキスト・ファイルで定義してから、コマンドライン・インタフェースを使用してストアに追加します。たとえば、my_schema.avscというファイルでスキーマが定義されるとします。次に、(ストアが実行中と仮定して)コマンドライン・インタフェースを起動してスキーマを次のように追加します。

> java -Xmx256m -Xms256m \
-jar <kvhome>/lib/kvstore.jar runadmin -port <port> -host <host>
kv-> ddl add-schema -file my_schema.avsc

スキーマをストアに追加する際、スキーマが正しく構成されているか確認するためにエラー・チェックが実行されます。エラーは、スキーマをストアに追加できるようにするために、対処が求められる問題です。警告は対処が必要な問題ですが、それほど重大ではないためCLIがスキーマの追加を拒否します。ただし、警告付きでスキーマを追加するには、-forceスイッチを使用する必要があります。

スキーマをストアに追加する際にエラーまたは警告が表示された場合は、その対処方法について開発チームと協議してください。

スキーマの変更

既存のスキーマを変更(展開)するには、-evolveフラグを使用します。

kv-> ddl add-schema -file my_schema.avsc -evolve 

ストア内のスキーマを変更する際、スキーマ展開が正しく実施できるか確認するためにエラー・チェックが実行されます。このエラー・チェックでは新規スキーマが、そのスキーマの現在有効なすべてのバージョンと比較されます。

このエラー・チェックでエラーまたは警告が発生する場合があります。エラーは、変更されたスキーマをストアに追加できるようにするために、対処が求められる重大な問題です。エラーは、古いバージョンのスキーマで書き込まれたデータが、新しいバージョンのスキーマを使用してクライアントで読み取れない状況を表します。

警告は、2フェーズ・アップグレード・プロセスを使用して回避できる問題です。2フェーズ・アップグレードでは、フェーズIですべてのクライアントが読取りのみにスキーマを使用し始め(書込みには古いスキーマが引き続き使用されます)、フェーズIIで読取りおよび書込みの両方に新しいスキーマを使用します。フェーズIIは、フェーズIが完了するまで始まりません。つまり、すべてのクライアントが新しいスキーマを読取りに使用するまで、どのクライアントもそれを書き込みに使用できません。

ストア内のスキーマを展開する際にエラーまたは警告が表示された場合は、その対処方法について開発チームと協議してください。

スキーマの無効化および有効化

スキーマは削除できませんが、無効にすることはできます。

kv-> ddl disable-schema -name avro.MyInfo.1 

無効になっているスキーマを有効にするには、次のようにします。

kv-> ddl enable-schema -name avro.MyInfo.1 

スキーマの表示

ストアで現在有効なすべてのスキーマを表示するには、次のようにします。

kv-> show schemas 

現在無効なスキーマも含めて、すべてのスキーマを表示するには、次のようにします。

kv-> show schemas -disabled