19.3.12での変更点
Oracle NoSQL Databaseリリース19.3.12 Enterprise Editionで次の変更が行われました。
トピック
新機能
-
[#27486]NULL
および存在しない値を索引付けしない、索引に対するサポートが追加されました。これは、索引作成DDLで指定できる索引プロパティです(デフォルトでは、NULL
および存在しない値に索引付けします)。このような索引では、索引付けの時間と領域のオーバーヘッドが減少するため、索引付けされたフィールドでデータに多数のNULL
値および/または存在しない値が含まれる場合に役立ちます。ただし、問合せによるこのような索引の使用は制限されています。具体的には、これらを使用できるのは、すべての索引付きフィールドで、そのフィールドに対してsargable述語が存在し、述語がIS NULL
またはNOT EXISTS
ではない場合のみです。 -
操作回数の多いストアをサポートするために、操作および要求カウント統計が長整数値を使用するよう変更されました。
合計数を長整数として返す新しいJMX Beanメソッドが追加されました。大規模なストアの場合、カウントが2^31を超えることがあるため、このような統計について正確な値を返すにはこれらの新しいメソッドが必要になる場合があります。古いメソッドは互換性を確保するために維持され、カウントが大きくなりすぎる場合は
Integer.MAX_VALUE
を返します。OperationMetrics
インタフェースの新しいメソッドは、次のとおりです。getIntervalTotalOpsLong
getCumulativeTotalOpsLong
RepNodeMXBean
インタフェースの新しいメソッドは、次のとおりです。getIntervalTotalOpsLong
getCumulativeTotalOpsLong
getMultiIntervalTotalOpsLong
getMultiIntervalTotalRequestsLong
getMultiCumulativeTotalOpsLong
getMultiCumulativeTotalRequestsLong
新しい長整数値は、.perfファイル、コレクタ.csvファイルおよびJSON出力でもレポートされます。
[#27517] -
ストリームAPIは、ストリームの終了および再作成を必要とせずに、サブスクライブされた表を実行中のストリームで動的に追加または削除することがサポートされるようになりました。
[#27381] -
describe table文を使用してシステム表のスキーマを記述できるようになりました。
[#27602] - 問合せ言語に新しい組込み関数
regex_like
が追加されました。この関数は、文字列データ型の正規表現パターン一致に使用されます。たとえば、表personsに文字列フィールドlastNameがあるとします。次のselect文では、文字cで始まるlastNameを使用してレコードを限定します。
[#27396]select * from persons where regex_like(lastName,"C.*")
- 以前は非推奨であった
oracle.kv.avro
パッケージからすべてのクラスおよびインタフェースが削除されました。Avroを使用していたアプリケーションは、表APIを使用するよう変更する必要があります。[#27387]
バグとパフォーマンスの修正
-
キー統計が指定した収集期間よりも頻繁に収集されるバグが修正されます。
[#27615] -
単一パーティション問合せで2次索引を使用できるようにします。以前のリリースでは、問合せで2次索引が使用されると、問合せ対象の表のすべてのシャードに送信され、実行されていました。ただし、問合せで
[#27573]WHERE
句にシャード・キーも指定する場合、そのキーをすべてのシャードに送信しても無駄になります。これは、問合せの結果は、シャード・キーに対応するパーティションにのみ含まれるためです。このような無駄を回避するため、以前のリリースでは、問合せでシャード・キーを指定している場合(単一パーティション問合せである場合など)、2次索引は選択されませんでした。また、単一パーティションに、2次索引の使用を必要とするORDER BY
句またはGROUP BY
句が含まれていた場合も、問合せでエラーが発生しました。現在のリリースでは、単一パーティション問合せで2次索引を使用し、指定されたシャード・キーに対応するパーティション内でのみこの問合せを実行することを許可することにより、これらの制限が解除されます。 -
[#27489]
NOT EXISTS
述語は、以前はsargableであるとはみなされませんでした。現在はそうであるとみなされます。たとえば、表personsにJSON型の列infoがあり、info.ageに対する索引があるとします。この場合、age情報がないpersonsを検索する次の問合せでは、info.ageに対する索引を使用して効率的な実行を実現できるようになりました。select * from persons p where not exists p.info.age
-
[#27468]sum()
およびseq_sum()
関数で、入力値が数値でない場合にNULL
ではなく0が返されるバグが修正されました。 -
[#27582]seq_count()
関数が、入力アイテムのいずれかがNULL
である場合にNULL
を返すよう変更されました。 -
[#27628]seq_min
およびseq_max
関数で、JSON nullが入力シーケンスの最初の値である場合にJSON nullをスキップしないバグが修正されました。 -
入力式から
[#27492]NULL
が返されるときのEXISTS
およびNOT EXISTS
演算子の動作が変更されました。以前は、EXISTS
はtrueを返し、NOT EXISTS
はfalseを返していました。現在は、両方の式がNULL
を返します。ただし、入力式が常に少なくとも1つのアイテムを返すことがわかっている場合は除きます。後者の場合、EXISTS
はtrueを返し、NOT EXISTS
はfalseを返します。 -
値比較述語が誤って索引の複数キー・フィールドにプッシュされるバグが修正されました。
[#27491] -
引数が有効なGeoJsonオブジェクトでないときにGeoJson関数が
[#27496] [#27508] [#27526]NullPointerException
をスローする場合がある2つのバグが修正されました。 -
[#27546]geo_distance
関数がNULL
ではなく-1を返すバグが修正されました。 -
SNメモリー割当てチェックで紛らわしいログ・メッセージが生成される場合があるバグが修正されました。
[#27524] -
[#27598]-force
フラグが指定されている場合に障害が発生したときにplan migrate-sn
コマンドが続行されるよう変更されました。管理者は、障害が発生したゾーンからSNを移行する際にこの新しい動作を使用できます。 -
バックスラッシュ文字を含む文字列リテラルを処理するときに発生する問題が修正されます。
[#27640] -
一括Put APIを使用してアイデンティティ・タイプ列を持つ表にデータをロードする場合に、アイデンティティ列の値が入力されないバグが修正されました。
[#27664] -
精度が9より低い場合にタイムスタンプ値の
[#27662]min()
/max()
、seq_min()
/seq_max()
によって正しくない小数秒が返されるバグが修正されます。
ユーティリティの変更点
- 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
- 次の変更を使用して
verify-data
プランがアップグレードされました。- RMI要求のタイムアウトを回避するために
verify-data
プランが非同期になりました。 - プラン結果の一部としてエラー・メッセージに関連付けられた破損キーのリストをユーザーに提供する機能が追加されました。
- 2つの新しいフラグ、
-show-corrupt-files
と-valid-time
が追加されました。-valid-time
は、既存の検証が有効とみなされ、再実行されない時間を指定します。デフォルトは10 minutesです。-show-corrupt-files
は、プラン結果に破損したJEログ・ファイルを表示するかどうかを指定します。これはデフォルトでは無効です。
- RMI要求のタイムアウトを回避するために
- 次の変更を使用してInitialCapacityPlanning.xls (キャパシティ・プランニング・シート)が更新されました。
- テキストやプレゼンテーションに対するその他のクリーン・アップ。
- メモリー要件のサイズ設定時に明示的に計算されるようになったJVMオーバーヘッド。
- DbCacheSizeの明示的な使用の解消による使用の簡素化。
- 表とともに1つの索引を指定することのサポート。
- Oracle NoSQL DatabaseのHadoopおよびHive統合クラスは、CDH6 HadoopおよびHiveを実行している環境で使用できるようになりました。
- このリリースに
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]