19.5.16での変更点

Oracle NoSQL Databaseリリース19.5.16 Enterprise Editionで次の変更が行われました。

新機能

  1. 複数リージョンの表が導入されました。これを使用すると、各リージョンが別々のOracle NoSQL Databaseストアである複数のリージョンに存在する「任意の場所で読取り可能」および「任意の場所で書込み可能」である表を作成できます。これはプレビュー・リリースであり、一般的な可用性バージョンは将来のリリースで使用可能になります。

    [#27728]
  2. サービスのネットワーク名解決キャッシュを構成する方法が改善しました。アドレス・キャッシュは、名前解決中にホスト名を解決するために使用されます。名前参照の成功または失敗結果をキャッシュに保存する期間を指定するために、2つの値が使用されます。詳細は、ネットワーキング・プロパティ・ページのアドレス・キャッシュの項を参照してください。

    新しいSNを作成する場合、makebootconfigコマンドの-dns-cachettlフラグを使用して値を構成できます。デプロイメント後は、SNのパラメータdnsCacheTTLおよびdnsCacheNegativeTTLを変更することで初期値をオーバーライドできます。これら2つのパラメータはポリシー・パラメータでもあるため、将来のSNデプロイメント用として設定できます。各サービスは、モニタリングSNと同じパラメータ値を共有します。SNのパラメータを変更した場合、新しい値を有効にするには、すべてのサービス・プロセスを再起動する必要があります。管理サービス、RNサービスおよびアービタ・サービスは自動的に再起動されますが、SNは手動で再起動する必要があります。

    [#27660]
  3. 表APIに新しい非同期メソッドが追加されました。アプリケーションは、このメソッドを使用して、結果を待機するためのスレッドを使用せずにコールを実行できます。その結果、同時コールを多数行うクライアントの効率性を高めることができます。

    クライアントは、同じソケットでの複数のコールの多重化をサポートする新しいネットワーク・プロトコルを使用できるようになりました。これを使用して、非同期操作をサポートしたり、必要なソケット接続数を削減したりできます。新しいクライアントはこのバージョンのサーバーのみと互換性がありますが、サーバーは引き続き古いクライアントをサポートします。このリリースにアップグレードするときは、クライアントまたはHTTPプロキシをアップグレードする前に、必ずストアをアップグレードしてください。

    TableAPIの新しいメソッド:
    • getAsync
    • multiGetAsync
    • multiGetKeysAsync
    • tableIteratorAsync
    • tableKeysIteratorAsync
    • putAsync
    • putIfAbsentAsync
    • putIfPresentAsync
    • putIfVersionAsync
    • deleteAsync
    • deleteIfVersionAsync
    • multiDeleteAsync
    • executeAsync
    KVStoreの新しいメソッド:
    • executeAsync
    KVStoreConfigの新しいフィールドとメソッド:
    • DEFAULT_NETWORK_ROUNDTRIP_TIMEOUT
    • USE_ASYNC
    • DEFAULT_USE_ASYNC
    • getNetworkRoundtripTimeout
    • setNetworkRoundtripTimeout
    • getUseAsync
    • setUseAsync
    KVStoreFactoryの新しいフィールド:
    • ENDPOINT_GROUP_NUM_THREADS_PROPERTY
    新しいインタフェース:
    • oracle.kv.ExecutionSubscription
    • oracle.kv.IterationSubscription

    反復メソッド(TableAPI.tableIteratorAsyncTableAPI.tableKeysIteratorAsyncおよびKVStore.executeAsync)は、リアクティブ・ストリーム・フレームワークを使用して実装されます。他の非同期メソッドはjava.util.concurrent.CompletableFutureを返します。

    また、新しいtable.AsyncExampleの例も追加されました。

    [#24773]
  4. ServerResourceLimitExceptionクラスが追加されました。リソース制約のためにサーバーが要求を処理できない場合は、このクラスのインスタンスがスローされる場合があります。

    [#27301]
  5. システム表への変更をサポートするために、新しいWRITE_SYSTEM_TABLE権限とwritesystableロールが追加されました。新しい権限とロールは、複数リージョンの表エージェントとともに使用することを目的としています。通常ユーザーは一般に、システム表を変更しません。

    [#27830]
  6. Oracle NoSQLのHadoop/Hive/BigDataSQL統合コードは、Hadoop3、Hive2およびBigDataSQL 4.0.と連携するようになりました。Hive1がHive2との互換性を失う原因となる変更がApache Hiveで加えられたため、Hadoop2、Hive1および/またはBigDataSQL 3.5.x環境でMapReduceジョブ、Hive問合せおよび/またはBigDataSQL問合せを実行する場合は、18.3リリースのOracle NoSQL Databaseを使用し、このリリースをHadoop3/Hive2/BigDataSQL 4.0環境で使用する必要があります。

    [#27898]
  7. NoSQL Databaseストレージ・エンジンのソース・コード(Berkeley DB Java Editionとも呼ばれる)が、Community Editionリリース・パッケージに含まれるようになりました。

    [#27478]
  8. 次の文字列操作SQL関数が追加されました。
    • concatenation: arg1 || arg2 -> string , concat(arg1, arg2, ...) -> string?
    • substring(str, position[, for_substring_length] ) -> string
    • upper(str) -> string
    • lower(str) -> string
    • trim(from_str[, where[, trim_chars]]) -> string
    • ltrim(str) -> string
    • rtrim(str) -> string
    • length(str) -> integer
    • contains(str, contained_str) -> boolean
    • starts_with(str, start_str) -> boolean
    • ends_with(str, end_str) -> boolean
    • index_of(str, search [, pos]) -> integer
    • replace(str, search_str [, replacement_str] ) -> string
    • reverse(str) -> string

    また、JSON null値を文字列にキャストした結果も、RuntimeErrorから文字列nullに変更されました。

    [#27771]

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

  1. AbsoluteConsistency読取り要求が、ネットワーク・パーティションのマイノリティ側のマスターに送信されるバグが修正されます。AbsoluteConsistency読取り要求には、認可マスター(レプリカの定数と接触しているマスター)が必要になりました。要求のタイムアウト時間内に適切なマスターを使用できない場合、要求はタイムアウトします。

    [#27785]
  2. Hive2で正しくない結果が生じる原因となるHive2での変更を扱うために、Oracle NoSQL Hive統合コードで述語プッシュダウン・メカニズムが拡張されました。

    [#27898]
  3. ストアに必要なマシンの数が過大評価されることがあるという容量計画スプレッドシートのバグが修正されました。

    [#27939]
  4. 実行中のDDLコマンドの複製であるDDLコマンドを実行すると、管理プランがAPPROVED状態で孤立することが生じるバグが修正されました。

    [#27688]
  5. ソートの方向が降順の場合に特殊な値(NULL、json nullおよびEMPTY)をソートするときのバグが修正されました。

    [#27945]
  6. 削除するパスがNULLに評価される場合のUPDATE文のREMOVE句のバグが修正されました。この場合、UPDATE文は無限ループに入っていました。

    [#27812]
  7. シャード・キーがデータのエクスポート元の表のいずれかと異なる表にデータをインポートしたときに、インポートしたデータの破損原因となるバグが修正されました。データは正しくインポートされるようになりました。

    [#27782] [#27783]
  8. 管理CLI履歴が起動時にロードされない原因となった問題を修正します。

    [#27810]
  9. 管理CLIのplan verify dataコマンドが正常に完了せず、RUNNING状態のままになる原因となった問題が修正されました。この問題は、5つ以上のシャードのあるストアでのみ発生しました。

    [#27750]
  10. 管理CLIのplan verify dataコマンドが、再起動後にマスター変更があったノードで失敗する原因になる問題が修正されました。このような場合にコマンドは正常に実行されるようになりましたが、個々のノードの検証中にマスターが変更された場合は依然として検証が失敗します。これは、ノードの検証を再実行する必要があることを意味します。この別の問題は将来のリリースで修正される予定です。

    [#27773]
  11. kvliteインスタンスを停止するために使用したときにstopコマンドが失敗する原因となる問題が修正されました。次に例を示します。
    java -jar KVHOME/lib/kvstore.jar stop -root /tmp/mykvlite
    SNAの停止に失敗しました。ブートストラップ構成ファイル./mykvlite/config.xmlが存在しません。
    [#27748]
  12. 列挙のタイムスタンプまたはマップを持つ表に対してDDLGeneratorが正しいDDLを作成しないという問題が修正されました。

    [#28010]
  13. antlr4-runtime.jarという名前で以前に出荷されていたantlr4-runtimeサード・パーティ・ライブラリの「シェーディング」バージョンは、このリリースでantlr4-runtime-nosql-shaded.jarという名前で出荷されます。互換性がなく、異なるバージョンのライブラリ(たとえば、各種コンテナ、Hadoopクラスタ、Hiveクライアントなど)に依存する環境でアプリケーションを実行する場合に、ClassLoaderの競合(通常はNoClassDefFoundErrorとして出現します)を回避するには、ライブラリをシェーディングする必要があります。このような環境で実行する場合は一般に、アプリケーションのクラスパスで対応する名前を変更する以外、現在のアプリケーションに対して変更を行う必要はありません。

    [#27616]

ユーティリティの変更点

  1. 管理CLIのtable createコマンドから-r2-compatオプションのサポートが削除されました。Avroのサポートを削除する一環として、キー/値データの上部に表を作成する機能がリリース19.3で削除されましたが、このオプションは誤ってそのまま残されていました。

    [#27907]