Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

Caché 2016.1

この章では、Caché 2016.1 の以下の項目について説明します。

Caché 2016.1 の新機能と強化機能

このセクションでは、以下の項目について説明します。

重要な新機能

Caché 2016.1 には、以下の重要な新機能が追加されています。

JSON 処理のパフォーマンスの向上

JSON は構造化データとの通信を容易にする軽量メカニズムを提供します。今回のリリースでは、新しい %Object および %Array クラスを使用して、JSON 準拠のコンテンツの高パフォーマンスの解析および生成を実行できます。JSON と ObjectScript の統合が強化されたことにより、JSON と ObjectScript を効率的に変換できるようになりました。例えば、JSON で中括弧を使用すると、ObjectScript で %Object インスタンスが生成され、角括弧を使用すると %Array オブジェクトが生成されます。中括弧と角括弧は、適宜入れ子にでき、値の ObjectScript 式と共に使用できます。今回のリリースでは、JSON 処理のパフォーマンスが向上したため、JSON の作業の簡潔さと非常に効率的なコードの利点を享受できます。詳細は、"Caché での JSON の使用" を参照してください。

将来の開発のために、インターシステムズでは、%ZEN.proxyObjectOpens in a new tab の代わりに %Object および %Array クラスを使用することをお勧めします。

Zen で JSON を使用する既存のコードがある場合、以前の JSON プロバイダ・クラス、%ZEN.Auxiliary.JSONProvider および %ZEN.Auxiliary.JSONSQLProvider (これらは特に説明はされませんが、現在もアクセスできます) の代わりに、新しい %ZEN.Auxiliary.altJSONProviderOpens in a new tab および %ZEN.Auxiliary.altJSONSQLProviderOpens in a new tab クラスを使用することによって、最小限のコード変更で効率性を向上させることができます。

Note:

%ZEN.Auxiliary.altJSONProviderOpens in a new tab および %ZEN.Auxiliary.altJSONSQLProviderOpens in a new tab クラスにおいて、%ConvertJsonToObject() メソッドは、従来のクラスの対応メソッドよりも多くのメモリが必要になります。具体的には、新しいクラスのメソッドは、入力として使用される JSON 文字列の 2 倍のメモリが必要になります。これは、メソッドがメモリにそのデータのコピーを 2 つ格納するためです。

新しい %ZEN.Auxiliary.altJSONProviderOpens in a new tab および %ZEN.Auxiliary.altJSONSQLProviderOpens in a new tab クラスのメソッドは、常に標準準拠の JSON を返します。NULL データ項目は JSON NULL として投影され、常に厳格な JSON への準拠が実行されます。

通常、新しいクラスは、単純に空白に影響を及ぼすフラグをすべて無視します。また、u フラグおよび q フラグも無視します。下位互換性のために、新しい JSON プロバイダにはフォールバック・モードが用意されています。フォールバック・モードでは、要求が失敗した場合、古い jsonProvider ロジックを使用して再試行が行われます。 この場合、古いフラグがすべて使用されます。

SQL パフォーマンスの向上

SQL コマンドのパフォーマンスは、Caché アプリケーションで大規模なデータベースを効率的に処理するうえで重要な要素です。この理由から、Caché の SQL パフォーマンスに大幅な改善を行ってきました。今回のリリースは、以下のような新しい機能拡張によって、この改善努力を継続しています。

  • xDBC サーバ・コードのパフォーマンス最適化。

  • クエリ実行のためのサーバ・パフォーマンスの向上。今回のリリースでは、SQL クエリ・プロセッサは、多数の一般的なクエリ・オペレーションに対応するより効率的なコードを生成します。パフォーマンスが大幅に向上した 1 つのクエリでは、 UNION ALL の数を照会します。今回のリリースで、Caché は UNION のメンバごとに個別に数の計算を最適化します。

  • 操作をキャンセルする機能の向上。

詳細は、"Caché SQL リファレンス" の “UNION” を参照してください。

DeepSee REST サービスおよび JavaScript ライブラリ

DeepSee エンジンへのアクセスを提供する新しい REST サービスがあります。このサービスには、ピボット・テーブルと MDX クエリを実行し、JSON で結果を返すデータ・サービスが含まれます。キューブ、ピボット・テーブル、およびキューブの情報 (ディメンジョン、メンバ、メジャーなど) のリストを取得するための情報サービスもあります。

JavaScript 開発者には、DeepSee REST サービスへのアクセスを提供する新しい DeepSee JavaScript ライブラリも用意されています。

REST サービスおよび JavaScript ライブラリの詳細は、"DeepSee Web クライアントを作成するためのツール" を参照してください。

主要な開発

今回のリリースでは、Caché に次の主な新機能が加わりました。

新しい DeepSee の機能

REST サービスと JavaScript ライブラリに加えて、今回のリリースでは以下の新しい機能が DeepSee に追加されました。

  • %SynchronizeCube の並行処理 — %SynchronizeCube は、複数の DeepSee エージェントを使用して、並行してキューブを更新できるようになりました。以前のリリースでは、%SynchronizeCube は、1 つのプロセスのみを使用して、キューブを更新していました。

    詳細は、%DeepSee.UtilsOpens in a new tab のクラス・リファレンスを参照してください。

  • 計算メンバの共有 — アナライザを使用して定義された計算メンバが、同一のキューブを使用する他のピボット・テーブルでも使用できるようになりました。また、計算メンバを作成する新しい API も用意されています。以前のリリースでは、アナライザで定義された計算メンバは、それらが定義されたピボット・テーブルでしか使用できませんでした。

    詳細は、"DeepSee アナライザの使用法" の “計算要素の定義” の章を参照してください。

  • メジャー固有のリスト — ピボット・テーブルのセルから詳細リストを取得する際、セルが示すメジャーで詳細リストの表示行を制御できるようになりました。 以前のリリースでは、行、列、およびフィルタではリストを制御していましたが、メジャーでは制御していませんでした。詳細リストの表示行を制御する新しいオプション属性がメジャーの定義に含まれるようになりました。

    詳細は、"DeepSee モデルの定義" の “リストの追加フィルタの指定” および “計算メジャーのリストの追加フィルタの指定” を参照してください。

  • アナライザおよびアーキテクト : ペインのサイズ変更の許可 — アナライザでは、ペインの右側の境界線をドラッグすることで、ディメンジョン・ツリーを表示する左側のペインでサイズを変更できます。また、行、列、メジャー、およびフィルタのボックス間の垂直の境界線をドラッグして、これらのボックスのサイズを変更することもできます。アーキテクトでは、ソース・クラスを表示する左側のペインのサイズを変更できます。

  • ピボット・テーブルから MDX を取得して実行する新しいユーティリティ・メソッド%DeepSee.UtilsOpens in a new tab にはいくつかの新しいユーティリティ・メソッドがあります。

    • %GetMDXFromPivot() : ピボット・テーブルに対して MDX テキストを返します。オプションでクエリを実行します。

    • %ExecutePivot() : ピボット・テーブルに対して MDX を実行します。関連付けられた %DeepSee.ResultSetOpens in a new tab をオプションで返します。

    • %GetResultSetFromPivot() : ピボット・テーブルに対して %DeepSee.ResultSetOpens in a new tab を返します。 オプションでクエリを実行します。

    詳細は、%DeepSee.UtilsOpens in a new tab のクラス・リファレンスを参照してください。

  • プラグインの追加のリストのフィルタを定義する機能 — プラグインは、DeepSee でカスタム・メジャーを定義する機能を提供します。今回のリリース以前は、プラグインからのリストには、常にメジャーを計算するために使用されるすべての行が表示されていました。今回のリリースでは、プラグインでリストを行のサブセットの使用に制限できる新しい機能が提供されています。

    詳細は、"DeepSee 上級モデリング・ガイド" の “プラグインの定義” を参照してください。

  • 新しい %OnAfterBuildCube() メソッド — キューブが構築される前にカスタム・ロジックを許可することに加えて、今回のリリースではキューブが構築された後にカスタム・ロジックを許可する新しい %OnAfterBuildCube() メソッドが追加されます。

    "DeepSee 上級モデリング・ガイド" の “その他のキューブ・コールバックのカスタマイズOpens in a new tab” を参照してください。

  • 新しい $$$VARIABLES トークン — URL を介してダッシュボードにアクセスする際に、トークン $$$VARIABLES を使用できるようになりました。このトークンは、現在のピボット変数とその値にも拡張されます。

    "DeepSee 実装ガイド" の “アプリケーションからダッシュボードへのアクセス” を参照してください。

  • カレンダー・フィルタおよび週の最初の日 — 日付に基づいてフィルタ処理する場合、カレンダー・フィルタは週の最初の日についてシステム設定に従うようになりました。この変更以前は、カレンダーは常に日曜日を週の最初の日として表示していました。

iFind の機能強化

今回のリリースでは、以下の iFind の機能強化が行われています。

  • iFind では、検索文字列と "ほぼ" 一致する単語が含まれるレコードを検索するファジー検索がサポートされるようになりました。ファジー検索では、記述方法のわずかな違い (color と colour) や誤字 (collor と color) が考慮されます。iFind では、それらの検索文字列までの編集距離 (追加、削除、または変更が行われた文字数) としきい値 (既定値は 2) を比較することで、ファジー一致を評価します。

  • iFind のテキスト検索では、新機能がサポートされるようになりました。検索語との関連性を基準にして検索結果の順位付けを行えるようになりました。分析インデックスでは、この順位付けで iKnow 固有のエンティティ・レベルおよび関連メトリックを利用できます。さらに、iFind では、強調表示された実際の検索一致が含まれるテキストのスニペットを返すことができるようになりました。最後に、単語およびエンティティの情報をネームスペース全体で共有するのではなく、iFind インデックスごとに格納できるようになりました。これは、さまざまなサイズや設定のインデックスが同一のネームスペース内に存在する場合にメリットをもたらします。

詳細は、"iKnow の使用法" の “iFind 検索ツール” の章を参照してください。

iKnow の機能強化

iKnow ドメイン管理用のシステム管理ポータルに [iKnow アーキテクト] ページが追加されています。このページでは、データのロード元となるデータ場所と共に、iKnow ドメインの静的な側面 (メタデータや構成など) を定義できます。また、基本となるドメイン定義インフラストラクチャを利用して、このインタフェースからドメインをロード (構築) したり、空にしたりできます。詳細は、"iKnow の使用法" の “アーキテクト” を参照してください。

今回のリリース以降、iKnow はスウェーデン語および日本語もサポートします。

Zen Mojo の Twitter Bootstrap のサポート

今回のリリースでは、Zen Mojo は Web ページの開発を容易にするフレームワークである Twitter Bootstrap をサポートします。"Zen Mojo プラグインの使用法" の “Bootstrap のヘルパー・プラグイン” の章を参照してください。

.NET Entity Framework のサポート

今回のリリースでは、Caché に .NET Entity Framework のサポートが組み込まれています。Entity Framework は、.NET 開発者がドメイン固有のオブジェクトを使用してリレーショナル・データを処理できるようにするオブジェクト・リレーショナル・マッパです。Caché は、Entity Framework のバージョン 5 および 6 をサポートします。Caché の Entity Framework のサポートの詳細は、"Caché での .NET および ADO.NET Managed Provider の使用法" の “Caché Entity Framework Provider の使用法” を参照してください。.NET Entity Framework の詳細は、http://www.asp.net/entity-frameworkOpens in a new tab を参照してください。

ADO .NET クエリのキャンセルのサポート

今回のリリースでは、ADO .NET クエリをキャンセルする機能が追加されています。

ミラーリングの改善

今回のリリースでは、ミラーリングに以下の改善が行われました。

  • パフォーマンスを向上させ、ネットワーク負荷を削減するためのオプションの圧縮ネットワーク通信。詳細は、"Caché 高可用性ガイド" の “ジャーナル・データの圧縮” を参照してください。

  • 大きな TCP ウィンドウ・サイズのサポートにより、離れた場所にあるミラー・メンバ (高遅延接続) に対するネットワーク・スループットを向上させられます。詳細は、"Caché 高可用性ガイド" の “ネットワーク遅延に関する考慮事項” を参照してください。

セキュリティの機能強化

今回のリリースでは、以下のセキュリティの改善が行われました。

  • Open SSL ライブラリ・バージョン 1.0.1p が含まれるようになりました。

  • 監査データベースのジャーナリングを要求することにより監査の信頼性が向上しました。詳細は、"Caché セキュリティ管理ガイド" の “システム監査イベントについて” を参照してください。

パフォーマンスとスケーラビリティの改善

今回のリリースでは、以下のパフォーマンスの改善が行われました。

  • ポインタ・ブロックの競合を減らすことによりデータベース・アクセスのスケーラビリティを向上。この向上は、特に大規模なサブツリーの削除を実行するアプリケーションまたは物理ディスクの読み取りを頻繁に引き起こすアプリケーションに関連します。

  • デジャーナリング (ミラーリング、シャドウイング、および JRNRESTO でデータベースにジャーナルを適用するプロセス) のパフォーマンスの向上。デジャーナル事前フェッチ・ジョブとの内部ブロック競合を排除することにより実現します。

  • 1 日に許可されるジャーナル・ファイルの数の制限の解除。

  • ECP アプリケーション・サーバのキャッシュの強化。 アプリケーション・サーバで大きな文字列のデータ値をキャッシュするようになりました。 ECP ではまた、一部のデータベース・ブロックを自動的に事前フェッチして、それらを前もってアプリケーション・サーバでキャッシュします。

Apache バージョン 2.4 の Windows x64 サポート

今回のリリースでは、Apache バージョン 2.4 Web サーバの Windows x64 ネイティブ・サポートが提供されています。

ユーティリティ機能の向上

今回のリリースには、以下の向上したユーティリティが含まれています。

  • ルーチン・バッファをチェックする新しいユーティリティ検証メソッド。%SYSTEM.UtilOpens in a new tab クラスの ValidateRoutineBuffers() を参照してください。

  • プロセスについての情報を提供する %SYS.ProcessQueryOpens in a new tab 内の新しいメソッド。

  • [ボタン] レポートに対するマイナーな機能強化。

  • ccontrol の出力を使用してユーザがスクリプトを記述できるようにするための、長いフィールド名のラップを防止する新しいオプション。

  • 管理ポータルはデータベース、ネームスペース、ロック、ロール、タスク、および ECP サーバ・ページの追加フィルタ処理オプションを提供。

その他の注意事項

さらに、これ以外にも、さまざまな点で機能強化や改善がなされています。特に既存のインストール環境をアップグレードする場合は、"アップグレード・チェックリスト" で詳細な変更内容を確認してください。

マイナーな改善が行われたその他の領域には、以下が含まれます。

  • ミラーリング

    • ミラー・メンバの受信ジャーナルの転送速度がミラー・モニタで表示されるようになりました。

    • 多数のジャーナル・ファイルを取得し適用する必要がある、切断されているメンバの再接続における動作が改善しています。[移行] の代わりに、より役立つ [同期] ステータスが通知されるようになりました。ジャーナルの転送およびデジャーナリングの進捗は、ミラー・モニタで確認できます。ジャーナルの削除は、切断および再接続では変更されません。

    • プライマリが障害状態にあると、ミラー・モニタでその情報が表示されるようになりました。

    • 必要に応じて、データベースの圧縮でミラー情報ブロックを移動できるようになりました。これにより、ミラー・データベースの未使用スペースの返却をより確実に行えるようになります。

  • ミラー認識 CSP— CSP ゲートウェイは、ミラー仮想 IP または外部の代替を使用しないで現行のミラー・プライマリに自動的にリダイレクトできるようになりました。これにより、仮想 IP の確立を行えないか、またはそれが完成したソリューションではない特定のハードウェア構成で、Web ベースのアプリケーションをより容易に実装できます。ミラー仮想 IP または別のテクノロジを使用してすべてのタイプの接続をプライマリにリダイレクトするミラー構成の場合、ゲートウェイをミラー認識になるように選択しないで、仮想 IP に接続するように構成すれば十分です。詳細は、"Caché 高可用性ガイド" の “フェイルオーバーまたは災害復旧後のアプリケーション接続のリダイレクト” および "CSP ゲートウェイ構成ガイド" の “サーバ・アクセスの構成” を参照してください。

  • パフォーマンスとスケーラビリティ :

    • 大規模な KILL からデータベース・ブロックをクリーンアップするガーベッジ・コレクタのパフォーマンスが向上しています。

  • [DataCheck の状態表示] ページで DataCheck 構成のリソース消費に関する情報が表示されるようになりました。 さまざまなスロットル設定で使用されるリソースの量が更新され、ローエンドにおいてよりスムーズにスケーリングを行うことができます。これにより、従来、2 の設定では低すぎ、3 の設定では高すぎていたシステムにおいて柔軟性が向上します。詳細は、"Caché データ整合性ガイド" の “複数のシステムでのデータ整合性” の章の “パフォーマンスに関する考慮事項” を参照してください。

  • メール・サーバの監視ユーティリティにより、指定されたポートを監視できます。

  • ファイルの DriveList には UNIX にマウントされたドライブが含まれます。

  • トレース情報は、FRAMESTACK エラーで終了したプロセスで使用できるようになりました。問題の検出および診断を支援するために、情報メッセージは cconsole.log に書き込まれます。 このメッセージには、エラーが発生した行参照が表示されます。

    (pid) 0 <FRAMESTACK> at +13^|"USER"|test

  • ジャーナル・ファイルの削除時、cconsole.log には、開いているトランザクションに使用されるジャーナルなど、削除されないジャーナルに関する詳細情報が含まれます。

  • BITCOUNT 関数のパフォーマンスが向上しました。

  • Security.Roles.Copy() API を使用してロール定義をコピーして新しいロールを作成する場合、この呼び出しにはこのロールに対して定義された SQL 特権も含まれるようになりました。ユーザが Security.Roles.CopySQLPrivileges() を追加で呼び出す必要はなくなりました。

  • UNIX® システムでは、Caché は /dev/urandom へのアクセスを必要とします。これは、セキュアな乱数ジェネレータをシードするために Caché 起動時に使用されます。今回のリリースでは、/dev/urandom にアクセスできない場合の cconsole.log の深刻度が情報から警告に増大しています。

  • 今回のリリース以前は、ルーチン・パフォーマンス監視の MONLBL ユーティリティは、監視プロセスを停止するとすべての収集されたデータが削除されることについてユーザに警告を表示しませんでした。今後は、ユーザはメッセージを受け取り、続行するかどうかを決定できます。

  • プロセス・プライベート・グローバル (PPG) メトリックを使用するお客様を支援するために、今回のリリースでは 2 つの新しいメトリックが導入されました。

    • gloref_ppg - プロセスによって作成されたプロセス・プライベート・グローバル参照の合計数 (gloref と同様)

    • gloset_ppg - プロセスによって作成されたプロセス・プライベート・グローバルに対する更新数 (gloset と同様)

  • Caché では、Windows プラットフォーム上で失敗した TCP 接続もログに記録し、SYSLOG にエントリを生成するようになりました。これは、非 Windows システムではこの状況で既に使用されていました。

  • i%property などのインスタンス変数は、FOR コマンドで制御変数としても使用できるようになりました。

  • 今回のリリース以前は、ライセンスのユーザの数が増加した場合、インスタンスを再起動して、ライセンスの消費を保存するために追加のスペースを割り当てる必要がありました。ライセンス・ユニットの頻繁な増加が発生するお客様をより効率的にサポートするために、(前回の再起動以降に) ライセンス付与されたユーザ数が増加しても、インスタンスを再起動する必要がなくなりました。例外として、増加するライセンスの数が 227,000 を超える場合は、再起動が必要になります。

  • アプリケーション・ライセンス機能が拡張され、##class(%SYSTEM.License).ApplicationServerLogin() クラス・メソッド (クラス・ドキュメントで説明) を使用して、共有ライセンス下で動作するインスタンスの数が、許可されているインスタンスの数を超えているかどうかについて通知するようになりました。

Caché 2016.1 アップグレードのチェックリスト

目的

このセクションでは、Caché 2016.1 の機能のうち、今回のバージョンで変更されたために、既存のシステムの管理、運用、または開発の作業に影響を及ぼすものを取り上げます。

前回リリースよりも前のリリースからアプリケーションをアップグレードする場合は、その中間に存在するリリースのアップグレード・チェックリストにも目を通すことを強くお勧めします。このドキュメントでは、2015.2 と 2016.1 の違いのみを取り上げています。

このドキュメントの冒頭に記載したアップグレードの説明は、このバージョンに適用されます。

管理者

このセクションでは、以前のバージョンの Caché の管理作業を熟知しているユーザを対象に、バージョン 2016.1 の管理に関する新機能と変更点を説明します。ここでは、各項目について簡単に説明します。ほとんどの場合は、ドキュメントの別の箇所に詳しい説明があります。

バージョン間の相互運用性

最近のリリースとの相互運用性を示すテーブルが、サポート対象プラットフォームのドキュメントに掲載されています。

管理ポータルの変更

パフォーマンス・モニタの見出しの変更

以前のリリースでは、PERFMON パフォーマンス・モニタで、ビッグ・データの読み取りと書き込みのブロックおよびバッファに関するメトリックのレポートに誤解を招く見出しが存在していました。メトリック 9、16、および 23 の見出しでは、これらのメトリックがルーチンの読み取りと書き込みに関するものであると示されていました。今回のリリースでは、これらの見出しで、これらのメトリックがビッグ・データの読み取りと書き込みに関するものであると正しく示されています。これらのメトリックの見出しは、以下のように変更されています。

  • 9 — BdataBlkRd (ビッグ・データ・ブロックの読み取り)

  • 16 — BdataBlkWt (ビッグ・データ・ブロックの書き込み)

  • 23 — BdataBlkBuf (グローバル・バッファによって満たされたビッグ・データ・ブロック要求)

SSL/TLS 構成の変更

以前のリリースでは、SSL/TLS構成を作成または編集する画面には、[証明書取り消しリストを含むファイル] フィールドが含まれていました。このフィールドは削除されました。

操作上の変更

ここでは、システムによる処理方法に影響を与える変更について説明します。

TCP キープアライブ設定とは無関係に接続を維持する ECP アプリケーション・サーバ

以前のリリースでは、ECP アプリケーション・サーバと ECP データ・サーバとの間の接続を ECP で開いた状態にしておく時間は、TCP キープアライブ設定の影響を受けていました。データ・サーバが利用不可になったときに、接続をリダイレクトするまでに費やす時間は、この設定が影響していました。TCP キープアライブは、ECP アプリケーション・サーバと ECP データ・サーバとの間の接続の維持に、まったく影響しなくなりました。例えば、ミラー・プライマリの停止とフェイルオーバーの後に、適切なタイミングでアプリケーション・サーバをリダイレクトできるようにするために、オペレーティング・システム・レベルで TCP キープアライブを調整している場合は、そのような調整の必要がなくなります。

ジャーナル・ファイルの新しい命名方法がディレクトリ名およびスクリプトに影響を及ぼす可能性

今回のリリースでは、1 日にジャーナル処理を行えるデータ量の上限を増やす目的で、ジャーナル・ファイルの命名方法が変更されています。最初の 999 個のジャーナル・ファイルの命名方法は従来と変わりません。それを、次に示します。

YYYYYMMDD.NNN

ここで、YYYYYMMDD は日付、NNN は 001 から 999 までの数値です。以前のリリースでは、Caché で 1,000 個以上のジャーナル・ファイルを作成できませんでした。今回のリリースでは、Caché で 1,000 以上の数に対応するように NNN の桁数が増えています。例えば、2015 年 1 月 1 日に作成された 1 番目、10 番目、100 番目、1,000 番目、および 10,000 番目のジャーナル・ファイルの名前は、それぞれ 20150101.001、20150101.010、20150101.100、20150101.1000、および 20150101.10000 になります。

より長いファイル名に対応するため、Caché では、ディレクトリと接頭語 (存在する場合) の合計の長さが従来の上限よりも 7 文字少ない 208 文字に制限されています。サイトで非常に長いディレクトリや接頭語を使用している場合、より短いものに変更する必要があります。

また、日付の後に 3 桁の数字を付けてジャーナル・ファイルを命名することを想定しているスクリプトが存在する場合、そのスクリプトを修正する必要がある場合があります。例えば、20150101.1000 は 20150101.999 よりも前にソートされるため、ファイル名の数値およびアルファベットのソート順序は日付の順序とは一致しません。

DataCheck ユーティリティの改訂による、最適なスロットル設定の変更

今回のリリースでは、DataCheck ユーティリティが更新されました。その結果、最適なパフォーマンスを実現するために、スロットル設定を変更することができます。設定の移行は円滑に行われます。追加リソースの大量の消費を抑えて、スロットル設定を大きくすると、パフォーマンスの向上につながります。 最適なスロットル設定を決定するには、試してみることが最善の方法です。設定はいつでも調整でき、直ちに有効になります。

プラットフォーム固有の項目

このセクションでは、特定のプラットフォームに関係する項目について説明します。

Windows
  • Windows インストールと CSP ゲートウェイ

    今回のリリースでは、通常インストールと同じ既定値が自動インストールで使用されます。例えば、自動インストールを使用した場合、既定では CSP ゲートウェイはインストールされません。自動インストールで CSP ゲートウェイをインストールするには、コマンド行の ADDLOCAL プロパティで CSP ゲートウェイ・コンポーネントを指定します。すべての機能を含めるには、ADDLOCAL=ALL を指定します。"Caché インストール・ガイド" の “自動インストールの実行” を参照してください。

    Windows インストールにおいて、IIS CSP 構成が存在する場合、CSP.ini はオーバーライドされません。以前のリリースでは、インストールでこのファイルは常にオーバーライドされます。したがって、CSP.ini が誤って構成されている場合、インストールで問題は修正されません。インストールで CSP.ini を確実にオーバーライドするには、Caché をインストールする前に IIS CSP 構成を削除します。

    以前のリリースでは、CSP ゲートウェイのインストール時、システムに Apache が存在する場合、自動的に Apache が構成されていました。今回のリリースでは、CSP ゲートウェイに対して Apache を手動で構成する必要があります。詳細は、"CSP ゲートウェイ構成ガイド" を参照してください。

  • Windows Management Instrumentation (WMI) のサポート終了

    今回のリリースでは、Windows Management Instrumentation (WMI) はサポートされません。したがって、iscprov.dll ライブラリはインストールされません。

  • インストールからの cdirectmgr ユーティリティの除外

    cdirectmgr ユーティリティの構築およびインストールは行われなくなっています。この Windows ユーティリティは、Windows COM/OLE または C++ クライアント・プログラムからのサーバ操作の直接制御を可能にしていました。これまで cdirectmgr ユーティリティを使用していた場合、キューブを使用して同じ機能を実行する必要があります。

  • 異常なシャットダウンに関する改訂された警告メッセージ

    Windows の異常なシャットダウンに続く起動時にコンソール・ログに書き込まれる警告メッセージが改訂されました。その警告メッセージでは、完全な Cache シャットダウンを行わずに Windows がシャットダウンされたときに、緊急 (高速) シャットダウン・プロシージャが実行されたことを報告します。 緊急 (高速) シャットダウン・プロシージャが実行された場合、次回起動時の新しいコンソール・ログ・メッセージは以下のようになります。

    06/18/12-03:30:40:421 (1856) 2 Previous system shutdown was abnormal, system forced down or crashed.Fast shutdown complete.

    緊急 (高速) シャットダウン・プロシージャが実行されなかった場合、次回起動時の通常のコンソール・ログ・メッセージは以下のようになります。

    06/18/12-03:30:40:421 (1856) 2 Previous system shutdown was abnormal, system forced down or crashed.

UNIX®

今回のリリースでは、インストーラは、CSP ゲートウェイのバイナリ更新時に常に Apache を再起動します。以前のリリースでは、インストーラは、Apache を再起動するかをユーザに確認していました。この変更は、インストール・プロセスを自動化し、クエリ・ダイアログを想定するようにコーディングされているスクリプトまたはプログラムにおける互換性の問題にすぎません。

Mac OS X
  • インストールにおけるディレクトリの変更

    今回のリリースでは、ccontrol および csession のリンクは、/usr/bin ではなく /usr/local/bin にあります。 /usr/bin のこれらのリンクへの明示的な参照がコードに含まれている場合、新しい場所を反映するようにコードを更新する必要があります。

  • OS X 10.11 での Caché eXTreme 機能の使用に関する制限

    Caché eXTreme の 2 つの機能、Java Globals API およびメモリ内 XEP (eXTreme Event Persistence) は、OS X 10.11 では使用できません。Caché eXTreme は、Java を使用して Caché 多次元データ・ストレージに外部アクセスを提供します。 OS X SIP (System Integrity Protection) 機能が無効にされていない限り、OS X 10.11 では Caché eXTreme Java Globals API もメモリ内 XEP も使用できません。

開発者

このセクションでは、以前のバージョンの Caché 上で実行されているアプリケーションの設計者、開発者、および保守担当者に関係する情報を示します。

ここでは、各項目について簡単に説明します。ほとんどの場合は、ドキュメントの別の箇所に詳しい説明があります。

ルーチン・コンパイラの変更

クラス・コンパイラによる長いクラス名の切り捨て処理

スタジオでは長さの上限を超えるクラス名を定義できないようになっていますが、非常に長い名前でコードを生成することは可能です。以前のリリースでは、これにより、クラスのコンパイル時に <NOROUTINE> エラーが発生する場合がありました。今回のリリースでは、クラス名は最大長に切り捨てられます。

クラスの増分コンパイル機能の削除

今回のリリースでは、/incremental コンパイラ・スイッチが削除されています。以前のリリースでは、このスイッチは、変更されたクラス・メソッドのみをコンパイルするよう Caché に指示していました。増分コンパイルによって短縮されるコンパイル時間はわずかであり、実際生成されるコードの効率性も低くなるため、この機能は削除されました。今回のリリースでは、/incremental スイッチを指定しても、コンパイラはそのスイッチを無視します。

コンパイラによる不正なクラス名の不許可

今回のリリースでは、クラス名に “||” (2 つの垂直バー) または “.” (ピリオド) のいずれかが含まれる場合、クラス・コンパイラはエラーを生成します。これらの記号はクラス名に含めることはできず、通常は実行中にエラーを発生させますが、これまではクラス・コンパイラによって許可されていました。

クラスの変更

クラスの削除

以前のバージョンに存在していた以下のクラスは、このリリースで削除されています。

  • %CSP.UI.Portal.iKnow — Configurations、Dictionary、Settings

  • %CSP.UI.Portal.iKnow.Dialog — AddDomainConfig、DeleteDomain、finderDialog

  • %DeepSee.DomainExpert — SQLUtils

  • %DeepSee.DomainExpert.queries — IK

  • %DeepSee.DomainExpert.utils — ConfigurationManager、CubeUtils、EntityUtils、HtmlUtils、IndexBuilder、LinkedLifeData、SentenceParser、SetUtils、UMLSUtils、Utils

  • %DeepSee.DomainExpert.utils.classgen — CubeGen

  • %DeepSee.DomainExpert.utils.umls — EntityMappingBuilder、EntityTableGenerator、LocalMappingBuilder

  • %DeepSee.DomainExpert.wizard.Dialog — newModel

  • %DeepSee.DomainExpert.wizards — HeaderKeyExplorer、ITablesLoadingWizard、TransformationEditor

  • %JSON — ContentHandler、Parser

  • %SYS — TaskSuper

  • %SYSTEM.Security — System

  • %UMLS — TFIDF

  • %UMLS.Install — CBuilder、Scripts

  • %UnitTest — DSQL、ESQL、ITablesRegression、JDBCSQL、ODBCSQL、Utility

  • %iFind — Comp、CompToWord、Stem、StemToWord

  • %iFind.Find — Abstract、Basic、Semantic

  • %iFind.Index — AbstractAttribute、AbstractAttributePos、AbstractDominance、AbstractEntBits、AbstractEntSpread、AbstractEntSpreadRec、AbstractEntity、AbstractPath、AbstractPathVal、AbstractProximity、AbstractWordPos

  • %iKnow.Objects.dd.ui — HistoryDialog、SearchHistory

  • %iKnow.UI — ITablesStatusView、ImportWizard、LoadingWizard、SetAnalysis、SwirlPortal

  • %iKnow.ont — Matcher、Matcher2、SQLStoredProc

  • SYS.Monitor — SystemSubscriber

削除されたメソッド

以前のバージョンに存在していた以下のメソッドは、今回のリリースで削除されています。

  • %CSP.Page

    • HyperEventBody

    • HyperEventFrame

  • %CSP.Request

    • Delete

    • DeleteCgiEnv

    • DeleteCookie

    • DeleteMimeData

    • InsertCgiEnv

    • InsertCookie

    • InsertMimeData

    • Set

  • %CSP.Stream

    • CharSetGet

    • CharSetSet

    • ContentTypeGet

    • ContentTypeSet

    • ExpiresGet

    • ExpiresSet

    • FileNameGet

    • FileNameSet

    • HeadersGet

    • HeadersSet

    • MimeSectionGet

    • MimeSectionSet

  • %CSP.UI.Portal.TaskHistory

    • doDetails

  • %CSP.UI.Portal.TaskSchedule

    • ExecuteRS

  • %DeepSee.UI.MDXPDF

    • Test

  • %iFind.Find.Basic

    • FindResultsLevel

    • FindResultsNodeFindResultsNode

    • FindResultsPattern

    • GetExtent

    • GetWordBitsBeg

    • GetWordBitsFin

    • GetWordBitsMid

    • ParseInput

    • ResolveCompCombArray

    • ResolveCompWords

    • ResolveCompoundToWords

    • ResolveCompoundToWordsAND

    • ResolveStemToWords

    • ResolveStemmedCombArray

    • ResolveStemmedWords

    • SearchBeg

    • SearchFin

    • SearchMid

    • SearchPos

    • SearchPosD

    • SearchPosInternal

    • SearchPosS

    • SearchWrd

    • SearchWrdD

    • SearchWrdS

    • WordBitsToRecIds

    • WordToRecIds

  • %iFind.Find.Semantic

    • BuildRecordIds

    • BuildRecordIdsAnd

    • CheckEntBeg

    • CheckEntFin

    • CheckEntGrp

    • CheckEntGrpD

    • CheckEntGrpEnt

    • CheckEntGrpEntD

    • CheckEntGrpEntS

    • CheckEntGrpS

    • CheckEntMid

    • CheckEntWrd

    • CheckEntWrdD

    • CheckEntWrdS

    • CheckGrp

    • CheckGrpD

    • CheckGrpEnt

    • CheckGrpEntD

    • CheckGrpEntS

    • CheckGrpS

    • FindResultsLevel

    • GetEntsByWordPos

    • ParseInput

  • %iFind.Index.Basic

    • GetIndexParams

  • %iKnow.UI.IndexingResults

    • UpdateSentences

    • updateSentencesClient

削除されたプロパティ

以前のバージョンに存在していた以下のプロパティは、今回のリリースで削除されています。

  • %CSP.UI.Portal.Locks

    • isVMS

  • %CSP.UI.Portal.LocksView

    • isVMS

  • %Exception.CPPException

    • iStack

  • %iKnow.UI.IndexingResults

    • sentFrom

    • sentTo

削除されたパラメータ

以前のバージョンに存在していた以下のパラメータは、このリリースで削除されています。

  • %Library.CacheLiteral

    • SELECTIVITY

  • %SQL.Manager.ShowPlan

    • RESOURCE

  • %UnitTest.SQLRegression

    • CORRELATIONLIST

    • DATACLASS

    • DATAFILE

    • DATATAG

また、プロパティ・パラメータ SELECTIVITY は非推奨になり、スタジオやドキュメントに表示されなくなりました。このパラメータが存在する場合、その効果は以前のリリースと同じになります。このプロパティ・パラメータは、既存のコードから削除することをお勧めします。

削除されたインデックス

以前のバージョンに存在していた以下のインデックスは、このリリースで削除されています。

  • %iFind.Comp

    • ValueIdx

  • %iFind.Stem

    • ValueIdx

変更されたメソッド

今回のバージョンの Caché では、以下のメソッドのシグニチャが変更されました。

  • %CSP.UI.Portal.Mirror.Monitor

    • 古いメソッド : DrawFailoverInfo () As %Status

    • 新しいメソッド : DrawFailoverInfo (RefreshCompress) As %Status

    • 古いメソッド : updateView () As (none)

    • 新しいメソッド : updateView (InTimer, NoCompress) As (none)

  • %CSP.UI.Portal.Namespaces

    • 古いメソッド : filterChanged (value) As (none)

    • 新しいメソッド : filterChanged (value, tableID) As (none)

  • %CSP.UI.Portal.TaskSchedule

    • 古いメソッド : filterChanged (value) As (none)

    • 新しいメソッド : filterChanged (value, tableID) As (none)

  • %Debugger.System

    • 古いメソッド : DebugStub () As (none)

    • 新しいメソッド : DebugStub (pWriteOutput) As (none)

  • %DeepSee.Component.Widget.pivot

    • 古いメソッド : exportPDF () As (none)

    • 新しいメソッド : exportPDF (printMultiple, preserveTempFiles) As (none)

  • %DeepSee.ResultSet

    • 古いメソッド : %GetFiltersForCellRange (*pFilters:%String, pStartRow:%Integer, pStartCol:%Integer, pEndRow:%Integer, pEndCol:%Integer, *pMeasure:%String, pAllRows:%Boolean=0, pAllCols:%Boolean=0, pSortCol:%Integer=0, pSortDir:%String="ASC") As %Status

    • 新しいメソッド : %GetFiltersForCellRange (*pFilters:%String, pStartRow:%Integer, pStartCol:%Integer, pEndRow:%Integer, pEndCol:%Integer, *pMeasure:%String, pAllRows:%Boolean=0, pAllCols:%Boolean=0, pSortCol:%Integer=0, pSortDir:%String="ASC", &pPluginInfo:%String) As %Status

  • %DeepSee.UI.Analyzer

    • 古いメソッド : adjustSizes () As (none)

    • 新しいメソッド : adjustSizes (load) As (none)

  • %DeepSee.UserPortal.DashboardViewer

    • 古いメソッド : ClearDashboardAutosaveState (pAutosaveItems:%ZEN.proxyObject) As %Status

    • 新しいメソッド : ClearDashboardAutosaveState (pAutosaveItems:%ZEN.proxyObject, pDashboardName:%String, pAutosave:%String) As %Status

  • %DeepSee.Utils

    • 古いメソッド : %CompressIndices (pCubeName:%String, pVerbose:%Boolean=0) As (none)

    • 新しいメソッド : %CompressIndices (pCubeName:%String, pVerbose:%Boolean=0) As %Status

  • %Library.Persistent

    • 古いメソッド : %BuildIndices (pIndexList:%CacheString="", pAutoPurge:%Integer=0, pLockFlag:%Integer=0, pJournalFlag:%Integer=0, pStartID:%CacheString="", pEndID:%CacheString="") As %Status

    • 新しいメソッド : %BuildIndices (pIndexList:%CacheString="", pAutoPurge:%Integer=1, pLockFlag:%Integer=0, pJournalFlag:%Integer=1, pStartID:%CacheString="", pEndID:%CacheString="") As %Status

    • 古いメソッド : %DeleteExtent (concurrency:%Integer=-1, &deletecount, &instancecount, pInitializeExtent:%Integer=1) As %Status

    • 新しいメソッド : %DeleteExtent (concurrency:%Integer=-1, &deletecount, &instancecount, pInitializeExtent:%Integer=1, *errorLog:%Status) As %Status

  • %Library.RoutineMgr

    • 古いメソッド : TS (name:%String, &compiletime:%TimeStamp) As %TimeStamp

    • 新しいメソッド : TS (name:%String, *compiletime:%TimeStamp, *uptodate:%Boolean) As %TimeStamp

    • 古いメソッド : GetCurrentTimeStamp (&compiletime:%TimeStamp) As %TimeStamp

    • 新しいメソッド : GetCurrentTimeStamp (&compiletime:%TimeStamp, &uptodate:%Boolean) As %TimeStamp

  • %SYSTEM.DeepSee

    • 古いメソッド : SynchronizeCube (pCubeName:%String, pVerbose:%Boolean=0) As %Status

    • 新しいメソッド : SynchronizeCube (pCubeName:%String, pVerbose:%Boolean=0, *pFactsUpdated:%Integer, pReadCommitted:%Boolean=1, pCheckReferences:%Boolean=1, pAsync:%Boolean=0) As %Status

  • %SYSTEM.OBJ

    • 古いメソッド : CompileList (&list:%String="", qspec:%String="", &errorlog:%String) As %Status

    • 新しいメソッド : CompileList (&list:%String="", qspec:%String="", &errorlog:%String, &updatedlist:%String) As %Status

  • %SYSTEM.iKnow

    • 古いメソッド : GetDomainId (pDomainName:%String) As %Integer

    • 新しいメソッド : GetDomainId (pDomainName:%String="") As %Integer

  • %Stream.Object

    • 古いメソッド : FindAt (position:%Integer, target:%CacheString, &tmpstr:%CacheString, caseinsensitive:%Boolean=0) As %Integer

    • 新しいメソッド : FindAt (position:%Integer, target:%CacheString, &tmpstr:%CacheString="", caseinsensitive:%Boolean=0) As %Integer

  • %Studio.Project

    • 古いメソッド : realCompile (qstruct, &%errorlog:%String, &itemlist:%String) As %Status

    • 新しいメソッド : realCompile (qstruct, &%errorlog:%String, &itemlist:%String, &updatedlist:%String) As %Status

  • %XML.Node

    • 古いメソッド : FirstAttributeName () As (none)

    • 新しいメソッド : FirstAttributeName () As %String

    • 古いメソッド : LastAttributeName () As (none)

    • 新しいメソッド : LastAttributeName () As %String

    • 古いメソッド : NextAttributeName (attributeName:%String) As (none)

    • 新しいメソッド : NextAttributeName (attributeName:%String) As %String

    • 古いメソッド : PreviousAttributeName (attributeName:%String) As (none)

    • 新しいメソッド : PreviousAttributeName (attributeName:%String) As %String

  • %XML.Writer

    • 古いメソッド : Document (document:%XML.Document) As %Status

    • 新しいメソッド : Document (documentArg:%XML.Document) As %Status

    • 古いメソッド : Object (object:%XML.Adaptor, tag:%String, namespace:%String, local:%Boolean, className:%String, bare:%Boolean) As %Status

    • 新しいメソッド : Object (objectArg:%XML.Adaptor, tag:%String, namespace:%String, local:%Boolean, className:%String, bare:%Boolean) As %Status

  • %ZEN.Mojo.Wizard.MojoWizard

    • 古いメソッド : CreateZenMojoTemplate (tempName:%String, pkgName:%String, application:%String, domain:%String, pPageManager:%String) As %Status

    • 新しいメソッド : CreateZenMojoTemplate (tempName:%String, pkgName:%String, application:%String, domain:%String, pageName:%String, pPageManager:%String) As %Status

  • %ZEN.Report.Display.report

    • 古いメソッド : %DrawToHTML (&context:%String, &XSL:%GlobalCharacterStream, delay:%GlobalCharacterStream, &incell:%Boolean, embedXSL:%Boolean=0, UseInternalXSLT:%Boolean=0, SubReport:%String, MainReport:%String) As %Status

    • 新しいメソッド : %DrawToHTML (&context:%String, &XSL:%GlobalCharacterStream, delay:%GlobalCharacterStream, &incell:%Boolean, embedXSL:%Boolean=0, UseInternalXSLT:%Boolean=0, SubReport:%String, MainReport:%String, pXSLTMode) As %Status

  • %iFind.Utils

    • 古いメソッド : TestSearchString (pSearchString:%String, *pNormalizedString:%String) As %Status

    • 新しいメソッド : TestSearchString (pSearchString:%String, *pNormalizedString:%String, *pDidYouMean:%String) As %Status

  • %iKnow.Tables.Utils

    • 古いメソッド : SyncCustomizations (pDomainId:%Integer="", pPackageName:%String="", pAutoPurge:%Boolean=0, pStartSrcId:%Integer="", pEndSrcId:%Integer="", &pRanges) As %Status

    • 新しいメソッド : SyncCustomizations (pDomainId:%Integer="", pPackageName:%String="", pAutoPurge:%Boolean=1, pStartSrcId:%Integer="", pEndSrcId:%Integer="", &pRanges) As %Status

    • 古いメソッド : SyncDictionaryMatchCustomizations (pDomainId:%Integer="", pPackageName:%String="", pAutoPurge:%Boolean=0, pStartSrcId:%Integer="", pEndSrcId:%Integer="", pFilter:%iKnow.Filters.Filter="") As %Status

    • 新しいメソッド : SyncDictionaryMatchCustomizations (pDomainId:%Integer="", pPackageName:%String="", pAutoPurge:%Boolean=1, pStartSrcId:%Integer="", pEndSrcId:%Integer="", pFilter:%iKnow.Filters.Filter="") As %Status

  • Ens.MessageHeader

    • 古いメソッド : NewRequestMessage (&pHeader:Ens.MessageHeader, pMessageBody:%Library.Persistent, &pSessionId:%String) As %Status

    • 新しいメソッド : NewRequestMessage (&pHeader:Ens.MessageHeader, pMessageBody:%Library.Persistent, &pSessionId:%String, &pSuperSession:%String) As %Status

  • Ens.VDoc.SearchTable

    • 古いメソッド : genGetCodeList (tGetExpression:%String) As %String

    • 新しいメソッド : genGetCodeList (tGetExpression:%String, tPreExpression:%String, tPostExpression:%String) As %String

  • Ens.VDoc.XMLSearchTable

    • 古いメソッド : genGetCodeList (tGetExpression:%String) As %String

    • 新しいメソッド : genGetCodeList (tGetExpression:%String, tPreExpr:%String, tPostExpr:%String) As %String

クラス・コンパイラの変更

今回のバージョンの Caché では、以前のリリースと同様、引き続きクラス・コンパイラの向上を図っていきます。このセクションでは、アプリケーション変更を必要とする可能性のある変更について詳述します。

言語バインディングの変更

この領域における互換性の問題はありません。

SQL の変更

INSERT、UPDATE、および DELETE クエリで使用できない UNION の %PARALLEL

以前のリリースでは、非 UNION の INSERT、UPDATE、および DELETE クエリでは %PARALLEL を使用できませんでしたが、UNION の INSERT、UPDATE、または DELETE クエリで %PARALLEL を使用した場合はエラーになりませんでした。これらのクエリでは %PARALLEL が確実には機能していませんでした。今回のリリースでは、UNION と非 UNION の両方の INSERT、UPDATE、および DELETE クエリで %PARALLEL を使用できなくなっています。以前のリリースでこの構文を使用した場合、エラー・メッセージは出ませんでしたが、高い確率で問題が発生していました。INSERT、UPDATE、または DELETE クエリに存在する %PARALLEL オプションは、すべて削除する必要があります。

Floor 関数の修正による返り値の変更

以前のバージョンでは、返り値の型が、整数値を持つ $list 型 6 およびゼロのスケールを持つ SQLType Numeric (2) である場合、ODBC Floor() 関数は値を正しく切り捨てていませんでした。例えば、関数が、末尾に誤った小数点の付いた “1234.” を返す場合がありました。今回のリリースでは、Floor() 関数が数値を正しく切り捨て、小数点のない “1234” を返すようになっています。この誤った結果を想定し、これを補正するアプリケーションのコーディングを行っている場合は、その修正コードを削除する必要があります。このエラーは、SQLType Numeric (2) およびゼロのスケールでのみ発生します。その他の型やゼロ以外のスケールでは発生しません。

照合式のエラーの検査

今回のリリースでは、Caché は照合式を調べて、エラーを確認します。前のリリースでは、Caché はこれらのエラーを無視していました。多くの場合、照合式のエラーは SQL の使用時にエラーを生じていました。しかし、照合式エラーの中には、SQL エラーを生じなかったものもある可能性があります。その場合、前のリリースで正常に実行されているように思えたコードに、今回のリリースではエラーが発生します。

長さゼロの文字列を正しく処理する集約関数

長さゼロの文字列を正しく処理する集約関数 - 今回のリリースでは、XMLAGG() および LIST() 集約関数は長さ 0 の文字列を正しく処理します。前のリリースでの長さ 0 の文字列の不適切な処理方法に依存するコードがある場合は、修正する必要があります。

先行読み取りをサポートするために JDBC データ・モデルに行われた重要な内部変更

このリリースには、SQL JDBC データ・モデルに対するパフォーマンスの向上が多数含まれています。これらの変更により何らかの非互換性が生じるかどうかは不明ですが、実装の詳細の変更が特殊な状況での動作に影響を与える可能性は考えられます。そのため、この機能を実行するコードをテストすることをお勧めします。

ロケールおよび入出力変換テーブルの変更

XML および ODBC の時刻を変換する関数のロケールの変更

以前のリリースでは、XML および ODBC の時刻形式を変換する %Library.TimeOpens in a new tab メソッドは現在のロケールを使用していました。これにより、小数点区切り文字が "." (ピリオド文字) でないロケールにおいて問題が生じていました。XML および ODBC では、常にこの区切り文字にピリオド文字が使用されるためです。今回のリリースでは、これらの関数が常に小数点区切り文字にピリオドを使用するようになっています。XML または ODBC メッセージの設定または評価を行う目的でこれらのメソッドを呼び出す場合は問題ありません。しかし、コードでこれらのメソッドを他のコンテキストにおいて使用し、現在のロケールの小数点区切り文字を想定している場合、コードを修正する必要があります。変更された %Library.TimeOpens in a new tab メソッドは、LogicalToXSD(),XSDToLogical()LogicalToOdbc()、および OdbcToLogical() です。

以前のリリースでは、%Library.TimeOpens in a new tab メソッドの小数秒の切り捨てに一貫性がありませんでした。今回のリリースでは、既定でこれらのメソッドは常に小数秒を保持します。また、保持する小数点以下の桁数を制御する新しい PRECISION パラメータが用意されています。PRECISION が 0 の場合、時刻値は最も近い秒数に丸められます。

iKnow の変更

ソフトウェア・ライセンスが必要となる iFind インデックスのコンパイル

iFind を使用する場合、常に有効な iKnow ライセンスが必要でした。今回のリリース以降、iFind インデックスを持つクラスのコンパイル時、インスタンスの iKnow 有効化ライセンスが存在するかどうかを Caché で確認するようになります。iKnow を使用するための適切なライセンスが付与されていない場合はエラーがスローされます。iFind インデックスを持つクラスのリコンパイルはさらなる最適化を実現するため通常は推奨されますが、2015.3 へのアップグレード後は必須ではありません。

リコンパイルおよび再構築が必要となる特定の iFind インデックス

語幹解析または複合語分解を使用する iFind インデックス (INDEXOPTION != 0) には、変更されたコンパイル済みのフォームが含まれています。したがって、今回のリリースへのアップグレード後、語幹解析または複合語分解を使用する既存のインデックスをすべてリコンパイルし、再構築する必要があります。

語幹および複合語について特定のマッピングを使用する代わりに、新しい %iFind.OriginalWord および %iFind.WordTransformation テーブルを使用することをお勧めします。特定のマッピングを使用するとサポートされる機能は保持されますが、これらの新しいテーブルの使用をお勧めします。

CSP の変更

この領域における互換性の問題はありません。

SMTP、XML、Web サービス、SOAP、および REST の変更

JSON からオブジェクトへの変換のエラー処理の変更

以前のリリースでは、$fromJSON() 関数は通知なしで失敗し、有効なオブジェクトを返しませんでした。今回のリリースでは、この関数は、エラーの状況になるとエラーを返します。TRY-CATCH ブロックに $fromJSON() の呼び出しを含めることで、このエラーがアプリケーションを妨げないようにする必要があります。

例えば、$fromJSON() 関数が有効なオブジェクトを返したことを確認する以下のコードが存在する場合、

  set obj = ##class(%AbstractObject).$fromJSON(source [,.stats]) 
  if ('$isobject(obj)) { 
    w "Compilation error occurred",! q 
  } 

次のような TRY-CATCH ブロックに置換する必要があります。

  try { 
    set obj = ##class(%AbstractObject).$fromJSON("[1,2,WE WILL FAIL HERE") 
  } catch ex { 
    w "JSON Parsing error",! 
    w "Name = "_ex.Name,! 
    w "Code = "_ex.Code,! 
    w "Location = "_ex.Location,! 
  } 

SMTP パスワード入力における動作の変更

以前のリリースでは、Caché による SMTP パスワードのクエリは 1 回しか行われませんでした。今回のリリースでは、Caché によるパスワードのクエリは 2 回行われ、各プロンプトに同一のパスワードが入力されていることが確認されます。この変更により、Caché がパスワードに NULL 文字列を使用しようとする状況が発生しなくなっています。

パスワード・プロンプトに応答するスクリプトを作成している場合、2 回目のパスワード要求に対応するようにスクリプトを修正する必要があります。

DeepSee の変更

暗号化されずに提供される MDX コンテキスト

一部のロケールにおける問題を修正するために、今回のリリースでは、MDX コンテキストが維持されず、暗号化されません。%OnDashboardAction で MDX コンテキスト (pContext.mdx) を参照するカスタム・アクション・コードを使用している場合、コードを修正してリコンパイルする必要があります。例えば、MDX コンテキストを復号化する以下のコードが存在する場合、

Set tMDX = $$$cspDecode(%session.Key,pContext.mdx) 

復号化することなく MDX コンテキストを直接参照する以下のコードに置換する必要があります。

Set tMDX = pContext.mdx

この変更を行わないと、cspDecode の呼び出しでエラーが発生します。

数値名の付いたメンバに対する新しいオプション

ソース式に基づいたレベルがキューブに含まれていて、そのレベルに数値名の付いたメンバがあると、極めて特殊なシナリオで、誤った結果を受け取ることがあります。

問題になるシナリオでは、クエリで MDX 範囲式 (例えば、([UnitsPerTransaction].[H1].[UnitsSold].&[7]:&[10])など) を使用していて、さらに、エンド・ポイント・メンバの 1 つが存在していません。このようなシナリオの場合、DeepSee は異なるエンド・ポイント・メンバを選択しようとします。レベルがソース式に基づいている場合、DeepSee は正しく置換メンバを選択するために必要な情報を得られないため、誤ったメンバを選択してしまうことがあります。このシナリオでは、数値として扱う必要のあるメンバを DeepSee に指示するために、追加情報を指定する必要があります。

すべてのキューブのレベル定義を確認して、以下のようにすることをお勧めします。

  1. レベルがソース・プロパティに基づいている場合、変更は不要です。

  2. レベルでメンバに純粋な数値名が付いている場合、スタジオでキューブを修正して、レベル定義に castAsNumeric="true" を追加します。

    このオプションは、[ソート] オプションとは異なります。[ソート] オプションは、DeepSee が新しいエンド・ポイント・メンバを検索する方法に影響を与えません。

  3. キューブ・クラスをリコンパイルします。

    キューブを再構築する必要はありません。

  4. 以前に問題のあるシナリオが発生していて、問題のあるクエリに関する結果がキャッシュされている場合は、その結果キャッシュをリセットします。

    結果キャッシュをクリアするには、%DeepSee.UtilsOpens in a new tab%Reset() メソッドを使用します。このメソッドは、すべてのユーザに対して直ちに影響を及ぼすことにも注意してください。一般に、このメソッドは開発時にのみ使用することを目的としています。また、現在のネームスペースにのみ影響することに注意してください。

暗号化されなくなった pContext.mdx

以前のリリースでは、%OnDashboardAction() メソッド内で、基礎になる MDX クエリは暗号化された形式で指定されていました。特に、データ・ソースがピボット・テーブルの場合には、MDX クエリが pContext.mdx に含まれています。以前のリリースでは、クエリを復号化するために、以下のようなコードを使用する必要がありました。

 set myvariable = $$$cspDecode(%session.Key,pContext.mdx)

これからは、以下のようなコードを代用できます。

 set myvariable = pContext.mdx
クロス結合が存在するピボット・テーブルに基づくスコアカードを修正する必要がある可能性

今回のリリースでは、クロス結合が存在するピボット・テーブルに基づくスコアカード・ウィジェットにおける問題が修正されています。以下の条件をすべて満たすスコアカード・ウィジェットが存在する場合、ウィジェットを編集して、スコアカードのプロパティを再選択する必要があります。その条件は以下のとおりです。

  • スコアカード・ウィジェットである。

  • スコアカードのデータ・ソースがピボット・テーブルである。

  • ピボット・テーブルの列には 1 つのレベル、行には 1 つのメジャーが含まれている。

これらの条件がすべて当てはまる場合にのみスコアカードを編集する必要があります。複数のメジャーが存在するスコアカードや KPI に基づくスコアカードを編集する必要はありません。

メジャーが 1 つしか存在しないピボット・テーブルのラベル

以前のリリースでは、メジャーが 1 つしか存在しない場合、ピボット・テーブルのメジャーのヘッダの表示方法に一貫性がありませんでした。単一の計算済みメジャーについては常にメジャーのヘッダが表示されていましたが、単一の未計算メジャーについてはメジャーのヘッダが表示されていませんでした。 現在は、ピボット・テーブルのメジャーのヘッダの表示方法は一貫しています。 既定では、複数の (計算済みまたは未計算) メジャーが存在する場合にメジャーのヘッダが表示されます。これは、[メジャー] オプションを使用して変更できます。

計算済みメジャーが 1 つしか存在しないピボット・テーブルがあり、これについてもメジャーのヘッダを表示したい場合、[メジャー] オプションを使用して、[メジャーのヘッダの表示] を [常に] に変更します。

Zen の変更

長いラベルおよびタイトルの処理の改善により出力が変わる可能性

今回のリリースでは、Zen による長いラベルおよびタイトルの処理方法が改善されており、これらの間で重なり合うことがなくなっています。ラベルが占めるスペースがグラフ自体よりも大きい場合、Zen では y 軸のタイトルのみを使用してグラフが表示され、ラベルは非表示になります。このラベルおよびタイトルの処理の改善により、グラフの表示のされ方が変わる場合があります。

レポートには Body 要素が必要になる

今回のリリースでは、Zen レポート・コンパイラは、レポートに body 要素が含まれていることを求めます。この点で、多くの場合、エラーは修正を必要とするレポートを指すため、役立ちます。まれに、有効なレポートが body 要素を必要としないことがあります。このようなレポートは正常にコンパイルされません。したがって、これらのレポートに body 要素を追加する必要があります。

Zen Mojo の変更

この領域における互換性の問題はありません。

システムおよびユーティリティの変更

変更を必要とする TZ を設定するカスタム・コールアウト・ライブラリ関数

時間関数を再入可能にし、セキュリティで保護するために、特定の環境では、TZ 環境変数を設定するコードを変更する必要があります。 Linux または Windows で実行している場合、カスタム・コールアウト・ライブラリ関数で TZ 環境変数を設定した後で、tzset() への呼び出しを追加する必要があります。tzset() への呼び出しにより、内部変数 tzname、timezone、および daylight の更新が行われます。

コードがログ形式に依存する場合、整合性チェックからの出力の変更により、問題が生じる可能性がある

整合性チェックの改善により、ログ出力に変更が生じました。ログ・メッセージの正確なテキストに依存するコードがある場合、改訂する必要があります。

Lock コマンドは Unlock ("D" モード) の変更を延期する

前のリリースでは、"D" モードのアンロックの動作は、同じロック・ノードに入れ子になったロックがある場合に適切に定義されていませんでした。 この問題が改善され、前のアンロックが "D" モードでアンロックされている「外側の」ロックの内部に入れ子になっていたとしても、"D" モードのアンロックは前のアンロックの状態を考慮します。

ユニット・テストの変更

新しい $$$AssertFailure マクロ

今回のリリースでは、新しい $$$AssertFailure マクロは、無条件にテストに失敗し、指定されたメッセージを記録します。/debug 修飾子が指定されている場合、その時点においてデバッガでテストが中断します。他のアサーションの規則に従い、失敗を示す 0 が返されます。 このマクロは、テストにおいて例外が想定されている後、TRY ブロックなどで偽をアサートする規則を置き換えることを目的としています。

これは、UnitTest クラスのサブクラスを作成しており、新しいマクロがベース・クラスに対する拡張と競合する場合の互換性の問題にすぎません。

FeedbackOpens in a new tab