12cR1.3.5.2での変更点

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

新機能

  1. キー分散統計を収集するためのサポートが追加されました。統計収集を有効にするには、まず、リリース・パッケージのlibディレクトリにあるrunadminスクリプト・ファイルCreateStatisticTables.kvsを実行して統計表を作成する必要があります。[#23422]

  2. Kerberosユーザー認証のサポートが追加されました。この新機能の使用を希望するユーザーは、次の変更に注意する必要があります。

    • makebootconfigユーティリティには、外部認証メカニズムを有効にするために使用される、新しいオプションの-external-authコマンドライン引数があります。現在、サポートされているメカニズムはKerberosのみです。この新しいフラグは、-store-securityフラグの値がconfigureまたはenableに指定されている場合のみ許可されます。

    • securityconfigツールが拡張され、次の機能が提供されました。

      • 既存のセキュリティ構成にKerberos構成情報を追加します

      • セキュリティ・メンテナンス・タスク用のストアのKerberosサービス・プリンシパル・キータブを更新します

    • LoginCredentialsを実装する新しいクラスKerberosCredentialsが導入され、そのインスタンスをKVStoreFactory.getStoreメソッドで使用して、Kerberosログインを実行できます。

      • KVStoreFactory.getStore(KVStoreConfig、LoginCredentials、ReauthenticateHandler)

    • 新しいKerberos関連のセキュリティ・プロパティが追加されました。このプロパティは、Kerberos認証を有効にしたセキュアなストアに対してKVStoreコマンドライン・ユーティリティ・プログラムを使用するときに指定する必要があります。

    アプリケーションがKerberosを使用した認証に使用できる2つの方法があります。Java Authentication and Authorization Service (JAAS)プログラミング・フレームワークを使用するクライアント・アプリケーションでは、Subject.doAsを使用して資格証明を指定できます。JAASフレームワークを使用しないアプリケーションでは、新しいセキュリティ・プロパティを使用して、Kerberos Key Distribution Center (KDC)からユーザー資格証明を取得するために必要なパラメータを指定できます。

    Kerberos認証は、『Oracle NoSQL Databaseセキュリティ・ガイド』や『管理者ガイド』およびJavadocでさらに詳しく説明されています。[#24328]

  3. systemPercentの設定が10%の場合、デフォルトではオフヒープ・キャッシュが有効化されるようになりました。詳細は、オフヒープ・キャッシュの管理に関する項を参照してください。

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

  1. 以前のバージョンでは、Consistency.NONE_REQUIREDを使用したLOB読取り操作は、LOBメタデータをホストしているシャードのマスターがない場合に失敗する可能性がありました。読取り一貫性によって許可されている場合、読取り操作では適切なレプリカが使用されるようになりました。[#24460]

  2. 索引の作成および移入中(まだ準備が完了していない)にクライアントがTableAPI.getTable()をコールすると、RepNode上でConcurrentModificationExceptionが発生し、RepNodeが使用できなくなるバグを修正しました。[#24691]

  3. エラーが生成される原因となった外部表の例の構成における問題が修正されました。config.xmlファイル内の表の名前を指定するためのプロパティ名が正しくありませんでしたが、oracle.kv.tableからoracle.kv.tableNameに変更されました。[#24650]

  4. 管理者CLIのshow adminsコマンドの実装で、セキュアなストアで使用されるときに正しく認証できなかった問題が修正されました。[#24648]

  5. TableIteratorOptions.maxConcurrentRequests0として指定することによって、デフォルトの要求時に同時表要求の実行に使用されるスレッドの最大数の計算に使用されるアルゴリズムが改善されました。この変更は、表のマルチ取得操作と表および索引の反復の動作に影響します。[#24188]

  6. 表レベルのアクセス・チェックでのセキュリティ上の欠陥が修正されました。この修正の前は、ユーザーがストア内の他の表へのアクセス権限を持っていた場合に、認証されたクライアントが権限なしで表にアクセスできる可能性がありました。

ユーティリティの変更点

  1. pingコマンドをスクリプトで使いやすくするために、いくつかの変更が行われました。[#24407]

    最初に、java -jar kvstore.jar pingコマンドを変更して、既存の-hostおよび-portフラグのかわりになる新しいフラグ-helper-hostsを追加しました。複数のヘルパー・ホストが指定されている場合、pingユーティリティは、ストアとの最初の接点を作成するために使用できる複数のノードを持ち、ストアの一部のノードが使用できなくなった場合に成功する可能性が高くなります。新しい-helper-hostsフラグは、ホストおよびポートのカンマ区切りリストとして指定できます。次に例を示します。

    java -jar kvstore.jar ping -helper-hosts hst1:5000;hst2:5100

    次に、pingによって、結果のクイック・サマリーとして機能する終了コードが生成されるようになりました。終了コードは、pingがスタンドアロン・ユーティリティとして呼び出される場合のプロセス終了コードとして、またはJSON出力の一部としての両方で返されます。終了コードは、適切な後続アクションを実行するようコール元に指示することを目的としています。Ping.ExitCode列挙で定義された値は、次のとおりです。

    • 0 (EXIT_OK)

      ストア内のすべてのサービスは特定可能であり、既知の正常な状態(例: RUNNING)にあります。

    • 1 (EXIT_OPERATIONAL)

      ストア内の1つ以上のサービスにアクセスできなかったか、これらが不明または使用不可状態にあります。この場合、ストアは、すべてのシャードにわたるすべてのデータ操作およびすべての管理操作をサポートする必要がありますが、パフォーマンスが低下している状態にある可能性があります。ストアの一部が使用できなくなる前に、問題を検索して修正するためのアクションを実行する必要があります。

    • 2 (EXIT_NO_ADMIN_QUORUM)

      管理サービスのレプリケーション・グループが定数を持たないか、まったく使用できません。また、ストア構成を変更する管理操作を実行できません。ストアは、管理定数がなくても通常のデータ操作をすべてサポートしますが、この状態にはただちに対応し、ストアの完全な機能をリストアする必要があります。

    • 3 (EXIT_NO_SHARD_QUORUM)

      1つ以上のシャードが定数を持たず、書込み要求を受け付けることができないか、まったく使用できません。この状態では、ただちに対応し、ストアの機能をリストアする必要があります。この終了コードはEXIT_NO_ADMIN_QUORUMよりも優先されるため、この終了コードを使用すると、管理機能が減少したり使用できなくなったりする可能性もあります。

    • 100 (EXIT_USAGE)

      使用方法エラーです。

    • 101 (EXIT_TOPOLOGY_FAILURE)

      pingが動作するためのトポロジを見つけることができませんでした。これは、ストアの問題であるか、ネットワークの問題であるか、pingに渡されたパラメータに関する使用上の問題である可能性があります(ホストおよびポートやヘルパー・ホスト・リストがストアの一部ではないなど)。

    • 102 (EXIT_UNEXPECTED)

      ユーティリティで予期しないエラーが発生しました。

    終了コード1から3は、ネットワーク接続の問題を示している場合があります。これらの問題は、いずれかのサービスに問題があると結論づける前にチェックする必要があります。

    最後に、次のセクションがpingのJSON出力に追加されました。これは、-jsonフラグを使用して要求でき、pingがスタンドアロン・コマンドまたは管理CLIの一部として呼び出されたときに表示されます。次に例を示します。

      "operation" : "ping",
      "return_code" : 5000,
      "description" : "No errors found",
      "exit_code" : 0
  2. 管理CLIのいくつかの表コマンドが非推奨になり、DDL文の実行にexecuteコマンドを使用することが推奨されます。新しく非推奨になったコマンドは、次のとおりです。[#23937]

    • table

    • plan add-index

    • plan add-table

    • plan evolve-table

    • plan remove-index

    • plan remove-table

  3. 一部の追加の管理CLIコマンドでは、JSON形式での出力の表示がサポートされるようになりました。runadminを使用して管理CLIを起動するとき、またはコマンドの引数として、-jsonが指定されると、コマンドの実行結果は標準NoSQLエラー・メッセージを含むJSON形式の文字列で表示されます。configureコマンドに加えて、次のコマンドに対するサポートが追加されました。[#24346]

    • plan deploy-zone

    • plan deploy-sn

    • pool create

    • pool join

    • plan deploy-admin

    • topology create

    • plan deploy-topology

    • show plan

    • verify configuration | upgrade | prerequisite

  4. 管理CLIコマンドpool addは冪等になりました。すでに存在するプールを指定してこのコマンドを呼び出すと、エラーなしで返されます。この変更は、スクリプトでコマンドを使いやすくすることを目的としています。[#24445]

  5. makebootconfigコマンドは、新しい-dns-cachettlフラグをサポートするように変更されました。このフラグは、レプリケーション・ノードがホスト名をIPアドレス・マッピングにキャッシュする秒数を指定します。値0は、マッピングをキャッシュしないことを意味します。値-1は、マッピングを無期限にキャッシュすることを意味します。これがデフォルトの設定です。フラグの値を使用して、networkaddress.cache.ttlおよびnetworkaddress.cache.negative.ttlセキュリティ・プロパティを設定します。デフォルト以外の値を指定すると、セキュリティに影響する可能性があることに注意してください。詳細は、Javaのネットワーキング・プロパティ・ページを参照してください。[#24087]