12cR1.4.0.9での変更点
Oracle NoSQL Database 12cR1.4.0.9で次の変更が行われました。
新機能
-
個々の表の行で存続時間(TTL)を定義する機能が追加されました。TTLは、時間数または日数で定義でき、表のデフォルトとして宣言するか、Put操作の行ごとに適用できます。TTLを行に適用すると、その行の有効期限が絶対になり、その後は使用できなくなります。有効期限は、行で新しいAPIを使用して利用できます。[#24743]
-
SQLに似た宣言問合せ言語(ONQLと呼ばれます)のプレビュー・リリースが含まれます。これを使用すると、表のデータに読取り専用形式でアクセスできます。プレビュー・リリースとしてこれを使用してフィードバックすることをお薦めします。後続の正式なリリースに対する追加や変更はこのプレビューと下位互換性を持つことを想定していますが、小規模な非互換性を排除することはできません。
このプレビュー・リリースの時点では、この言語は、複雑な構造(レコード、配列およびマップ)内のデータをナビゲートおよび射影するためのプロジェクション、述語ベースのフィルタ処理、単純な算術操作、索引ベースのソート、パス式を実行できるSELECT-FROM-WHERE-ORDERBY問合せをサポートしています。準備した問合せの再利用のためにバインド変数もサポートされています。
ONQLプロセッサは、サーバー側のすべての操作を実行し、プライマリ索引とセカンダリ索引を自動的に利用して問合せのパフォーマンスを向上させます。この言語では、問合せに適用可能な複数の索引のうち最適なものが問合せプロセッサで選択されていない場合に、ユーザーが問合せの索引を明示的に選択できるようにするためのヒントもサポートされています。
また、対話型のコマンドライン・インタフェースで問合せ言語を簡単に使用できるよう新しいONQLシェルが追加されました。[#24186]
-
エクスポート/インポート・ユーティリティが追加されました。エクスポート・ユーティリティを使用すると、Oracle NoSql Storeから外部のエクスポート・ストア(ローカル・ファイル・システム/Oracle Storage Cloud Service)にコンテンツをエクスポートできます。インポート・ユーティリティを使用すると、外部エクスポート・ストア(ローカル・ファイル・システム/Oracle Storage Cloud Service)からOracle NoSQLストアにコンテンツをインポートできます。[#24734]
-
完全なテキスト検索索引を実現するために、Elasticsearchとの統合のプレビュー・リリースが追加されました。Oracle NoSQL Databaseの表にはテキスト索引を追加できます。これにより、添付されたElasticsearchクラスタ内の対応する索引が移入および保持されます。[#23733]
この機能を使用するには、最初にネットワークでElasticsearch 2.0クラスタを使用できるようにし、クラスタをNoSQL Storeに登録する必要があります。これにより、CREATE FULLTEXT INDEX DDLコマンドを使用できるようになります。
-
既存のplan deploy-topologyの終了時に統計表の自動作成をサポートするメカニズムが追加されました。[#24768]
-
Oracle NoSQL Database Table API Hive Integrationクラスに述語のプッシュダウン・メカニズムが追加されました。具体的には、Hiveまたはビッグ・データSQL問合せのWHERE句(述語)を、KVStoreデータベースに渡すことができる情報に分解する処理をサポートするメカニズムが追加されました。これにより、一部またはすべての検索処理を、問合せのクライアント側で実行される処理ではなく、データベース自体で実行できるようになります。[#24525]
-
管理コマンドライン・インタフェースやPingユーティリティなどのコマンドライン・ユーティリティに非対話型ログイン・モードが追加されました。このリリースで導入されたログイン・プロパティoracle.kv.password.noPromptをtrueとして設定すると、非対話型ログイン・モードが有効になります。ユーザーがパスワード・ストアを使用しておらず、ログイン・プロパティを誤って構成した場合、ユーティリティは前のリリースのようにパスワードやユーザー名を自動的に要求せずに直接終了します。[#24931]
-
クライアント側でのKerberos認証の実行方法を説明する新しい例が追加されました。[#24328]
-
DDLのCREATE TABLE式のフィールドで宣言される範囲がサポートされなくなりました。以前のリリースでは、表内のフィールドに対して範囲制約を宣言できました。これは、データ定義言語(DDL)のキーワードCHECKを使用して、範囲を指定することによって行われていました。この機能の主な目的は、このようなフィールドの主キーのサイズをシステムで最適化できるようにすることにあります。なぜなら、主キーのサイズを小さい状態に維持することは重要な最適化であるためです。この機能は数値および文字列型に対して許可されていました。
このリリース以降、CHECK構文および汎用範囲はサポートされなくなりました。このようなフィールドを使用して作成された既存の表は、引き続き正常に動作し、範囲制約が適用されます。この関数にかわり、主キーで宣言されたフィールドに対してオプションのストレージ・サイズ指定が許可されます。これにより、この機能の目的が非常に明確になり、主キーのサイズが縮小します。現時点では、これはINTEGER型のフィールドのみ許可されます。[#24769]
-
表APIでのバルクPut操作をサポートする新規メソッドが追加されました。詳細は、TableAPI.put(List<EntryStream<Row>>, BulkWriteOptions)およびKVstore.put(List<EntryStream<KeyValue>>, BulkWriteOptions)メソッドのドキュメントを参照してください。[#24563]
バグとパフォーマンスの修正
-
将来のリリースでより柔軟なアップグレードをサポートするために、管理サービスおよびレプリケーション・ノード・サービスの永続ストアに変更が加えられました。この変更は、以前のリリースからこのリリースにアップグレードする場合に1回かぎり影響します。アップグレード中、管理サービスは一時的に「読取り専用」モードに入ることがあります。読取り専用モードの場合、管理サービスの永続的な状態を変更することはできません。これには、新規トポロジの作成、パラメータの変更、新規プランの作成または既存のプランの実行が含まれます。読取り専用の管理サービスは、制御を別の管理ノードに転送することによってこのモードを終了しようとします。[#24634], [#24725]
-
システムによって内部的に管理および維持されるシステム表は、ストアでセキュリティが有効になっている場合は読取り専用になります。また、セキュリティが有効化されているかどうかに関係なく、システム表のスキーマは不変になり、ユーザーによるシステム表の索引の変更、削除または追加は許可されなくなりました。統計収集で使用される古い表(TableStatsPartition、TableStatsIndex、PartitionStatsLeaseおよびIndexStatsLease)は、このリリースでは非推奨になりました。以前のリリースで統計収集が有効であった場合、このリリースでは、これらの表を古い統計データをチェックするために引き続き読み取ることはできますが、更新はされません。古い統計を維持する予定がない場合は、古い表を削除できます。[#24467]
-
セキュアなストアで使用するときにpingコマンドが正しく認証されなくなる問題が修正されました。[#24808]
ユーティリティの変更点
-
(前述の「バグとパフォーマンスの修正」の項で説明したように)管理サービスの永続ストアで変更を行ったため、ダンプおよびロード・ユーティリティの新しいバージョンを使用できるのは、ストアのアップグレードが完了した後のみです。また、このリリースへのアップグレードが開始されると、これらのユーティリティの以前のバージョンは機能しなくなります。アップグレード中、新しいユーティリティは、すべての管理ノードがアップグレードされ、管理サービスが前述の読取り専用モードではなくなるまでは動作しません。[#24634], [#24725]
-
12cR1.3.5.2では、table sizeサブコマンドは親コマンドのtableコマンドとともに誤って非推奨としてマークされていました。table sizeを最上位レベルのコマンドに移動し、名前をtable-sizeに変更してください。
-
ストレージ・ノード・エージェントのステータスを示す新規ステータス・ユーティリティ・コマンドが追加されました。[#23561]
-
要素のない配列を含む表に対してHive問合せを実行したときに次のような例外が発生する問題が修正されました。[#24900]
2016-02-09 13:31:24,213 ERROR [main]: CliDriver (SessionState.java:printError(921)) - Failed with exception java.io.IOException:java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 java.io.IOException: java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 at org.apache.hadoop.hive.ql.exec.FetchOperator.getNextRow(FetchOperator.java:507) at org.apache.hadoop.hive.ql.exec.FetchOperator.pushRow(FetchOperator.java:414) at org.apache.hadoop.hive.ql.exec.FetchTask.fetch(FetchTask.java:138) at org.apache.hadoop.hive.ql.Driver.getResults(Driver.java:1655) at org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:227) at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:159) at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:370) at org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:756) at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:675) at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:615) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at org.apache.hadoop.util.RunJar.run(RunJar.java:221) at org.apache.hadoop.util.RunJar.main(RunJar.java:136) Caused by: java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 at java.util.ArrayList.rangeCheck(ArrayList.java:653) at java.util.ArrayList.get(ArrayList.java:429) at oracle.kv.impl.api.table.ArrayValueImpl.get(ArrayValueImpl.java:97) at oracle.kv.hadoop.hive.table.TableSerDe.objectInspector(TableSerDe.java:458) at oracle.kv.hadoop.hive.table.TableSerDe.deserialize(TableSerDe.java:286) at org.apache.hadoop.hive.ql.exec.FetchOperator.getNextRow(FetchOperator.java:488) ... 15 more
非推奨になった機能
-
Avroのサポートに関連するインタフェースとクラスは非推奨になり、表および表APIの使用が推奨されます。すべてのAvro機能が、表APIを使用することによってより簡単に使用できるようになります。Avroをサポートするインタフェースおよびコードは、しばらくの間は引き続き使用できますが、表APIに移行することをお薦めします。
影響を受けるインタフェースとクラスの大部分は、oracle.kv.avroパッケージ内にあります。これらのクラスを使用するインタフェースも影響を受けます。