12cR1.3.2.15での変更点

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

新機能

  1. 表および索引の宣言的な作成および管理を可能にする宣言データ定義言語が定義されています。言語リファレンスは、表のためのデータ定義言語にあります。言語は、JavaのAPIと新しいCドライバを介してアクセスできます。管理コマンド・ライン・インタフェース(管理CLI)の新しい"execute"コマンドを使用して実行することもできます。

  2. コマンド・ライン・インタフェース(管理CLI)には、データ定義言語(DDL)文の実行に使用できる新しい"execute"コマンドがあります。JavaまたはC APIは、表を定義するための優先メカニズムですが、管理CLIを介して表を定義および管理する場合は、以前の"table"コマンドよりも"execute"コマンドが優先されます。

  3. Oracle NoSQL Databaseの表および索引を操作する新しいCドライバが作成されました。これは、このディストリビューションと同じページで別途ダウンロードできる製品です。これはソース・コードであり、依存ライブラリとともにコンパイルする必要があります。詳細な手順はディストリビューションに含まれています。

  4. マップのキー文字列に対する索引およびマップの値に対する索引を作成して、これらの索引を様々なデータ・モデルに対してはるかに有用にできるように、マップに対する索引の実装が拡張されました。これらの索引により、マップ・エントリ数を最大として、特定の行の索引エントリが複数作成されます。これらの索引の使用に役立つAPIが追加されました。

  5. 管理CLIを対話的に使用する場合は、バックスラッシュを使用して、コマンドを複数行に入力できるようになりました。たとえば、次のように入力できます。

    kv-> show events -type stat
     or
    kv-> show events \
    > -type stat
  6. Oracle NoSQL Databaseクラスタのトラブルシューティングをサポートする新しい診断コマンド・ライン・ユーティリティが使用可能です。現在、"収集"機能により、ユーザーはクラスタ内の各ノードのログファイルを簡単に取得してパッケージ化し、詳細に解析できます。追加機能も徐々に公開されます。新しいユーティリティは次の方法で起動します。
    java -jar kvstore.jar diagnostics
    
    diagnostics-> help
    Oracle NoSQL Database Diagnostic Utility Commands:
    	setup
    	collect
    	exit
    	help
    
    diagnostics->

APIの変更点

  1. データ定義言語(DDL)文を実行するoracle.kv.table.TableAPI.execute(String)およびoracle.kv.table.TableAPI.executeSync(String)が追加されました。

  2. TableAPIに対する新しい文実行メソッドの結果を処理する新しいインタフェースoracle.kv.table.StatementResultおよびoracle.kv.table.ExecutionFutureが追加されました。

  3. 新しいマップ索引を処理するためのoracle.kv.table.MapValue.putNull(String)および定数oracle.kv.table.MapValue.ANONYMOUSが追加されました。

  4. 新しいマップ索引のFieldRangeインスタンスを作成するoracle.kv.table.Index.createMapKeyFieldRange(String)およびoracle.kv.table.Index.createMapValueFieldRange(String)が追加されました。

  5. メソッドoracle.kv.table.TableAPI.execute(List<TableOperation>, WriteOptions)は、oracle.kv.OperationExecutionExceptionをスローしていました。一方、OperationExecutionExceptionは、oracle.kv.tableの表APIではなく、oracle.kvパッケージのキー値APIに適用される情報を提供します。メソッドは、表APIに適した情報を提供する新しい例外oracle.kv.table.TableOpExecutionException,をスローするように変更されました。

    これは非互換のAPI変更です。TableAPI.execute(List<TableOperation>, WriteOptions)を呼び出したアプリケーションはOperationExecutionExceptionではなくTableOpExecutionExceptionを処理するように変更する必要があります。

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

  1. CLIのverboseおよびhiddenコマンドが拡張され、以前の切替えタイプ機能に加えてon/offパラメータを使用して指定できるようになりました。[#23245]

  2. 非推奨のコマンドをデフォルトで表示しないように管理CLIのヘルプを変更しました。CLIのヘルプコマンド用として新しい-includeDeprecatedフラグが追加されました。このフラグが使用されている場合、非推奨コマンドは他のコマンドとともにリストされます。[#23365]

  3. java -jar kvstore.jar loadユーティリティは、操作でエラーが発生した場合に正しいフィードバックを提供せず、間違ってLoad succeededを返しました。現在は、エラーが見つかった場合のゼロ以外のステータス・コードと正確なステータス・メッセージの両方を返します。[#23681]

  4. RN間でトポロジ変更を伝播するときに変更されたトポロジを指定することで、任意の認証済クライアントがストアのトポロジを変更できるというセキュリティの脆弱性が修正されました。これを防ぐために署名ベースのトポロジ整合性チェックが採用されています。[#23709]

  5. 基礎となる表への更新が行われているときにストアが展開された場合、セカンダリ索引が間違ってエントリを失うウィンドウが存在しました。このウィンドウは閉じられました。[#23724]

  6. 現在のユーザーに対してロールを付与または取り消すことで行われた変更を有効にするために、ユーザーにストアの再認証を要求していた問題が解決されました。既存のログイン・セッションが再認証なしでロール変更を即時に反映できるようにするリアルタイム・セッション更新メカニズムが導入されました。[#23839]

  7. 管理パラメータが変更されているときに、中断されたchange-parametersプランの再実行が阻害されることがあるというバグが修正されました。[#23880]

  8. ストアを読み取る権限なしで安全なストアに対して並列スキャンを実行しているクライアントに対し、スキャンで値が返されないかわりにタイムアウト例外が発生するという問題が解決されました。この問題は、管理CLIでget kv -allコマンドを使用している場合に発生することがあります。

    kv-> get kv -all
    Error handling command get kv -all: Failed to iterate records :
    Parallel storeIterator Request Queue take timed out.
    (12.1.3.1.3) Timeout: 5000ms

    StoreIteratorConfigを提供するKVStore.storeIteratorまたはstoreKeysIteratorメソッドのオーバーロードを使用してスキャンがAPIを介して実行された場合、この問題が原因でメソッド・コールがRequestTimeoutExceptionをスローすることがありました。これらすべての場合で、反復処理は要素を返さないようになりました。[#23881]

  9. 完全な主キーが指定されている場合にHadoop APIから重複値が返されるという問題が解決されました。[#23958]

  10. 結果セットがバッチ・サイズ(デフォルトは100)より大きい場合に配列索引に対する繰返しで正しくない結果が返されるかハングするというバグが修正されました。[#23977]

  11. ソケットのタイムアウトを処理するときに存在する低速なメモリー・リークを修正しました。障害のあったソケット接続操作に関連するソケット・オブジェクトは参照されており、ガベージ・コレクタで処理できませんでした。[#24039]