19.3.12での変更点

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

新機能

  1. NULLおよび存在しない値を索引付けしない、索引に対するサポートが追加されました。これは、索引作成DDLで指定できる索引プロパティです(デフォルトでは、NULLおよび存在しない値に索引付けします)。このような索引では、索引付けの時間と領域のオーバーヘッドが減少するため、索引付けされたフィールドでデータに多数のNULL値および/または存在しない値が含まれる場合に役立ちます。ただし、問合せによるこのような索引の使用は制限されています。具体的には、これらを使用できるのは、すべての索引付きフィールドで、そのフィールドに対してsargable述語が存在し、述語がIS NULLまたはNOT EXISTSではない場合のみです。

    [#27486]
  2. 操作回数の多いストアをサポートするために、操作および要求カウント統計が長整数値を使用するよう変更されました。

    合計数を長整数として返す新しいJMX Beanメソッドが追加されました。大規模なストアの場合、カウントが2^31を超えることがあるため、このような統計について正確な値を返すにはこれらの新しいメソッドが必要になる場合があります。古いメソッドは互換性を確保するために維持され、カウントが大きくなりすぎる場合はInteger.MAX_VALUEを返します。

    OperationMetricsインタフェースの新しいメソッドは、次のとおりです。

    • getIntervalTotalOpsLong
    • getCumulativeTotalOpsLong

    RepNodeMXBeanインタフェースの新しいメソッドは、次のとおりです。

    • getIntervalTotalOpsLong
    • getCumulativeTotalOpsLong
    • getMultiIntervalTotalOpsLong
    • getMultiIntervalTotalRequestsLong
    • getMultiCumulativeTotalOpsLong
    • getMultiCumulativeTotalRequestsLong

    新しい長整数値は、.perfファイル、コレクタ.csvファイルおよびJSON出力でもレポートされます。

    [#27517]
  3. ストリームAPIは、ストリームの終了および再作成を必要とせずに、サブスクライブされた表を実行中のストリームで動的に追加または削除することがサポートされるようになりました。

    [#27381]
  4. describe table文を使用してシステム表のスキーマを記述できるようになりました。

    [#27602]
  5. 問合せ言語に新しい組込み関数regex_likeが追加されました。この関数は、文字列データ型の正規表現パターン一致に使用されます。たとえば、表personsに文字列フィールドlastNameがあるとします。次のselect文では、文字cで始まるlastNameを使用してレコードを限定します。
    select * from persons where regex_like(lastName,"C.*")
    
    [#27396]
  6. 以前は非推奨であったoracle.kv.avroパッケージからすべてのクラスおよびインタフェースが削除されました。Avroを使用していたアプリケーションは、表APIを使用するよう変更する必要があります。[#27387]

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

  1. キー統計が指定した収集期間よりも頻繁に収集されるバグが修正されます。

    [#27615]
  2. 単一パーティション問合せで2次索引を使用できるようにします。以前のリリースでは、問合せで2次索引が使用されると、問合せ対象の表のすべてのシャードに送信され、実行されていました。ただし、問合せでWHERE句にシャード・キーも指定する場合、そのキーをすべてのシャードに送信しても無駄になります。これは、問合せの結果は、シャード・キーに対応するパーティションにのみ含まれるためです。このような無駄を回避するため、以前のリリースでは、問合せでシャード・キーを指定している場合(単一パーティション問合せである場合など)、2次索引は選択されませんでした。また、単一パーティションに、2次索引の使用を必要とするORDER BY句またはGROUP BY句が含まれていた場合も、問合せでエラーが発生しました。現在のリリースでは、単一パーティション問合せで2次索引を使用し、指定されたシャード・キーに対応するパーティション内でのみこの問合せを実行することを許可することにより、これらの制限が解除されます。

    [#27573]
  3. NOT EXISTS述語は、以前はsargableであるとはみなされませんでした。現在はそうであるとみなされます。たとえば、表personsにJSON型の列infoがあり、info.ageに対する索引があるとします。この場合、age情報がないpersonsを検索する次の問合せでは、info.ageに対する索引を使用して効率的な実行を実現できるようになりました。
    select * from persons p where not exists p.info.age
    
    [#27489]
  4. sum()およびseq_sum()関数で、入力値が数値でない場合にNULLではなく0が返されるバグが修正されました。

    [#27468]
  5. seq_count()関数が、入力アイテムのいずれかがNULLである場合にNULLを返すよう変更されました。

    [#27582]
  6. seq_minおよびseq_max関数で、JSON nullが入力シーケンスの最初の値である場合にJSON nullをスキップしないバグが修正されました。

    [#27628]
  7. 入力式からNULLが返されるときのEXISTSおよびNOT EXISTS演算子の動作が変更されました。以前は、EXISTSはtrueを返し、NOT EXISTSはfalseを返していました。現在は、両方の式がNULLを返します。ただし、入力式が常に少なくとも1つのアイテムを返すことがわかっている場合は除きます。後者の場合、EXISTSはtrueを返し、NOT EXISTSはfalseを返します。

    [#27492]
  8. 値比較述語が誤って索引の複数キー・フィールドにプッシュされるバグが修正されました。

    [#27491]
  9. 引数が有効なGeoJsonオブジェクトでないときにGeoJson関数がNullPointerExceptionをスローする場合がある2つのバグが修正されました。

    [#27496] [#27508] [#27526]
  10. geo_distance関数がNULLではなく-1を返すバグが修正されました。

    [#27546]
  11. SNメモリー割当てチェックで紛らわしいログ・メッセージが生成される場合があるバグが修正されました。

    [#27524]
  12. -forceフラグが指定されている場合に障害が発生したときにplan migrate-snコマンドが続行されるよう変更されました。管理者は、障害が発生したゾーンからSNを移行する際にこの新しい動作を使用できます。

    [#27598]
  13. バックスラッシュ文字を含む文字列リテラルを処理するときに発生する問題が修正されます。

    [#27640]
  14. 一括Put APIを使用してアイデンティティ・タイプ列を持つ表にデータをロードする場合に、アイデンティティ列の値が入力されないバグが修正されました。

    [#27664]
  15. 精度が9より低い場合にタイムスタンプ値のmin()/max()seq_min()/seq_max()によって正しくない小数秒が返されるバグが修正されます。

    [#27662]

ユーティリティの変更点

  1. Avroをサポートする非推奨の管理CLIコマンドが削除されました。
    • ddl add-schema
    • ddl enable-schema
    • ddl disable-schema
    • table add-schema
    • put kv -json <schemaName>
    • get kv -json <schemaName>
    • aggregate kv
    • show schemas
    [#27387]
  2. 次の変更を使用してverify-dataプランがアップグレードされました。
    • RMI要求のタイムアウトを回避するためにverify-dataプランが非同期になりました。
    • プラン結果の一部としてエラー・メッセージに関連付けられた破損キーのリストをユーザーに提供する機能が追加されました。
    • 2つの新しいフラグ、-show-corrupt-files-valid-timeが追加されました。-valid-timeは、既存の検証が有効とみなされ、再実行されない時間を指定します。デフォルトは10 minutesです。-show-corrupt-filesは、プラン結果に破損したJEログ・ファイルを表示するかどうかを指定します。これはデフォルトでは無効です。
    [#27216]
  3. 次の変更を使用してInitialCapacityPlanning.xls (キャパシティ・プランニング・シート)が更新されました。
    • テキストやプレゼンテーションに対するその他のクリーン・アップ。
    • メモリー要件のサイズ設定時に明示的に計算されるようになったJVMオーバーヘッド。
    • DbCacheSizeの明示的な使用の解消による使用の簡素化。
    • 表とともに1つの索引を指定することのサポート。
    [#27550]
  4. Oracle NoSQL DatabaseのHadoopおよびHive統合クラスは、CDH6 HadoopおよびHiveを実行している環境で使用できるようになりました。
  5. このリリースにantlr4-runtime.jarライブラリの「シェーディング」バージョンが同梱されるようになりました。ここでは、そのライブラリに指定されている各クラスのパス接頭辞は、文字列org/antlrからoracle/kv/shaded/org/antlrに変更されています。これは、互換性のない異なるバージョンのライブラリ(様々なコンテナ、Hadoopクラスタ、Hiveクライアントなど)に依存している環境でアプリケーションを実行する場合に、ClassLoaderの競合(通常はNoClassDefFoundErrorとして表れる)を回避するために行われました。一般には、このために現在のアプリケーションを変更する必要はありません。アプリケーションに変更が必要な唯一の事例は、アプリケーションのクラスパスに、そのアプリケーションの特定の実行時環境にインストールされているantlr4-runtime.jarのバージョンではなく、このリリースのOracle NoSQL Databaseに付属のantlr4-runtime.jarライブラリが含まれるという、可能性の低い事例です。その場合、独自のantlr4-runtime.jarインスタンスを参照するようアプリケーションのクラスパスを変更することをお薦めします。この製品に付属するantlr4-runtime.jarのシェーディング・バージョンは、Oracle NoSQL Database専用とみなされます。

    [#27616] [#27126]