12cR1.3.4.7での変更点

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

新機能

  1. 障害のために失われた管理サービス定数を再確立する新しいコマンドがCLIに追加されました。

    repair-admin-quorum {-zn <id>|-znname <name>|-admin <id>}...
    

    このコマンドは、管理グループのメンバーシップを指定のゾーンおよび特定の管理のリストに含まれる管理に減らして、管理定数を修復します。管理定数の再確立は、障害時リカバリを実行する最初のステップの1つです。[#23983]

  2. ゾーン・タイプを変更して、障害によって失われたシャード定数をリカバリする新しいコマンドが管理CLIに追加されました。

    plan failover { {-zn <zone-id>|-znname <zone-name>}
                    -type {primary|offline-secondary} }...
                  ...

    このコマンドは、現在オフラインのプライマリ・ゾーンのタイプをセカンダリ・ゾーンに変更し、必要に応じて一部のセカンダリ・ゾーンをプライマリ・ゾーンに変更し、シャード定数を修復します。フェイルオーバーは、障害時リカバリを実行する最後のステップの1つです。[#23546]

  3. ゾーン・タイプを変更する機能が追加されました。以前はゾーンをPRIMARYまたはSECONDARYゾーンとして作成することができましたが、作成後はタイプを変更することはできませんでした。このリリースでは、管理者が新しいCLIコマンドtopology change-zone-typeを使用して、トポロジでゾーンをPRIMARYからSECONDARYまたはSECONDARYからPRIMARYへ変更できます。変更後は、通常どおりplan deploy-topologyコマンドを使用してトポロジをデプロイできます。[#24308]

  4. ストレージ・ノード・エージェント(SNA)は、SNAの起動前に管理対象サービスが無効化されていることを確認する起動モードをサポートするようになりました。-disable-servicesフラグがkvstore startコマンドでSNAコマンドラインに指定されると、SNAのサービスはSNAが起動する前に無効化されます。サービスの無効化中に障害が発生すると、SNAは起動しません。この機能は、障害時リカバリの際に不要なサービスが起動するのを防ぐ場合に役立ちます。

    kvstore disable-servicesコマンドは削除されました。かわりにstop -disable-services.を使用してください-disable-servicesオプションは、kvstore startstopおよびrestartコマンドで使用できます。[#24337]

  5. plan repair-topologyコマンドが強化されました。このコマンドは、管理とレプリケーション・ノード・サービスのために、パラメータの違い(管理によってメンテナンスされる参照コピーと、実行中サービスのストレージ・ノード構成ファイルまたはパラメータの違い)を修復できるようになりました。[#23555]

  6. マスターに対する指定の一貫性しきい値にレプリカ・ノードが到達するのを待機する、新しいコマンドがCLIに追加されました。このコマンドは、スイッチオーバーを実行するときに、セカンダリ・ノードがマスターに追い付くまで待機し、一貫性を達成する進度に関する情報を取得するために使用できます。新しいコマンドは次のように指定します。

    await-consistent -timeout <timeout-secs>
        [-zn <id> | -znname <name>]...
        [-replica-delay-threshold <time-millis>]

    これは、-znまたは-znnameに指定されたゾーンのレプリカ・ノードのレプリケーション遅延がtime-millisミリ秒以内になるのを、timeout-secs秒間待機します。ゾーンが指定されない場合、このコマンドはストア内のすべてのレプリカについて待機します。-replica-delay-thresholdが指定されない場合、デフォルト値5000ミリ秒(5秒)が使用されます。

    時間内にどのレプリカもしきい値に到達しない場合は、コマンドによって、それらのノードのリストが、タイム・ラグやレプリカが追い付いているかどうかに関する情報(わかっている場合)とともに返されます。[#23982]

  7. 管理CLIコマンドpingおよびverify configurationの出力が変更されました。カテゴリが重複しなくなり、シャードおよびゾーンのステータスのエントリ名がわかりやすくなっています。シャード・ステータスでは、totalエントリが削除され、degradedエントリがwritable-degradedに変更され、noQuorumエントリがread-onlyに変更されました。ゾーン・ステータスでは、totalエントリが削除され、offlineエントリが追加されました。[#24336]

  8. 管理CLIコマンドpingおよびverify configurationの出力が変更されました。管理サービス・ノードのステータスの概要を提供するエントリが追加されました。各管理のステータスとレプリケーション状態に関する情報を含むように、show adminsコマンドの出力も変更されました。[#23984]

  9. Oracle NoSQL Databaseセキュリティ・モデルをサポートするようにoracle.kv.hadoop.tableおよびoracle.kv.hadoop.hive.tableのクラスとインタフェースが変更されました。特に、セキュア・アクセスが構成されたストアに格納されている表データに対して、MapReduceジョブ、Hive問合せおよびBig Data SQL問合せを実行できるようになりました。セキュリティをサポートするためにoracle.kv.hadoop.tableoracle.kv.hadoop.hive.tableに変更が加えられた他に、サンプル・コードと詳細なドキュメントも提供されています。セキュア・ストアの表データに対するMapReduceジョブまたはHive/Big Data SQL問合せの実行方法について読み、操作を試すことができます。[#23714], [#24107], [#24108]

  10. oracle.kv.hadoop.hive.table.TableSerDeおよび関連するクラスが変更されました。MapRecordArray型など、複雑なデータ型(非プリミティブ)で構成されたスキーマの表に格納されたデータに対するHiveまたはBig Data SQL問合せの実行をサポートします。また、データ・モデルの詳細や、データ・モデルとHiveおよびBig Data SQLデータ・モデルのマッピング方法を理解するためのドキュメントとサンプルも提供されています。[#24357], [#24358]

  11. 名前にドル記号($)が含まれるトポロジ候補は、システムによる使用のために予約されました。システムによって変更または削除されることがあります。名前に予約文字を含むトポロジ広報を作成するためにtopology createおよびtopology cloneコマンドを呼び出すと、警告が出力されます。管理者はドル記号を含む名前のトポロジ候補の作成または使用を回避する必要があります。[#24386]

  12. plan start-servicesおよびplan stop-servicesコマンドが管理サービスの起動と停止をサポートするようになりました。以前はこれらのプランはレプリケーション・ノード(RN)のみで実行されていました。このリリースでは-serviceオプションに管理サービスの名前を指定できます。さらに、ゾーンが指定され(-znまたは-znnameフラグ)、-all-rnsが指定されない場合、そのゾーンのすべてのサービス、RNおよび管理が影響を受けます。[#24149]

  13. 管理CLIの一部のコマンドが、JSON形式での結果表示をサポートするようになりました。runadminを使用して管理CLIを起動するとき、またはコマンドの引数として、-jsonが指定されると、コマンドの実行結果は標準NoSQLエラー・メッセージを含むJSON形式の文字列で表示されます。このリリースでは、JSON形式の結果をサポートするためにconfigureコマンドのみが変更されています。[#24444]

  14. 管理CLIコマンドconfigure、topology create、pool joinおよびplan deploy-adminは、管理自動スクリプトをサポートするために冪等となりました。[#24445]

  15. オフヒープ・キャッシュ(デフォルトでは無効)を使用するようにレプリケーション・ノードを構成するサポートが追加されました。オフヒープ・キャッシュを使用すると、同じメモリーをファイル・システム・キャッシュで使用するよりも大容量メモリーを効率よく活用でき、大容量Javaヒープに伴うJava GCオーバーヘッドを回避できます。詳細は、オフヒープ・キャッシュの管理に関する項を参照してください。[#24370]

APIの変更点

  1. イテレータParallelScanIteratorおよびTableIteratorが、Direction.FORWARDDirection.REVERSEの両方をサポートするようになりました。

    新しいイテレータ・オプションをサポートするための内部の変更により、oracle.kv.stats.KVStatsのメソッドgetStoreIteratorMetricsが非推奨になりました。このメソッドはoracle.kv.stats.StoreIteratorMetricsのインスタンスを返しますが、これも非推奨です。返されるStoreIteratorMetricsオブジェクトのすべてのメソッドは0を返します。[#23583]

  2. RecordValueインタフェースにRecordフィールドとMapフィールドのためのJava MapベースのAPIが追加されました。RecordValueインタフェースにArrayフィールドのためのJava Iterableと配列ベースのAPIが追加されました。[#24177]:

    RecordValue putRecord(String fieldName, Map<String, ?> map)
    RecordValue putMap(String fieldName, Map<String, ?> map)
    RecordValue putArray(String name, Iterable<?> list)
    RecordValue putArray(String name, Object[] array)
  3. メソッドoracle.kv.hadoop.table.TableInputFormat.setKVSecurityおよびoracle.kv.hadoop.hive.table.TableInputSplit.setKVStoreSecurityのインタフェースそれぞれが変更され、セキュリティ関連の初期化で必要となる次のような新しい情報を指定するようになりました。

    • ストアに接続するときにクライアントが使用するトランスポート・プロパティを指定するファイルの名前(ログイン・ファイル)。

    • 認証時にクライアントがストアに提示するユーザー名とパスワードを含むPasswordCredentials。

    • 認証に必要な公開キーまたは証明書(あるいは両方)を含むファイルの名前(信頼ファイル)。[#23714], [#24107], [#24108]

  4. クライアントのメタデータが同期していない可能性があることを示す、新しい例外MetadataNotFoundExceptionが追加されました。これはFaultExceptionを拡張したものであり、アプリケーションが取得すると、メタデータ(特にTableAPI.getTableによって取得されたTable)のリフレッシュのニーズをトリガーします。

  5. 個別のキーに基づいて効率よく多数のキーと値をフェッチする一括取得APIが追加されました。このAPIはキー/値データ・モデルと表データ・モデルの両方で使用できます。新しいメソッドのリストを次に示します。[#24285]

    • oracle.kv.KVStoreに定義された新メソッド:

      ParallelScanIterator<KeyValueVersion> storeIterator(Iterator<Key>, int, KeyRange, Depth, Consistency, long, TimeUnit, StoreIteratorConfig)
      ParallelScanIterator<Key> storeKeysIterator(Iterator<Key>, int, KeyRange, Depth, Consistency, long, TimeUnit, StoreIteratorConfig)
      ParallelScanIterator<KeyValueVersion> storeIterator(List<Iterator<Key>>, int, KeyRange, Depth, Consistency, long, TimeUnit, StoreIteratorConfig)
      ParallelScanIterator<Key> storeKeysIterator(List<Iterator<Key>>, int, KeyRange, Depth, Consistency, long, TimeUnit, StoreIteratorConfig)
    • oracle.kv.table.TableAPIに定義された新メソッド:

      TableIterator<Row> tableIterator(Iterator<PrimaryKey>, MultiRowOptions, TableIteratorOptions)
      TableIterator<PrimaryKey> tableKeysIterator(Iterator<PrimaryKey>, MultiRowOptions, TableIteratorOptions)
      TableIterator<Row> tableIterator(List<Iterator<PrimaryKey>>, MultiRowOptions, TableIteratorOptions)
      TableIterator<PrimaryKey> tableKeysIterator(List<Iterator<PrimaryKey>>, MultiRowOptions, TableIteratorOptions)

    詳細は、これらの新メソッドに関連するjavadocを参照してください。

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

  1. 一部のプランがINTERRUPTED状態になる問題が修正されました。これは、プランが、プランを実行していたマスター管理を停止または再起動する必要があったときに発生します。いったんINTERRUPTED状態になると、プランの実行を再開するためにユーザー・アクションが必要でした。この修正により、プランが新しいマスター管理(他の管理または再起動した最初の管理)で自動的に再起動できるようになりました。

    この修正とともに、管理CLIが更新され、CLIが最初に接続した管理ではない管理上でプランが再起動する場合でも、プランを待機するようになりました。これは、planコマンドの-waitフラグおよびplan waitコマンドに影響します。[#24535]

  2. ArrayValue.set()ArrayValue.add()と同じ動作を行い、特定のインデックスにエントリを配置するかわりに誤って配列に追加する問題を修正しました。[#24326]

  3. NoSQLクラスタのアップグレード中にリリース3.2レプリケーション・ノードが、リリース3.3を実行する新しいレプリケーション・ノードによって作成されたロール・プリンシパルの名前を解決できないバグが修正されました。3.2リリースから最新リリースにアップグレードするとき、この動作は正常に行われます。[#24502]

  4. 32ビットJava仮想マシンを使用するとき、-capacityフラグに1よりも大きな値を指定して呼び出されたmakebootconfigユーティリティ・コマンドが失敗するバグが修正されました。[#24550]

  5. パーティション移行時に実行されるトランザクション操作をバッチ処理することで、トポロジ再配布のパフォーマンスが改善されました。[#24529]

  6. 表API実装がフィールド名を比較するときに大/小文字を区別しない比較を実行できない問題が修正されました。[#24553]

  7. 拡張度変更中のストアの可用性を高めるように拡張度の処理が変更され、レプリカがマスターに追い付くのを待機してから、シャード定数に含まれるものとしてカウントするようになりました。この変更により、特にストアの書込み負荷が高い場合、レプリケーション・ノードを移動する拡張度変更の際に、書込み可用性が一時的に失われる可能性が低下します。[#24511]

ユーティリティの変更点

  1. 管理CLIユーティリティ(runadmin)および管理CLI connect storeコマンドは、デフォルト構成をオーバーライドする次のフラグをサポートするようになりました。[#24101]

    • -timeout: ストアのリクエスト・タイムアウトを指定します。

    • -consistency: ストアのリクエスト一貫性を指定します。

    • -durability: ストアのリクエスト永続性を指定します。