これは InterSystems FAQ サイトの記事です。

リレーションシップが設定されており 1対n の n が多量の場合、そのリレーションシップの順次処理などで大量のメモリ消費となるケースがあります。

プログラムの中で多側オブジェクトを参照し内部的にスウィズル処理した後には、そのOREFを含む変数の解放(削除、他の値の設定など)だけでは、その多側オブジェクトとリレーションシップオブジェクトが解放されないことが原因です。

それらを完全にメモリから解放するためには、OREF変数の解放とRelationshipオブジェクトの%UnSwizzleAt<%Library.RelationshipObject >メソッドの実行による明示的なメモリ解放が必要です。

- 使用例 -

0 6
0 297

これは InterSystems FAQ サイトの記事です。

ジャーナルファイルのサイズが大きすぎて、管理ポータルで検索やフィルタリング等できない場合、以下の2つの方法で参照することができます。

① ^JRNDUMP ユーティリティを使用する方法
② プログラムで参照する方法

============================================================

① ^JRNDUMP ユーティリティを使用する方法 例えば、グローバル参照 ^ABC を含むジャーナルファイルのすべてのレコードを選択する場合は、以下のようになります。


※以下、すべてのコマンドは %SYS ネームスペースで実行してください。

1 4
0 476

これは InterSystems FAQ サイトの記事です。

永続クラス定義では、データを格納するグローバル変数名を初回クラスコンパイル時に決定しています。
グローバル変数名は、コンパイル後に表示されるストレージ定義(Storage)で確認できます。

例)

0 4
0 378

Config.Configurationクラス、SYS.Databaseクラスのメソッドを使用して、ネームスペース・データベースの作成及び登録をターミナルから実行することができます。

以下はデータベースファル/CacheDB/AAA/cache.datを作成し、構成ファイル(cache.cpf)にデータベース AAA、及び、ネームスペースAAAの登録を行う一連の実行例です。 *実行は、%SYSネームスペースで行って下さい。*

1 3
0 727

これは InterSystems FAQ サイトの記事です。

ダイナミックオブジェクトから JSON 文字列を生成するときに使用する %ToJSON() の引数にストリームオブジェクトを指定することでエラーを回避できます。

コード例は以下の通りです。

USER>set temp=##class(%Stream.TmpCharacter).%New()

USER>set jsonobj={}

USER>set jsonobj.pro1=["a","b","c","d"]

USER>set jsonobj.pro2=["あ","い","う","え"]

USER>do jsonobj.%ToJSON(temp)

USER>write temp.Size
51
USER>write temp.Read()
{"pro1":["a","b","c","d"],"pro2":["あ","い","う","え"]}

詳細はドキュメントもご参照下さい。

1 3
0 514

開発者の皆さん、こんにちは!

VSCode の ObjectScript エクステンションで、プロセスにアタッチしてデバッグする方法についてご紹介します。

ObjectScript エクステンションの基本的な操作方法については、こちらの記事をぜひご参照ください。

解説ビデオ(4分ちょっと)もあります。ぜひご参照ください。

https://www.youtube.com/embed/NBITqPlMf1M
[これは埋め込みリンクですが、あなたはサイト上の埋め込みコンテンツへのアクセスに必要な Cookie を拒否しているため、それを直接表示することはできません。埋め込みコンテンツを表示するには、Cookie 設定ですべての Cookie を受け入れる必要があります。]

2 2
0 14.2K

こんにちは、皆さま。
業務でIRISを用いて開発を行っている者です。

現在複数のJob実行の仕組みをInteroperabilityの機能を使って実現しておりますが、
特定のビジネスサービスは、xx:xx~yy:yyの間実行させたくない、
という仕組みを実現させる必要が出てきました。

https://docs.intersystems.com/iris20201/csp/docbookj/DocBook.UI.Page.cls...

ここに「スケジュール指定の定義」というものがあり、まさにこれが利用できるのかと思ったのですが、
文献を見る限りだと、プロダクションそのものを停止するような仕組みに見えており、
また実際に定義を作ってみたのですが、それをどうやってプロダクションへ反映させるかもわかりませんでした。

0 2
0 280

通常、Caché でエクスポートしたクラスやルーチンをIRISにインポートすることは可能ですが、IRISよりエクスポートしたクラスやルーチンを Caché にインポートすることはできません。

Caché にインポートしようとすると、以下のようなエラーになります。

0 2
0 147

これは InterSystems FAQ サイトの記事です。

InterSystemsでは、既存のお客様および見込みのお客様と実施した他DBMS製品との比較を行った様々なベンチマーク結果を持っています。

しかし、それらの結果に関して、ほとんどのRDBMSベンダのライセンス条項に当該RDBMSベンダの承諾なしにベンチマーク結果を公表してはならないという条項があるため、現実問題として一般的な公表は、難しい状況です。

一方、TPC等の公共の機関等がベンチマーク条件を策定、公開しているベンチマークに関しては、必要な実施コストに対して得られるものが少ないと考えており、過去にも実施しておりませんし、将来も実施する予定はありません。

InterSystemsは、TPCの様な現実のシナリオからかけ離れたベンチマークを実施するのではなく、実際のアプリケーションを模したベンチマークシナリオを構築し、それに基づき、各ハードウェアベンダ、パートナ企業、エンドユーザとの協力の基、ベンチマークを実施しております。

0 2
0 306
記事
· 2020年10月19日 5m read
LinuxでのKernelパラメータ値の設定

これはInterSystems FAQ サイトの記事です。

一部のKernelパラメータはInterSystems製品を稼働するためには、不適切な値となっているため、調整する必要があります。

1. kernel.shmmax (共有メモリセグメントの最大値)

通常既定値で問題ありません。

  設定する場合は、共有メモリにあわせたshmmaxの値は以下の a)~ f) の合計値になります。

a) データベースバッファ globals(Mbytes) x 1.075

globals

b) ルーチンバッファ routines(Mbytes) x 1.02

0 1
0 4.8K
記事
· 2022年12月7日 1m read
ObjectScript クックブック

開発者の皆さん、こんにちは!

InterSystems全製品のサーバ側コードで利用できる「ObjectScript」の基本の使い方から、困ったときのヒント集、エラーの読み方など、日本語ドキュメントの逆引きになるようなページを目指して、「ObjectScriptクックブック」を作成しました!

- ObjectScriptの基本の「き」

Hello Worldの出力から始めたい方に最適です。

2024/3/25更新:8. デバッグ方法 を追加しました。ぜひご参照ください。

- CookBook(こんなときどうする?集)

ObjectScriptの記述に困ったときに読んでいただけるヒント集です。コミュニティに寄せられたご質問をどんどん掲載していきます。

- ObjectScriptでエラーが発生したら

ObjectScriptのプログラムでエラーが発生したときのエラーメッセージの読み方から、エラー情報の取得方法などを解説しています。

4 1
0 368
記事
· 2023年2月6日 4m read
ファイル操作関連のTips

ファイルとディレクトリの操作に使用できる API 、%Library.File クラス (%File が省略形) の便利なサンプルコードをご紹介します。

こちらのAPIを使用して、ディレクトリやファイルの中身をのぞいたり、作成・書込み・読込みを行ってみます。


ディレクトリ内のファイル一覧をリストする

以下のサンプルは、C:\temp フォルダ内の *.txt ファイルをリストします(ファイルパス_サイズ_作成日)。

2 1
0 663

これは InterSystems FAQ サイトの記事です。
※記事後半に、「2>&1」で 標準エラー出力(2) を 標準出力(1) にリダイレクトする方法を追記しました。

$ZF(-100) では実行したコマンドの出力を取得することはできませんが、代わりにコマンド・パイプ デバイスを使用する方法があります。

詳細は、以下ドキュメントをご参照ください。

コマンド・パイプ デバイスを使用する方法について

こちらを %File クラスで使用した例が以下になります。

0 1
0 520

2021年12月13日 - 勧告: Apache Log4j2ライブラリの脆弱性がインターシステムズ製品に与える影響

インターシステムズは現在、Apache Log4j2に関するセキュリティ脆弱性の影響を調査しています。

1 1
0 184

これは InterSystems FAQ サイトの記事です。


データ取込み処理の性能・エラー(Lock Table Full)対策として、一般メモリヒープ(gmheap)や ロックテーブルサイズ(locksiz)のパラメータチューニングを行う場合があると思います。

実際に、現在どのくらいの一般メモリヒープが確保できているのかは、ターミナルと管理ポータルで確認することができます。


★ターミナルの場合

1 1
1 200

これはInterSystems FAQ サイトの記事です。


LAST_IDENTITY() SQL関数を使用すると取得できます。
※ この関数は、埋め込み SQL または ODBC 利用時に使用できます。ダイナミック SQL、SQL シェル、または管理ポータルの SQL インタフェースによる値には設定されません。

簡単な埋め込み SQL での例をご紹介します。

0 1
0 1.1K

InterSystems は、より新しく優れたオプションが利用可能になったときに従来のテクノロジーの開発を中止することがあります。
ただし、それら機能は最小サポートバージョン以後の製品であれば他の機能と同等にサポートします。

0 1
0 372

これは InterSystems FAQ サイトの記事です。

新しいインデックスを定義した後、インデックスの再構築が完了する前にクエリを実行するとデータが存在しているにもかかわらず「検索結果0件」や検索結果数が徐々に増えるような状況が発生します。

インデックスを永続クラス定義(またはテーブル定義)に追加しコンパイルすることで今まで使用していたクエリ実行経路が削除され、再度同じクエリを実行するタイミングで新しいインデックス定義を含めた実行経路が作成されるためです。(この時にインデックス再構築が完了していないとインデックスデータが存在しない、または不完全であるため0件や徐々に検索結果数が増えるような状況を起こします。)

これを起こさなために、新しいインデックスの再構築が終了するまでクエリオプティマイザにインデックスを使用させないように指定する方法が用意されています。

※ 2024/8/2: 2024.1以降から利用できる方法を追加しました。

0 1
0 278

これはInterSystems FAQ サイトの記事です。

この記事では「グローバルを誤って削除してしまった!」という場合の対処方法をご紹介します。

誤って削除してしまった特定のグローバルを復旧するためには、バックアップファイルとジャーナルを使用します。
復旧は、^ZJRNFILTユーティリティによるジャーナルリストアで条件を指定してジャーナルレコードをリストアする方法で行います。
この方法で、ある時点のデータベースのバックアップに対して、削除が含まれるジャーナルレコードについて特定グローバルを削除するまでのものを適用することができます。

^ZJRNFILTユーティリティの詳細については、以下のドキュメントをご参照ください。

1 0
0 521

これはInterSystems FAQ サイトの記事です

1. エクスポートAPI

a. ルーチンを個別に指定してエクスポートする場合は、$system.OBJ.Export() を使用します。

例:

do $system.OBJ.Export("TEST1.mac,TEST2.mac","c:\temp\routines.xml",,.errors)

指定する形式は ルーチン名.拡張子 で、拡張子は mac,bas,int,inc,obj を指定します。

エクスポート中のエラーは errors に格納されます。

$system.OBJ.Export() の詳細はクラスリファレンス %SYSTEM.OBJ を参照してください。

b. ワイルドカードを使用してエクスポートする場合にも、$system.OBJ.Export() を使用します。
例:

0 0
0 606

これは InterSystems FAQ サイトの記事です

揮発性テーブル(多数のINSERT、DELETEが行われるテーブル)では、ビットマップ・インデックス用ストレージは徐々に効率が低下する可能性があります。

例えば、以下の定義からなるデータが数千件あり、一定期間保持した後 TRUNCATE TABLE で一括削除を行うオペレーションが繰り返し行われているとします。

Class MyWork.MonthData Extends (%Persistent, %Populate)
{
/// 満足度
Property Satisfaction As %String(VALUELIST = ",満足,やや満足,やや不満,不満,");
/// 年齢
Property Age As %Integer(MAXVAL = 70, MINVAL = 20);
Index AgeIdx On Age [ Type = bitmap ];
}
0 0
0 287

これは InterSystems FAQ サイトの記事です。

XMLファイルの内容を格納する永続クラス定義を作成し、%XML.Adaptor を追加で継承します。

例は以下の通りです(右端の %XML.Adaptorクラスを追加で継承します)。

Class ISJ.Class1 Extends (%Persistent, %Populate, %XML.Adaptor)
2 0
0 2.1K

これは InterSystems FAQ サイトの記事です。

管理ポータルを使用して確認する場合は、以下の手順で参照できます。

管理ポータル > [システムエクスプローラ] > [グローバル] の画面で、ネームスペースではなく データベース を指定し、IRISTEMP / CACHETEMP データベースを選択すると参照できます。

0 0
0 266

これは InterSystems FAQ サイトの記事です。

INFORMATION_SCHEMA スキーマを使用して取得できます。

INFORMATION_SCHEMA はシステム用スキーマのため、デフォルトでは管理ポータルのSQLメニューに表示されません。
表示させる方法は以下の通りです。

  1. 管理ポータル→システムエクスプローラ→SQL メニューを開きます。
  2. スキーマのプルダウン左にある「システム」をチェックします。
  3. スキーマのプルダウンから INFORMATION_SCHEMA を選択します。

0 0
0 572

これは InterSystems FAQ サイトの記事です。

%Net.FtpSession クラスを使用して FTP サーバから、アップロード/ダウンロードする方法をご紹介します。

1. FTPサーバにイメージファイルをアップロードする

0 0
0 312
記事
· 2021年9月2日 2m read
$ZF(-100)の使用方法

これは InterSystems FAQ サイトの記事です。

$ZF(-100) のコマンドは、以下のフォーマットで使用します。

$ZF(-100, フラグ, コマンド名, コマンドの引数)

OSコマンドを実行する場合は、「/shell」フラグが必要です。
例えば mkdir であれば、次のように使用します。

// mkdir C:\temp\newdir
Write $ZF(-100, "/shell", "mkdir", "C:\temp\newdir")

コマンドの引数が複数ある場合は、以下の例のように引数の数だけ二重引用符で括ってカンマ区切りで指定します。

0 0
0 676