12cR1.3.3.4での変更点

Oracle NoSQL Database 12cR1.3.3.4で次の変更が行われました。

新機能

  1. 多数のセキュリティ機能が新しく追加されました。

    次にあげる表固有の新しい一連の権限を使用すると、ユーザーはAPIと管理コマンドライン・インタフェース(管理CLI)の両方を通じて、表レベルのアクセス・チェックを強制的に実行できます。

    権限 説明
    READ_ANY_TABLE kvstoreの任意の表から読み込み
    DELETE_ANY_TABLE kvstoreの任意の表からデータを削除
    INSERT_ANY_TABLE kvstoreの任意の表に対してデータを挿入および更新
    READ_TABLE kvstoreの特定の表から読み込み
    DELETE_TABLE kvstoreの特定の表からデータを削除
    INSERT_TABLE kvstoreの特定の表に対してデータを挿入および更新
    CREATE_ANY_TABLE kvstoreで任意の表を作成
    DROP_ANY_TABLE kvstoreで任意の表を削除
    EVOLVE_ANY_TABLE kvstoreで任意の表を展開
    CREATE_ANY_INDEX kvstoreの任意の表で任意の索引を作成
    DROP_ANY_INDEX kvstoreの任意の表で任意の索引を削除
    EVOLVE_TABLE 特定の表を展開
    CREATE_INDEX 特定の表で索引を作成
    DROP_INDEX 特定の表で索引を削除

    ユーザーは、新しいロールを作成して、権限または他のロールをまとめてグループ化できるようになりました。これで、所定の権限のグループをユーザーに付与することができます。ロールの作成と削除をサポートし、他のロールに対して権限またはロールを付与したり取り消したりするために、新しいロール管理コマンドが追加されました。

    すべてのセキュリティ操作に宣言インタフェースを提供するために、データ定義言語(DDL)が変更されました。言語リファレンスは、セキュリティ・ガイドを参照してください。言語には、APIを介して、あるいは管理CLIで"execute"コマンドを実行してアクセスできます。

    パスワードに有効期間が導入され、指定した有効期間を超えると失効するようになります。新しいユーザーを追加するとき、または既存のユーザーのプロファイルを変更することによって、パスワードを明示的に失効させることもできます。ユーザーは、失効したパスワードを更新すると、ストアにログインできるようになります。[#23951]

  2. 管理サービスの構成が強化され、プライマリとセカンダリのゾーンの使用方法にさらに合致するようになりました。管理サービスは、プライマリまたはセカンダリの管理サービスとなることができます。この管理タイプは、ゾーン・タイプと同じです。プライマリ管理は、管理シャードのマスターまたはレプリカとして機能でき、マスター選択で投票できます。セカンダリ管理はレプリカとしてのみ機能でき、マスター選択で投票はできません。以前のリリースで作成した管理はすべて、プライマリ管理です。今回のリリースでは、新しい管理はそれを含むゾーンと同じタイプで作成されます。

    以前のリリースでセカンダリ・ゾーンに作成された管理サービスは、タイプが正しくなりません(プライマリ)。この不一致は、verify configurationコマンドで違反として報告されます。この状態は、plan repair-topologyコマンドを実行して修正できます。

    管理サービスのタイプの動作が変更されたことに加え、管理サービスのデプロイメントに関して新しいルールが導入されています。一般的に、管理サービスはデータ・ノードと同じルールに従うこと、具体的には1つのゾーンにおける管理サービスの数がゾーンのレプリケーション・ファクタに一致することが推奨されます。[#23985], [#24182]

  3. 管理シャードにクォーラムがない場合、またはマスター管理にアクセスできない場合に、コマンドライン・インタフェース(管理CLI)は、読取り専用モードをサポートするようになります。この読取り専用モードでは、計画の作成と実行など、管理に永続状態の更新を要求するコマンドはすべて無効になります。ただし、ステータスまたは構成に関する情報を示すコマンドのほとんどは機能します。CLIがこのモードであることをユーザーに通知するCLIの通知に加えて、show adminsコマンドではCLIが読取り専用で接続していることも示されます。

    管理CLIに再接続の機能が追加され、管理ノードで障害が発生した場合のCLIの堅牢さが向上しました。[#23943]

APIの変更点

  1. 新しいAPIとしてoracle.kv.KVStore.executeoracle.kv.KVStore.executeSync.が追加されたため、oracle.kv.table.TableAPI.executeoracle.kv.table.TableAPI.executeSyncのメソッドは非推奨となりましたこれは、ユーザーやロールなど、1つの表の範囲を超えたオブジェクトを管理する新しいDDL文が導入されたためです。同様に、oracle.kv.ExecutionFutureoracle.kv.StatementResultが追加されたために、oracle.kv.table.ExecutionFutureoracle.kv.table.StatementResultは非推奨になります。[#23937]

  2. 表の複雑なフィールドでJSON値を使用できる機能を追加するために、oracle.kv.table.RecordValueに新しいメソッドが追加されました。これまで、JSONを使用して行全体を指定することはできましたが、行の一部は指定できませんでした。RecordValueでの複合型に、次の6つのJSON入力メソッドが追加されます。[#24069]

    RecordValue putRecordAsJson(String fieldName, String jsonInput, boolean exact);
    RecordValue putRecordAsJson(String fieldName, InputStream jsonInput, boolean exact);
    RecordValue putArrayAsJson(String fieldName, String jsonInput, boolean exact);
    RecordValue putArrayAsJson(String fieldName, InputStream jsonInput, boolean exact);
    RecordValue putMapAsJson(String fieldName, String jsonInput, boolean exact);
    RecordValue putMapAsJson(String fieldName, InputStream jsonInput,boolean exact);
  3. ステートレス・アプリケーションによるDDLの使用のサポートを改善するために、新しいメソッドが追加されました。oracle.kv.ExecutionFuture.toByteArray()は、Futureインスタンスを再作成するために後からoracle.kv.KVStore.getFuture(byte[])に渡すことができるフューチャをシリアライズした形で返します。[#24228]

  4. DDL操作の結果とステータスをAPIでレポートする方法が変更されています。DDL操作の実行に関する情報は、引き続きoracle.kv.StatementResultを介して返されます。以前のリリースでは、戻り値と実行ステータスの両方がStatementResult.getInfo()StatementResult.getInfoAsJson()を介して返されていました。現在、結果は新しいメソッドStatementResult.getResult()を介して返されますが、ステータスはStatementResult.getInfo()getInfoAsJsonを介して返されます。[#24277]

ユーティリティの変更点

  1. plan deploy-adminは、管理が常駐しているゾーンと同じタイプ(プライマリまたはセカンダリ)で管理としてデプロイされます。これまで、管理は常にプライマリとして作成されていました。

  2. plan repair-topologyは、常駐しているゾーンのタイプに一致するように、管理のタイプを変更します。

  3. verify configurationは、次の内容をレポートします。

    • 常駐しているゾーンのタイプに一致していないタイプの管理サービスについての違反

    • ゾーンにある管理サービスの数がゾーンのレプリケーション係数より小さい場合の違反

    • ゾーンにある管理サービスの数がゾーンのレプリケーション係数より大きい場合の違反

  4. 管理CLIにおけるputコマンドに、-exactフラグが追加されました。trueの場合、コマンドに指定した入力json文字列またはファイルには、表のすべての列の値が含まれる必要があり、無関係なフィールドを含めることはできません。

  5. 管理CLIは、クライアントとサーバーのバージョン情報を表示するshow versionsコマンドを新しくサポートするようになりました。[#24005]

  6. 複数のコマンドを入力する、または複数行でコマンドを入力するとき、管理CLIでコマンド終止記号としてセミコロン文字を使用できるようになりました。[#24119]

    たとえば、次のコマンドは1行で入力する必要がありました。

    kv-> execute "create table users(name string, address string, primary key (name))" 

    または

    kv-> execute "create table users \
        ->                 (name string, \
        ->                  address string, \
        ->                  primary key (name))"

    このリリースでは、次のように入力できます。

      kv-> execute "create table users
        ->                 (name string,
        ->                  address string,
        ->                  primary key (name))";

    また、複数のコマンドはセミコロンを終止記号として次のように入力できます。

      kv-> show table -name users; get table -name users;
  7. ストレージ・ノードに関連付けられたサービスを無効にする新しいコマンドライン・ユーティリティが追加されています。ノードがオフラインの間にサービスで構成変更があったストレージ・ノードを起動するときに、この新しいユーティリティを使用すると、サービスを適切な構成で起動できるように構成を更新できます。[#23988]

    新しいユーティリティは次の方法で起動します。

      java jar -kvstore.jar disable-services -root ROOT_DIRECTORY [-config CONFIG_FILE]
    
  8. 管理CLIのverify configurationコマンドの出力が改善され、管理CLIと、最上位バージョンのpingコマンドの両方で、次のようになります。[#23981]

    • 新しい-jsonフラグを指定すると、出力にはJSON形式が使用されます。

    • 出力には、ストアのシャードおよびゾーンのステータスに関するサマリーと、マスター以外のレプリケーション・ノードのレプリケーション・ステータスに関する情報が含まれるようになります。

    • pingコマンドの出力には、verify configurationによって示される情報を照合するために、管理サービスに関する情報が含まれます。

  9. 診断コマンドライン・ユーティリティに、新しい"verify"オプションが追加されました。このオプションは、次のような各種のヘルス・チェックと構成チェックを実行します。

    • 構成の値が有効かどうか

    • ノード間のクロック・スキューが、許容される最大スキュー値以内かどうか

    • すべてのノードにサポート対象のバージョンのJavaがインストールされているかどうか

    • すべてのノードでネットワーク接続が正しいかどうか

    • すべてのノードに互換性のあるバージョンのNoSQL DBがインストールされているかどうか

    java -jar kvstore.jar diagnostics verify -help
    
    Usage: verify -checkLocal |
                  -checkMulti

バグとパフォーマンスの修正

  1. SNのシャットダウン時のRNマスター・ノードへの転送が変更されました。SNAは、停止する際、SNAによって管理されるRNのいずれかがそのレプリケーション・グループのマスターかどうかをチェックします。RNがマスターの場合、SNAはRNをシャットダウンする前にマスター転送を実行します。この実装によって一度に複数の転送が実行されるため、転送ごとに前の転送の結果を考慮し、ターゲットSNの過負荷を避けることができます。[#22426]

  2. レプリケーション・ノードと管理サービスを変更し、サービスのレプリケーション・グループの他のメンバーが、DNS経由で解決できないホスト名のストレージ・ノードによって管理されている場合でも起動できるようになりました。この変更によって、ストレージ・ノードの障害が原因でそのノードのDNS名が一部解決されていない場合でも、ストアは機能を続行できるようになり、特に再起動中のサービスに対応できるようになります。[#23120]

  3. 'topology validate' CLIコマンドが変更されました。現在このコマンドで表示されるviolationsとnotesに加え、トポロジに空のゾーン、つまりSNを含まないゾーンがある場合にも通知が表示されるようになります。[#23222]

  4. 現在'verify configuration' CLIコマンドでは、ストアの現在の状態または構成と、ストア管理データベースに反映される内容とをコンポーネントごとに比較し、不一致があれば表示します。ストアに空のゾーンが存在する場合にも通知されるようにコマンドが変更されました。verify configurationコマンドで取得される現在のフラグに関して、空のゾーンに関する変更はすべての引数に適用されますが、オプションの-sn引数は例外で、その場合は空のデータセンターの識別に関連する新しい動作が実行されません。[#23223]

  5. CLI 'snapshot'コマンドでは現在、ストアでアクセス可能な各SNの管理とRNからスナップショットを収集することも、以前に収集したスナップショット・データの1つまたはすべてのインスタンスを削除することもできます。これのコマンドは、-znまたは-znnameフラグを取るように変更され、コマンドは指定したIDまたは名前でゾーンにおいて実行中のすべてのSNに適用されます。[#23224]

  6. Admin Webコンソールが有効であり、logtailペインにログ・ファイルが出力表示され、またAdminサービスを更新する管理コマンド、たとえばplan deploy-adminなどが実行中の場合に、Adminサービスがハングする原因のバグが修正されました。[23907]

  7. マップまたはアレイを伴うCHECK式でelementof()のかわりにフィールド名を使用した場合に発生するエラー・メッセージが明確になりました。[#24055]

  8. DDL PRIMARY KEY式が緩和され、1つの主キーを重複してSHARDキーとしても指定する文が可能になりました。最上位(子ではない)の表では、特別に指定しないかぎり、主キーはシャード・キーと同じです。この変更により、たとえSHARDの使用が重複していても、CREATE TABLE mytable(id INTEGER, PRIMARY KEY(SHARD(id)))などの文が正しくなります。[#24105]

  9. ノード障害時に迅速な要求フェイルオーバーを行えるように、要求ディスパッチが変更され、RequestTimeoutExceptionが発生しにくくなりました。この変更に伴い、デフォルトのソケット・オープン・タイムアウトは5秒から3秒に短縮され、要求タイムアウト期間内であれば要求を再ディスパッチできるようになります。[#24152]