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é 2007.1

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

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

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

コールイン/コールアウトの機能強化

このプロジェクトでは、以下のコールイン/コールアウト機能が強化されています。

  • アプリケーションは、実行可能プログラムではなく、DLL/共有ライブラリとして Caché を呼び出せるようになります。これにより、スタティック・リンクが不要になります。この機能強化は、OpenVMS 以外のすべてのプラットフォームで利用できます。

  • 一部のプラットフォームでコールインをマルチスレッド化できるようになります。これにより、マルチスレッド化されたアプリケーションで Caché を呼び出せるようになります。このとき、それぞれのスレッドは単一の Caché プロセスの中で同時に、しかし独立して効果的に実行されます。現在、この機能は、Windows (32 ビット/64 ビット Intel Extended Memory、64 ビット AMD、Itanium を除く)、Linux (32 ビット/64 ビット Intel Extended Memory、64 ビット AMD、Itanium を除く)、Solaris (64 ビット SPARC、64 ビット AMD) の各プラットフォームで使用できます。将来的には、その他のプラットフォームも追加される予定です。

  • その他のプラットフォームすべてについて、Caché はスレッド・セーフになっています。マルチスレッド・アプリケーションでは、必要な同期が Caché で自動的に実現するので、安全に Cach を呼び出すことができます。1 つのアプリケーション・スレッドが Caché プロセスで実行されている間、他のスレッドは、別の (Caché 以外の) アプリケーション・コードを実行していても、Caché での実行はブロックされます。

新規のエラー処理構文

このプロジェクトでは、Java、C++、および VB で使用されているものとよく似た新しい Caché エラー処理構文が追加されます。この構文では 3 つのコマンドを使用します。エラー・ハンドラの範囲を特定する TRY、エラー発生時に実行するコードを指定する CATCH、エラーを明示的に通知する THROW です。

Note:

他の言語の実装に精通しているユーザ様へ : FINALLY はサポートされていません。

長い文字列のサポート

このプロジェクトでは、ローカル文字列およびグローバル文字列の長さの上限は、360 万文字まで拡張されています。長い文字列のストレージは、8KB ブロックを使用しているデータベースでのみサポートされます。

長い文字列のサポートを有効化するには、管理ポータルの ホーム, 構成, 詳細設定 を使用します。カテゴリは [その他] で、設定名は [Long String有効] です。

このサポートは、関数 $ZUTIL(69, 69) を使用して設定することもできます。

セキュリティの機能強化

  • LDAP ユーザ管理 — LDAP を使用して、Caché の外部でユーザ認証やロールを管理できるようになります。

  • 代行認証 — サイト固有の Caché コードを使用したユーザ認証が可能になります。

  • 行レベル・セキュリティ — Caché に拡張 SQL 行レベル・セキュリティ機能が追加されます。基本的に、テーブルの 1 列には、各行のロールのリストが含まれます。クエリを実行するときに、行の内容を確認するためには、その行のロールが少なくとも 1 つ必要です。通常、ロールのリストはテーブル内の他のデータに基づいて計算されます。行が挿入または更新されると必ず、この計算を実行するためのメソッドが自動的に呼び出されます。このセキュリティ列にインデックスを付けることにより、パフォーマンスへの影響を最小限に抑えながら、行ベースのセキュリティを実現できます。

  • ジャーナルの監査 — システム全体およびプロセス固有の両方について、ジャーナリング状態の変更は監査ログに記録されるようになります。

JDBC を経由した SQL ゲートウェイ

以前のリリースでは、Caché SQL ゲートウェイは、Caché プラットフォームそれぞれについて、“外部”データベースごとに ODBC ドライバを必要としていました。SQL ゲートウェイでサポートされているデータベースすべてについて優良な ODBC ドライバが用意されている Windows ではこれは問題ではありませんが、その他のプラットフォーム、特に UNIX® では、これは引き続き問題になっています。

この問題に対処するため、今回のリリースから、ゲートウェイへの接続に ODBC ではなく JDBC を使用します。このゲートウェイでサポートされているデータベースはすべてプラットフォームに依存しない JDBC ドライバを持っているので、ゲートウェイやゲートウェイをベースにしたアプリケーションのテストや配置が大幅に軽減されます。

Note:

SQL ゲートウェイは、OpenVMS 以外の Caché プラットフォームすべてでサポートされています。Caché 2007.1 では、ODBC ベースのゲートウェイ (対応プラットフォームは 5.2 と同じ) と JDBC ベースのゲートウェイの両方がサポートされます。それ以降のリリースでは、Windows 以外のすべてのプラットフォームについて、JDBC ベースのゲートウェイのみがサポートされます。Windows システムでは、ODBC ベースのゲートウェイと JDBC ベースのゲートウェイの両方とも引き続きサポートされます。

Objective-C バインディング

Mac システムで、Objective-C 言語へのオブジェクト・バインディングが可能になりました。

C++ バインディングに対応した新しい配布メカニズム

このリリースでは、特定の C++ コンパイラやライブラリへの依存度を低くするために、C++ バインディングのパッケージ方法および配布方法が変更されます。

Zen

Zen は、Web アプリケーションを短期間で開発するための拡張可能なフレームワークです。ページの定義には、豊富なコンポーネント・セットを使用した、高レベルの XML ベースの定義を使用します。Zen には高機能で使いやすいセキュリティ・モデル、多言語アプリケーション向けの組み込みサポート、サーバ側およびクライアント側でのイベント処理などの機能があり、高い拡張性を備えています。

SQL の機能強化

  • 集約機能の最適化 — このリリースでは、複数の集約機能や、集約機能と GROUP BY の組み合わせを使用した SQL クエリの機能が強化されています。

  • SQL 一時テーブル — このリリースから、SQL の一時テーブルがサポートされます。

  • 外部結合 — 「より大きい」や %startswith など非等値条件に基づいて左外部結合が可能になります。

  • テキスト検索 — テキスト検索の機能強化には、%CONTAINSTERM の処理、%SIMILARITY の処理におけるインデックスの使用、類義語機能での複数用語の置換などがあります。

T-SQL のサポート強化

このリリースには、T-SQL サポートの機能強化が含まれます。この機能強化により、コンパイルおよび実行時のパフォーマンス向上、文レベルでのトリガのサポート、Sybase 互換システム・テーブルの利用、エラー処理の効率化、T-SQL 構文の追加サポートなどが可能になります。

ルーチン・パフォーマンスの機能強化

COS のルーチン管理機能は、2007.1 で変更され、拡張されています。 その結果、Caché でのルーチン管理機能ははるかに効率的なものになっています。 このリリースでは、新しいルーチンの呼び出しで発生するオーバーヘッドの量が、最大でも以前より少なくなっています。 また、以前のリリースでは、多数の CPU を備えたシステムの場合に、ルーチン・バッファの数が原因で競合が発生することがありましたが、このリリースでは大幅に改善されています。

最近使用されたルーチンを識別する、プロセス単位の新しいキャッシュが追加されたことも変更点の 1 つです。 このキャッシュによって、プロセスで頻繁に使用されているルーチンを特定するプロセスの実行が高速化されました。 さらに、このキャッシュを採用することで、システムによるルーチン・バッファの管理方法が変更されています。

以前のリリースでは、実際に実行されているルーチン・バッファのみが変更に対して保護されていました。 つまり、他のバッファは変更できるようになっていました。 その結果、コール・スタックにある実行前ルーチンをリコンパイルなどで変更することができました。 この問題を理解するために、実行中のルーチン A からルーチン B を呼び出した状況を考えます。B の実行が始まると、A は変更できるようになります。 B の実行中に A をリコンパイルすると、A を保持していたバッファは破棄され、開放されます。 Bが A に戻ろうとすると、A が存在しない状況が Caché で認識され、<EDITED> エラーが報告されます。

プロセス単位のキャッシュを設けることで、このような <EDITED> エラーは発生しなくなります。 これは、あらゆるプロセスのコール・スタックにあるすべてのルーチンが、現在のバージョンのままロックされるからです。 したがって、関連のあるバッファが破棄されることがありません。 B は、その呼び出し元である正しいバージョンの A に必ず戻ります。

さらに詳しく見るために、B から A に戻った後、A を実行中に B をリコンパイルした場合を考えます。 この後、A から B を呼び出すと、リコンパイルされた B が実行されます。同様に、B の実行中に A をリコンパイルした後、B から A を呼び出すと、A の新しいバージョンが実行されます。 新しいバージョンの A から B に戻り、続いて B が戻ろうとすると、その戻り先はルーチン・バッファに保持されている旧バージョンの A となります。

プロセス単位キャッシュの初期サイズ (ルーチン・ベクトル) は、システムの起動時に設定されます。 既定値は 256 ですが、 この値は関数 $ZU(96,29,<value>) を使用して変更できます。 $ZU(96,31) を使用すると、使用していないすべてのルーチンをキャッシュから消去できます。 ルーチンはネームスペースごとにキャッシュされるので、ネームスペースを変更するとキャッシュは消去されます。 また、$zu(39,...) を使用してルーチンの検索パスを変更した場合もキャッシュが消去されます。

プロセス単位キャッシュを使用すると、システムのルーチン・バッファはそれが使用されなくなるまで保持されるので、大規模なプロセスでは、利用できるバッファをすべて使い切ってしまう可能性があります。 このような状況が発生すると、プロセス単位のキャッシュそれぞれのサイズが適切なサイズに縮小され、空いた領域が未使用バッファとして解放されます。 このサイズ縮小は、処理を継続するうえで十分な量のバッファが得られるまで繰り返し実行されます。

次のコマンドを考えます。

cstat -s<MgrDirectory> -R2048 

<MgrDirectory> は Caché マネージャ・ディレクトリのパス名です。このコマンドを実行すると、“rbuf#” 列でジョブを実行するために使用されているルーチン・バッファの使用率が表示されます。ほとんどのジョブで使用されているルーチンの数が 30 を超えている場合、管理者は、同時に実行されることが予想されるジョブの数に 512 バイトをかけた容量だけ共有ヒープ・サイズを増やす必要があります。

Note:

既定では、プロセスごとに最大 256 ルーチンがキャッシュされます。使用可能なバッファ領域が少なくなってくると、プロセスごとにキャッシュ可能なルーチンの数が 1/4 秒ごとに 10% ずつ減らされていきます。プロセスごとにキャッシュ可能なルーチンの数が、元々構成されている数の 30% になると、効率的な実行が期待できない状況であることを示すメッセージが Caché からコンソールにログ記録されます。

この数が元の設定数の 20% になると、Caché からは警告がログに記録され、さらに 10% に低下すると、システムが停止する可能性がある “深刻な” 状況であることを示すメッセージがログに記録されます。

ルーチン・バッファを使い切り、そのどれも解放できなくなるとシステムは停止します。

Caution:

停止したプロセスによってキャッシュに保持されているルーチンは、その停止したプロセスが削除されるか、システムがシャット・ダウンするまで、保持しているバッファを使用中として維持しています。

ジャーナルの機能強化

このリリースでは、ジャーナルへの同期書き込みのパフォーマンスや信頼性について、内部的な機能強化が多数行われました。さらに、システム管理機能も強化され、限られた期間、ジャーナル・ファイルをシャドウ・システムで保持できるようになりました。

Light C++ バインディング

Light C++ バインディングは、“プロセスの中で” 動作する高性能オブジェクト・バインディングです。つまり、クライアント・アプリケーションは Caché と同じプロセスで実行されます。このバインディングにより、オブジェクトはデータベースからクライアントに直接取得されます。Caché 内のメモリにオブジェクトを開いたまま維持する必要はありません。Light C++ バインディングは、マルチスレッド化されたコールインと同じプラットフォームで使用できます。

OpenVMS での CSP ゲートウェイ

このリリースでは、Apache Web サーバを実行している OpenVMS システム (Alpha および Itanium) 上の CSP ゲートウェイに対するサポートが追加されました。

GB18030 文字セットのサポート

このリリースから、簡体中国語ロケール (chsw) による中国の正式文字セットである GB18030 がサポートされるようになりました。Caché で使用されている内部的な文字表現形式は Unicode なので、GB18030 のコード・ポイントのうち、Unicode にマッピングされているもののみがサポートされています。このコード・ポイントには、基本多言語面 (U+0000 から U+FFFF までの約 64,000 個のコード・ポイント) の文字にマッピングされるすべての 1 バイト、2 バイト、および 4 バイトのシーケンス、および追加の Unicode 面 (U+10000 から U+10FFFF までの 1,024,000 万個のコード・ポイント) にマッピングされるすべての 4 バイト・シーケンスがあります。

Caché では、この追加の Unicode 面の範囲はサロゲート・ペアとして UTF-16 で表現されます。これは、Microsoft が Windows 2000 以降で採用してきた表現方法と同じです。

Note:

GB18030 のコード・ポイントのうち、Unicode にマッピングされていないために現時点では割り当て先がないものが 500,000 ポイントほどあります。これらのコード・ポイントは、Caché ではサポートされていません。

その他の変更

  • ファイル名の最大文字数の増加 — データベースやその他のファイルのパス長の最大値が 64 文字から 232 文字に増えました。

  • ライセンスの改善 — このリリースでは、ライセンス管理の目的で、$USERNAME の値を使用してユーザを識別できます。これにより、個々のユーザの確実な識別に IP アドレスが使用できない状況でも、より正確なカウントが可能です。

  • ダブル・リテラル — 大きな数値リテラル (1E146 を超える値) は、自動的に double 値として保存されるようになります。

  • JOB の機能強化 — セキュリティ設定に関係なく、JOB コマンドで開始したプロセスを、その親プロセスで終了できるようになります。

  • Visual Studio 2005 — このリリースは、Microsoft Visual Studio 2005 for Windows のクライアント・コンポーネントを使用します。コールインの使用などのプログラム手法で Caché 実行可能プログラムにアクセスするユーザは、この変更の影響を受けます。

  • MultiNet のサポート — OpenVMS Alpha システム上で、TCP/IP の MultiNet 実装をサポートします (OpenVMS Itanium システムではサポートされません)。このソフトウェアに関する制限事項が確認された場合はドキュメント化します。

  • Hibernate — Hibernate 3.2.1 の正式リリース・バージョンでは、Cache 2007.1 がサポートされます。詳細情報またはこのバージョンの入手方法は、Hibernate のWeb サイトOpens in a new tabを参照してください。

  • スタジオの改善 — スタジオ IDE が以下のように変更されました。

    • ツールバーに [Web ページの表示] ボタンが配置され、開発者がページのプレビューを表示できるようになりました。

    • ツールバーに [前方] ボタンと [後方] ボタンが配置されました。

    • オプション・ダイアログが変更されました。

    • スタジオ・アシスト機能が、選択された XML ドキュメント、特に Zen と連係動作するようになりました。

新たにサポートされたプラットフォーム

以下のプラットフォームが追加されました。

  • Sun Solaris AMD

  • OpenVMS 8.3 for Alpha および OpenVMS 8.3 for Integrity

  • SUSE Linux Enterprise Server 10

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

目的

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

一般的なアップグレードに関する問題は、"Caché リリース・ノートおよびアップグレード・チェックリスト" の "一般的なアップグレード情報" の章で説明しています。5.2 より前のバージョンからアプリケーションをアップグレードする場合は、従来のバージョンのアップグレード・チェックリストを最初によくお読みください。このドキュメントでは、2007.1 と 5.2 の違いのみを取り上げています。

管理者

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

新しい配布形式

インターシステムズは、今回のリリースから Caché の配布に使用するメディアを CD-ROM から DVD に変更します。

Caution:

このバージョンの Caché をインストールするには、DVD を読むことができる光学ドライブが必要です。

システム管理ポータルの変更

Caché 2007.1 では、Caché 5.2 で利用可能なシステム管理ポータルのバージョンを変更/改善しています。より重要な変更の概要は次のとおりです。

EnableLongStrings 構成パラメータ

Caché では、文字列操作の結果を保存するために、一定容量を持つ領域が割り当てられます。この領域は文字列スタックと呼ばれます。割り当てられた容量を超える文字列式が発生すると、<STRINGSTACK> エラーとなります。既存のアプリケーションでは、これは問題になりません。しかし、このリリースから Caché 文字列の最大長が増加されたので、この長い文字列使用を試みるアプリケーションでは、この機能が有効化されていない場合に問題が発生する可能性があります。

ホーム, 構成, 詳細設定 の [その他] カテゴリにある構成パラメータ EnableLongStrings を有効にしている場合は、長い文字列を使用する操作に対応するために、文字列スタックのサイズを約 50 倍にしてください。

システム全体の設定では、キャッシングは有効です。Caché ジョブは、長い文字列を使用するべきかどうか判定するときにこのスイッチをチェックし、大きなサイズの (長い文字列をサポートする) 文字列スタックまたは通常の文字列スタックを必要に応じて割り当てます。$zu(69, 69) を使用して、プログラムがスイッチ設定を変更する場合がありますが、現在のジョブには影響しません。後続のジョブのみが、変更された設定を使用します。ジョブが文字列スタックを割り当てた後は、同じジョブでサイズを後から変更できません。

Note:

この構成パラメータを有効化することにより、Caché のパフォーマンスが影響を受ける可能性があります。通常、メモリは貴重なリソースで、メモリをスタックに割り当てると、他の機能で使用できるメモリ量が犠牲になります。パフォーマンスを維持するには、システムの再調整が必要になる可能性があります。

Note:

このパラメータが有効化されていない場合、読み取り処理できる文字列の最大長の既定値は 32,767 文字です。

既定で選択されるポートの変更

このバージョンの Caché では、インストール時に、従来のリリースとは異なるポートが選択されます。新しいアルゴリズムは以下のとおりです。

SuperServer

ポート 1972 が使用されていない場合はこれを選択します。それ以外の場合、56773 以上のポート番号のうち、56773 に最も近いものを選択します。

WebServer

57772 以上のポート番号のうち、57772 に最も近いものを選択します。

この変更により、Caché は RFC793 に準拠するようになります。

文字列の最大長の増加

今回のリリースでは、Caché 文字列の最大長が 32,767 文字から 3,641,144 文字に増えました。既存のアプリケーションは、この変更による影響を受けません。ただし、より長い文字列を処理できるように変更されたアプリケーションは、EnableLongStrings 構成パラメータの有効化を検討する必要があります。

Note:

この制限は、ブロック・サイズが 8KB のデータベースにのみ適用されます。ブロック・サイズが 2KB である従来のデータベースの場合、最大値は 32,767 文字のまま変わりません。

文字列サイズの最大値に対する制限は、結果として得られる文字列のサイズにのみ適用されます。その他のサイズに関連する制限には変更はありません。例えば、コンパイラに渡されるコード行の長さの上限は 4,096 文字のままです。ルーチンの最大サイズは構成パラメータによって異なりますが、32K または 64K です。文字列リテラルの長さや数もほとんど変更されていません。

ルーチン処理の改善

このバージョンの Caché では、COS ルーチンの管理方法が大幅に改善されています。変更の詳細は、"ルーチン・パフォーマンスの機能強化" を参照してください。

ターミナルが認証設定を使用する

このバージョンの Caché では、(例えば、インストール時に標準セキュリティを指定して) 認証を有効化した場合、ターミナル・セッションの開始時に、OS のユーザ ID やパスワードなどを要求する認証プロンプトが表示されます。

システム API の変更

%SYS.LDAP の追加

このクラス %SYS.LDAPOpens in a new tab は、ObjectScript インタフェースを LDAP データベースに提供して、LDAP (Lightweight Directory Access Protocol) を使用するシステムの管理を支援するために提供されています。呼び出し元は、提供されたメソッドを使用してデータベースにアクセスするために自己認証を行います。認証されると、LDAP データベースから項目を追加および削除でき、LDAP によって管理される情報を検索できます。

ジャーナリング API への変更

トランザクション・ロールバックまたはクラッシュ回復に必要なファイルを除き、すべてのジャーナル・ファイルを削除するために、%SYS.JournalFile API が実装されました。

##class(%SYS.Journal.File).PurgeAll()

クラッシュ回復とは、Cache 起動またはクラスタ・フェイルオーバー復元の一部として実行されるジャーナルのリストア作業のことです。

WARNING:

バックアップ後のジャーナル・ファイルは、必ずしも保持されるわけではありません。したがって、バックアップと後続のジャーナル・ファイルからデータベースをリストアする場合、バックアップに基づくジャーナル削除パラメータを構成し、定期削除 API (PURGE^JRNUTIL) を使用する必要があります。

また、Cache 構成の条件とは異なる条件に基づくジャーナル・ファイルを削除するための API もあります。

##class(%SYS.Journal.File).Purge(NDaysOld As %Integer,
                                 NBackupsOld As %Integer) returns %Status 

この方法では、指定された条件に基づいて古いジャーナル・ファイルを削除し、トランザクション・ロールバックやクラッシュ回復に必要なファイルを削除しません。 パラメータは以下のとおりです。

  • NDaysOld – ジャーナル・ファイルを削除するには、作成からこの日数以上経過していなければなりません。

  • NBackupsOld – ジャーナル・ファイルを削除するには、この数以上バックアップされていなければなりません。

両方のパラメータを指定した場合、いずれか一方の条件のみ満たしていれば (包含的論理和)、ロール・バックとクラッシュ回復に関する制限に従ってジャーナル・ファイルを削除できます。

一般メモリ・ヒープ構成 API の追加

Caché がヒープを使用する方法に関する情報を収集するために、新規 API、%SYSTEM.Config.SharedMemoryHeapOpens in a new tab が追加されました。構成で使用するために利用可能な一般メモリ・ヒープと推奨の gmheap パラメータを取得する機能も提供されています。例えば、DisplayUsage メソッドは、各システム・コンポーネントによって使用されるすべてのメモリと、利用可能なヒープ・メモリの容量を表示します。

Write $SYSTEM.Config.SharedMemoryHeap.DisplayUsage()

RecommendedSize メソッドは、スムーズな処理を実行するために、このインスタンスで構成される必要があるヒープ・メモリの推奨容量を返します。

Write $SYSTEM.Config.SharedMemoryHeap.RecommendedSize()
Note:

これには、シャドウイングが有効化されているとき、つまり (2 * #CPUs + 1) MB のときに、シャドウイングに予約されているメモリは含まれません。例えば、4–CPU システムではさらに 9MB が必要となります。

IntegrityList メソッドの削除

メソッド IntegrityList は使用可能な既存機能と重複するため、%SYS.GlobalQueryOpens in a new tab クラスから削除されました。同一の目的を達成するには、以下に示す既存の各メソッドを使用できます。

クラス名 メソッド 説明
%SYS.GlobalEdit CheckIntegrity シングル・グローバルの整合性をチェックします (インスタンス・メソッド)。
%SYS.GlobalEdit CheckGlobalIntegrity シングル・グローバルの整合性をチェックします (クラス・メソッド)。
SYS.DatabaseOpens in a new tab CheckIntegrity シングル・データベースの整合性をチェックします (インスタンス・メソッド)。
SYS.DatabaseOpens in a new tab IntegrityCheck シングル・データベースの整合性をチェックします (インスタンス・メソッド)。
SYS.DatabaseOpens in a new tab Integrity データベース全体で整合性チェックを実行します (削除されたメソッドと同じ)。

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

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

Windows
  • インストーラの変更

    • 今回のリリースでは、Windows にインストールした場合の既定のインストール・ディレクトリが C:\InterSystems\Cache に変更されています。

    • 互換性上の理由から、Caché を Program Files ディレクトリへインストールできなくなりました。

    • 既定のインストール・ディレクトリの変更に伴い、エントリ %SystemRoot%\InterSystems\Common Files\intersystems\cache が追加されます。このエントリは、システム全体に影響する環境変数 Path の末尾に付け加えられます。このディレクトリには、Caché 固有の DLL が保存されます。

  • Vista 使用時に必要な変更

    • オペレーティング・システムのアップグレードによる新しい Caché バージョンのインストールの必要性 — Windows Vista では、プログラムの上位互換性に関する重大な問題が発生します。そのため、既に Caché がインストールされているシステムを Vista にアップグレードすると、ほとんどの場合 Caché が正常に動作しなくなります。

      インターシステムズは、Vista の使用を希望されるお客様には、新しい Caché バージョンのインストールをお願いしています。既存のデータとアプリケーションは、該当するデータベースの保存およびリストアにより移動できます。アプリケーションはリコンパイルが必要です。

    • セキュリティの調整 — 選択したオプションによっては、Caché のインストール後に、手動での追加調整が必要となる場合があります。詳細は、"Caché インストール・ガイド" の “Microsoft Windows への Caché のインストール” の章を参照してください。

    • プロトコルの制約 — Caché は、Windows Vista 上では、Raw Ethernet を使用した DDP、LAT、または DCP をサポートしません。詳細は、"サポート対象プラットフォーム" を参照してください。

    • CacheODBC ログの既定場所の変更 — 現在、ログの既定の場所は %PUBLIC%\Logs\CacheODBC.log となっています。このディレクトリにはすべてのユーザがアクセスでき、ログの作成場所を 1 か所に集約できるメリットがあります。以前の場所は %WINDIR% でした。Vista では、これは C:\users\someuser\AppData\Local\VirtualStore\Windows\CacheODBC.log に仮想化されます。その結果、ログの場所がユーザごとに異なり、問題解決に際してログの利用が困難になります。

      ログ・ファイルの場所を変更するには、新しい場所を環境変数 CACHEODBCTRACEFILE に設定します。

    • 起動時の暗号化オプションの Windows Vista における細部的な相違 — インスタンスがデータベースの暗号化を使用し、インタラクティブにキーを有効化する起動をサポートする場合、Caché により暗号化キー情報が要求されます。Vista 上では、この要求により [対話型サービス ダイアログの検出] ダイアログ・ボックスが表示されます。このダイアログのウィンドウは初期状態では最小化されるため、Vista のタスクバーが非表示に構成されている場合、このダイアログ・ボックスに気付かないことがあります。詳細は、"Caché セキュリティ管理ガイド" の "データベース暗号化" の章を参照してください。

共有メモリに対して大きなページ・サイズを使用する – Windows Server SP1

Caché for Windows は、共有メモリ・セクションに Windows の大きなページを使用できるように強化されています。大きなページは、共有メモリ・セクションの割り当て時に、ソフトウェア・アプリケーションに対して Windows がアクセス可能にするハードウェア機能で、Server 2003, SP1 から利用可能となっています。実際のページのサイズは、使用するプロセッサによって異なります。認識されているプロセッサとそれらの大きなページ・サイズは以下のとおりです。

  • EMT 64 ビット : 2 MB

  • AMD 64 ビット : 2 MB

  • Itanium : 16 MB

Windows のこの機能が使用可能で、Caché を起動するプロセスが SeLockMemoryPrivilege リソースを取得できるときは、Caché は最初に大きなページの使用を試みます。大きなバッファ・プールを割り当てるシステムでは、バッファ・プールが物理メモリにロックされハードウェア変換バッファの使用効率が向上するため、パフォーマンスが強化されます。大きなページは物理メモリにロックされるため、バッファ・プールの要求が大きくなりすぎないように注意する必要があります。マシンでサポートが必要なユーザ数に対して、十分な物理メモリが残らなくなる可能性があるためです。この状態、つまりメモリ不足状態になると、バッファ・プールに通常サイズのページが使用されている場合よりパフォーマンスが悪化します。

Windows では、ユーザ用に残しておく物理メモリ量を計算するときに、Windows がメモリ管理の構成要素として作成するページ・テーブル・エントリを考慮する必要があります。ページ・テーブル・エントリ (PTE) は、32 ビット・システムではそれぞれ 4 バイトを、64 ビット・システムでは 8 バイトを消費します。Windows は、4KB のメモリごとに 1 つのページ・テーブル・エントリを割り当てます。これは、64 ビット・システムでは、共有メモリ・セクションのサイズを 500 で除算することで、Windows が共有メモリ・セクションとのマップ用に PTE に割り当てるおよそのバイト数が算出されることを意味します。このメモリはプロセスごとにプライベートのため、各プロセスがこれだけのメモリをまとめて割り当てる必要があります。

PTE はページング可能なため、PTE の管理自体がパフォーマンス上の問題となる場合があります。PTE に対して必要な物理メモリが確保されるように注意する必要があります。PTE はそれが参照する物理メモリがアクセスされるまではページ・アウト状態にあるため、当初はこの問題は顕在化しません。そのため、システムは問題なく動作しているように見えますが、時間が経過し需要が増すにつれてパフォーマンスは大幅に悪化します。

ほとんどのプラットフォームでは、Caché が起動したときに、グローバルおよびルーチン・バッファ用に要求された共有メモリの割り当てに失敗すると、要求する容量を毎回減らしながら何度か要求を再試行します。この状態は、割り当てに成功するか、再試行回数の上限に達するまで繰り返されます。後者の場合は、メッセージがログに記録され、起動が中止されます。

Windows では、このアプローチは 2 つのフェーズを介して進行します。最初、Caché は大きなページがサポートされていると想定して、大きなページの使用を試みます。起動プロセスが必要な権限の取得を試み、要求のループを実行します。割り当てに成功した場合は、メモリ管理に大きなページの使用が開始されます。大きなページの使用に失敗した場合は、大きなページを使用しない元のメモリ要求に基づいてループが再実行されます。このループの 2 回目の繰り返しに失敗した場合、Caché は起動に失敗します。

リモート・データベースのパス名

以前のバージョンでは、アップグレードにより、リモート・データベースのドライブ文字が大文字に変更されました。この変更は実行されなくなりました。Windows ECP サーバを使用するサイトは、ホーム, 構成, リモート・データベース でリモート・データベースのパス名を調べる必要があります。ドライブ文字が大文字のパス名があれば、小文字に変更する必要があります。

UNIX®/Linux/Mac OS X
  • デーモンの特権

    5.1 よりも前のバージョンの Caché では、デーモンは必ず root として実行され、Caché はその特権を使用して UNIX® パラメータ RLIMIT_FSIZE を無制限に設定していました。一方、5.1 以降では、Caché デーモンは root 以外のユーザ ID でも実行できます。root は自身の制限のみを設定できるので、この制限は非 root 所有者に対しては設定できません。

    また、非 root ユーザとして実行されているとき、Caché は現在の制限 (ソフト) のハード制限への設定変更に失敗しています。 この場合は、RLIMIT_FSIZE のハード制限が無制限であっても、Caché がソフト制限が低い値に設定されたログイン・ユーザから起動されていれば、Caché デーモンはこの低い値を使用して実行され、CACHE.DAT または CACHE.WIJ への書き込みを試みる重大な I/O エラーが生じる可能性がありました。

    今回の Cache では、RLIMIT_FSIZE のハード制限が無制限になっていることが確認され、そうでない場合は、エラー・メッセージと共に Cache の起動 (またはインストール) が中断されます。 次に、Cache はそのデーモンの中でソフト制限をハード制限に設定します。

  • Mac OS X での CDL サポートの終了

    今回のバージョンの Caché では、Mac プラットフォームでの CDL のサポートが廃止されました。プラットフォーム間でのアプリケーションの転送には XML をご使用ください。

機能 : xDBC

このバージョンの Caché を実行するサーバ・システムへの接続を試みるクライアント・アプリケーションは、Caché バージョン 5.0.13 以降で実行する必要があります。それ以前のバージョンからの接続は失敗します。

利用するサイトでこれが問題となる場合は、インターシステムズのサポート窓口Opens in a new tabにお問い合わせください。

Dreamweaver のサポート終了

このリリースの Caché では、CSP ページ生成の方法として、どのバージョンの Dreamweaver も使用できなくなりました。

Python バインディングのバージョン要件

Windows 上の Caché バージョン 2007.1 で、Python 言語バインディングの使用を希望されるお客様は、Microsoft Visual Studio 7 と共に ActiveState Python 2.4 を使用することをお勧めします。インターシステムズでは、製品のテストに ActiveState Python 2.4.3.12 を使用しています。

開発者

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

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

システム管理ポータル

5.2 のリリース以降、システム管理ポータルに数多くの変更や改善が加えられました。詳細は、管理者のセクションを参照してください。

ObjectScript の変更

パターン・マッチングの変更

このリリースでは、パターンのマッチング方法に対して互換性がありません。一定の特性を備えたパターンを使用しているアプリケーションは、このバージョンでリコンパイルする必要があります。リコンパイルしないと、誤った結果が得られます。そのような特性は以下のとおりです。

  • 反復回数が 12 である (“X?12N” など)。

  • 反復範囲の最初の数が 12 である (“X?12.14N” など)。

  • 反復範囲を指定する 2 つの数の差が 12 である (“X?3.15N”、“X?.12N” など)。

SQL の変更

Caché SQL NOT! および NOT& 演算子の削除

今回のリリースの Caché では、FDBMS 時代の演算子 NOT! および NOT& は SQL 構文から完全に削除されます。利用するアプリケーションでこれが問題となる場合は、インターシステムズのサポート窓口Opens in a new tabにお問い合わせください。

SYSDATE は予約語に

アプリケーションを Caché に移行しているユーザへの支援として、SQL では関数 SYSDATE をサポートするようになりました。この関数よりも、これと同等の SQL 標準関数 CURRENT_TIMESTAMP の使用が推奨されます。

Note:

SYSDATE は SQL の予約語になりました。SYSDATE を識別子として使用しているアプリケーションは区切り文字付き識別子構文 “SYSDATE” の使用に切り替えるか、または識別子の名前を変更して、競合を解決する必要があります。

CREATE TABLE による既定のスキーマ割り当ての変更

Caché SQL では、スキーマ名 USER を使って定義された既定のパッケージはありません。USER に対するパッケージ定義が存在しないときに、スキーマ名 USER を使用してテーブルを作成しようとすると、USER というパッケージとスキーマ名を使ったパッケージ・マッピングが作成されます。

これにより、SQLUser (スキーマ) マッピングに対する USER パッケージの既定のマッピングがオーバーライドされます。

また、USER は SQL 予約語ですが、従来のリリースにあいまいさがなかったので、SQL パーサでは USER はスキーマ名と見なされます。

Caché 2007.1 では、USER は区切り文字付き識別子である場合を除き、DDL 文のスキーマ名として使用できなくなります。これにより、テーブルの任意の DDL 開発や、その他の SQL オブジェクトによる Caché の既定のマッピング (User->SQLUser) をオーバーライドするパッケージ・マッピングの作成が阻止されます。区切り文字を付けずに USER を使用すると、新たな SQL エラーが発生します。

SQLCODE = -312: Invalid schema name 'USER'
Oracle の Timestamp と JDBC ゲートウェイ

Oracle Date として定義されている Oracle データベース列にリンクしたとき、その列値がリンク・プロシージャによって Caché Date として正しく表現されません。この解釈の結果として、Date (実際は Timestamp) として宣言されているデータ項目は JDBC 経由で操作できません。

正しい動作を実現するには、テーブルのリンク後に、ユーザがスタジオでクラス定義を開いて、そのデータ型を %Date から %TimeStamp に変更する必要があります。

これは、Oracle JDBC ドライバに関する解決済みの既知の問題Opens in a new tabです。

TuneTable と KeepUpToDate フラグ

Caché には、テーブルのコンテンツに関する統計を収集し、クエリの最適化に役立てる機能があります。実行時にアプリケーションから呼び出し可能なメソッドは $SYSTEM.SQL.TuneTable です。

この $SYSTEM.SQL.TuneTable の 5 番目のパラメータが KeepUpToDate フラグです。このフラグを 1 に設定すると、Caché は、ExtentSize の値と Selectivity の変更時にクラスとテーブルを有効期限切れとしてマークしなくなります。

バージョン 2007.1 では、KeepUpToDate はクエリ・キャッシュにも効果を及ぼすように拡張されています。KeepUpToDate を 1 に設定すると、Caché は、TuneTable の操作の一環としてクエリ・キャッシュを削除しなくなります。

このフラグの既定は 0 で、その場合、クラスは最新でないとしてマークされ、テーブルに依存するすべてのクエリ・キャッシュが削除されます。KeepUpToDate が 0 に設定されている実働システムで TuneTable を実行した場合、キャッシュから削除されたクエリをアプリケーションが使用するとアプリケーション・エラーとなります。

Sybase および SQL Server との互換性に関する変更

Sybase および SQL Server との互換性に関して、以下の変更が行われています。

  • コマンド TRUNCATE TABLE が追加されました。

  • 5 つの新しい関数 (CHARINDEX、DATALENGTH、REPLACE、STUFF、SYSDATE) を式で使用できるようになりました。

  • 新しい 2 つの予約語 SYSDATE および STATISTICS が追加されました。

新しい DDL データ型のマッピング

今回のバージョンでは、データ型マッピングのシステム・リストに以下の新しいデータ型マッピングが追加されました。

外部型 Caché でのマッピング
BINARY VARYING %Library.Binary(MAXLEN=1)
BINARY %Library.Binary(MAXLEN=1)
CHAR VARYING %Library.Binary(MAXLEN=1)
CHARACTER VARYING %Library.Binary(MAXLEN=1)
NATIONAL CHAR VARYING %Library.Binary(MAXLEN=1)
NATIONAL CHARACTER VARYING %Library.Binary(MAXLEN=1)
NATIONAL VARCHAR %Library.Binary(MAXLEN=1)
VARBINARY %Library.Binary(MAXLEN=1)
VARCHAR %Library.Binary(MAXLEN=1)
文の変更

以下は、文構文に対する変更の要約です。詳細は、"SQL リファレンス" を参照してください。

  • INSERT 文で INTO キーワードがオプションになりました。

  • UPDATE および DELETE 文で、マルチテーブル選択条件をサポートする新しい FROM 節が使用可能になりました。

  • DELETE 文で FROM キーワードがオプションになりました。

演算子および述語の変更

以下はバージョン 2007.1 で新たに追加されました。

  • LIKE 述語の大文字/小文字照合のサポート

  • 新しい比較演算子としての %CONTAINSTERM の追加

新しいコマンド構文

Caché SQL では、Caché Objectscript で使用するのと同じ /* ... */ 構文による複数行のコメントをサポートするようになりました。

%Text クラスの語幹解析の変更

%Text.EnglishOpens in a new tab クラスは、英単語の語幹解析に、公開アルゴリズムとして幅広く使用されている Porter 解析ツールを使用しています。この公開アルゴリズムでは、語尾の “-ed” の語幹解析方法が修正されており、その修正版がすべてのバージョンの %Text.EnglishOpens in a new tab クラスで使用されていました。

このバージョンの Caché では、このアルゴリズムが修正前の公開アルゴリズムの動作をリストアするように変更されています。修正版のアルゴリズムでは、“-ed” で終わる語に対する解析性能が劣っているためです。この変更は、%Text.EnglishOpens in a new tab クラスによる用語のインデックス化に影響します。そのため、再構築されていないインデックスでは、“-ed” で終わる語に関して、テキストの述部がバージョン間で多少異なる可能性があります。

Important:

前のバージョンの Caché で作成した %Text.EnglishOpens in a new tab テキスト・インデックスを再構築することをお勧めします。そうでない場合、“-ed” で終わる語に関しては、インデックスに既存する同語の別形態との一致が検知されなくなる場合があります。

コールインの変更

今回のリリースの Caché では、CALLIN で msql* 関数がサポートされなくなりました。これらは Caché SQL に変更する必要があります。

修正された問題

文字列のトランケーション

一部の状況で Caché が最大文字列長の設定を無視していたエラーが修正されました。これまで、最大長を超える文字列は、文字列長の超過が検出されずに、そのまま受け入れられていました。これらの値は、ストアド・プロシージャに渡したり永続化するなどのその後の使用時に、正しくトランケーションされました。今回の修正により、当初とその後の使用の両方で、値は整合的に処理されるようになります。

オペレータ

システム管理ポータル

5.2 のリリース以降、システム管理ポータルに数多くの変更や改善が加えられました。詳細は、管理者のセクションを参照してください。

FeedbackOpens in a new tab