20.1.15での変更点
Oracle NoSQL Databaseリリース20.1.15 Enterprise Editionで次の変更が行われました。
トピック
新機能
-
Oracle NoSQLのSQLにIN演算子が追加されました。IN演算子は基本的には、ORを使用した多数の等価条件のコンパクトな代替手段です。たとえば、次の問合せや
SELECT * FROM Foo WHERE a IN (1, 5, 4) is equivalent to SELECT * FROM Foo WHERE a = 1 OR a = 5 OR a = 4
次の問合せのようになります。
SELECT * FROM Foo WHERE (a, b) IN ((1, "a"), (5, "g"), (4, "t")) is equivalent to SELECT * FROM Foo WHERE (a = 1 AND b = "a") OR (a = 5 AND b = "g") OR (a = 4 AND b = "t")
ただし、よりコンパクトになることに加えて、適切な索引が存在する場合はIN演算子を使用した問合せの方がより効率的に実行されます。たとえば、表Fooの列aとbに索引がある場合、前述のIN問合せではどちらもその索引を使用して適格な行を検索しますが、同等のOR問合せは全表スキャンによって実行されます。
前述のIN問合せは、標準SQL構文に準拠しています。また、1つのバインド変数を介して相対的に多数の検索キーを提供できる代替構文も実装されています。たとえば、$keys変数が配列[ 1, "a", 5, "g", 4, "t"]にバインドされている場合、次の問合せは前述の2番目のIN問合せと同等です。
[#27900]DECLARE $keys array(json); SELECT * FROM Foo WHERE (a, b) IN $keys[]
-
「型指定されていない」json索引をサポートします。
これまで、jsonドキュメント内でフィールドを索引付けするには、フィールドの具象jsonアトミック型(整数、長整数、倍精度、数値またはブールの1つ)を指定する必要がありました。一部のドキュメントで、索引フィールドが宣言された型に準拠していない場合、索引の作成や表へのそのドキュメントの挿入は失敗します。このリリースでは、索引付けされたjsonフィールドの有効な型としてanyAtomicが追加されました。anyAtomic型を使用して索引付けされるフィールドは、有効なjsonアトミック型にすることができ、索引には、そのフィールドのすべての異種値が格納されます。
[#27989] -
問合せ実行プランがJson形式で表示されるようになりました。
[#26016] -
新しいrnRHAsyncMaxConcurrentRequestsパラメータが追加されました。このパラメータは、レプリケーション・ノードがスロットルを行うまでに処理できる同時非同期要求の最大数を指定します。このパラメータにより、rnRHAsyncMaxConcurrentRequestsパラメータとrnRHAsyncExecMaxThreadsパラメータの差からキュー・サイズが計算されるために無視されるようになったrnRHAsyncExecQueueSizeパラメータが置き換えられます。
[#27823] -
SQLコマンドALTER TABLEが、既存の複数リージョン表でのリージョンの追加または削除をサポートするようになりました。
[#28027] -
新しいSQLコマンドSET LOCAL REGIONを使用すると、複数リージョン表で使用するローカル・リージョンの名前を指定できます。
[#28013] -
複数リージョン表を作成する場合、または既存の複数リージョン表に新しいリージョンを追加する場合、リモート・リージョン内の関連表が空である必要はなくなりました。
[#28120] -
複数リージョン表はEnterprise Editionでのみサポートされるようになりました。
[#28144]
バグとパフォーマンスの修正
-
18.3より前のバージョンからアップグレードする場合、パーティションの移行を含む拡張度プランを実行する前にストアを完全にアップグレードする必要があります。ストアが18.3以上に完全にアップグレードされていない場合、パーティションの移行が失敗し、拡張度プランが終了することがあります。ストアが完全にアップグレードされたら、プランを再実行できます。この新しい動作により、デプロイ・トポロジ・プランと内部管理プランの間のデッドロックのリスクが回避されます。
[#28036] -
スナップショット・コマンド結果のJSON出力にsnapshotNameが追加されました。
[#27700] -
数値データ型に対してsum()およびseq_sum()関数を使用する問合せで無効な算術コンテキストが使用されるという問題が修正されました。
[#28040] -
オンプレミスのプロキシ・ベースの結合問合せに影響を与えるバグが修正されました。このモードでは、一部の結合問合せにより、単一の結果が最大許容バイト数よりも多くのバイトを使用することを示す例外が誤って発生しました。
[#28103] -
LIMIT句を指定した問合せでHTTPプロキシおよびドライバを使用する場合に発生することがある問題が修正されました。制限内の一部の結果が省略され、制限外の一部の結果が含まれることがありました。
[#28034] -
Javaクライアントを使用して同じ名前を持つ複数のストアにアクセスする際の問題が修正されました。以前は、セキュアなストアの場合、ストアへのクライアント・アクセスが失敗し、証明書署名検証エラーが発生することがありました。また、特定のストアに指定されたソケットのオープンおよび読取りタイムアウト値が正しく適用されませんでした。これらの問題は両方とも修正されました。
[#27952] -
1つ以上のノードが使用できない場合のTableAPI.getTable()の信頼性が高くなりました。
[#28150] -
スケーラビリティが向上し、多数の表と索引を使用する場合のオーバーヘッドが低減しました。
[#27204]