記事 Tomohiro Iwamoto · 2020年6月3日 12m read InterSystemsデータプラットフォームとパフォーマンス – パート1 アプリケーションがデプロイされ、すべてが問題なく動作しています。 素晴らしいですね! しかし、その後突然電話が鳴り止まなくなりました。アプリケーションが時々「遅くなる」というユーザーからの苦情の電話です。 これは一体どういうことなのでしょうか? なぜ時々遅くなるのでしょうか? このような速度低下を検出し、解決するにはどのようなツールと統計情報に注目すべきなのでしょうか? お使いのシステムのインフラはユーザーの負荷に対応できていますか? 本番環境を調べる前に、どのようなインフラ設計上の問題を問うべきなのでしょうか? 新しいハードウェアのキャパシティプランニングを、必要以上の設備投資を行うことなく自信を持って行うにはどうすればよいのでしょうか? どうすれば電話がかかってこなくなるのでしょうか? そもそも電話がかかってこないようにするには、どうすればよかったのでしょうか? #システム管理 #パフォーマンス #Caché #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 234
記事 Tomoko Furuzono · 2020年9月7日 6m read フリーテキスト検索:SQL開発者が秘密にしているテキストフィールドの検索方法* アプリケーションに、効率的に検索したいフリーテキストを含むフィールドがありますか?これまで複数の方法を試してみたものの、顧客が要求するパフォーマンスを満たせなかった経験はありませんか?私は変わった手段を使ってあらゆる問題を解決できると思っていませんか。もうご存じですよね。私ができるのは、パフォーマンス低下に対処する優れたソリューションを提供することです。 #iFind #オブジェクトデータモデル #ObjectScript #SQL #インデックス付け #Caché #InterSystems IRIS 0 0 0 264
記事 Mihoko Iijima · 2020年9月16日 2m read アンチウイルスソフト(セキュリティソフト)のスキャンから除外してほしいリスト これはInterSystems FAQ サイトの記事です。 InterSystemsでは、パフォーマンスの影響や動作不調を避けるために、データベースファイルを含む主要なコンポーネントをウイルススキャンの対象から除外していただくことを推奨しております。 具体的には、アンチウイルスソフトのスキャン対象から、以下のファイルを除外してください。 データベースファイル(IRIS.DAT/CACHE.DAT) <インストールディレクトリ>/bin 内の実行可能ファイル(EXE) ライトイメージジャーナル(WIJ) ジャーナルディレクトリ内のジャーナルファイル 上記ファイルが、アンチウイルスソフトで除外設定されていない場合、「SERIOUS DISK WRITE ERROR...」 のようなエラーが発生する場合があります。 #システム管理 #セキュリティ #ヒントとコツ #Caché #Ensemble #HealthShare #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 235
記事 Tomoko Furuzono · 2020年11月24日 4m read 例:PHPから Caché Web サービスへの接続 最近、InterSystems 内で PHP から Caché ベースの Web サービスに接続が必要になる事例がいくつかありました。 これらの最初の事例とは、実はこの開発者コミュニティそのものであり、他の InterSystems サイト/アプリケーションとのシングルサインオンに Web サービスを使用しています。 次の例は、パスワード認証を使用して PHP から Caché ベースの Web サービス(具体的には SAMPLES ネームスペースの Web サービス)に接続する方法を示しています。 (注意: この例は、/csp/samples に対してパスワード認証が有効になっていることを前提としています。) #Code Snippet #SOAP #フロントエンド #Caché 0 0 0 262
記事 Toshihiko Minamoto · 2021年3月9日 16m read セマフォを使用した共有リソースへの同時アクセスの実装 これまで Caché のリソースアクセスを制御する方法が存在するかどうかを疑問に思っていた方の悩みを解決しました。 バージョン 2014.2 では、開発者がセマフォを操作できるようにする特別なクラスが追加されました。 #チュートリアル #ヒントとコツ #Caché 0 0 0 2.3K
記事 Mihoko Iijima · 2020年11月20日 2m read データベースのバックアップ方法について これはInterSystems FAQ サイトの記事です。 バックアップには、以下4種類の方法があります。 外部バックアップ オンラインバックアップ(コンカレントバックアップ) コールドバックアップ レガシー並行外部バックアップ 詳細は、以下ドキュメントをご参照ください。 バックアップの方法について【IRIS】バックアップの方法について #システム管理 #バックアップ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 430
記事 Mihoko Iijima · 2020年12月28日 3m read データベースの暗号化手順について これは InterSystems FAQ サイトの記事です。 データベース暗号化は、ディスクヘの書き込みまたはディスクからの読み取りで暗号化と復号が実行されるため、アプリケーションのロジックに手を加える必要はありません。 この機能のドキュメントについては、以下ご参照ください。 マネージド・キー暗号化【IRIS】 マネージド・キー暗号化 暗号化データベース作成までの流れは、以下の通りです。 (1) 暗号化キーの作成 #システム管理 #セキュリティ #暗号化 #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 183
記事 Mihoko Iijima · 2021年1月29日 4m read コマンドでジャーナルファイルにある特定のグローバル変数を検索する方法 これは InterSystems FAQ サイトの記事です。 #グローバル #システム管理 #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 315
記事 Mihoko Iijima · 2021年3月5日 2m read 累積バックアップと差分バックアップの違いについて これは InterSystems FAQ サイトの記事です。 ※ ここで説明するバックアップ方法は、外部バックアップ(##class(Backup.General).ExternalFreeze()を使用する方法)ではご利用いただけません。 その1(差分) 毎週日曜日1時にフルバックアップ、月曜日~土曜日の1時に差分バックアップを取得しているとします。 差分バックアップは、前日の1時に取得したバックアップからの更新ブロックが含まれるバックアップです。 #システム管理 #バックアップ #ヒントとコツ #Caché #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 466
記事 Toshihiko Minamoto · 2021年6月8日 17m read サポートの現場から - Raw DEFLATEの圧縮/解凍機能の探求から、どのようにRESTによるNode.jsのコールアウトサーバー構築に至ったのか 以前、WRCケースのエスカレーションを受けました。お客様は、Cachéに、rawDEFLATE圧縮/解凍機能が組み込まれているかを尋ねていました。 DEFLATEについて話すには、Zlibについても話す必要があります。Zlibは、90年代半ばに開発された無料の圧縮/解凍ライブラリで、、デファクトスタンダードとなっているからです。 Zlibは特定のDEFLATE圧縮/解凍アルゴリズムと、ラッパー(gzip、zlibなど)内でのカプセル化するという考えの下で動作します。 https://en.wikipedia.org/wiki/Zlib #JavaScript #Node.js #ObjectScript #REST API #コールアウト #ベストプラクティス #Caché 0 0 0 647
記事 Mihoko Iijima · 2021年4月9日 1m read 関数・メソッドの引数に可変長引数を渡すことができるかどうか これは InterSystems FAQ サイトの記事です。 引数名の後ろに ... をつけることで可変の引数を渡すことができます。 ObjectScript では、配列を使って任意の数の引数を渡すことができます。 例文は以下の通りです。例文では、メソッド実行後に確認しやすいように、グローバル変数(=データベースに格納される変数)に引数の情報を設定しています。 Class TEST.ARGTEST1 Extends %RegisteredObject { ClassMethod NewMethod1(Arg... As %String) As %Boolean { kill ^a merge ^a = Arg } } ターミナルで実行した結果は以下の通りです。 #ObjectScript #ヒントとコツ #Caché #Ensemble #HealthShare #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 210
記事 Toshihiko Minamoto · 2021年7月12日 3m read REST の高度な URL マッピング 現在では、基本的な REST API を Caché に実装する方法は一般的であり、これに関する優れたドキュメントが「REST in Caché」に掲載されています。 時々次のような疑問が投げ掛けられることがあります。 REST url のパラメータをオプションにするにはどうすればよいですか? 簡単に言えば、Caché では次のような URL をマッピングする URL マップを作成することができます。 http://server/API/object///old この書き方は奇妙に見えるかもしれませんが、実際に有効な URL です。 詳細は、RFC3986 セクション 3.3 をご覧ください。 #マッピング #REST API #Caché 0 0 0 369
記事 Mihoko Iijima · 2021年7月20日 1m read バージョンアップした後のルーチンの再コンパイルについて これは InterSystems FAQ サイトの記事です。 バージョンアップ後、ルーチンを再コンパイルする必要はありませんが、バージョンアップで %SYS が上書きされるため、%SYS 内のユーザ作成 INT 形式および OBJ 形式ルーチン(*.INT,*.OBJ)が削除されますので、注意が必要です。 MAC形式(.MAC)と以下の名前の INT 形式および OBJ 形式ルーチンについては削除されません。 %Z*.INT, %z*.INT, Z*.INT,z*.INT %Z*.OBJ, %z*.OBJ, Z*.OBJ,z*.OBJ なお、クラス/CSP はアップグレード後にコンパイルが必要となります。 ただし、メンテナンスリリースへのアップグレードの場合は、コンパイルは不要です。詳細は、以下ドキュメントをご参照ください。 #システム管理 #ヒントとコツ #Caché #Ensemble #HealthShare #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 116
記事 Mihoko Iijima · 2021年8月23日 1m read 管理ポータルの InterSystems IRIS Business Intelligence 用メニュー:Analytics(または DeepSee)関連ページを開くとエラーになる場合の対処方法 これは InterSystems FAQ サイトの記事です。 InterSystems IRIS Business Intelligence 用メニューの Analytics(または DeepSee)を使用するためには、使用するネームスペース用ウェブアプリケーションパスを Analytics(またはDeepSee)に対応するように設定変更する必要があります。 詳細については以下のドキュメントをご参照ください。 【IRIS】InterSystems IRIS Business Intelligence の Web アプリケーション設定について 【2015.1~2018.1】DeepSee の Web アプリケーション設定について 【~2014.1】%CSPページへのアプリケーション・アクセスの制御について/特殊なケース: DeepSee #ヒントとコツ #分析 #Caché #Ensemble #HealthShare #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 113
記事 Toshihiko Minamoto · 2021年10月19日 9m read %Statusを使ったデバッグのヒント はじめに ObjectScriptで複雑な問題を解決している場合、おそらく%Status値を使用したコードがたくさんあることでしょう。 オブジェクトの観点(%Save、%OpenIdなど)から永続クラスを操作したことがある場合は、ほぼ確実にその状況に遭遇したことがあるでしょう。 %StatusはInterSystemsのプラットフォームでローカライズ可能なエラーメッセージのラッパーを提供します。 OKステータス($$$OK)は1に等しいだけであるのに対し、不良ステータス($$$ERROR(errorcode,arguments...))は0、スペース、エラーに関する構造化情報を含む$ListBuildリストとして表されます。 $System.Status(クラスリファレンスを参照)は、%Status値を操作するための便利なAPIをいくつか提供しています。クラスリファレンスを役立てられるので、ここでは繰り返しません。 このトピックに関する有用な記事/質問もほかにいくつかあります(最後のリンクをご覧ください)。 この記事では、コーディングのベストプラクティスではなく、いくつかのデバッグのコツや手法に焦点を当てています(ベストプラクティスについては、最後のリンクをご覧ください)。 #エラーハンドリング #ObjectScript #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 1 242
記事 Mihoko Iijima · 2022年3月29日 11m read データベース空き容量の監視方法について これは、InterSystems FAQサイトの記事です。 データベースの空き容量は、システムモニタを使用して監視することができます。 システムモニタは、システム開始時に自動開始され、予め設定された閾値に対してアラートが通知されます。 #システム管理 #データベース #ヒントとコツ #Caché #Ensemble #HealthShare #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 157
記事 Mihoko Iijima · 2023年1月5日 14m read システムモニタを利用して特定の条件に合う時にメッセージログ(コンソールログ)に情報を出力する方法 これは InterSystems FAQ サイトの記事です。 システムモニタの中の「アプリケーションモニタ」を利用することで、ユーザが定義した特定の監視対象に対してチェックを行い特定の条件に合致した場合に通知を行ったり、メッセージログ(コンソールログ)に情報を出力したり、ユーザが定義するアクションを指定できます。 <メモ>アプリケーションモニタはインストールにより準備されますが、ユーザが付属のアプリケーション・モニタ・クラスを有効化するまで動作しないモニタです。付属のアプリケーションモニタには、監査のカウントやイベント詳細を収集するもの、ディスクの容量を監視するものなどが含まれます。 #システム管理 #ヒントとコツ #監視 #Caché #Ensemble #HealthShare #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 137
記事 Tomoko Furuzono · 2024年3月18日 3m read 任意のXMLドキュメントの読み込み・書き出しを行う これは、InterSystems FAQサイトの記事です。 【任意のXMLドキュメントの読み込み】任意のXMLドキュメントの読み込み・書き出しを行うには、%XML.TextReaderクラスを使用します。Parseメソッド(※ドキュメントがファイルの場合はParseFile())を使用してドキュメントをParseし、各ノードのプロパティを取得します。 例えば、下記のXMLの場合、 <emp empid="1"> <name>Suzuki</name> <address>Tokyo</address> </emp> 各赤枠が、"ノード"の単位となり、 #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 34
記事 Hiroshi Sato · 2024年3月18日 1m read UTF-8のBOM付きのファイルを作成する方法 これは InterSystems FAQ サイトの記事です。 UTF-8(BOM付)のテキストファイルは以下のようにして作成可能です。 #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 31
記事 Tomohiro Iwamoto · 2020年6月4日 11m read InterSystemsデータプラットフォームとパフォーマンス – パート2 前回の投稿では、pButtonsを使用してパフォーマンスメトリックを24時間収集する処理をスケジュールしました。 この投稿では、収集対象の主なメトリックのいくつかと、それらの土台となるシステムハードウェアがどのように関連しているかを見ていきます。 また、Caché(または任意のInterSystemsデータプラットフォーム)メトリックとシステムメトリックの関係についても調べます。 さらに、これらのメトリックを使用してシステムの毎日の健全性を把握し、パフォーマンスの問題を診断する方法もご紹介します。 #システム管理 #パフォーマンス #Caché #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 212
記事 Tomohiro Iwamoto · 2020年7月16日 25m read InterSystemsデータプラットフォームとパフォーマンス - パート9 InterSystems IRIS VMwareのベストプラクティスガイド この記事ではVMware ESXi 5.5以降の環境にCaché 2015以降を導入する場合の構成、システムのサイジング、およびキャパシティ計画のガイドラインを示します。 ここでは、皆さんがVMware vSphere仮想化プラットフォームについてすでに理解していることを前提としています。 このガイドの推奨事項は特定のハードウェアやサイト固有の実装に特化したものではなく、vSphereの導入を計画して構成するための完全なガイドとして意図されたものでもありません。これは、皆さんが選択可能なベストプラクティス構成をチェックリストにしたものです。 これらの推奨事項は、皆さんの熟練したVMware実装チームが特定のサイトのために評価することを想定しています。 #システム管理 #Caché #InterSystems IRIS #InterSystems IRIS for Health #ドキュメント 0 0 0 474
記事 Mihoko Iijima · 2020年9月16日 1m read ObjectScript でプログラミングを行うときのエラー処理方法について これはInterSystems FAQ サイトの記事です。 サーバ側ロジックの記載に使用する ObjectScript でのエラーが発生した場合の対処方法については「ObjectScriptでエラーが発生したら」にまとめています。 ぜひご参照ください! #ObjectScript #エラーハンドリング #Caché #Ensemble #HealthShare #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 146
記事 Tomohiro Iwamoto · 2020年11月23日 21m read InterSystemsIRIS 用 ODataAPI アダプタの作成 この記事では、OData API 標準に基づいて開発された RESTful API サービスを利用するための IRIS クライアントの開発について説明します。 HTTP リクエストを作成し、JSON ペイロードの読み取りと書き込みを行い、それらを組み合わせて OData 用の汎用クライアントアダプタを構築する方法を確認するため、多数の組み込み IRIS ライブラリを説明します。 また、JSON を永続オブジェクトに逆シリアル化するための新しい JSON アダプタについても説明します。 RESTful API の操作 REST は World Wide Web の標準化に関する作業から作成された一連の設計原則です。 これらの原則はあらゆるクライアントサーバー通信に適用でき、HTTP API が RESTful であることを説明するためによく使用されます。 REST はステートレスなリクエスト、キャッシュ処理、統一した API 設計など、さまざまな原則を網羅しています。 ただし、詳細な実装については網羅していません。また、これらのギャップを埋めるための一般的な API 仕様は存在しません。 #REST API #Caché #InterSystems IRIS Open Exchange app 0 0 0 201
記事 Toshihiko Minamoto · 2020年11月11日 22m read Grafana ベースの mgstat(InterSystems Caché / Ensemble / HealthShareのシステム監視ツール)用 GUI こんにちは! この記事は「Prometheus で InterSystems Caché を監視する」の続きになります。 ここでは #システム管理 #監視 #視覚化 #Caché 0 0 0 345
記事 Hiroshi Sato · 2020年12月16日 2m read SQLインジェクションに対する対策 これはInterSystems FAQ サイトの記事です。 SQLインジェクションに関しては、様々なWebサイトで対策等が公開されていますが、InterSystems SQLを使ったアプリケーションでも、他のRDBMSと同様にそれらの対策を適切に実施することで、SQLインジェクションは防げると考えられます。 さらに、InterSystems Data Platform(以下IRIS)の場合、一般的なRDBMSに比較して、SQLインジェクションを実行しづらい、幾つかの施策が組み込まれています。 #SQL #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 162
記事 Mihoko Iijima · 2020年12月20日 1m read データベース以外のファイルをミラーリングで同期する方法があるのかどうか これは InterSystems FAQ サイトの記事です ミラーリングが同期の対象とするのはデータベースファイルのみです。 アプリケーションに必要なその他のファイル(CSPファイル、画像ファイル、ドキュメントファイルなど)をミラーセットを構成する二台のサーバー間で同期させるには、 NASなどを導入して共有ディスク上にそれらのファイルを配置する方法 または同期ソフトを導入して二台のサーバー間のファイルを同期させる方法 などの方法が考えられます。 また、2の方法では Windows 上では RoboCopy、Linuxの場合には rsync という同期ソフトを使った実例があります。 #Mirroring #システム管理 #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 75
記事 Toshihiko Minamoto · 2021年3月31日 13m read Caché のメソッドジェネレータを使ったコード生成の検証 デベロッパーの方なら、反復的なコードを書いた経験があると思います。 プログラムを使ってコードを生成できたら楽なのに、と考えたことがあるかもしれません。 まさに自分のことだと思った方、ぜひこの記事をお読みください! まずは例をお見せします。 注意: 次の例で使用する %DynamicObject インターフェースは Caché 2016.2 以上のバージョンが必要です。 このクラスに馴染みのない方は、Using JSON in Caché と題したドキュメンテーションをお読みください。 とても重宝すると思います! #オブジェクトデータモデル #コンパイラ #Caché #InterSystems IRIS 0 0 0 172
記事 Megumi Kakechi · 2021年2月2日 2m read 2つのデータベースにある複数のグローバルやルーチンを比較する方法 これは InterSystems FAQ サイトの記事です。 ※こちらの方法は、ミラーリング、シャドウイング、またはその他のメカニズムを使用して複製したデーターベースを比較したい場合に利用します。 グローバル変数の比較には、DATACHECKユーティリティを利用できます。以下ドキュメントをご参照ください。DataCheckの概要【IRIS】 DATACHECK ユーティリティの実行サンプルは、添付のPDFをご覧ください。 *** ルーチンの比較は、システムルーチン %RCMP か、管理ポータルを使用します。 以下は、管理ポータルでの使用方法になります。 #システム管理 #ヒントとコツ #Caché #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 271
記事 Mihoko Iijima · 2021年3月5日 1m read ID を指定してインデックスを再構築する方法 これは InterSystems FAQ サイトの記事です。 永続クラス(=テーブル)定義に提供される %BuildIndices() メソッドの引数に、インデックスを再構築したい ID の開始値と終了値を指定することにより、その範囲内のインデックスのみが再構築できます。 例えば、Sample.Person クラスにある NameIDX インデックスと ZipCode インデックスを ID=10~20 のみ再構築する場合は、以下のように実行します(ID の範囲は、第5引数、第6引数に指定してます)。 #SQL #インデックス付け #オブジェクトデータモデル #ヒントとコツ #リレーショナルテーブル #Caché #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 262
記事 Toshihiko Minamoto · 2021年4月28日 5m read ユニットテスト実行中のパフォーマンスデータの収集 数年ほど前、Caché Foundationsの講座(現「Developing Using InterSystems Objects and SQL」)において、%UnitTestフレームワークの基礎を講義していたことがあります。 その時、ある受講者から、ユニットテストを実行している間に、パフォーマンス統計を収集できるかどうかを尋ねられました。 それから数週間後、この質問に答えるために、%UnitTestの例にコードを追加したのですが、 ようやく、このコミュニティでも共有することにしました。 #Code Snippet #テスト #パフォーマンス #ベストプラクティス #Caché #InterSystems IRIS 0 0 0 117